@datatechsolutions/ui 3.10.0 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astrlabe/contracts.d.mts +18 -2
- package/dist/astrlabe/contracts.d.ts +18 -2
- package/dist/astrlabe/index.d.mts +2 -2
- package/dist/astrlabe/index.d.ts +2 -2
- package/dist/astrlabe/index.js +109 -109
- package/dist/astrlabe/index.mjs +5 -5
- package/dist/astrlabe/workflow-canvas.js +5 -5
- package/dist/astrlabe/workflow-canvas.mjs +4 -4
- package/dist/{chunk-NM37GLCL.mjs → chunk-2AJ73ULK.mjs} +3 -3
- package/dist/{chunk-NM37GLCL.mjs.map → chunk-2AJ73ULK.mjs.map} +1 -1
- package/dist/{chunk-MSMEECO6.js → chunk-35O2X7WY.js} +9 -9
- package/dist/{chunk-MSMEECO6.js.map → chunk-35O2X7WY.js.map} +1 -1
- package/dist/{chunk-5KI7FB3E.mjs → chunk-35P352JX.mjs} +225 -234
- package/dist/chunk-35P352JX.mjs.map +1 -0
- package/dist/{chunk-FD376DZ6.mjs → chunk-37FWIPYO.mjs} +3 -3
- package/dist/{chunk-FD376DZ6.mjs.map → chunk-37FWIPYO.mjs.map} +1 -1
- package/dist/{chunk-DA3H7ERQ.mjs → chunk-3US2QXEF.mjs} +3 -3
- package/dist/{chunk-DA3H7ERQ.mjs.map → chunk-3US2QXEF.mjs.map} +1 -1
- package/dist/{chunk-FIJMOTP4.js → chunk-62BD4WLW.js} +34 -34
- package/dist/{chunk-FIJMOTP4.js.map → chunk-62BD4WLW.js.map} +1 -1
- package/dist/{chunk-O4HH77A4.js → chunk-6TKCMQ75.js} +68 -68
- package/dist/{chunk-O4HH77A4.js.map → chunk-6TKCMQ75.js.map} +1 -1
- package/dist/{chunk-BU4WMSK3.mjs → chunk-7D52TFVL.mjs} +3 -3
- package/dist/{chunk-BU4WMSK3.mjs.map → chunk-7D52TFVL.mjs.map} +1 -1
- package/dist/{chunk-6UX2SRA2.mjs → chunk-7KPMLHPR.mjs} +3 -3
- package/dist/{chunk-6UX2SRA2.mjs.map → chunk-7KPMLHPR.mjs.map} +1 -1
- package/dist/{chunk-AMESLEIO.js → chunk-7MPIYSRH.js} +63 -63
- package/dist/{chunk-AMESLEIO.js.map → chunk-7MPIYSRH.js.map} +1 -1
- package/dist/{chunk-6ZYATZS3.mjs → chunk-7V7WEXHS.mjs} +3 -3
- package/dist/{chunk-6ZYATZS3.mjs.map → chunk-7V7WEXHS.mjs.map} +1 -1
- package/dist/{chunk-5AKTDJFR.js → chunk-BCJATFZE.js} +25 -25
- package/dist/{chunk-5AKTDJFR.js.map → chunk-BCJATFZE.js.map} +1 -1
- package/dist/{chunk-2A45ZEK4.js → chunk-BO3RXG6M.js} +45 -45
- package/dist/{chunk-2A45ZEK4.js.map → chunk-BO3RXG6M.js.map} +1 -1
- package/dist/{chunk-L3R425GB.js → chunk-G52HXPSB.js} +13 -13
- package/dist/{chunk-L3R425GB.js.map → chunk-G52HXPSB.js.map} +1 -1
- package/dist/{chunk-MAOZWOA6.js → chunk-GKI74CPB.js} +55 -55
- package/dist/{chunk-MAOZWOA6.js.map → chunk-GKI74CPB.js.map} +1 -1
- package/dist/{chunk-TSNKICPP.js → chunk-GTJGX7IZ.js} +10 -10
- package/dist/{chunk-TSNKICPP.js.map → chunk-GTJGX7IZ.js.map} +1 -1
- package/dist/{chunk-EC34PGUO.js → chunk-H475T2N7.js} +136 -136
- package/dist/chunk-H475T2N7.js.map +1 -0
- package/dist/{chunk-FENA4YGN.mjs → chunk-HUAWGBYL.mjs} +3 -3
- package/dist/{chunk-FENA4YGN.mjs.map → chunk-HUAWGBYL.mjs.map} +1 -1
- package/dist/{chunk-RHRJXK5R.mjs → chunk-IGOMJHC6.mjs} +11 -3
- package/dist/chunk-IGOMJHC6.mjs.map +1 -0
- package/dist/{chunk-B76RTA7D.js → chunk-JTD3BBVI.js} +35 -35
- package/dist/{chunk-B76RTA7D.js.map → chunk-JTD3BBVI.js.map} +1 -1
- package/dist/{chunk-JB3U6ORY.mjs → chunk-K4AJL4BH.mjs} +3 -3
- package/dist/{chunk-JB3U6ORY.mjs.map → chunk-K4AJL4BH.mjs.map} +1 -1
- package/dist/{chunk-HEXTU6W3.mjs → chunk-KTEEXEAX.mjs} +6 -6
- package/dist/{chunk-HEXTU6W3.mjs.map → chunk-KTEEXEAX.mjs.map} +1 -1
- package/dist/{chunk-C4D3EI5L.mjs → chunk-NM3YTQ26.mjs} +3 -3
- package/dist/{chunk-C4D3EI5L.mjs.map → chunk-NM3YTQ26.mjs.map} +1 -1
- package/dist/{chunk-H7X3SXMB.mjs → chunk-NRVV4PHB.mjs} +7 -7
- package/dist/{chunk-H7X3SXMB.mjs.map → chunk-NRVV4PHB.mjs.map} +1 -1
- package/dist/{chunk-KHUWFL6W.js → chunk-O2CUOJ74.js} +4 -4
- package/dist/{chunk-KHUWFL6W.js.map → chunk-O2CUOJ74.js.map} +1 -1
- package/dist/{chunk-NSZN54HW.js → chunk-PHBZ3TXE.js} +4 -4
- package/dist/{chunk-NSZN54HW.js.map → chunk-PHBZ3TXE.js.map} +1 -1
- package/dist/{chunk-W6MBDTKF.mjs → chunk-R3CGJK7D.mjs} +3 -3
- package/dist/{chunk-W6MBDTKF.mjs.map → chunk-R3CGJK7D.mjs.map} +1 -1
- package/dist/{chunk-5U43K6G3.mjs → chunk-TCIK6WHT.mjs} +24 -22
- package/dist/chunk-TCIK6WHT.mjs.map +1 -0
- package/dist/{chunk-YSYEV2Z6.js → chunk-Z6FZQOTW.js} +46 -44
- package/dist/chunk-Z6FZQOTW.js.map +1 -0
- package/dist/{chunk-LVR4SR65.js → chunk-ZGVN23J4.js} +223 -234
- package/dist/chunk-ZGVN23J4.js.map +1 -0
- package/dist/{chunk-A256OE5E.mjs → chunk-ZJMYLUZ2.mjs} +5 -5
- package/dist/chunk-ZJMYLUZ2.mjs.map +1 -0
- package/dist/{chunk-SY4MUT5V.js → chunk-ZUU7G3PC.js} +11 -2
- package/dist/chunk-ZUU7G3PC.js.map +1 -0
- package/dist/index.d.mts +26 -40
- package/dist/index.d.ts +26 -40
- package/dist/index.js +664 -672
- package/dist/index.mjs +3 -3
- package/dist/platform/admin/index.js +11 -11
- package/dist/platform/admin/index.mjs +5 -5
- package/dist/platform/agents-workspace.js +8 -8
- package/dist/platform/agents-workspace.mjs +7 -7
- package/dist/platform/app-shell.js +5 -5
- package/dist/platform/app-shell.mjs +4 -4
- package/dist/platform/auth/index.js +23 -23
- package/dist/platform/auth/index.mjs +5 -5
- package/dist/platform/billing/index.js +5 -5
- package/dist/platform/billing/index.mjs +4 -4
- package/dist/platform/impersonation/index.js +5 -5
- package/dist/platform/impersonation/index.mjs +4 -4
- package/dist/platform/index.js +86 -86
- package/dist/platform/index.mjs +19 -19
- package/dist/platform/pages/index.d.mts +3 -3
- package/dist/platform/pages/index.d.ts +3 -3
- package/dist/platform/pages/index.js +583 -548
- package/dist/platform/pages/index.js.map +1 -1
- package/dist/platform/pages/index.mjs +288 -253
- package/dist/platform/pages/index.mjs.map +1 -1
- package/dist/platform/settings/index.js +8 -8
- package/dist/platform/settings/index.mjs +7 -7
- package/dist/platform/workflow-api-client.d.mts +1 -1
- package/dist/platform/workflow-api-client.d.ts +1 -1
- package/dist/platform/workflow-api-client.js +65 -61
- package/dist/platform/workflow-api-client.mjs +1 -1
- package/dist/platform/workflow-canvas-shell.js +6 -6
- package/dist/platform/workflow-canvas-shell.mjs +5 -5
- package/dist/{rule-form-BYJzyork.d.mts → rule-form-BkKCY8Tc.d.mts} +8 -2
- package/dist/{rule-form-BYJzyork.d.ts → rule-form-CBD8wlrw.d.ts} +8 -2
- package/dist/{workflow-api-client-CpFl3WcG.d.mts → workflow-api-client-D9_0Spdz.d.mts} +16 -1
- package/dist/{workflow-api-client-uLICOanv.d.ts → workflow-api-client-E1QFRgeP.d.ts} +16 -1
- package/package.json +1 -1
- package/dist/chunk-5KI7FB3E.mjs.map +0 -1
- package/dist/chunk-5U43K6G3.mjs.map +0 -1
- package/dist/chunk-A256OE5E.mjs.map +0 -1
- package/dist/chunk-EC34PGUO.js.map +0 -1
- package/dist/chunk-LVR4SR65.js.map +0 -1
- package/dist/chunk-RHRJXK5R.mjs.map +0 -1
- package/dist/chunk-SY4MUT5V.js.map +0 -1
- package/dist/chunk-YSYEV2Z6.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/platform/workflow-api-client.ts"],"names":[],"mappings":"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","file":"chunk-IGOMJHC6.mjs","sourcesContent":["import type {\n AgentModel,\n AgentRule,\n AgentTool,\n WorkflowTool,\n VariableValue,\n Workflow,\n WorkflowGraph,\n WorkflowRun,\n} from '@ui/astrlabe/contracts'\nimport type { AgentWithPrompts } from '@ui/astrlabe'\nimport type { AgentPrompt } from '@datatechsolutions/shared-domain/ports/workflow'\nimport type { AgentConfigLike, DataSource } from '@datatechsolutions/shared-domain/common'\nimport { HttpResponseError } from '@datatechsolutions/shared-domain/common'\nimport { buildLambdaApiUrl } from './utils/lambda-endpoint'\nimport type { DatasourceFormData } from './pages/datasource-modal'\n\n// ---------------------------------------------------------------------------\n// Module-level authenticated fetch — set by setAuthenticatedFetch() during\n// provider initialization. This lets plain async functions (non-hooks) make\n// authenticated API calls without needing React context.\n// ---------------------------------------------------------------------------\nlet _authFetch: typeof fetch = fetch\n\n/**\n * Register an authenticated fetch function (call once from a provider/layout).\n * After this, all workflow API calls automatically include the JWT token.\n */\nexport function setAuthenticatedFetch(authFetch: typeof fetch): void {\n _authFetch = authFetch\n}\n\n// ---------------------------------------------------------------------------\n// Access token provider — used by SSE (EventSource cannot set headers, so\n// we pass the token as `?accessToken=<token>` on the event stream URL).\n// ---------------------------------------------------------------------------\n\nlet _tokenProvider: () => Promise<string | null> = async () => null\n\nexport function setAccessTokenProvider(provider: () => Promise<string | null>): void {\n _tokenProvider = provider\n}\n\nexport async function getCurrentAccessToken(): Promise<string | null> {\n try {\n return await _tokenProvider()\n } catch {\n return null\n }\n}\n\n/**\n * Build a full URL for a workflow API path, optionally appending the current\n * access token as a query parameter. Useful for APIs that require auth but\n * cannot set custom headers (EventSource, direct links).\n */\nexport async function buildAuthenticatedApiUrl(\n path: string,\n options: { includeAccessToken?: boolean } = {},\n): Promise<string> {\n const baseUrl = useExternalWorkflowApi()\n ? resolveWorkflowApiBaseUrl()\n : buildLambdaApiUrl('').replace(/\\/$/, '')\n const url = new URL(`${baseUrl}${path}`)\n if (options.includeAccessToken) {\n const token = await getCurrentAccessToken()\n if (token && token.length > 0) {\n url.searchParams.set('accessToken', token)\n }\n }\n return url.toString()\n}\n\n// ---------------------------------------------------------------------------\n// Config helpers\n// ---------------------------------------------------------------------------\n\nfunction useExternalWorkflowApi(): boolean {\n return import.meta.env.VITE_WORKFLOW_API_MODE === 'external'\n}\n\nfunction resolveWorkflowApiBaseUrl(): string {\n const baseUrl = import.meta.env.VITE_WORKFLOW_API_BASE_URL\n if (!baseUrl || baseUrl.trim().length === 0) {\n throw new Error('Missing VITE_WORKFLOW_API_BASE_URL for external workflow API mode')\n }\n return baseUrl.replace(/\\/$/, '')\n}\n\nfunction getPublishableKey(): string {\n const key = import.meta.env.VITE_WORKFLOW_BUILDER_PUBLISHABLE_KEY\n if (!key || key.trim().length === 0) {\n throw new Error('Missing VITE_WORKFLOW_BUILDER_PUBLISHABLE_KEY')\n }\n return key\n}\n\n// ---------------------------------------------------------------------------\n// Core request function — uses the registered authenticated fetch\n// ---------------------------------------------------------------------------\n\nasync function request<T>(path: string, init?: RequestInit): Promise<T> {\n const publishableKey = useExternalWorkflowApi() ? getPublishableKey() : null\n\n const baseUrl = publishableKey\n ? resolveWorkflowApiBaseUrl()\n : buildLambdaApiUrl('').replace(/\\/$/, '')\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n }\n\n if (publishableKey) {\n headers.Authorization = `Bearer ${publishableKey}`\n headers['X-Workflow-Key'] = publishableKey\n }\n\n const response = await _authFetch(`${baseUrl}${path}`, {\n ...init,\n credentials: init?.credentials ?? 'include',\n headers: { ...headers, ...(init?.headers as Record<string, string> | undefined) },\n })\n\n if (response.status === 204) return undefined as T\n\n const payload = await response.json().catch(() => null)\n\n if (!response.ok) {\n const message = (payload as { error?: string; message?: string })?.message\n ?? (payload as { error?: string })?.error\n ?? `HTTP ${response.status}: ${response.statusText}`\n throw new HttpResponseError(message, response.status)\n }\n\n // Unwrap any `{ data: T }` envelope the Rust API returns. Some handlers\n // emit `{ success: true, data: T }`; others (list endpoints like\n // `/rules`, `/workflows`) emit just `{ data: T }`. Treating the presence\n // of a top-level `data` key as the signal is what shields pages from\n // the mismatch — without this, callers like `getAgentRules` fall through\n // to `payload.data` manually, and any null/empty body crashes the\n // `rules.map(...)` render with \"Cannot read properties of undefined\".\n if (\n payload &&\n typeof payload === 'object'\n && 'data' in payload\n && (!('success' in payload) || (payload as { success: boolean }).success !== false)\n ) {\n return (payload as { data: T }).data\n }\n\n return payload as T\n}\n\nasync function requestPublic<T>(path: string, init?: RequestInit): Promise<T> {\n const externalBaseUrl = import.meta.env.VITE_WORKFLOW_API_BASE_URL?.trim()\n const baseUrl = externalBaseUrl && externalBaseUrl.length > 0\n ? externalBaseUrl.replace(/\\/$/, '')\n : buildLambdaApiUrl('').replace(/\\/$/, '')\n\n const response = await fetch(`${baseUrl}${path}`, {\n ...init,\n credentials: init?.credentials ?? 'include',\n headers: {\n 'Content-Type': 'application/json',\n ...(init?.headers as Record<string, string> | undefined),\n },\n })\n\n if (response.status === 204) return undefined as T\n\n const payload = await response.json().catch(() => null)\n\n if (!response.ok) {\n const message = (payload as { error?: string; message?: string })?.message\n ?? (payload as { error?: string })?.error\n ?? `HTTP ${response.status}: ${response.statusText}`\n throw new HttpResponseError(message, response.status)\n }\n\n if (payload && typeof payload === 'object' && 'success' in payload && (payload as { success: boolean }).success && 'data' in payload) {\n return (payload as { data: T }).data\n }\n\n return payload as T\n}\n\n// ---------------------------------------------------------------------------\n// AI workflow assistants\n// ---------------------------------------------------------------------------\n\nexport type NodeValidationIssue = {\n nodeId: string\n nodeType: string\n field?: string\n code: string\n message: string\n}\n\nexport type AiValidateResponse = {\n ok: boolean\n structuralIssues: string[]\n nodeIssues: NodeValidationIssue[]\n rationale?: string | null\n}\n\nexport async function aiValidateWorkflow(body: {\n graph: WorkflowGraph\n connectionId?: string\n}): Promise<AiValidateResponse> {\n return request('/workflows/validate/ai', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n}\n\nexport type AiGenerateResponse = {\n graph: WorkflowGraph\n ok: boolean\n structuralIssues: string[]\n nodeIssues: NodeValidationIssue[]\n rationale?: string | null\n}\n\nexport async function aiGenerateWorkflow(body: {\n prompt: string\n connectionId: string\n context?: string\n}): Promise<AiGenerateResponse> {\n return request('/workflows/generate/ai', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n}\n\n// ---------------------------------------------------------------------------\n// Workflow CRUD\n// ---------------------------------------------------------------------------\n\nexport async function getWorkflows(): Promise<Workflow[]> {\n return request('/workflows')\n}\n\nexport async function getWorkflowById(workflowId: string): Promise<Workflow> {\n return request(`/workflows/${encodeURIComponent(workflowId)}`)\n}\n\nexport async function createWorkflow(data: { name: string; description?: string }): Promise<Workflow> {\n return request('/workflows', {\n method: 'POST',\n body: JSON.stringify(data),\n })\n}\n\nexport async function deleteWorkflow(workflowId: string): Promise<{ deleted: boolean }> {\n return request(`/workflows/${encodeURIComponent(workflowId)}`, {\n method: 'DELETE',\n })\n}\n\nexport async function saveWorkflowDraft(\n workflowId: string,\n graph: WorkflowGraph,\n metadata?: {\n name?: string\n description?: string\n slug?: string | null\n isDraft?: boolean\n isActive?: boolean\n },\n): Promise<Workflow> {\n return request(`/workflows/${encodeURIComponent(workflowId)}`, {\n method: 'PATCH',\n body: JSON.stringify({ graph, ...metadata }),\n })\n}\n\n/**\n * Settings modal PATCH — updates the workflow's identity + lifecycle\n * fields in one call. Pass `isDraft: true` to move a published workflow\n * back to draft, `isActive: false` to archive, etc. Anything omitted is\n * left untouched.\n */\nexport async function updateWorkflowSettings(\n workflowId: string,\n changes: {\n name?: string\n description?: string\n slug?: string | null\n isDraft?: boolean\n isActive?: boolean\n },\n): Promise<Workflow> {\n return request(`/workflows/${encodeURIComponent(workflowId)}`, {\n method: 'PATCH',\n body: JSON.stringify(changes),\n })\n}\n\nexport async function publishWorkflow(workflowId: string): Promise<Workflow> {\n return request(`/workflows/${encodeURIComponent(workflowId)}/publish`, {\n method: 'POST',\n })\n}\n\nexport async function executeWorkflow(\n workflowId: string,\n inputVariables?: Record<string, VariableValue>\n): Promise<WorkflowRun> {\n return request(`/workflows/${encodeURIComponent(workflowId)}/execute`, {\n method: 'POST',\n body: JSON.stringify({ inputVariables: inputVariables ?? {} }),\n })\n}\n\nexport async function getWorkflowRuns(workflowId: string): Promise<WorkflowRun[]> {\n return request(`/workflows/${encodeURIComponent(workflowId)}/execute`)\n}\n\n// ---------------------------------------------------------------------------\n// Workflow templates\n// ---------------------------------------------------------------------------\n\nexport interface WorkflowTemplateSummary {\n id: string\n name: string\n description: string\n tags: string[]\n}\n\nexport async function listWorkflowTemplates(): Promise<WorkflowTemplateSummary[]> {\n return request('/workflows/templates')\n}\n\n/**\n * Instantiate a workflow from a template. `connectionId` is required when\n * the template references a `{{connectionId}}` placeholder (all LLM-backed\n * templates do).\n */\nexport async function createWorkflowFromTemplate(\n templateId: string,\n body: { connectionId?: string; name?: string }\n): Promise<Workflow> {\n return request(`/workflows/templates/${encodeURIComponent(templateId)}`, {\n method: 'POST',\n body: JSON.stringify(body),\n })\n}\n\n// ---------------------------------------------------------------------------\n// Model provider connections (org-scoped LLM providers)\n// ---------------------------------------------------------------------------\n\nexport interface ModelProviderConnection {\n id: string\n organizationId: string\n providerId: string\n providerSlug?: string\n name: string\n region?: string\n endpoint?: string\n credentialRef?: string\n apiKeyRef?: string\n modelFilter?: string[]\n config?: Record<string, unknown>\n enabled: boolean\n createdAt?: string\n updatedAt?: string\n}\n\nexport async function listModelProviderConnections(): Promise<ModelProviderConnection[]> {\n return request('/agents/connections')\n}\n\n/**\n * One model family record joined onto a provider in the catalog.\n * Mirrors the `FamilyView` shape returned by `agents_providers.rs`.\n */\nexport type ModelFamilyCatalogEntry = {\n id: string\n slug: string\n name: string\n modelIds: string[]\n maxTokens?: number | null\n contextWindow?: string | null\n supportsTools?: boolean | null\n supportsVision?: boolean | null\n costTier?: string | null\n}\n\n/**\n * Catalog of supported LLM providers. Previously hard-coded in the\n * connections modal; now backed by `astrlabe.model_providers` +\n * `astrlabe.model_families` so new providers can be added server-side\n * without a frontend release.\n */\nexport type ModelProviderCatalogEntry = {\n id: string\n slug: string\n /** Slug normalized into the `ModelProviderType` enum the runtime uses. */\n normalizedSlug: string\n name: string\n category?: string | null\n logoUrl?: string | null\n docsUrl?: string | null\n authType?: string | null\n /**\n * Full family records joined from `model_families`. Empty array if no\n * families are seeded for this provider (`custom`, where the operator\n * supplies the model id at node-config time).\n */\n families: ModelFamilyCatalogEntry[]\n /** @deprecated — array of family slugs only. New callers read `families`. */\n supportedModelFamilies?: unknown\n regions?: string[] | null\n enabled: boolean\n}\n\nexport async function listModelProviderCatalog(): Promise<ModelProviderCatalogEntry[]> {\n const response = await request<ModelProviderCatalogEntry[] | { data: ModelProviderCatalogEntry[] }>(\n '/agents/providers',\n )\n if (Array.isArray(response)) return response\n if (response && typeof response === 'object' && Array.isArray((response as { data?: unknown }).data)) {\n return (response as { data: ModelProviderCatalogEntry[] }).data\n }\n return []\n}\n\nexport async function createModelProviderConnection(body: {\n providerSlug?: string\n providerId?: string\n name: string\n region?: string\n endpoint?: string\n credentialRef?: string\n apiKeyRef?: string\n modelFilter?: string[]\n config?: Record<string, unknown>\n}): Promise<ModelProviderConnection> {\n return request('/agents/connections', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n}\n\nexport async function updateModelProviderConnection(\n id: string,\n body: {\n name?: string\n region?: string\n endpoint?: string\n credentialRef?: string\n apiKeyRef?: string\n modelFilter?: string[]\n config?: Record<string, unknown>\n enabled?: boolean\n },\n): Promise<ModelProviderConnection> {\n return request(`/agents/connections/${encodeURIComponent(id)}`, {\n method: 'PATCH',\n body: JSON.stringify(body),\n })\n}\n\nexport async function deleteModelProviderConnection(id: string): Promise<{ deleted: boolean }> {\n return request(`/agents/connections/${encodeURIComponent(id)}`, {\n method: 'DELETE',\n })\n}\n\n// ---------------------------------------------------------------------------\n// Agent config & prompts\n// ---------------------------------------------------------------------------\n\nexport async function getAgentPrompts(agentId: string): Promise<AgentPrompt[]> {\n return request(`/agents/prompts?agentId=${encodeURIComponent(agentId)}`)\n}\n\nexport async function getAgentModels(): Promise<AgentModel[]> {\n return request('/agents/models')\n}\n\nexport async function getAgentTools(agentId: string): Promise<WorkflowTool[]> {\n return request(`/agents/tools?agentId=${encodeURIComponent(agentId)}`)\n}\n\nexport async function updateAgentTool(toolId: string, updates: Partial<WorkflowTool>): Promise<WorkflowTool> {\n // Backend PATCH lives at `/agents/tools` (collection) and takes `id`\n // in the body rather than as a path parameter. The `enabled` field the\n // legacy client passed maps to `isEnabled`; `configOverrides` lets\n // callers tweak a workflow-tool binding's overrides without touching\n // the underlying definition.\n const wire: Record<string, unknown> = { id: toolId }\n if (typeof updates.enabled === 'boolean') wire.isEnabled = updates.enabled\n const overrides = (updates as { configOverrides?: unknown }).configOverrides\n if (overrides !== undefined) wire.configOverrides = overrides\n return request('/agents/tools', {\n method: 'PATCH',\n body: JSON.stringify(wire),\n })\n}\n\nexport async function createAgentTool(\n tool: Omit<WorkflowTool, 'organizationId' | 'createdAt' | 'updatedAt'>\n): Promise<WorkflowTool> {\n return request('/agents/tools', {\n method: 'POST',\n body: JSON.stringify(tool),\n })\n}\n\nexport async function deleteAgentTool(toolId: string): Promise<{ deleted: boolean }> {\n return request(`/agents/tools/${encodeURIComponent(toolId)}`, {\n method: 'DELETE',\n })\n}\n\n// ---------------------------------------------------------------------------\n// Agent Tool Definitions (tools available to agents, e.g. web search, code interpreter)\n// ---------------------------------------------------------------------------\n\nexport async function getAgentToolDefinitions(): Promise<AgentTool[]> {\n return request('/agents/tool-definitions')\n}\n\n/**\n * Create a custom agent tool definition. The backend (`POST\n * /agents/tool-definitions`) requires:\n * { name, description, toolType, inputSchema, handlerConfig }\n * where `inputSchema` is a JSON-Schema object with `type` + `properties`.\n */\nexport async function createAgentToolDefinition(\n toolDef: {\n name: string\n description?: string\n toolType: string\n inputSchema: Record<string, unknown>\n handlerConfig: Record<string, unknown>\n },\n): Promise<AgentTool> {\n return request('/agents/tool-definitions', {\n method: 'POST',\n body: JSON.stringify(toolDef),\n })\n}\n\n// ---------------------------------------------------------------------------\n// Rules\n// ---------------------------------------------------------------------------\n\nexport async function getAgentRules(): Promise<AgentRule[]> {\n const response = await request<AgentRule[] | { data: AgentRule[] } | null | undefined>('/rules')\n if (Array.isArray(response)) return response\n if (response && typeof response === 'object' && Array.isArray((response as { data?: unknown }).data)) {\n return (response as { data: AgentRule[] }).data\n }\n return []\n}\n\nexport async function updateAgentRule(\n ruleId: string,\n updates: Partial<AgentRule> & Record<string, unknown>,\n): Promise<AgentRule> {\n return request(`/rules/${encodeURIComponent(ruleId)}`, {\n method: 'PATCH',\n body: JSON.stringify(updates),\n })\n}\n\nexport async function createAgentRule(\n rule: Partial<AgentRule> & Record<string, unknown>,\n): Promise<AgentRule> {\n return request('/rules', {\n method: 'POST',\n body: JSON.stringify(rule),\n })\n}\n\nexport async function deleteAgentRule(ruleId: string): Promise<{ deleted: boolean }> {\n return request(`/rules/${encodeURIComponent(ruleId)}`, {\n method: 'DELETE',\n })\n}\n\nexport async function executeAgentRule(ruleId: string, input: Record<string, unknown>): Promise<unknown> {\n return request(`/rules/${encodeURIComponent(ruleId)}/execute`, {\n method: 'POST',\n body: JSON.stringify(input),\n })\n}\n\n// ---------------------------------------------------------------------------\n// Agent Configs (CRUD — agents_config handler)\n// ---------------------------------------------------------------------------\n\nexport async function createAgentConfig(input: Partial<AgentConfigLike>): Promise<AgentConfigLike> {\n return request('/agents/configs', {\n method: 'POST',\n body: JSON.stringify(input),\n })\n}\n\nexport async function updateAgentConfig(agentId: string, updates: Partial<AgentConfigLike>): Promise<AgentConfigLike> {\n return request(`/agents/configs/${encodeURIComponent(agentId)}`, {\n method: 'PATCH',\n body: JSON.stringify(updates),\n })\n}\n\nexport async function deleteAgentConfig(agentId: string): Promise<{ deleted: boolean }> {\n return request(`/agents/configs/${encodeURIComponent(agentId)}`, {\n method: 'DELETE',\n })\n}\n\n// ---------------------------------------------------------------------------\n// Agent Prompts (versioned prompt library)\n// ---------------------------------------------------------------------------\n\nexport async function createAgentPrompt(input: Omit<AgentPrompt, 'promptId' | 'version' | 'createdAt'>): Promise<AgentPrompt> {\n return request('/agents/prompts', {\n method: 'POST',\n body: JSON.stringify(input),\n })\n}\n\nexport async function updateAgentPrompt(promptId: string, updates: Partial<AgentPrompt>): Promise<AgentPrompt> {\n // Backend route is the collection PATCH `/agents/prompts` — id rides\n // in the body as `promptId`. The handler also requires `promptText`\n // (it overwrites the active version's text), so coerce the legacy\n // partial-AgentPrompt payload into that shape.\n const promptText = (updates as { promptText?: unknown }).promptText\n ?? (updates as { systemPrompt?: unknown }).systemPrompt\n ?? (updates as { content?: unknown }).content\n if (typeof promptText !== 'string' || promptText.length === 0) {\n throw new Error('updateAgentPrompt: `promptText` (or `systemPrompt`/`content`) is required')\n }\n return request('/agents/prompts', {\n method: 'PATCH',\n body: JSON.stringify({ promptId, promptText }),\n })\n}\n\nexport async function deleteAgentPrompt(promptId: string): Promise<{ deleted: boolean }> {\n // The collection route does not expose DELETE today. Surface a clear\n // error rather than silently 404 — callers are using soft-delete via\n // an enabled toggle on the prompt instead.\n void promptId\n throw new Error('deleteAgentPrompt is not supported by the backend yet — disable the prompt via PATCH instead')\n}\n\n// ---------------------------------------------------------------------------\n// Agent Tool Definitions — update / delete\n// ---------------------------------------------------------------------------\n\n/**\n * Patch an existing tool definition. The Rust handler takes the id in\n * the BODY (`toolId`) rather than the URL, and accepts a narrower set\n * of fields than create: `{toolId, name?, description?, parameters?,\n * implementationKey?}`. `implementationKey` is a JSON string that wraps\n * `handlerConfig` — the page wrapper produces that shape before calling.\n */\nexport async function updateAgentToolDefinition(\n agentToolId: string,\n updates: {\n name?: string\n description?: string\n parameters?: Record<string, unknown>\n implementationKey?: string\n },\n): Promise<AgentTool> {\n return request('/agents/tool-definitions', {\n method: 'PATCH',\n body: JSON.stringify({ toolId: agentToolId, ...updates }),\n })\n}\n\nexport async function deleteAgentToolDefinition(agentToolId: string): Promise<{ deleted: boolean }> {\n return request('/agents/tool-definitions', {\n method: 'DELETE',\n body: JSON.stringify({ toolId: agentToolId }),\n })\n}\n\n// ---------------------------------------------------------------------------\n// Workflow Runs — detail, cancel, replay\n// ---------------------------------------------------------------------------\n\nexport type WorkflowRunListParams = {\n workflowId?: string\n status?: string\n limit?: number\n offset?: number\n}\n\nexport async function listWorkflowRuns(params?: WorkflowRunListParams): Promise<{ items: WorkflowRun[]; total: number }> {\n const query = new URLSearchParams()\n if (params?.workflowId) query.set('workflowId', params.workflowId)\n if (params?.status) query.set('status', params.status)\n if (params?.limit) query.set('limit', String(params.limit))\n if (params?.offset) query.set('offset', String(params.offset))\n const path = query.toString().length > 0 ? `/workflow-runs?${query}` : '/workflow-runs'\n return request(path)\n}\n\nexport async function getWorkflowRunById(runId: string): Promise<WorkflowRun> {\n return request(`/workflow-runs/${encodeURIComponent(runId)}`)\n}\n\nexport async function cancelWorkflowRun(runId: string): Promise<WorkflowRun> {\n return request(`/workflow-runs/${encodeURIComponent(runId)}/cancel`, {\n method: 'POST',\n })\n}\n\nexport async function replayWorkflowRun(\n workflowId: string,\n runId: string,\n overrides?: Record<string, VariableValue>,\n): Promise<WorkflowRun> {\n // Empty body → exact rerun (legacy behaviour). With `overrides`, the\n // backend shallow-merges over the original `input_variables`.\n const body = overrides && Object.keys(overrides).length > 0\n ? JSON.stringify({ inputVariables: overrides })\n : undefined\n return request(\n `/workflows/${encodeURIComponent(workflowId)}/runs/${encodeURIComponent(runId)}/replay`,\n { method: 'POST', body },\n )\n}\n\nexport type NodeMetrics = {\n tokensIn?: number\n tokensOut?: number\n costUsd?: number\n provider?: string\n model?: string\n}\n\nexport type RunTimelineEntry = {\n nodeId: string\n nodeType: string\n status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped'\n startedAt: string | null\n completedAt: string | null\n durationMs: number | null\n inputs?: Record<string, unknown>\n outputs?: Record<string, unknown>\n error?: string\n metrics?: NodeMetrics\n}\n\nexport async function getRunTimeline(workflowId: string, runId: string): Promise<RunTimelineEntry[]> {\n return request(\n `/workflows/${encodeURIComponent(workflowId)}/runs/${encodeURIComponent(runId)}/timeline`,\n )\n}\n\n// ---------------------------------------------------------------------------\n// Analytics (analytics_runs handler)\n// ---------------------------------------------------------------------------\n\nexport type AnalyticsSummary = {\n totalRuns: number\n runsByStatus: Record<string, number>\n avgDurationMs: number\n successRate: number\n perWorkflow: Array<{ workflowId: string; name: string; runs: number; successRate: number }>\n series?: Array<{ date: string; runs: number; successes: number; failures: number }>\n}\n\nexport async function getAnalyticsSummary(params?: { from?: string; to?: string }): Promise<AnalyticsSummary> {\n const query = new URLSearchParams()\n if (params?.from) query.set('from', params.from)\n if (params?.to) query.set('to', params.to)\n const path = query.toString().length > 0 ? `/analytics/runs?${query}` : '/analytics/runs'\n return request(path)\n}\n\n// ---------------------------------------------------------------------------\n// Uploads — presigned S3 upload/download\n// ---------------------------------------------------------------------------\n\nexport type PresignUploadInput = {\n fileName: string\n contentType: string\n fileSize?: number\n folder?: string\n}\n\nexport type PresignedUpload = {\n uploadUrl: string\n downloadUrl: string\n objectKey: string\n expiresAt: string\n}\n\nexport async function presignUpload(input: PresignUploadInput): Promise<PresignedUpload> {\n return request('/uploads', {\n method: 'POST',\n body: JSON.stringify(input),\n })\n}\n\nexport async function getUploadDownloadUrl(objectKey: string): Promise<{ downloadUrl: string }> {\n return request(`/uploads/${encodeURIComponent(objectKey)}`)\n}\n\nexport async function deleteUpload(objectKey: string): Promise<{ deleted: boolean }> {\n return request(`/uploads/${encodeURIComponent(objectKey)}`, {\n method: 'DELETE',\n })\n}\n\n// ---------------------------------------------------------------------------\n// Run Events — SSE subscription helper\n// ---------------------------------------------------------------------------\n\nexport type RunEvent = {\n /**\n * Discriminator for the event payload. The set is open-ended on purpose\n * — Phase 2/3 of the generative-UI work adds `ui-render` (per-section\n * progressive rendering) and `run-paused` (operator-input pause) without\n * a breaking change.\n */\n type:\n | 'run-started'\n | 'node-started'\n | 'node-completed'\n | 'node-failed'\n | 'run-completed'\n | 'run-failed'\n | 'run-paused'\n | 'ui-render'\n | 'log'\n runId: string\n nodeId?: string\n data?: Record<string, unknown>\n timestamp: string\n}\n\n// ---------------------------------------------------------------------------\n// Public sample workflows\n// ---------------------------------------------------------------------------\n\nexport type PublicSampleWorkflow = {\n slug: string\n name: string | null\n description: string | null\n graph: WorkflowGraph\n version: number | null\n publishedAt: string | null\n}\n\nexport async function getPublicSampleWorkflow(slug: string): Promise<PublicSampleWorkflow> {\n return requestPublic(`/samples/workflows/${encodeURIComponent(slug)}`)\n}\n\n// ---------------------------------------------------------------------------\n// Approvals (resolves a paused human_approval node)\n// ---------------------------------------------------------------------------\n\nexport type ApprovalDecision = {\n /** True approves and resumes the run; false fails it with `reason`. */\n approved: boolean\n /** Operator-supplied rationale, surfaced on the audit row. */\n reason?: string\n /**\n * Captured payload — for `input_request` sections this carries the\n * form field values. The downstream workflow nodes read it from\n * `inputs.approvals.<nodeId>.payload`.\n */\n payload?: Record<string, unknown>\n}\n\nexport type ApprovalResponse = {\n approvalId: string\n sourceRunId: string\n resumedRunId: string\n nodeId: string\n approved: boolean\n status: string\n}\n\n/**\n * Resolve a paused workflow run by recording an operator decision.\n * The backend writes an audit row, merges the decision into the run's\n * inputs, and re-executes — see #457.\n */\nexport async function submitApproval(\n runId: string,\n nodeId: string,\n decision: ApprovalDecision,\n): Promise<ApprovalResponse> {\n return request<ApprovalResponse>(\n `/workflow-runs/${encodeURIComponent(runId)}/approvals/${encodeURIComponent(nodeId)}`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(decision),\n },\n )\n}\n\n/**\n * Connection state for {@link subscribeToRunEvents}. UI consumers can\n * surface this — e.g. show \"reconnecting…\" badge — by passing an\n * `onState` callback.\n */\nexport type RunSubscriptionState = 'live' | 'reconnecting' | 'polling' | 'closed'\n\nconst SSE_MAX_RECONNECT_ATTEMPTS = 5\nconst SSE_RECONNECT_BASE_MS = 1_000\nconst SSE_RECONNECT_CAP_MS = 16_000\nconst POLLING_INTERVAL_MS = 5_000\n\nconst TERMINAL_EVENT_TYPES: ReadonlySet<RunEvent['type']> = new Set([\n 'run-completed',\n 'run-failed',\n])\n\nconst TERMINAL_RUN_STATUSES: ReadonlySet<string> = new Set([\n 'completed',\n 'failed',\n 'cancelled',\n])\n\n/**\n * Subscribe to a run's event stream with auto-reconnect + polling fallback.\n *\n * The default `EventSource` drops silently on idle proxies / cold-restarts\n * (CloudFront + Lambda Function URL combo at customer scale will close\n * an idle connection after ~30–60s). When that happens the run viewer\n * looks frozen with no signal to the user.\n *\n * Lifecycle:\n * 1. Open SSE. On `open`, state = `live`.\n * 2. On `error`, close the source and exponential-backoff (1s → 2s → 4s\n * → 8s → 16s, with jitter). State = `reconnecting`.\n * 3. After {@link SSE_MAX_RECONNECT_ATTEMPTS} failures, fall back to\n * polling `GET /workflow-runs/{runId}` every 5s. State = `polling`.\n * 4. On terminal event (`run-completed` / `run-failed`) or terminal\n * polled status (completed/failed/cancelled), close + state = `closed`.\n * 5. Returned disposer also flips to `closed`; idempotent.\n *\n * Backwards-compatible with the previous 3-arg signature; pass `onState`\n * as a 4th arg if you want to render connection-state UI.\n */\nexport function subscribeToRunEvents(\n runId: string,\n onEvent: (event: RunEvent) => void,\n onError?: (error: Event) => void,\n onState?: (state: RunSubscriptionState) => void,\n): () => void {\n let cancelled = false\n let attempt = 0\n let currentSource: EventSource | null = null\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null\n let pollingTimer: ReturnType<typeof setInterval> | null = null\n\n const setState = (state: RunSubscriptionState) => {\n if (!cancelled) onState?.(state)\n }\n\n const cleanup = () => {\n if (cancelled) return\n cancelled = true\n if (currentSource) {\n currentSource.close()\n currentSource = null\n }\n if (reconnectTimer) {\n clearTimeout(reconnectTimer)\n reconnectTimer = null\n }\n if (pollingTimer) {\n clearInterval(pollingTimer)\n pollingTimer = null\n }\n setState('closed')\n }\n\n const startPolling = () => {\n if (cancelled) return\n setState('polling')\n pollingTimer = setInterval(() => {\n if (cancelled) return\n void getWorkflowRunById(runId)\n .then((run) => {\n if (cancelled) return\n // Surface a synthetic event so the consumer's onEvent path is\n // the single sink for both SSE + polling. Reuses the `log`\n // type with a marker payload — no schema change needed.\n onEvent({\n type: 'log',\n runId,\n data: { source: 'polling-fallback', run: run as unknown as Record<string, unknown> },\n timestamp: new Date().toISOString(),\n } as RunEvent)\n if (run.status && TERMINAL_RUN_STATUSES.has(run.status)) {\n cleanup()\n }\n })\n .catch(() => {\n // Swallow transient polling errors — the next tick will retry.\n })\n }, POLLING_INTERVAL_MS)\n }\n\n const connect = () => {\n if (cancelled) return\n\n const baseUrl = buildLambdaApiUrl('').replace(/\\/$/, '')\n const url = `${baseUrl}/workflow-runs/${encodeURIComponent(runId)}/events`\n const source = new EventSource(url, { withCredentials: true })\n currentSource = source\n\n source.addEventListener('open', () => {\n attempt = 0\n setState('live')\n })\n\n source.addEventListener('message', (event) => {\n try {\n const parsed = JSON.parse(event.data) as RunEvent\n onEvent(parsed)\n if (TERMINAL_EVENT_TYPES.has(parsed.type)) {\n cleanup()\n }\n } catch {\n // ignore malformed messages\n }\n })\n\n source.addEventListener('error', (errorEvent) => {\n if (cancelled) return\n onError?.(errorEvent)\n source.close()\n currentSource = null\n\n attempt += 1\n if (attempt > SSE_MAX_RECONNECT_ATTEMPTS) {\n startPolling()\n return\n }\n\n // Exponential backoff with jitter to avoid synchronous thundering\n // herd if many viewers reconnect at the same moment.\n const exponentialMs = Math.min(SSE_RECONNECT_BASE_MS * 2 ** (attempt - 1), SSE_RECONNECT_CAP_MS)\n const jitterMs = Math.random() * 500\n setState('reconnecting')\n reconnectTimer = setTimeout(connect, exponentialMs + jitterMs)\n })\n }\n\n connect()\n return cleanup\n}\n\nconst AGENT_AVATARS: Record<string, string> = {\n 'Sales Assistant': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Rafael&hair=variant01&beardProbability=0&mouth=happy01',\n 'Sales Specialist': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Marcos&hair=variant15&beardProbability=50&mouth=happy02',\n 'Support Agent': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Ana&hair=variant43&beardProbability=0&mouth=happy01',\n 'Financial Analyst': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Lucas&hair=variant08&beardProbability=50&mouth=happy02',\n 'Security Analyst': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Pedro&hair=variant22&beardProbability=50&mouth=happy01',\n 'Data Analyst': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Julia&hair=variant29&beardProbability=0&mouth=happy01',\n 'Market Analyst': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Diego&hair=variant12&beardProbability=0&mouth=happy02',\n 'Pricing Manager': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Beatriz&hair=variant38&beardProbability=0&mouth=happy01',\n 'Onboarding Agent': 'https://api.dicebear.com/9.x/lorelei/svg?seed=Camila&hair=variant35&beardProbability=0&mouth=happy01',\n}\n\nfunction defaultAvatar(name: string): string {\n return AGENT_AVATARS[name] ?? `https://api.dicebear.com/9.x/lorelei/svg?seed=${encodeURIComponent(name)}`\n}\n\nexport async function getAgentConfigsWithPrompts(): Promise<AgentWithPrompts[]> {\n const configs = await request<AgentConfigLike[]>('/agents/configs')\n\n return Promise.all(configs.map(async (agent) => {\n const raw = agent as Record<string, unknown>\n // Normalize snake_case from Rust API to camelCase\n const agentId = String(raw.agent_id ?? raw.agentId ?? agent.id ?? '')\n const id = agentId\n const avatar: string = typeof raw.avatar === 'string' && raw.avatar.length > 0\n ? raw.avatar\n : defaultAvatar(String(agent.name ?? ''))\n const modelId = String(raw.model_id ?? raw.modelId ?? '')\n const displayOrder = Number(raw.display_order ?? raw.displayOrder ?? raw.order ?? 0)\n const maxTokens = Number(raw.max_tokens ?? raw.maxTokens ?? 2048)\n const normalized = { ...raw, agentId, modelId, displayOrder, maxTokens, order: displayOrder }\n if (!id) return { ...(normalized as unknown as AgentWithPrompts), avatar, promptCount: 0, activePromptVersion: 0 }\n try {\n const prompts = await getAgentPrompts(id)\n const activePrompt = prompts.find((prompt) => prompt.isActive)\n return {\n ...(normalized as unknown as AgentWithPrompts),\n avatar,\n promptCount: prompts.length,\n activePromptVersion: activePrompt?.version ?? 0,\n }\n } catch {\n return {\n ...(normalized as unknown as AgentWithPrompts),\n avatar,\n promptCount: 0,\n activePromptVersion: 0,\n }\n }\n }))\n}\n\n// ---------------------------------------------------------------------------\n// Datasources\n// ---------------------------------------------------------------------------\n\nexport async function getDatasources(): Promise<DataSource[]> {\n return request('/datasources')\n}\n\nexport async function createDatasource(data: DatasourceFormData): Promise<DataSource> {\n const body = toDatasourceWireBody(data)\n return request('/datasources', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n}\n\n/** Pre-save connection probe (Fallback 6). Hits `POST /datasources/test`\n * with the same body shape `createDatasource` ships, so the user can\n * verify creds during the wizard before the row is persisted.\n *\n * Returns `{ ok, message?, latencyMs? }` so the wizard can render a\n * precise StatusBadge — `ok: true` with a message means the dialect's\n * driver is stubbed and the validation was skipped gracefully. */\nexport async function testDatasource(\n data: DatasourceFormData,\n): Promise<{ ok: boolean; message?: string; latencyMs?: number }> {\n const body = toDatasourceWireBody(data)\n return request('/datasources/test', {\n method: 'POST',\n body: JSON.stringify(body),\n })\n}\n\n/**\n * Group the flat `DatasourceFormData` shape (that the modal captures off\n * form state) into the nested body the backend expects:\n *\n * { name, dialect,\n * credentials: { host, port, database, username, password, ... },\n * allowedTables, blockedColumns, maxPoolSize, timeoutMs, readOnly }\n *\n * The handler's `ingest_credentials` pulls secret-shaped keys out of\n * `credentials` into the vault, so the plaintext password never lands\n * on the row. Governance fields stay top-level.\n */\nfunction toDatasourceWireBody(data: DatasourceFormData): Record<string, unknown> {\n const CREDENTIAL_KEYS: Array<keyof DatasourceFormData> = [\n 'host', 'port', 'database', 'username', 'password', 'schema',\n 'connectionString', 'projectId', 'dataset', 'keyFile', 'account',\n 'warehouse', 'region', 'bucket', 'token', 'apiKey', 'environment',\n 'index', 'url', 'ssl',\n ]\n const credentials: Record<string, unknown> = {}\n for (const key of CREDENTIAL_KEYS) {\n const value = data[key]\n if (value !== undefined && value !== '' && value !== null) {\n credentials[key as string] = value\n }\n }\n const body: Record<string, unknown> = {\n name: data.name,\n dialect: data.dialect,\n }\n if (Object.keys(credentials).length > 0) body.credentials = credentials\n if (data.allowedTables && data.allowedTables.length > 0) body.allowedTables = data.allowedTables\n if (data.blockedColumns && data.blockedColumns.length > 0) body.blockedColumns = data.blockedColumns\n if (typeof data.maxPoolSize === 'number') body.maxPoolSize = data.maxPoolSize\n if (typeof data.timeoutMs === 'number') body.timeoutMs = data.timeoutMs\n if (typeof data.readOnly === 'boolean') body.readOnly = data.readOnly\n if (typeof data.maskPii === 'boolean') body.maskPii = data.maskPii\n return body\n}\n\nexport async function getDatasourceTables(datasourceId: string): Promise<string[]> {\n return request(`/datasources/${encodeURIComponent(datasourceId)}/tables`)\n}\n\nexport async function getDatasourceSchema(\n datasourceId: string,\n table: string\n): Promise<Array<{ name: string; type: string; nullable?: boolean }>> {\n return request(`/datasources/${encodeURIComponent(datasourceId)}/schema/${encodeURIComponent(table)}`)\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkQGLGQXJE_js = require('./chunk-QGLGQXJE.js');
|
|
5
|
-
var
|
|
5
|
+
var chunkZGVN23J4_js = require('./chunk-ZGVN23J4.js');
|
|
6
6
|
var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
|
|
7
7
|
var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
|
|
8
8
|
var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
|
|
@@ -88,7 +88,7 @@ function AdminUserList({ client, onUserSelect }) {
|
|
|
88
88
|
};
|
|
89
89
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
90
90
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
91
|
-
|
|
91
|
+
chunkZGVN23J4_js.SectionCard,
|
|
92
92
|
{
|
|
93
93
|
header: {
|
|
94
94
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.UsersIcon, { className: "h-5 w-5 text-white" }),
|
|
@@ -99,7 +99,7 @@ function AdminUserList({ client, onUserSelect }) {
|
|
|
99
99
|
padded: false,
|
|
100
100
|
children: [
|
|
101
101
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-gray-200/60 p-4 dark:border-white/10", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
102
|
-
|
|
102
|
+
chunkZGVN23J4_js.SearchInput,
|
|
103
103
|
{
|
|
104
104
|
value: search,
|
|
105
105
|
onChange: (event) => handleSearch(event.target.value),
|
|
@@ -107,10 +107,10 @@ function AdminUserList({ client, onUserSelect }) {
|
|
|
107
107
|
}
|
|
108
108
|
) }),
|
|
109
109
|
isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
|
|
110
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.InlineSpinner, {}),
|
|
111
111
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("admin.users.loading") })
|
|
112
112
|
] }) : users.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
-
|
|
113
|
+
chunkZGVN23J4_js.EmptyState,
|
|
114
114
|
{
|
|
115
115
|
message: t("admin.users.emptyMessage"),
|
|
116
116
|
description: t("admin.users.emptyDescription"),
|
|
@@ -135,7 +135,7 @@ function AdminUserList({ client, onUserSelect }) {
|
|
|
135
135
|
children: [
|
|
136
136
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
137
137
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
138
|
-
|
|
138
|
+
chunkZGVN23J4_js.Avatar,
|
|
139
139
|
{
|
|
140
140
|
src: user.image ?? void 0,
|
|
141
141
|
initials: (user.name ?? user.email).slice(0, 2).toUpperCase(),
|
|
@@ -149,7 +149,7 @@ function AdminUserList({ client, onUserSelect }) {
|
|
|
149
149
|
] }) }),
|
|
150
150
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsxRuntime.jsx(chunkBHOT22QL_js.Badge, { color: roleBadgeColor(user.role), children: user.role }) }),
|
|
151
151
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
152
|
-
|
|
152
|
+
chunkZGVN23J4_js.StatusBadge,
|
|
153
153
|
{
|
|
154
154
|
status: user.status === "active" ? "active" : "inactive",
|
|
155
155
|
label: user.status,
|
|
@@ -208,7 +208,7 @@ function AdminUserList({ client, onUserSelect }) {
|
|
|
208
208
|
}
|
|
209
209
|
),
|
|
210
210
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
211
|
-
|
|
211
|
+
chunkZGVN23J4_js.DynamicIslandConfirm,
|
|
212
212
|
{
|
|
213
213
|
open: deleteTarget !== null,
|
|
214
214
|
onClose: handleDeleteCancel,
|
|
@@ -275,7 +275,7 @@ function AdminUserForm({
|
|
|
275
275
|
}
|
|
276
276
|
}, [email, name, password, selectedRole, onSubmit, onClose, resetForm, t]);
|
|
277
277
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
278
|
-
|
|
278
|
+
chunkZGVN23J4_js.GlassModal,
|
|
279
279
|
{
|
|
280
280
|
open,
|
|
281
281
|
onClose: handleClose,
|
|
@@ -293,7 +293,7 @@ function AdminUserForm({
|
|
|
293
293
|
className: "space-y-4 p-4 sm:p-6",
|
|
294
294
|
children: [
|
|
295
295
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
296
|
-
|
|
296
|
+
chunkZGVN23J4_js.Input,
|
|
297
297
|
{
|
|
298
298
|
label: t("admin.userForm.emailLabel"),
|
|
299
299
|
type: "email",
|
|
@@ -306,7 +306,7 @@ function AdminUserForm({
|
|
|
306
306
|
}
|
|
307
307
|
),
|
|
308
308
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
309
|
-
|
|
309
|
+
chunkZGVN23J4_js.Input,
|
|
310
310
|
{
|
|
311
311
|
label: t("admin.userForm.nameLabel"),
|
|
312
312
|
value: name,
|
|
@@ -317,7 +317,7 @@ function AdminUserForm({
|
|
|
317
317
|
}
|
|
318
318
|
),
|
|
319
319
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
320
|
-
|
|
320
|
+
chunkZGVN23J4_js.PasswordInput,
|
|
321
321
|
{
|
|
322
322
|
label: t("admin.userForm.passwordLabel"),
|
|
323
323
|
value: password,
|
|
@@ -438,7 +438,7 @@ function AdminOrganizationList({ client, onOrganizationSelect }) {
|
|
|
438
438
|
}, []);
|
|
439
439
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
440
440
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
441
|
-
|
|
441
|
+
chunkZGVN23J4_js.SectionCard,
|
|
442
442
|
{
|
|
443
443
|
header: {
|
|
444
444
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.BuildingOffice2Icon, { className: "h-5 w-5 text-white" }),
|
|
@@ -449,7 +449,7 @@ function AdminOrganizationList({ client, onOrganizationSelect }) {
|
|
|
449
449
|
padded: false,
|
|
450
450
|
children: [
|
|
451
451
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-gray-200/60 p-4 dark:border-white/10", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
452
|
-
|
|
452
|
+
chunkZGVN23J4_js.SearchInput,
|
|
453
453
|
{
|
|
454
454
|
value: search,
|
|
455
455
|
onChange: (event) => setSearch(event.target.value),
|
|
@@ -457,10 +457,10 @@ function AdminOrganizationList({ client, onOrganizationSelect }) {
|
|
|
457
457
|
}
|
|
458
458
|
) }),
|
|
459
459
|
isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
|
|
460
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
460
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.InlineSpinner, {}),
|
|
461
461
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("admin.organizations.loading") })
|
|
462
462
|
] }) : filteredOrganizations.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
463
|
-
|
|
463
|
+
chunkZGVN23J4_js.EmptyState,
|
|
464
464
|
{
|
|
465
465
|
message: t("admin.organizations.emptyMessage"),
|
|
466
466
|
description: t("admin.organizations.emptyDescription"),
|
|
@@ -487,7 +487,7 @@ function AdminOrganizationList({ client, onOrganizationSelect }) {
|
|
|
487
487
|
] }),
|
|
488
488
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "hidden px-4 py-3 text-gray-500 dark:text-gray-400 sm:table-cell", children: organization.displayName ?? "\u2014" }),
|
|
489
489
|
/* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
490
|
-
|
|
490
|
+
chunkZGVN23J4_js.StatusBadge,
|
|
491
491
|
{
|
|
492
492
|
status: organization.enabled ? "active" : "inactive",
|
|
493
493
|
label: organization.enabled ? t("admin.organizations.statusEnabled") : t("admin.organizations.statusDisabled"),
|
|
@@ -520,7 +520,7 @@ function AdminOrganizationList({ client, onOrganizationSelect }) {
|
|
|
520
520
|
}
|
|
521
521
|
),
|
|
522
522
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
523
|
-
|
|
523
|
+
chunkZGVN23J4_js.DynamicIslandConfirm,
|
|
524
524
|
{
|
|
525
525
|
open: deleteTarget !== null,
|
|
526
526
|
onClose: handleDeleteCancel,
|
|
@@ -600,7 +600,7 @@ function AdminOrganizationForm({
|
|
|
600
600
|
}
|
|
601
601
|
}, [name, displayName, description, isEditing, onSubmit, onClose, t]);
|
|
602
602
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
603
|
-
|
|
603
|
+
chunkZGVN23J4_js.GlassModal,
|
|
604
604
|
{
|
|
605
605
|
open,
|
|
606
606
|
onClose: handleClose,
|
|
@@ -618,7 +618,7 @@ function AdminOrganizationForm({
|
|
|
618
618
|
className: "space-y-4 p-4 sm:p-6",
|
|
619
619
|
children: [
|
|
620
620
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
621
|
-
|
|
621
|
+
chunkZGVN23J4_js.Input,
|
|
622
622
|
{
|
|
623
623
|
label: t("admin.organizationForm.nameLabel"),
|
|
624
624
|
value: name,
|
|
@@ -629,7 +629,7 @@ function AdminOrganizationForm({
|
|
|
629
629
|
}
|
|
630
630
|
),
|
|
631
631
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
632
|
-
|
|
632
|
+
chunkZGVN23J4_js.Input,
|
|
633
633
|
{
|
|
634
634
|
label: t("admin.organizationForm.displayNameLabel"),
|
|
635
635
|
value: displayName,
|
|
@@ -639,7 +639,7 @@ function AdminOrganizationForm({
|
|
|
639
639
|
}
|
|
640
640
|
),
|
|
641
641
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
642
|
-
|
|
642
|
+
chunkZGVN23J4_js.Input,
|
|
643
643
|
{
|
|
644
644
|
label: t("admin.organizationForm.descriptionLabel"),
|
|
645
645
|
value: description,
|
|
@@ -819,7 +819,7 @@ function AdminPermissionList({ client }) {
|
|
|
819
819
|
}, []);
|
|
820
820
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
821
821
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
822
|
-
|
|
822
|
+
chunkZGVN23J4_js.SectionCard,
|
|
823
823
|
{
|
|
824
824
|
header: {
|
|
825
825
|
icon: /* @__PURE__ */ jsxRuntime.jsx(outline.KeyIcon, { className: "h-5 w-5 text-white" }),
|
|
@@ -834,7 +834,7 @@ function AdminPermissionList({ client }) {
|
|
|
834
834
|
padded: false,
|
|
835
835
|
children: [
|
|
836
836
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-gray-200/60 p-4 dark:border-white/10", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
837
|
-
|
|
837
|
+
chunkZGVN23J4_js.SearchInput,
|
|
838
838
|
{
|
|
839
839
|
value: search,
|
|
840
840
|
onChange: (event) => setSearch(event.target.value),
|
|
@@ -842,10 +842,10 @@ function AdminPermissionList({ client }) {
|
|
|
842
842
|
}
|
|
843
843
|
) }),
|
|
844
844
|
isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
|
|
845
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
845
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkZGVN23J4_js.InlineSpinner, {}),
|
|
846
846
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("admin.permissions.loading") })
|
|
847
847
|
] }) : filteredPermissions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
848
|
-
|
|
848
|
+
chunkZGVN23J4_js.EmptyState,
|
|
849
849
|
{
|
|
850
850
|
message: t("admin.permissions.emptyMessage"),
|
|
851
851
|
description: t("admin.permissions.emptyDescription"),
|
|
@@ -902,7 +902,7 @@ function AdminPermissionList({ client }) {
|
|
|
902
902
|
}
|
|
903
903
|
),
|
|
904
904
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
905
|
-
|
|
905
|
+
chunkZGVN23J4_js.Sheet,
|
|
906
906
|
{
|
|
907
907
|
open: isFormOpen,
|
|
908
908
|
onClose: handleCloseForm,
|
|
@@ -911,7 +911,7 @@ function AdminPermissionList({ client }) {
|
|
|
911
911
|
size: "md",
|
|
912
912
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 p-4 sm:p-6", children: [
|
|
913
913
|
!editingPermission && /* @__PURE__ */ jsxRuntime.jsx(
|
|
914
|
-
|
|
914
|
+
chunkZGVN23J4_js.Input,
|
|
915
915
|
{
|
|
916
916
|
label: t("admin.permissions.formIdLabel"),
|
|
917
917
|
value: formId,
|
|
@@ -922,7 +922,7 @@ function AdminPermissionList({ client }) {
|
|
|
922
922
|
}
|
|
923
923
|
),
|
|
924
924
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
925
|
-
|
|
925
|
+
chunkZGVN23J4_js.Input,
|
|
926
926
|
{
|
|
927
927
|
label: t("admin.permissions.formNameLabel"),
|
|
928
928
|
value: formName,
|
|
@@ -933,7 +933,7 @@ function AdminPermissionList({ client }) {
|
|
|
933
933
|
}
|
|
934
934
|
),
|
|
935
935
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
936
|
-
|
|
936
|
+
chunkZGVN23J4_js.Input,
|
|
937
937
|
{
|
|
938
938
|
label: t("admin.permissions.formDescriptionLabel"),
|
|
939
939
|
value: formDescription,
|
|
@@ -944,7 +944,7 @@ function AdminPermissionList({ client }) {
|
|
|
944
944
|
),
|
|
945
945
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
|
|
946
946
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
947
|
-
|
|
947
|
+
chunkZGVN23J4_js.Input,
|
|
948
948
|
{
|
|
949
949
|
label: t("admin.permissions.formResourceLabel"),
|
|
950
950
|
value: formResource,
|
|
@@ -954,7 +954,7 @@ function AdminPermissionList({ client }) {
|
|
|
954
954
|
}
|
|
955
955
|
),
|
|
956
956
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
957
|
-
|
|
957
|
+
chunkZGVN23J4_js.Input,
|
|
958
958
|
{
|
|
959
959
|
label: t("admin.permissions.formActionLabel"),
|
|
960
960
|
value: formAction,
|
|
@@ -992,7 +992,7 @@ function AdminPermissionList({ client }) {
|
|
|
992
992
|
}
|
|
993
993
|
),
|
|
994
994
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
995
|
-
|
|
995
|
+
chunkZGVN23J4_js.DynamicIslandConfirm,
|
|
996
996
|
{
|
|
997
997
|
open: deleteTarget !== null,
|
|
998
998
|
onClose: handleDeleteCancel,
|
|
@@ -1012,5 +1012,5 @@ exports.AdminOrganizationList = AdminOrganizationList;
|
|
|
1012
1012
|
exports.AdminPermissionList = AdminPermissionList;
|
|
1013
1013
|
exports.AdminUserForm = AdminUserForm;
|
|
1014
1014
|
exports.AdminUserList = AdminUserList;
|
|
1015
|
-
//# sourceMappingURL=chunk-
|
|
1016
|
-
//# sourceMappingURL=chunk-
|
|
1015
|
+
//# sourceMappingURL=chunk-JTD3BBVI.js.map
|
|
1016
|
+
//# sourceMappingURL=chunk-JTD3BBVI.js.map
|