@datatechsolutions/ui 2.11.93 → 3.1.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.
Files changed (138) hide show
  1. package/dist/astrlabe/contracts.d.mts +3 -3
  2. package/dist/astrlabe/contracts.d.ts +3 -3
  3. package/dist/astrlabe/index.js +108 -108
  4. package/dist/astrlabe/index.mjs +4 -4
  5. package/dist/astrlabe/workflow-canvas.js +4 -4
  6. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  7. package/dist/brand/index.d.mts +1 -15
  8. package/dist/brand/index.d.ts +1 -15
  9. package/dist/brand/index.js +0 -14
  10. package/dist/brand/index.js.map +1 -1
  11. package/dist/brand/index.mjs +0 -14
  12. package/dist/brand/index.mjs.map +1 -1
  13. package/dist/{chunk-24QKSC74.js → chunk-3JJWPOK6.js} +6 -6
  14. package/dist/{chunk-24QKSC74.js.map → chunk-3JJWPOK6.js.map} +1 -1
  15. package/dist/{chunk-HGN5W56D.mjs → chunk-3ZUMJTDT.mjs} +3 -3
  16. package/dist/{chunk-HGN5W56D.mjs.map → chunk-3ZUMJTDT.mjs.map} +1 -1
  17. package/dist/{chunk-LKJZGFM4.mjs → chunk-5GDKCFM5.mjs} +3 -3
  18. package/dist/{chunk-LKJZGFM4.mjs.map → chunk-5GDKCFM5.mjs.map} +1 -1
  19. package/dist/{chunk-ZHUPYX4Q.mjs → chunk-5RM6NGZ6.mjs} +3 -3
  20. package/dist/{chunk-ZHUPYX4Q.mjs.map → chunk-5RM6NGZ6.mjs.map} +1 -1
  21. package/dist/{chunk-DB64YDV2.js → chunk-AOUUZ52N.js} +55 -55
  22. package/dist/{chunk-DB64YDV2.js.map → chunk-AOUUZ52N.js.map} +1 -1
  23. package/dist/{chunk-VGSWSQQU.mjs → chunk-B67DP7MI.mjs} +4 -4
  24. package/dist/{chunk-VGSWSQQU.mjs.map → chunk-B67DP7MI.mjs.map} +1 -1
  25. package/dist/{chunk-NYQAEPC7.js → chunk-EFOXN3LC.js} +159 -168
  26. package/dist/chunk-EFOXN3LC.js.map +1 -0
  27. package/dist/{chunk-ARVLVWUC.js → chunk-F54Q2YJY.js} +97 -15
  28. package/dist/chunk-F54Q2YJY.js.map +1 -0
  29. package/dist/{chunk-GMZ3PTNK.mjs → chunk-H2D2CRTD.mjs} +7 -7
  30. package/dist/{chunk-GMZ3PTNK.mjs.map → chunk-H2D2CRTD.mjs.map} +1 -1
  31. package/dist/{chunk-PTGPQJZJ.js → chunk-HDCUWUNH.js} +15 -15
  32. package/dist/{chunk-PTGPQJZJ.js.map → chunk-HDCUWUNH.js.map} +1 -1
  33. package/dist/{chunk-ZKUYNCAG.js → chunk-I2NZGVBG.js} +1595 -2140
  34. package/dist/chunk-I2NZGVBG.js.map +1 -0
  35. package/dist/{chunk-MLAXYDEU.mjs → chunk-IRPS5UCS.mjs} +3 -3
  36. package/dist/{chunk-MLAXYDEU.mjs.map → chunk-IRPS5UCS.mjs.map} +1 -1
  37. package/dist/{chunk-TEQYIK2B.mjs → chunk-IRT4T3CU.mjs} +92 -101
  38. package/dist/chunk-IRT4T3CU.mjs.map +1 -0
  39. package/dist/{chunk-A3BFURJB.mjs → chunk-JN6IL6OH.mjs} +1595 -2138
  40. package/dist/chunk-JN6IL6OH.mjs.map +1 -0
  41. package/dist/{chunk-NA57KK4O.js → chunk-JSNRCYSO.js} +4 -4
  42. package/dist/{chunk-NA57KK4O.js.map → chunk-JSNRCYSO.js.map} +1 -1
  43. package/dist/{chunk-XSBZNPUO.js → chunk-KR2X2WHJ.js} +53 -53
  44. package/dist/{chunk-XSBZNPUO.js.map → chunk-KR2X2WHJ.js.map} +1 -1
  45. package/dist/{chunk-YEWXDCCI.mjs → chunk-LEKZUS6N.mjs} +4 -4
  46. package/dist/{chunk-YEWXDCCI.mjs.map → chunk-LEKZUS6N.mjs.map} +1 -1
  47. package/dist/{chunk-6NAZVG2O.mjs → chunk-MVBIAXVN.mjs} +4 -4
  48. package/dist/{chunk-6NAZVG2O.mjs.map → chunk-MVBIAXVN.mjs.map} +1 -1
  49. package/dist/{chunk-4TY55HGO.mjs → chunk-OL73LBX5.mjs} +3 -3
  50. package/dist/{chunk-4TY55HGO.mjs.map → chunk-OL73LBX5.mjs.map} +1 -1
  51. package/dist/{chunk-HUGHELRM.mjs → chunk-QYA53LUF.mjs} +6 -6
  52. package/dist/chunk-QYA53LUF.mjs.map +1 -0
  53. package/dist/{chunk-DWFLIXES.mjs → chunk-R4TQWXNG.mjs} +3 -3
  54. package/dist/{chunk-DWFLIXES.mjs.map → chunk-R4TQWXNG.mjs.map} +1 -1
  55. package/dist/{chunk-SMKN4ZVB.js → chunk-RGI74SQH.js} +4 -4
  56. package/dist/{chunk-SMKN4ZVB.js.map → chunk-RGI74SQH.js.map} +1 -1
  57. package/dist/{chunk-FZTOP6EE.js → chunk-RL35XATZ.js} +141 -141
  58. package/dist/chunk-RL35XATZ.js.map +1 -0
  59. package/dist/{chunk-BUI7BCUN.js → chunk-RXZNACMI.js} +33 -33
  60. package/dist/{chunk-BUI7BCUN.js.map → chunk-RXZNACMI.js.map} +1 -1
  61. package/dist/{chunk-ST3GH5OM.js → chunk-SU3YPWFW.js} +26 -26
  62. package/dist/{chunk-ST3GH5OM.js.map → chunk-SU3YPWFW.js.map} +1 -1
  63. package/dist/{chunk-DIMLLLZR.js → chunk-TIJJHW2Z.js} +36 -36
  64. package/dist/{chunk-DIMLLLZR.js.map → chunk-TIJJHW2Z.js.map} +1 -1
  65. package/dist/{chunk-2RDGJXYZ.js → chunk-TVMLV675.js} +67 -67
  66. package/dist/{chunk-2RDGJXYZ.js.map → chunk-TVMLV675.js.map} +1 -1
  67. package/dist/{chunk-Y3WJAYOY.mjs → chunk-UDDZTTLO.mjs} +6 -6
  68. package/dist/chunk-UDDZTTLO.mjs.map +1 -0
  69. package/dist/{chunk-43GCSCQA.js → chunk-W5OEBO6E.js} +12 -12
  70. package/dist/chunk-W5OEBO6E.js.map +1 -0
  71. package/dist/{chunk-3Z366CVM.js → chunk-Y6AEE56Q.js} +67 -67
  72. package/dist/{chunk-3Z366CVM.js.map → chunk-Y6AEE56Q.js.map} +1 -1
  73. package/dist/{chunk-RXFAQFE7.mjs → chunk-YIB2YAM5.mjs} +3 -3
  74. package/dist/{chunk-RXFAQFE7.mjs.map → chunk-YIB2YAM5.mjs.map} +1 -1
  75. package/dist/{chunk-OLXOBT42.mjs → chunk-YV72JM4B.mjs} +4 -4
  76. package/dist/{chunk-OLXOBT42.mjs.map → chunk-YV72JM4B.mjs.map} +1 -1
  77. package/dist/{chunk-MEEFOZC4.js → chunk-ZM5MVWIT.js} +4 -4
  78. package/dist/{chunk-MEEFOZC4.js.map → chunk-ZM5MVWIT.js.map} +1 -1
  79. package/dist/{chunk-PU2KTO4O.mjs → chunk-ZV5EZXXO.mjs} +97 -15
  80. package/dist/chunk-ZV5EZXXO.mjs.map +1 -0
  81. package/dist/index.d.mts +8 -41
  82. package/dist/index.d.ts +8 -41
  83. package/dist/index.js +745 -753
  84. package/dist/index.mjs +2 -2
  85. package/dist/platform/admin/index.js +11 -11
  86. package/dist/platform/admin/index.mjs +5 -5
  87. package/dist/platform/agents-workspace.js +7 -7
  88. package/dist/platform/agents-workspace.mjs +6 -6
  89. package/dist/platform/app-shell.js +4 -4
  90. package/dist/platform/app-shell.mjs +3 -3
  91. package/dist/platform/auth/index.js +28 -28
  92. package/dist/platform/auth/index.mjs +5 -5
  93. package/dist/platform/billing/index.js +4 -4
  94. package/dist/platform/billing/index.mjs +3 -3
  95. package/dist/platform/impersonation/index.js +4 -4
  96. package/dist/platform/impersonation/index.mjs +3 -3
  97. package/dist/platform/index.d.mts +1 -1
  98. package/dist/platform/index.d.ts +1 -1
  99. package/dist/platform/index.js +99 -99
  100. package/dist/platform/index.js.map +1 -1
  101. package/dist/platform/index.mjs +19 -19
  102. package/dist/platform/index.mjs.map +1 -1
  103. package/dist/platform/pages/index.d.mts +4 -5
  104. package/dist/platform/pages/index.d.ts +4 -5
  105. package/dist/platform/pages/index.js +197 -197
  106. package/dist/platform/pages/index.js.map +1 -1
  107. package/dist/platform/pages/index.mjs +9 -9
  108. package/dist/platform/pages/index.mjs.map +1 -1
  109. package/dist/platform/settings/index.js +8 -8
  110. package/dist/platform/settings/index.mjs +7 -7
  111. package/dist/platform/telemetry/index.d.mts +42 -0
  112. package/dist/platform/telemetry/index.d.ts +42 -0
  113. package/dist/platform/telemetry/index.js +75 -0
  114. package/dist/platform/telemetry/index.js.map +1 -0
  115. package/dist/platform/telemetry/index.mjs +68 -0
  116. package/dist/platform/telemetry/index.mjs.map +1 -0
  117. package/dist/platform/workflow-api-client.d.mts +1 -1
  118. package/dist/platform/workflow-api-client.d.ts +1 -1
  119. package/dist/platform/workflow-api-client.js +61 -61
  120. package/dist/platform/workflow-api-client.mjs +1 -1
  121. package/dist/platform/workflow-canvas-shell.js +5 -5
  122. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  123. package/dist/{workflow-api-client-DVLhcpUj.d.ts → workflow-api-client-BKD8OfP_.d.ts} +61 -30
  124. package/dist/{workflow-api-client-DpBxHTHr.d.mts → workflow-api-client-DoYj7nHz.d.mts} +61 -30
  125. package/package.json +7 -1
  126. package/dist/chunk-43GCSCQA.js.map +0 -1
  127. package/dist/chunk-A3BFURJB.mjs.map +0 -1
  128. package/dist/chunk-ARVLVWUC.js.map +0 -1
  129. package/dist/chunk-FZTOP6EE.js.map +0 -1
  130. package/dist/chunk-HUGHELRM.mjs.map +0 -1
  131. package/dist/chunk-NYQAEPC7.js.map +0 -1
  132. package/dist/chunk-PU2KTO4O.mjs.map +0 -1
  133. package/dist/chunk-TEQYIK2B.mjs.map +0 -1
  134. package/dist/chunk-Y3WJAYOY.mjs.map +0 -1
  135. package/dist/chunk-ZKUYNCAG.js.map +0 -1
  136. package/src/brand/logos/fuel-icon.svg +0 -32
  137. package/src/brand/logos/fuel-logo-dark.svg +0 -43
  138. package/src/brand/logos/fuel-logo.svg +0 -43
