Typed client + types for the arcadia integration registry (on arcadia-llm-gateway). One createIntegrationsApi(client, mode) factory serves both surfaces: - operator → /api/v1/integrations* (any scope, scope filters) - tenant → /api/v1/me/integrations* (scope forced server-side) Plus shared types (Integration/Credential/UsageEntry/*Input/TestVerdict) and display helpers (formatUsd, credentialHealth). Consumed by arcadia-admin and arcadia-console as a sibling lib via vite/tsconfig aliases (no build step). Secrets are write-only; the rich panels stay per-app. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1.2 KiB
Markdown
27 lines
1.2 KiB
Markdown
# @crema/integration-registry-client
|
|
|
|
Typed client + types for the **arcadia integration registry** — the external-API
|
|
credential plane hosted on `arcadia-llm-gateway`. Consumed by `arcadia-admin`
|
|
(operator) and `arcadia-console` (tenant) as a sibling lib via vite/tsconfig
|
|
aliases (no build step — the app compiles `src/` directly).
|
|
|
|
```ts
|
|
import { createIntegrationsApi } from "@crema/integration-registry-client"
|
|
|
|
// gateway-pointed ArcadiaClient (see each app's app/lib/gateway.ts)
|
|
const api = createIntegrationsApi(gatewayClient, "tenant") // or "operator"
|
|
|
|
await api.list()
|
|
await api.create({ provider: "tavily", capability: "web_search" })
|
|
await api.test(id) // throws ArcadiaError on 409 expired / 429 over-budget
|
|
```
|
|
|
|
- `operator` mode → `/api/v1/integrations*` (any scope, scope filters honoured).
|
|
- `tenant` mode → `/api/v1/me/integrations*` (scope forced to the caller server-side).
|
|
|
|
Secrets are **write-only**: reads carry `has_secret`, never a value.
|
|
|
|
The rich management **page/components stay per-app** (they use each app's shadcn
|
|
primitives and the operator/tenant surfaces legitimately diverge) — this lib owns
|
|
the client, types, and display helpers only.
|