@@ -368,21 +368,103 @@ async function submitApproval(runId, nodeId, decision) {
368
368
  }
369
369
  );
370
370
  }
371
- function subscribeToRunEvents(runId, onEvent, onError) {
372
- const baseUrl = buildLambdaApiUrl("").replace(/\/$/, "");
373
- const url = `${baseUrl}/workflow-runs/${encodeURIComponent(runId)}/events`;
374
- const source = new EventSource(url, { withCredentials: true });
375
- const handle = (raw) => {
376
- try {
377
- const parsed = JSON.parse(raw.data);
378
- onEvent(parsed);
379
- } catch {
371
+ var SSE_MAX_RECONNECT_ATTEMPTS = 5;
372
+ var SSE_RECONNECT_BASE_MS = 1e3;
373
+ var SSE_RECONNECT_CAP_MS = 16e3;
374
+ var POLLING_INTERVAL_MS = 5e3;
375
+ var TERMINAL_EVENT_TYPES = /* @__PURE__ */ new Set([
376
+ "run-completed",
377
+ "run-failed"
378
+ ]);
379
+ var TERMINAL_RUN_STATUSES = /* @__PURE__ */ new Set([
380
+ "completed",
381
+ "failed",
382
+ "cancelled"
383
+ ]);
384
+ function subscribeToRunEvents(runId, onEvent, onError, onState) {
385
+ let cancelled = false;
386
+ let attempt = 0;
387
+ let currentSource = null;
388
+ let reconnectTimer = null;
389
+ let pollingTimer = null;
390
+ const setState = (state) => {
391
+ if (!cancelled) onState?.(state);
392
+ };
393
+ const cleanup = () => {
394
+ if (cancelled) return;
395
+ cancelled = true;
396
+ if (currentSource) {
397
+ currentSource.close();
398
+ currentSource = null;
399
+ }
400
+ if (reconnectTimer) {
401
+ clearTimeout(reconnectTimer);
402
+ reconnectTimer = null;
380
403
  }
404
+ if (pollingTimer) {
405
+ clearInterval(pollingTimer);
406
+ pollingTimer = null;
407
+ }
408
+ setState("closed");
409
+ };
410
+ const startPolling = () => {
411
+ if (cancelled) return;
412
+ setState("polling");
413
+ pollingTimer = setInterval(() => {
414
+ if (cancelled) return;
415
+ void getWorkflowRunById(runId).then((run) => {
416
+ if (cancelled) return;
417
+ onEvent({
418
+ type: "log",
419
+ runId,
420
+ data: { source: "polling-fallback", run },
421
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
422
+ });
423
+ if (run.status && TERMINAL_RUN_STATUSES.has(run.status)) {
424
+ cleanup();
425
+ }
426
+ }).catch(() => {
427
+ });
428
+ }, POLLING_INTERVAL_MS);
429
+ };
430
+ const connect = () => {
431
+ if (cancelled) return;
432
+ const baseUrl = buildLambdaApiUrl("").replace(/\/$/, "");
433
+ const url = `${baseUrl}/workflow-runs/${encodeURIComponent(runId)}/events`;
434
+ const source = new EventSource(url, { withCredentials: true });
435
+ currentSource = source;
436
+ source.addEventListener("open", () => {
437
+ attempt = 0;
438
+ setState("live");
439
+ });
440
+ source.addEventListener("message", (event) => {
441
+ try {
442
+ const parsed = JSON.parse(event.data);
443
+ onEvent(parsed);
444
+ if (TERMINAL_EVENT_TYPES.has(parsed.type)) {
445
+ cleanup();
446
+ }
447
+ } catch {
448
+ }
449
+ });
450
+ source.addEventListener("error", (errorEvent) => {
451
+ if (cancelled) return;
452
+ onError?.(errorEvent);
453
+ source.close();
454
+ currentSource = null;
455
+ attempt += 1;
456
+ if (attempt > SSE_MAX_RECONNECT_ATTEMPTS) {
457
+ startPolling();
458
+ return;
459
+ }
460
+ const exponentialMs = Math.min(SSE_RECONNECT_BASE_MS * 2 ** (attempt - 1), SSE_RECONNECT_CAP_MS);
461
+ const jitterMs = Math.random() * 500;
462
+ setState("reconnecting");
463
+ reconnectTimer = setTimeout(connect, exponentialMs + jitterMs);
464
+ });
381
465
  };
382
- source.addEventListener("execution", handle);
383
- source.addEventListener("message", handle);
384
- if (onError) source.addEventListener("error", onError);
385
- return () => source.close();
466
+ connect();
467
+ return cleanup;
386
468
  }
387
469
  var AGENT_AVATARS = {
388
470
  "Sales Assistant": "https://api.dicebear.com/9.x/lorelei/svg?seed=Rafael&hair=variant01&beardProbability=0&mouth=happy01",
@@ -489,5 +571,5 @@ async function getDatasourceSchema(datasourceId, table) {
489
571
  }
490
572
 
491
573
  export { aiGenerateWorkflow, aiValidateWorkflow, buildAuthenticatedApiUrl, cancelWorkflowRun, createAgentConfig, createAgentPrompt, createAgentRule, createAgentTool, createAgentToolDefinition, createDatasource, createModelProviderConnection, createWorkflow, createWorkflowFromTemplate, deleteAgentConfig, deleteAgentPrompt, deleteAgentRule, deleteAgentTool, deleteAgentToolDefinition, deleteModelProviderConnection, deleteUpload, deleteWorkflow, executeAgentRule, executeWorkflow, getAgentConfigsWithPrompts, getAgentModels, getAgentPrompts, getAgentRules, getAgentToolDefinitions, getAgentTools, getAnalyticsSummary, getCurrentAccessToken, getDatasourceSchema, getDatasourceTables, getDatasources, getPublicSampleWorkflow, getRunTimeline, getUploadDownloadUrl, getWorkflowById, getWorkflowRunById, getWorkflowRuns, getWorkflows, listModelProviderCatalog, listModelProviderConnections, listWorkflowRuns, listWorkflowTemplates, presignUpload, publishWorkflow, replayWorkflowRun, saveWorkflowDraft, setAccessTokenProvider, setAuthenticatedFetch, submitApproval, subscribeToRunEvents, updateAgentConfig, updateAgentPrompt, updateAgentRule, updateAgentTool, updateAgentToolDefinition, updateModelProviderConnection, updateWorkflowSettings };
492
- //# sourceMappingURL=chunk-PU2KTO4O.mjs.map
493
- //# sourceMappingURL=chunk-PU2KTO4O.mjs.map
574
+ //# sourceMappingURL=chunk-ZV5EZXXO.mjs.map
575
+ //# sourceMappingURL=chunk-ZV5EZXXO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/platform/workflow-api-client.ts"],"names":[],"mappings":"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","file":"chunk-ZV5EZXXO.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/**\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 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"]}
package/dist/index.d.mts CHANGED
@@ -379,8 +379,8 @@ declare function MetricCard({ title, value, subtitle, icon, trend, variant, }: M
379
379
  /**
380
380
  * Chart specification produced by astrlabe workflow output nodes and rendered
381
381
  * by <ChartRenderer />. The shape is stable and mirrors what agents emit, so
382
- * any consumer (astrlabe dashboard, fuel-price-ai report view, kori-erp
383
- * embed) can render the same payload.
382
+ * any consumer (astrlabe dashboard, kori-erp embed) can render the same
383
+ * payload.
384
384
  */
385
385
  type ChartType = 'line' | 'bar' | 'area';
386
386
  type ChartDataPoint = {
@@ -443,7 +443,7 @@ declare function ChartRenderer({ spec, width, height, className }: ChartRenderer
443
443
  /**
444
444
  * A DashboardSpec is the output produced by a `DashboardOutput` node in the
445
445
  * astrlabe canvas. It's the data contract between a workflow run and any app
446
- * (astrlabe, fuel-price-ai, kori-erp) that wants to render the result.
446
+ * (astrlabe, kori-erp) that wants to render the result.
447
447
  *
448
448
  * Every field is optional except `title` so the authoring UI can build up a
449
449
  * dashboard incrementally (just charts, just KPIs, mix-and-match).
@@ -736,8 +736,8 @@ type DashboardViewProps = {
736
736
  };
737
737
  /**
738
738
  * Pure renderer for a DashboardSpec produced by a workflow's `DashboardOutput`
739
- * node. Every astrlabe consumer (the workflows app itself, fuel-price-ai,
740
- * kori-erp) should use this component so the pitch-demo look is identical.
739
+ * node. Every astrlabe consumer (the workflows app itself, kori-erp) should
740
+ * use this component so the pitch-demo look is identical.
741
741
  */
742
742
  declare function DashboardView({ spec, className, renderInputRequest, }: DashboardViewProps): react_jsx_runtime.JSX.Element;
743
743
 
@@ -2819,10 +2819,6 @@ declare const WINDSOCK_LOADER: {
2819
2819
  readonly gradient: "from-emerald-500 to-teal-600";
2820
2820
  readonly accentRing: "ring-emerald-500/30";
2821
2821
  };
2822
- declare const FUEL_PRICE_LOADER: {
2823
- readonly gradient: "from-blue-500 to-indigo-600";
2824
- readonly accentRing: "ring-blue-500/30";
2825
- };
2826
2822
  declare const KORI_ERP_LOADER: {
2827
2823
  readonly gradient: "from-purple-500 to-violet-600";
2828
2824
  readonly accentRing: "ring-purple-500/30";
@@ -3387,18 +3383,6 @@ interface NotificationBadgeProps {
3387
3383
  }
3388
3384
  declare function NotificationBadge({ count, className }: NotificationBadgeProps): react_jsx_runtime.JSX.Element | null;
3389
3385
 
3390
- /**
3391
- * Fuel UI Contracts
3392
- * =================
3393
- * Presentation-specific types shared by Fuel UI consumers.
3394
- */
3395
- type FuelColors = {
3396
- primary: string;
3397
- secondary: string;
3398
- accent: string;
3399
- };
3400
- type SaveStatus = 'idle' | 'saving' | 'saved';
3401
-
3402
3386
  /**
3403
3387
  * Text Components
3404
3388
  */
@@ -3587,23 +3571,6 @@ interface UserMobileInfoProps {
3587
3571
  }
3588
3572
  declare function UserMobileInfo({ user, labels }: UserMobileInfoProps): react_jsx_runtime.JSX.Element;
3589
3573
 
3590
- type FuelId = 'gasolina' | 'etanol' | 'diesel' | 'gnv';
3591
- interface FuelPipelineDemoProps {
3592
- /** Which fuel is selected initially. Default: 'gasolina'. */
3593
- defaultFuel?: FuelId;
3594
- /** Notified whenever the active fuel changes. */
3595
- onFuelChange?: (fuel: FuelId) => void;
3596
- }
3597
- /**
3598
- * Interactive fuel-pricing pipeline demo: run/stop the 8-step workflow,
3599
- * switch fuel/state/station, watch 3 AI agents analyze and emit a price
3600
- * recommendation with competitor context and approval actions.
3601
- *
3602
- * Dark-only. Expects a dark surface background (liquid-surface-strong,
3603
- * bg-gray-950, etc.) from the parent.
3604
- */
3605
- declare function FuelPipelineDemo({ defaultFuel, onFuelChange }?: FuelPipelineDemoProps): react_jsx_runtime.JSX.Element;
3606
-
3607
3574
  type IncidentId = 'lambda-timeout' | 'db-pool' | 'deploy-fail' | 'memory-leak';
3608
3575
  interface IncidentPipelineDemoProps {
3609
3576
  defaultIncident?: IncidentId;
@@ -3880,7 +3847,7 @@ declare const koriDepartmentFlows: DepartmentAssistantFlow[];
3880
3847
  * Main orchestrator for an interactive geographic map.
3881
3848
  * Fully generic — works with any country and any data type.
3882
3849
  * Consumers provide GeoJSON, region coordinates, and render props
3883
- * for domain-specific content (hover panels, fuel breakdowns, etc.).
3850
+ * for domain-specific content (hover panels, category breakdowns, etc.).
3884
3851
  */
3885
3852
 
3886
3853
  interface InteractiveGeoMapProps<T = unknown> {
@@ -5293,7 +5260,7 @@ type PlatformShellProps = {
5293
5260
  dashboardPath?: string;
5294
5261
  /** Paths where the shell chrome (breadcrumb, dock, flyout) should NOT render */
5295
5262
  publicPaths?: string[];
5296
- /** App display name (e.g. "Fuel Price AI") */
5263
+ /** App display name (e.g. "Kori ERP") */
5297
5264
  appName: string;
5298
5265
  /** App icon element for the branded loader */
5299
5266
  appIcon: ReactNode;
@@ -5442,4 +5409,4 @@ interface SkipToContentProps {
5442
5409
  }
5443
5410
  declare function SkipToContent({ targetId, label, }: SkipToContentProps): react_jsx_runtime.JSX.Element;
5444
5411
 
5445
- export { AIOrchestratorDemo, ARGENTINA_ACCENT_MAP, ARGENTINA_MACRO_REGIONS, ARGENTINA_MAP_CENTER, ARGENTINA_PROVINCE_COORDINATES, ARGENTINA_PROVINCE_PALETTES, AR_THEME_CONFIG, AUSTRALIA_ACCENT_MAP, AUSTRALIA_MACRO_REGIONS, AUSTRALIA_MAP_CENTER, AUSTRALIA_STATE_COORDINATES, AUSTRALIA_STATE_PALETTES, AU_THEME_CONFIG, type AccentColor, ActionMenu, ActionSheet, type ActiveFilter, type ActiveFilterChip, type ActiveFilterChipStyleConfig, ActiveFilterChips, AgentAnalysisCard, AnalysisSkeleton, AnimatedNumber, AnimatedTableRow, AppLogo, AppNavigation, type AppNavigationProps, AppShell, type AppShellProps, type ApprovalSectionData, ArchiveSwipeAction, AuthLayout, type AuthLayoutProps, Avatar, AvatarButton, BRAZIL_ACCENT_MAP, BRAZIL_MACRO_REGIONS, BRAZIL_MAP_CENTER, BRAZIL_STATE_COORDINATES, BRAZIL_STATE_PALETTES, BR_THEME_CONFIG, BackupCodeGrid, type BackupCodeGridProps, BadRequestPage, Badge, BaseForm, type BaseFormIconColor, type BaseFormProps, type BentoAgent, type BentoAgentsPanel, type BentoAiPanel, BentoCard, BentoFeatureGrid, type BentoFeatureGridProps, type BentoListItem, type BentoMetric, type BentoMetricsPanel, type BentoProgressBar, type BentoSecurityPanel, BooleanFlagsPicker, type BooleanFlagsPickerProps, type BooleanFlagsPreset, BottomSafeArea, BrandFilterSkeleton, BrandedLoader, Breadcrumb, type BreadcrumbItem, type BreadcrumbPage, Button, CANADA_ACCENT_MAP, CANADA_MACRO_REGIONS, CANADA_MAP_CENTER, CANADA_PROVINCE_COORDINATES, CANADA_PROVINCE_PALETTES, CA_THEME_CONFIG, CHILE_ACCENT_MAP, CHILE_MACRO_REGIONS, CHILE_MAP_CENTER, CHILE_REGION_COORDINATES, CHILE_REGION_PALETTES, CL_THEME_CONFIG, COLOMBIA_ACCENT_MAP, COLOMBIA_DEPARTMENT_COORDINATES, COLOMBIA_DEPARTMENT_PALETTES, COLOMBIA_MACRO_REGIONS, COLOMBIA_MAP_CENTER, CO_THEME_CONFIG, Card, CardActionMenu, type CardActionMenuItem, CardContent, CardDescription, CardDivider, CardFooter, CardGridSkeleton, CardHeader, CardSectionHeader, CardTitle, CategoryBadge, type CategoryBadgeProps, CategoryTab, type CategoryTabConfig, type CategoryTabProps, CategoryTabs, type CategoryTabsProps, type ChartDataPoint, ChartRenderer, type ChartSeriesStyle, type ChartSpec, type ChartType, type ChipItem, type ChipItemStyle, ChipPicker, CircularRefreshIndicator, Code, type CollapsibleGroup, CollapsibleGroupedList, type CollapsibleGroupedListProps, CompactSegmentedControl, ContactCard, ContactSection, Container, type ContainerProps, type ContainerVariant, ContextMenu, type ContextMenuDivider, type ContextMenuEntry, type ContextMenuItem, CookieConsent, CopyableId, CountPill, type CountryAddressFormat, type CountryConfig, type CountryCurrencyConfig, type CountryLanguage, type CountryLocaleConfig, type CountryTaxConfig, CreateActionButton, CustomerAnalyticsDemo, DE_THEME_CONFIG, DashboardDemoLayout, type DashboardKpi, DashboardProgressShell, type DashboardSection, type DashboardSpec, type DashboardSpecIssue, type DashboardTable, DashboardView, DataPagination, DatePicker, DeleteSwipeAction, DepartmentAssistantDemo, type DepartmentAssistantDemoProps, type DepartmentAssistantFlow, type DepartmentAssistantLabels, type DepartmentAssistantTheme, DashboardDemo as DepartmentDashboardDemo, type DepartmentWorkflow, DepartmentWorkflowDemo, type DepartmentWorkflowDemoProps, type DepartmentWorkflowStep, type DepartmentWorkflowTheme, Description, DetailsPopover, type DetailsPopoverActor, type DetailsPopoverComparison, type DetailsPopoverNote, type DetailsPopoverProps, DevModeBanner, Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle, Divider, Dock, type DockAction, DockContainer, DockSkeleton, DotRefreshIndicator, Dropdown, DropdownButton, DropdownDivider, DropdownItem, DropdownLabel, DropdownMenu, DropdownSelect, DynamicIsland, DynamicIslandNotification, EGYPT_ACCENT_MAP, EGYPT_GOVERNORATE_COORDINATES, EGYPT_GOVERNORATE_PALETTES, EGYPT_MACRO_REGIONS, EGYPT_MAP_CENTER, EG_THEME_CONFIG, ES_THEME_CONFIG, EdgeSwipeIndicator, EdgeSwipeProvider, EditSwipeAction, EmptyState, EntityCard, type EntityCardProps, EntityDrawer, type EntityDrawerMaxWidth, type EntityDrawerProps, type EntitySectionData, ErrorMessage, ErrorState, type ExpandableHistoryItem, ExpandableHistoryList, type ExpandableHistoryListProps, ExpandingPageIndicator, FRANCE_ACCENT_MAP, FRANCE_MACRO_REGIONS, FRANCE_MAP_CENTER, FRANCE_REGION_COORDINATES, FRANCE_REGION_PALETTES, FR_THEME_CONFIG, FUEL_PRICE_LOADER, FavoriteSwipeAction, FeatureCard, FeedItemCard, type FeedSectionData, Field, FieldGroup, Label as FieldLabel, Fieldset, FilterBadge, FilterPill, type FilterPillProps, type FilterPillVariant, FilterSectionHeader, type FilterSectionHeaderProps, FilterTileButton, type FilterTileButtonProps, type FilterTileColor, FinancialDemo, type FiscalSectionData, FloatingActionButton, FlyoutMenu, FlyoutNavGrid, type FlyoutNavItem, FlyoutQuickActions, ForceTouchMenu, Form, FormActions, type FormActionsProps, FormActionsRow, type FormActionsRowProps, FormCheckbox, type FormCheckboxProps, FormField, type FormFieldProps, FormGrid, type FormGridProps, FormInput, type FormInputProps, FormPriceInput, type FormPriceInputProps, type FormProps, FormSection, type FormSectionProps, FormSelect, type FormSelectProps, type FormStep, FormTextarea, type FormTextareaProps, FormToggle, type FormToggleProps, type FuelColors, type FuelId, FuelPipelineDemo, type FuelPipelineDemoProps, GB_THEME_CONFIG, GERMANY_ACCENT_MAP, GERMANY_MACRO_REGIONS, GERMANY_MAP_CENTER, GERMANY_STATE_COORDINATES, GERMANY_STATE_PALETTES, GeoMapCanvas, type GeoMapCanvasProps, GeoMapLegend, type GeoMapLegendProps, type GeoMapRegionData, GlassModal, type GlassModalIdentity, type GlassModalProps, type GlassModalSection, type GlassModalSidebar, type GlassModalSize, Gradient, GradientBackground, GrowthIndicator, HRRecruitmentDemo, Heading, HeroPanel, type HeroPanelProps, type HeroPanelStat, HeroSection, ID_THEME_CONFIG, INDIA_ACCENT_MAP, INDIA_MACRO_REGIONS, INDIA_MAP_CENTER, INDIA_STATE_COORDINATES, INDIA_STATE_PALETTES, INDONESIA_ACCENT_MAP, INDONESIA_MACRO_REGIONS, INDONESIA_MAP_CENTER, INDONESIA_PROVINCE_COORDINATES, INDONESIA_PROVINCE_PALETTES, IN_THEME_CONFIG, ITALY_ACCENT_MAP, ITALY_MACRO_REGIONS, ITALY_MAP_CENTER, ITALY_REGION_COORDINATES, ITALY_REGION_PALETTES, IT_THEME_CONFIG, IconButton, ImageUpload, type ImageUploadProps, type IncidentId, IncidentPipelineDemo, type IncidentPipelineDemoProps, InfoPopover, type InfoPopoverProps, InlineForm, type InlineFormProps, InlineSpinner, Input, type InputBooleanField, type InputNumberField, type InputRequestField, InputRequestForm, type InputRequestSectionData, type InputSelectField, type InputTextField, type InputTextareaField, InteractiveGeoMap, type InteractiveGeoMapProps, InventoryDemo, ItemSummary, type ItemSummaryMetadata, JAPAN_ACCENT_MAP, JAPAN_MACRO_REGIONS, JAPAN_MAP_CENTER, JAPAN_PREFECTURE_COORDINATES, JAPAN_PREFECTURE_PALETTES, JP_THEME_CONFIG, KORI_ERP_LOADER, KR_THEME_CONFIG, LGPDComplianceDemo, LOCALE_FLAGS, Label, LabeledToggle, type LanguageOption$1 as LanguageOption, LanguageSwitcher, LaunchpadGrid, type LaunchpadGridProps, type LaunchpadItem, type LaunchpadMenuItem, type LaunchpadUserProfile, Lead, Legend, type LifecycleSectionData, LiquidFilterInput, ListCard, ListCardItem, ListItem, type ListItemAction, type ListItemMetadata, type ListItemProps, type ListItemVariant, LoadingOverlay, MEXICO_ACCENT_MAP, MEXICO_MACRO_REGIONS, MEXICO_MAP_CENTER, MEXICO_STATE_COORDINATES, MEXICO_STATE_PALETTES, MX_THEME_CONFIG, ManagementPageLayout, type ManagementPageLayoutProps, ManagementSurface, MapZoomControls, type MapZoomControlsProps, MarketPricesCard, MarketingDemo, type MetaItem, MetricCard, MonthPicker, MultiColumnPicker, NETHERLANDS_ACCENT_MAP, NETHERLANDS_MACRO_REGIONS, NETHERLANDS_MAP_CENTER, NETHERLANDS_PROVINCE_COORDINATES, NETHERLANDS_PROVINCE_PALETTES, NEW_ZEALAND_ACCENT_MAP, NEW_ZEALAND_MACRO_REGIONS, NEW_ZEALAND_MAP_CENTER, NEW_ZEALAND_REGION_COORDINATES, NEW_ZEALAND_REGION_PALETTES, NG_THEME_CONFIG, NIGERIA_ACCENT_MAP, NIGERIA_MACRO_REGIONS, NIGERIA_MAP_CENTER, NIGERIA_STATE_COORDINATES, NIGERIA_STATE_PALETTES, NL_THEME_CONFIG, NORWAY_ACCENT_MAP, NORWAY_COUNTY_COORDINATES, NORWAY_COUNTY_PALETTES, NORWAY_MACRO_REGIONS, NORWAY_MAP_CENTER, NO_THEME_CONFIG, NZ_THEME_CONFIG, type NarrativeSectionData, NavigationItem, NavigationProgress, NoDataState, NoResultsState, NotFoundPage, type NoteSectionData, type Notification, NotificationBadge, type NotificationBadgeProps, NotificationBellButton, NotificationProvider, type NotificationType, OfficeCard, OfflineState, type OffsetPaginationParams, OptionGrid, type OptionGridItem, type OptionGridProps, OtpInput, type OtpInputProps, PERU_ACCENT_MAP, PERU_DEPARTMENT_COORDINATES, PERU_DEPARTMENT_PALETTES, PERU_MACRO_REGIONS, PERU_MAP_CENTER, PE_THEME_CONFIG, PHILIPPINES_ACCENT_MAP, PHILIPPINES_MACRO_REGIONS, PHILIPPINES_MAP_CENTER, PHILIPPINES_PROVINCE_COORDINATES, PHILIPPINES_PROVINCE_PALETTES, PH_THEME_CONFIG, PL_THEME_CONFIG, POLAND_ACCENT_MAP, POLAND_MACRO_REGIONS, POLAND_MAP_CENTER, POLAND_VOIVODESHIP_COORDINATES, POLAND_VOIVODESHIP_PALETTES, PORTUGAL_ACCENT_MAP, PORTUGAL_DISTRICT_COORDINATES, PORTUGAL_DISTRICT_PALETTES, PORTUGAL_MACRO_REGIONS, PORTUGAL_MAP_CENTER, PT_THEME_CONFIG, PageEmptyState, PageErrorState, PageHeader, PageHeading, type PageHeadingProps, PageIndicator, PageLoadingState, PageSectionHeader, Pagination, type PaginationMeta, PasswordInput, type PasswordPolicy, PasswordStrengthMeter, type PasswordStrengthMeterProps, Pill, PlatformShell, type PlatformShellLabels, type PlatformShellProps, type PlatformShellState, type PlatformShellUser, PlusGrid, PlusGridItem, PlusGridRow, type PreferenceGroupConfig, PreferenceSection, type PreferenceSectionProps, type PreferencesSectionConfig, PriceChangeBadge, ProfileIdentityCard, type ProfileSectionConfig, Progress, ProgressIndicator, PullToRefreshContainer, PullToRefreshIndicator, RadiantHeading, RadiantStatCard, RadiantSubheading, type RadioGroupConfig, type ReceiptSectionData, RecommendationCard, RegionFilterSkeleton, RoleBadge, SE_THEME_CONFIG, SOUTH_AFRICA_ACCENT_MAP, SOUTH_AFRICA_MACRO_REGIONS, SOUTH_AFRICA_MAP_CENTER, SOUTH_AFRICA_PROVINCE_COORDINATES, SOUTH_AFRICA_PROVINCE_PALETTES, SOUTH_KOREA_ACCENT_MAP, SOUTH_KOREA_MACRO_REGIONS, SOUTH_KOREA_MAP_CENTER, SOUTH_KOREA_PROVINCE_COORDINATES, SOUTH_KOREA_PROVINCE_PALETTES, SPAIN_ACCENT_MAP, SPAIN_MACRO_REGIONS, SPAIN_MAP_CENTER, SPAIN_PROVINCE_COORDINATES, SPAIN_PROVINCE_PALETTES, SWEDEN_ACCENT_MAP, SWEDEN_COUNTY_COORDINATES, SWEDEN_COUNTY_PALETTES, SWEDEN_MACRO_REGIONS, SWEDEN_MAP_CENTER, SafeArea, SafeAreaSpacer, SafeAreaView, SalesDemo, type SaveStatus, type ScoreSectionData, SearchBar, SearchFilterToolbar, type SearchFilterToolbarProps, SearchInput, SectionCard, SectionHeader, SectionHeaderSkeleton, type SectionTone, SegmentedControl, Select, type SelectableChipItem, SelectableChipPicker, type SelectableChipPickerLabels, type SelectableListItem, SelectableListPicker, type SelectableListPickerLabels, SelectableOptionsGrid, type SelectableOptionsGridOption, type SelectableOptionsGridProps, SelectableTableRow, SelectionCard, type SelectionCardProps, type SelectionOption, type SeriesComputed, ServerErrorPage, type SettingsFieldConfig, type LanguageOption as SettingsLanguageOption, SettingsModal, type SettingsModalProps, type SettingsSection, Sheet, type ShellLabels, type ShellPreferences, type ShellUser, SkipToContent, SocialLoginButtons, type SocialLoginButtonsProps, type SocialProvider, SortableTableHeader, Spinner, Stat, StatCard, StatCardSkeleton, StatusBadge, type StatusBadgeProps, StatusToggle, type StatusType, StepFormPage, type StepFormPageProps, StepNavigationButtons, type StepNavigationButtonsProps, StepTimeline, type StepTimelineItem, type StepTimelineProps, type StepTimelineStatus, StreamingDashboard, Strong, type SubdivisionColorPalette, type SubdivisionThemeConfig, Subheading, SwipeableRow, Switch, THAILAND_ACCENT_MAP, THAILAND_MACRO_REGIONS, THAILAND_MAP_CENTER, THAILAND_PROVINCE_COORDINATES, THAILAND_PROVINCE_PALETTES, TH_THEME_CONFIG, TR_THEME_CONFIG, TURKEY_ACCENT_MAP, TURKEY_MACRO_REGIONS, TURKEY_MAP_CENTER, TURKEY_PROVINCE_COORDINATES, TURKEY_PROVINCE_PALETTES, Table, TableBody, TableCell, TableEmptyState, TableHead, TableHeader, TableRow, TableSkeleton, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TagBadge, type TagBadgeStyle, Text, TextLink, Textarea, ThemeSwitch, ThemeToggle, ThemeToggleCompact, TimePicker, type ToggleConfig, ToggleSwitch, type ToggleSwitchColor, TouchTarget, UK_ACCENT_MAP, UK_MACRO_REGIONS, UK_MAP_CENTER, UK_NATION_COORDINATES, UK_NATION_PALETTES, US_ACCENT_MAP, US_MACRO_REGIONS, US_MAP_CENTER, US_STATE_COORDINATES, US_STATE_PALETTES, US_THEME_CONFIG, type UseGeoMapStateOptions, UserAvatar, type UserAvatarLabels, type UserAvatarMenuItem, type UserAvatarProps, type UserAvatarUser, UserMobileInfo, type UserMobileInfoProps, WINDSOCK_LOADER, WIRE_LOADER, WheelPicker, WindsockIcon, type WorkspaceSectionConfig, ZA_THEME_CONFIG, buildDockActions, buildFlyoutNavItems, buildLaunchpadItems, buttonPress, buttonPressReduced, buttonTap, cardHover, cardHoverReduced, cardPress, computeDomain, computeSeries, createMotionProps, customerAnalyticsWorkflow, durations, durationsReduced, easings, fadeOnly, fadeScale, filterByPermission, financialWorkflow, formatAddress, formatCurrency as formatCountryCurrency, formatCurrency$1 as formatCurrency, formatDate, formatPercentage, getAllCountries, getArgentinaAccent, getArgentinaColors, getArgentinaFlagUrl, getArgentinaGradient, getArgentinaHexColor, getArgentinaPalette, getAustraliaAccent, getAustraliaColors, getAustraliaFlagUrl, getAustraliaGradient, getAustraliaHexColor, getAustraliaPalette, getBrazilAccent, getBrazilColors, getBrazilFlagUrl, getBrazilGradient, getBrazilHexColor, getBrazilPalette, getCanadaAccent, getCanadaColors, getCanadaFlagUrl, getCanadaGradient, getCanadaHexColor, getCanadaPalette, getChileAccent, getChileColors, getChileFlagUrl, getChileGradient, getChileHexColor, getChilePalette, getColombiaAccent, getColombiaColors, getColombiaFlagUrl, getColombiaGradient, getColombiaHexColor, getColombiaPalette, getCountryConfig, getEgyptAccent, getEgyptColors, getEgyptFlagUrl, getEgyptGradient, getEgyptHexColor, getEgyptPalette, getFranceAccent, getFranceColors, getFranceFlagUrl, getFranceGradient, getFranceHexColor, getFrancePalette, getGermanyAccent, getGermanyColors, getGermanyFlagUrl, getGermanyGradient, getGermanyHexColor, getGermanyPalette, getIndiaAccent, getIndiaColors, getIndiaFlagUrl, getIndiaGradient, getIndiaHexColor, getIndiaPalette, getIndonesiaAccent, getIndonesiaColors, getIndonesiaFlagUrl, getIndonesiaGradient, getIndonesiaHexColor, getIndonesiaPalette, getItalyAccent, getItalyColors, getItalyFlagUrl, getItalyGradient, getItalyHexColor, getItalyPalette, getJapanAccent, getJapanColors, getJapanFlagUrl, getJapanGradient, getJapanHexColor, getJapanPalette, getMexicoAccent, getMexicoColors, getMexicoFlagUrl, getMexicoGradient, getMexicoHexColor, getMexicoPalette, getNetherlandsAccent, getNetherlandsColors, getNetherlandsFlagUrl, getNetherlandsGradient, getNetherlandsHexColor, getNetherlandsPalette, getNewZealandAccent, getNewZealandColors, getNewZealandFlagUrl, getNewZealandGradient, getNewZealandHexColor, getNewZealandPalette, getNigeriaAccent, getNigeriaColors, getNigeriaFlagUrl, getNigeriaGradient, getNigeriaHexColor, getNigeriaPalette, getNorwayAccent, getNorwayColors, getNorwayFlagUrl, getNorwayGradient, getNorwayHexColor, getNorwayPalette, getPeruAccent, getPeruColors, getPeruFlagUrl, getPeruGradient, getPeruHexColor, getPeruPalette, getPhilippinesAccent, getPhilippinesColors, getPhilippinesFlagUrl, getPhilippinesGradient, getPhilippinesHexColor, getPhilippinesPalette, getPolandAccent, getPolandColors, getPolandFlagUrl, getPolandGradient, getPolandHexColor, getPolandPalette, getPortugalAccent, getPortugalColors, getPortugalFlagUrl, getPortugalGradient, getPortugalHexColor, getPortugalPalette, getSouthAfricaAccent, getSouthAfricaColors, getSouthAfricaFlagUrl, getSouthAfricaGradient, getSouthAfricaHexColor, getSouthAfricaPalette, getSouthKoreaAccent, getSouthKoreaColors, getSouthKoreaFlagUrl, getSouthKoreaGradient, getSouthKoreaHexColor, getSouthKoreaPalette, getSpainAccent, getSpainColors, getSpainFlagUrl, getSpainGradient, getSpainHexColor, getSpainPalette, getStatusColor, getSubdivisionAccent, getSubdivisionColors, getSubdivisionFlagUrl, getSubdivisionGradient, getSubdivisionHexColor, getSubdivisionPalette, getSwedenAccent, getSwedenColors, getSwedenFlagUrl, getSwedenGradient, getSwedenHexColor, getSwedenPalette, getThailandAccent, getThailandColors, getThailandFlagUrl, getThailandGradient, getThailandHexColor, getThailandPalette, getTransition, getTurkeyAccent, getTurkeyColors, getTurkeyFlagUrl, getTurkeyGradient, getTurkeyHexColor, getTurkeyPalette, getUKAccent, getUKColors, getUKFlagUrl, getUKGradient, getUKHexColor, getUKPalette, getUsAccent, getUsColors, getUsFlagUrl, getUsGradient, getUsHexColor, getUsPalette, getVariants, hrWorkflow, inventoryWorkflow, iosColors, isValidArgentinaProvince, isValidAustraliaState, isValidBrazilState, isValidCanadaProvince, isValidChileRegion, isValidColombiaDepartment, isValidEgyptGovernorate, isValidFranceRegion, isValidGermanyState, isValidIndiaState, isValidIndonesiaProvince, isValidItalyRegion, isValidJapanPrefecture, isValidMexicoState, isValidNetherlandsProvince, isValidNewZealandRegion, isValidNigeriaState, isValidNorwayCounty, isValidPeruDepartment, isValidPhilippinesProvince, isValidPolandVoivodeship, isValidPortugalDistrict, isValidSouthAfricaProvince, isValidSouthKoreaProvince, isValidSpainProvince, isValidSubdivision, isValidSwedenCounty, isValidThailandProvince, isValidTurkeyProvince, isValidUKNation, isValidUsState, koriAssistantTheme, koriDepartmentFlows, lgpdWorkflow, listItem, listItemReduced, logisticsWorkflow, manufacturingWorkflow, marketingWorkflow, notificationBanner, notificationBannerReduced, pageControlDot, payrollWorkflow, prefersReducedMotion, registerCountry, registerSubdivisionTheme, resolveGlassAccentRgb, salesWorkflow, selectIsAuthenticated, selectShowShellChrome, selectUserInitial, selectUserName, shimmerClass, shimmerWhiteClass, slideDown, slideRight, slideUp, springPresets, springPresetsReduced, staggerContainer, supportWorkflow, swipeActionThreshold, swipeConstraints, triggerHaptic, useGeoMapState, useHaptic, useNotifications, usePlatformShellStore, usePullToRefresh, validateDashboardSpec, xScale, yScale };
5412
+ export { AIOrchestratorDemo, ARGENTINA_ACCENT_MAP, ARGENTINA_MACRO_REGIONS, ARGENTINA_MAP_CENTER, ARGENTINA_PROVINCE_COORDINATES, ARGENTINA_PROVINCE_PALETTES, AR_THEME_CONFIG, AUSTRALIA_ACCENT_MAP, AUSTRALIA_MACRO_REGIONS, AUSTRALIA_MAP_CENTER, AUSTRALIA_STATE_COORDINATES, AUSTRALIA_STATE_PALETTES, AU_THEME_CONFIG, type AccentColor, ActionMenu, ActionSheet, type ActiveFilter, type ActiveFilterChip, type ActiveFilterChipStyleConfig, ActiveFilterChips, AgentAnalysisCard, AnalysisSkeleton, AnimatedNumber, AnimatedTableRow, AppLogo, AppNavigation, type AppNavigationProps, AppShell, type AppShellProps, type ApprovalSectionData, ArchiveSwipeAction, AuthLayout, type AuthLayoutProps, Avatar, AvatarButton, BRAZIL_ACCENT_MAP, BRAZIL_MACRO_REGIONS, BRAZIL_MAP_CENTER, BRAZIL_STATE_COORDINATES, BRAZIL_STATE_PALETTES, BR_THEME_CONFIG, BackupCodeGrid, type BackupCodeGridProps, BadRequestPage, Badge, BaseForm, type BaseFormIconColor, type BaseFormProps, type BentoAgent, type BentoAgentsPanel, type BentoAiPanel, BentoCard, BentoFeatureGrid, type BentoFeatureGridProps, type BentoListItem, type BentoMetric, type BentoMetricsPanel, type BentoProgressBar, type BentoSecurityPanel, BooleanFlagsPicker, type BooleanFlagsPickerProps, type BooleanFlagsPreset, BottomSafeArea, BrandFilterSkeleton, BrandedLoader, Breadcrumb, type BreadcrumbItem, type BreadcrumbPage, Button, CANADA_ACCENT_MAP, CANADA_MACRO_REGIONS, CANADA_MAP_CENTER, CANADA_PROVINCE_COORDINATES, CANADA_PROVINCE_PALETTES, CA_THEME_CONFIG, CHILE_ACCENT_MAP, CHILE_MACRO_REGIONS, CHILE_MAP_CENTER, CHILE_REGION_COORDINATES, CHILE_REGION_PALETTES, CL_THEME_CONFIG, COLOMBIA_ACCENT_MAP, COLOMBIA_DEPARTMENT_COORDINATES, COLOMBIA_DEPARTMENT_PALETTES, COLOMBIA_MACRO_REGIONS, COLOMBIA_MAP_CENTER, CO_THEME_CONFIG, Card, CardActionMenu, type CardActionMenuItem, CardContent, CardDescription, CardDivider, CardFooter, CardGridSkeleton, CardHeader, CardSectionHeader, CardTitle, CategoryBadge, type CategoryBadgeProps, CategoryTab, type CategoryTabConfig, type CategoryTabProps, CategoryTabs, type CategoryTabsProps, type ChartDataPoint, ChartRenderer, type ChartSeriesStyle, type ChartSpec, type ChartType, type ChipItem, type ChipItemStyle, ChipPicker, CircularRefreshIndicator, Code, type CollapsibleGroup, CollapsibleGroupedList, type CollapsibleGroupedListProps, CompactSegmentedControl, ContactCard, ContactSection, Container, type ContainerProps, type ContainerVariant, ContextMenu, type ContextMenuDivider, type ContextMenuEntry, type ContextMenuItem, CookieConsent, CopyableId, CountPill, type CountryAddressFormat, type CountryConfig, type CountryCurrencyConfig, type CountryLanguage, type CountryLocaleConfig, type CountryTaxConfig, CreateActionButton, CustomerAnalyticsDemo, DE_THEME_CONFIG, DashboardDemoLayout, type DashboardKpi, DashboardProgressShell, type DashboardSection, type DashboardSpec, type DashboardSpecIssue, type DashboardTable, DashboardView, DataPagination, DatePicker, DeleteSwipeAction, DepartmentAssistantDemo, type DepartmentAssistantDemoProps, type DepartmentAssistantFlow, type DepartmentAssistantLabels, type DepartmentAssistantTheme, DashboardDemo as DepartmentDashboardDemo, type DepartmentWorkflow, DepartmentWorkflowDemo, type DepartmentWorkflowDemoProps, type DepartmentWorkflowStep, type DepartmentWorkflowTheme, Description, DetailsPopover, type DetailsPopoverActor, type DetailsPopoverComparison, type DetailsPopoverNote, type DetailsPopoverProps, DevModeBanner, Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle, Divider, Dock, type DockAction, DockContainer, DockSkeleton, DotRefreshIndicator, Dropdown, DropdownButton, DropdownDivider, DropdownItem, DropdownLabel, DropdownMenu, DropdownSelect, DynamicIsland, DynamicIslandNotification, EGYPT_ACCENT_MAP, EGYPT_GOVERNORATE_COORDINATES, EGYPT_GOVERNORATE_PALETTES, EGYPT_MACRO_REGIONS, EGYPT_MAP_CENTER, EG_THEME_CONFIG, ES_THEME_CONFIG, EdgeSwipeIndicator, EdgeSwipeProvider, EditSwipeAction, EmptyState, EntityCard, type EntityCardProps, EntityDrawer, type EntityDrawerMaxWidth, type EntityDrawerProps, type EntitySectionData, ErrorMessage, ErrorState, type ExpandableHistoryItem, ExpandableHistoryList, type ExpandableHistoryListProps, ExpandingPageIndicator, FRANCE_ACCENT_MAP, FRANCE_MACRO_REGIONS, FRANCE_MAP_CENTER, FRANCE_REGION_COORDINATES, FRANCE_REGION_PALETTES, FR_THEME_CONFIG, FavoriteSwipeAction, FeatureCard, FeedItemCard, type FeedSectionData, Field, FieldGroup, Label as FieldLabel, Fieldset, FilterBadge, FilterPill, type FilterPillProps, type FilterPillVariant, FilterSectionHeader, type FilterSectionHeaderProps, FilterTileButton, type FilterTileButtonProps, type FilterTileColor, FinancialDemo, type FiscalSectionData, FloatingActionButton, FlyoutMenu, FlyoutNavGrid, type FlyoutNavItem, FlyoutQuickActions, ForceTouchMenu, Form, FormActions, type FormActionsProps, FormActionsRow, type FormActionsRowProps, FormCheckbox, type FormCheckboxProps, FormField, type FormFieldProps, FormGrid, type FormGridProps, FormInput, type FormInputProps, FormPriceInput, type FormPriceInputProps, type FormProps, FormSection, type FormSectionProps, FormSelect, type FormSelectProps, type FormStep, FormTextarea, type FormTextareaProps, FormToggle, type FormToggleProps, GB_THEME_CONFIG, GERMANY_ACCENT_MAP, GERMANY_MACRO_REGIONS, GERMANY_MAP_CENTER, GERMANY_STATE_COORDINATES, GERMANY_STATE_PALETTES, GeoMapCanvas, type GeoMapCanvasProps, GeoMapLegend, type GeoMapLegendProps, type GeoMapRegionData, GlassModal, type GlassModalIdentity, type GlassModalProps, type GlassModalSection, type GlassModalSidebar, type GlassModalSize, Gradient, GradientBackground, GrowthIndicator, HRRecruitmentDemo, Heading, HeroPanel, type HeroPanelProps, type HeroPanelStat, HeroSection, ID_THEME_CONFIG, INDIA_ACCENT_MAP, INDIA_MACRO_REGIONS, INDIA_MAP_CENTER, INDIA_STATE_COORDINATES, INDIA_STATE_PALETTES, INDONESIA_ACCENT_MAP, INDONESIA_MACRO_REGIONS, INDONESIA_MAP_CENTER, INDONESIA_PROVINCE_COORDINATES, INDONESIA_PROVINCE_PALETTES, IN_THEME_CONFIG, ITALY_ACCENT_MAP, ITALY_MACRO_REGIONS, ITALY_MAP_CENTER, ITALY_REGION_COORDINATES, ITALY_REGION_PALETTES, IT_THEME_CONFIG, IconButton, ImageUpload, type ImageUploadProps, type IncidentId, IncidentPipelineDemo, type IncidentPipelineDemoProps, InfoPopover, type InfoPopoverProps, InlineForm, type InlineFormProps, InlineSpinner, Input, type InputBooleanField, type InputNumberField, type InputRequestField, InputRequestForm, type InputRequestSectionData, type InputSelectField, type InputTextField, type InputTextareaField, InteractiveGeoMap, type InteractiveGeoMapProps, InventoryDemo, ItemSummary, type ItemSummaryMetadata, JAPAN_ACCENT_MAP, JAPAN_MACRO_REGIONS, JAPAN_MAP_CENTER, JAPAN_PREFECTURE_COORDINATES, JAPAN_PREFECTURE_PALETTES, JP_THEME_CONFIG, KORI_ERP_LOADER, KR_THEME_CONFIG, LGPDComplianceDemo, LOCALE_FLAGS, Label, LabeledToggle, type LanguageOption$1 as LanguageOption, LanguageSwitcher, LaunchpadGrid, type LaunchpadGridProps, type LaunchpadItem, type LaunchpadMenuItem, type LaunchpadUserProfile, Lead, Legend, type LifecycleSectionData, LiquidFilterInput, ListCard, ListCardItem, ListItem, type ListItemAction, type ListItemMetadata, type ListItemProps, type ListItemVariant, LoadingOverlay, MEXICO_ACCENT_MAP, MEXICO_MACRO_REGIONS, MEXICO_MAP_CENTER, MEXICO_STATE_COORDINATES, MEXICO_STATE_PALETTES, MX_THEME_CONFIG, ManagementPageLayout, type ManagementPageLayoutProps, ManagementSurface, MapZoomControls, type MapZoomControlsProps, MarketPricesCard, MarketingDemo, type MetaItem, MetricCard, MonthPicker, MultiColumnPicker, NETHERLANDS_ACCENT_MAP, NETHERLANDS_MACRO_REGIONS, NETHERLANDS_MAP_CENTER, NETHERLANDS_PROVINCE_COORDINATES, NETHERLANDS_PROVINCE_PALETTES, NEW_ZEALAND_ACCENT_MAP, NEW_ZEALAND_MACRO_REGIONS, NEW_ZEALAND_MAP_CENTER, NEW_ZEALAND_REGION_COORDINATES, NEW_ZEALAND_REGION_PALETTES, NG_THEME_CONFIG, NIGERIA_ACCENT_MAP, NIGERIA_MACRO_REGIONS, NIGERIA_MAP_CENTER, NIGERIA_STATE_COORDINATES, NIGERIA_STATE_PALETTES, NL_THEME_CONFIG, NORWAY_ACCENT_MAP, NORWAY_COUNTY_COORDINATES, NORWAY_COUNTY_PALETTES, NORWAY_MACRO_REGIONS, NORWAY_MAP_CENTER, NO_THEME_CONFIG, NZ_THEME_CONFIG, type NarrativeSectionData, NavigationItem, NavigationProgress, NoDataState, NoResultsState, NotFoundPage, type NoteSectionData, type Notification, NotificationBadge, type NotificationBadgeProps, NotificationBellButton, NotificationProvider, type NotificationType, OfficeCard, OfflineState, type OffsetPaginationParams, OptionGrid, type OptionGridItem, type OptionGridProps, OtpInput, type OtpInputProps, PERU_ACCENT_MAP, PERU_DEPARTMENT_COORDINATES, PERU_DEPARTMENT_PALETTES, PERU_MACRO_REGIONS, PERU_MAP_CENTER, PE_THEME_CONFIG, PHILIPPINES_ACCENT_MAP, PHILIPPINES_MACRO_REGIONS, PHILIPPINES_MAP_CENTER, PHILIPPINES_PROVINCE_COORDINATES, PHILIPPINES_PROVINCE_PALETTES, PH_THEME_CONFIG, PL_THEME_CONFIG, POLAND_ACCENT_MAP, POLAND_MACRO_REGIONS, POLAND_MAP_CENTER, POLAND_VOIVODESHIP_COORDINATES, POLAND_VOIVODESHIP_PALETTES, PORTUGAL_ACCENT_MAP, PORTUGAL_DISTRICT_COORDINATES, PORTUGAL_DISTRICT_PALETTES, PORTUGAL_MACRO_REGIONS, PORTUGAL_MAP_CENTER, PT_THEME_CONFIG, PageEmptyState, PageErrorState, PageHeader, PageHeading, type PageHeadingProps, PageIndicator, PageLoadingState, PageSectionHeader, Pagination, type PaginationMeta, PasswordInput, type PasswordPolicy, PasswordStrengthMeter, type PasswordStrengthMeterProps, Pill, PlatformShell, type PlatformShellLabels, type PlatformShellProps, type PlatformShellState, type PlatformShellUser, PlusGrid, PlusGridItem, PlusGridRow, type PreferenceGroupConfig, PreferenceSection, type PreferenceSectionProps, type PreferencesSectionConfig, PriceChangeBadge, ProfileIdentityCard, type ProfileSectionConfig, Progress, ProgressIndicator, PullToRefreshContainer, PullToRefreshIndicator, RadiantHeading, RadiantStatCard, RadiantSubheading, type RadioGroupConfig, type ReceiptSectionData, RecommendationCard, RegionFilterSkeleton, RoleBadge, SE_THEME_CONFIG, SOUTH_AFRICA_ACCENT_MAP, SOUTH_AFRICA_MACRO_REGIONS, SOUTH_AFRICA_MAP_CENTER, SOUTH_AFRICA_PROVINCE_COORDINATES, SOUTH_AFRICA_PROVINCE_PALETTES, SOUTH_KOREA_ACCENT_MAP, SOUTH_KOREA_MACRO_REGIONS, SOUTH_KOREA_MAP_CENTER, SOUTH_KOREA_PROVINCE_COORDINATES, SOUTH_KOREA_PROVINCE_PALETTES, SPAIN_ACCENT_MAP, SPAIN_MACRO_REGIONS, SPAIN_MAP_CENTER, SPAIN_PROVINCE_COORDINATES, SPAIN_PROVINCE_PALETTES, SWEDEN_ACCENT_MAP, SWEDEN_COUNTY_COORDINATES, SWEDEN_COUNTY_PALETTES, SWEDEN_MACRO_REGIONS, SWEDEN_MAP_CENTER, SafeArea, SafeAreaSpacer, SafeAreaView, SalesDemo, type ScoreSectionData, SearchBar, SearchFilterToolbar, type SearchFilterToolbarProps, SearchInput, SectionCard, SectionHeader, SectionHeaderSkeleton, type SectionTone, SegmentedControl, Select, type SelectableChipItem, SelectableChipPicker, type SelectableChipPickerLabels, type SelectableListItem, SelectableListPicker, type SelectableListPickerLabels, SelectableOptionsGrid, type SelectableOptionsGridOption, type SelectableOptionsGridProps, SelectableTableRow, SelectionCard, type SelectionCardProps, type SelectionOption, type SeriesComputed, ServerErrorPage, type SettingsFieldConfig, type LanguageOption as SettingsLanguageOption, SettingsModal, type SettingsModalProps, type SettingsSection, Sheet, type ShellLabels, type ShellPreferences, type ShellUser, SkipToContent, SocialLoginButtons, type SocialLoginButtonsProps, type SocialProvider, SortableTableHeader, Spinner, Stat, StatCard, StatCardSkeleton, StatusBadge, type StatusBadgeProps, StatusToggle, type StatusType, StepFormPage, type StepFormPageProps, StepNavigationButtons, type StepNavigationButtonsProps, StepTimeline, type StepTimelineItem, type StepTimelineProps, type StepTimelineStatus, StreamingDashboard, Strong, type SubdivisionColorPalette, type SubdivisionThemeConfig, Subheading, SwipeableRow, Switch, THAILAND_ACCENT_MAP, THAILAND_MACRO_REGIONS, THAILAND_MAP_CENTER, THAILAND_PROVINCE_COORDINATES, THAILAND_PROVINCE_PALETTES, TH_THEME_CONFIG, TR_THEME_CONFIG, TURKEY_ACCENT_MAP, TURKEY_MACRO_REGIONS, TURKEY_MAP_CENTER, TURKEY_PROVINCE_COORDINATES, TURKEY_PROVINCE_PALETTES, Table, TableBody, TableCell, TableEmptyState, TableHead, TableHeader, TableRow, TableSkeleton, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TagBadge, type TagBadgeStyle, Text, TextLink, Textarea, ThemeSwitch, ThemeToggle, ThemeToggleCompact, TimePicker, type ToggleConfig, ToggleSwitch, type ToggleSwitchColor, TouchTarget, UK_ACCENT_MAP, UK_MACRO_REGIONS, UK_MAP_CENTER, UK_NATION_COORDINATES, UK_NATION_PALETTES, US_ACCENT_MAP, US_MACRO_REGIONS, US_MAP_CENTER, US_STATE_COORDINATES, US_STATE_PALETTES, US_THEME_CONFIG, type UseGeoMapStateOptions, UserAvatar, type UserAvatarLabels, type UserAvatarMenuItem, type UserAvatarProps, type UserAvatarUser, UserMobileInfo, type UserMobileInfoProps, WINDSOCK_LOADER, WIRE_LOADER, WheelPicker, WindsockIcon, type WorkspaceSectionConfig, ZA_THEME_CONFIG, buildDockActions, buildFlyoutNavItems, buildLaunchpadItems, buttonPress, buttonPressReduced, buttonTap, cardHover, cardHoverReduced, cardPress, computeDomain, computeSeries, createMotionProps, customerAnalyticsWorkflow, durations, durationsReduced, easings, fadeOnly, fadeScale, filterByPermission, financialWorkflow, formatAddress, formatCurrency as formatCountryCurrency, formatCurrency$1 as formatCurrency, formatDate, formatPercentage, getAllCountries, getArgentinaAccent, getArgentinaColors, getArgentinaFlagUrl, getArgentinaGradient, getArgentinaHexColor, getArgentinaPalette, getAustraliaAccent, getAustraliaColors, getAustraliaFlagUrl, getAustraliaGradient, getAustraliaHexColor, getAustraliaPalette, getBrazilAccent, getBrazilColors, getBrazilFlagUrl, getBrazilGradient, getBrazilHexColor, getBrazilPalette, getCanadaAccent, getCanadaColors, getCanadaFlagUrl, getCanadaGradient, getCanadaHexColor, getCanadaPalette, getChileAccent, getChileColors, getChileFlagUrl, getChileGradient, getChileHexColor, getChilePalette, getColombiaAccent, getColombiaColors, getColombiaFlagUrl, getColombiaGradient, getColombiaHexColor, getColombiaPalette, getCountryConfig, getEgyptAccent, getEgyptColors, getEgyptFlagUrl, getEgyptGradient, getEgyptHexColor, getEgyptPalette, getFranceAccent, getFranceColors, getFranceFlagUrl, getFranceGradient, getFranceHexColor, getFrancePalette, getGermanyAccent, getGermanyColors, getGermanyFlagUrl, getGermanyGradient, getGermanyHexColor, getGermanyPalette, getIndiaAccent, getIndiaColors, getIndiaFlagUrl, getIndiaGradient, getIndiaHexColor, getIndiaPalette, getIndonesiaAccent, getIndonesiaColors, getIndonesiaFlagUrl, getIndonesiaGradient, getIndonesiaHexColor, getIndonesiaPalette, getItalyAccent, getItalyColors, getItalyFlagUrl, getItalyGradient, getItalyHexColor, getItalyPalette, getJapanAccent, getJapanColors, getJapanFlagUrl, getJapanGradient, getJapanHexColor, getJapanPalette, getMexicoAccent, getMexicoColors, getMexicoFlagUrl, getMexicoGradient, getMexicoHexColor, getMexicoPalette, getNetherlandsAccent, getNetherlandsColors, getNetherlandsFlagUrl, getNetherlandsGradient, getNetherlandsHexColor, getNetherlandsPalette, getNewZealandAccent, getNewZealandColors, getNewZealandFlagUrl, getNewZealandGradient, getNewZealandHexColor, getNewZealandPalette, getNigeriaAccent, getNigeriaColors, getNigeriaFlagUrl, getNigeriaGradient, getNigeriaHexColor, getNigeriaPalette, getNorwayAccent, getNorwayColors, getNorwayFlagUrl, getNorwayGradient, getNorwayHexColor, getNorwayPalette, getPeruAccent, getPeruColors, getPeruFlagUrl, getPeruGradient, getPeruHexColor, getPeruPalette, getPhilippinesAccent, getPhilippinesColors, getPhilippinesFlagUrl, getPhilippinesGradient, getPhilippinesHexColor, getPhilippinesPalette, getPolandAccent, getPolandColors, getPolandFlagUrl, getPolandGradient, getPolandHexColor, getPolandPalette, getPortugalAccent, getPortugalColors, getPortugalFlagUrl, getPortugalGradient, getPortugalHexColor, getPortugalPalette, getSouthAfricaAccent, getSouthAfricaColors, getSouthAfricaFlagUrl, getSouthAfricaGradient, getSouthAfricaHexColor, getSouthAfricaPalette, getSouthKoreaAccent, getSouthKoreaColors, getSouthKoreaFlagUrl, getSouthKoreaGradient, getSouthKoreaHexColor, getSouthKoreaPalette, getSpainAccent, getSpainColors, getSpainFlagUrl, getSpainGradient, getSpainHexColor, getSpainPalette, getStatusColor, getSubdivisionAccent, getSubdivisionColors, getSubdivisionFlagUrl, getSubdivisionGradient, getSubdivisionHexColor, getSubdivisionPalette, getSwedenAccent, getSwedenColors, getSwedenFlagUrl, getSwedenGradient, getSwedenHexColor, getSwedenPalette, getThailandAccent, getThailandColors, getThailandFlagUrl, getThailandGradient, getThailandHexColor, getThailandPalette, getTransition, getTurkeyAccent, getTurkeyColors, getTurkeyFlagUrl, getTurkeyGradient, getTurkeyHexColor, getTurkeyPalette, getUKAccent, getUKColors, getUKFlagUrl, getUKGradient, getUKHexColor, getUKPalette, getUsAccent, getUsColors, getUsFlagUrl, getUsGradient, getUsHexColor, getUsPalette, getVariants, hrWorkflow, inventoryWorkflow, iosColors, isValidArgentinaProvince, isValidAustraliaState, isValidBrazilState, isValidCanadaProvince, isValidChileRegion, isValidColombiaDepartment, isValidEgyptGovernorate, isValidFranceRegion, isValidGermanyState, isValidIndiaState, isValidIndonesiaProvince, isValidItalyRegion, isValidJapanPrefecture, isValidMexicoState, isValidNetherlandsProvince, isValidNewZealandRegion, isValidNigeriaState, isValidNorwayCounty, isValidPeruDepartment, isValidPhilippinesProvince, isValidPolandVoivodeship, isValidPortugalDistrict, isValidSouthAfricaProvince, isValidSouthKoreaProvince, isValidSpainProvince, isValidSubdivision, isValidSwedenCounty, isValidThailandProvince, isValidTurkeyProvince, isValidUKNation, isValidUsState, koriAssistantTheme, koriDepartmentFlows, lgpdWorkflow, listItem, listItemReduced, logisticsWorkflow, manufacturingWorkflow, marketingWorkflow, notificationBanner, notificationBannerReduced, pageControlDot, payrollWorkflow, prefersReducedMotion, registerCountry, registerSubdivisionTheme, resolveGlassAccentRgb, salesWorkflow, selectIsAuthenticated, selectShowShellChrome, selectUserInitial, selectUserName, shimmerClass, shimmerWhiteClass, slideDown, slideRight, slideUp, springPresets, springPresetsReduced, staggerContainer, supportWorkflow, swipeActionThreshold, swipeConstraints, triggerHaptic, useGeoMapState, useHaptic, useNotifications, usePlatformShellStore, usePullToRefresh, validateDashboardSpec, xScale, yScale };