@datatechsolutions/ui 3.11.2 → 3.12.1

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 (99) hide show
  1. package/dist/astrlabe/index.js +108 -108
  2. package/dist/astrlabe/index.mjs +4 -4
  3. package/dist/astrlabe/workflow-canvas.js +4 -4
  4. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  5. package/dist/{chunk-TZA5T4MJ.mjs → chunk-4D23CQZM.mjs} +80 -16
  6. package/dist/chunk-4D23CQZM.mjs.map +1 -0
  7. package/dist/{chunk-5Y67PZWC.js → chunk-5OZTI7TR.js} +4 -4
  8. package/dist/{chunk-5Y67PZWC.js.map → chunk-5OZTI7TR.js.map} +1 -1
  9. package/dist/{chunk-5TJR3VJ6.mjs → chunk-5TLKFOEL.mjs} +4 -4
  10. package/dist/{chunk-5TJR3VJ6.mjs.map → chunk-5TLKFOEL.mjs.map} +1 -1
  11. package/dist/{chunk-N7T4X6A7.mjs → chunk-BPMYNE7S.mjs} +3 -3
  12. package/dist/{chunk-N7T4X6A7.mjs.map → chunk-BPMYNE7S.mjs.map} +1 -1
  13. package/dist/{chunk-JBXNEOFB.mjs → chunk-EDI46QA7.mjs} +3 -3
  14. package/dist/{chunk-JBXNEOFB.mjs.map → chunk-EDI46QA7.mjs.map} +1 -1
  15. package/dist/{chunk-3BFQ3SVG.js → chunk-FKRIQYRG.js} +68 -68
  16. package/dist/{chunk-3BFQ3SVG.js.map → chunk-FKRIQYRG.js.map} +1 -1
  17. package/dist/{chunk-HLIMHIRH.js → chunk-HTODLUKG.js} +9 -9
  18. package/dist/{chunk-HLIMHIRH.js.map → chunk-HTODLUKG.js.map} +1 -1
  19. package/dist/{chunk-BGLYJ7GR.js → chunk-ID55ABBB.js} +35 -35
  20. package/dist/{chunk-BGLYJ7GR.js.map → chunk-ID55ABBB.js.map} +1 -1
  21. package/dist/{chunk-MCHTZ63Q.js → chunk-LRNVB7MO.js} +4 -4
  22. package/dist/{chunk-MCHTZ63Q.js.map → chunk-LRNVB7MO.js.map} +1 -1
  23. package/dist/{chunk-Y4YIGEX6.js → chunk-MFF37C24.js} +135 -135
  24. package/dist/{chunk-Y4YIGEX6.js.map → chunk-MFF37C24.js.map} +1 -1
  25. package/dist/{chunk-TXI3QDYE.js → chunk-MYHBXIO2.js} +34 -34
  26. package/dist/{chunk-TXI3QDYE.js.map → chunk-MYHBXIO2.js.map} +1 -1
  27. package/dist/{chunk-OZEOBZOW.mjs → chunk-N5GQIT7A.mjs} +7 -7
  28. package/dist/{chunk-OZEOBZOW.mjs.map → chunk-N5GQIT7A.mjs.map} +1 -1
  29. package/dist/{chunk-AVLOGVVA.mjs → chunk-NK4H3JWN.mjs} +3 -3
  30. package/dist/{chunk-AVLOGVVA.mjs.map → chunk-NK4H3JWN.mjs.map} +1 -1
  31. package/dist/{chunk-RUWUH7DW.mjs → chunk-NQGLSM46.mjs} +3 -3
  32. package/dist/{chunk-RUWUH7DW.mjs.map → chunk-NQGLSM46.mjs.map} +1 -1
  33. package/dist/{chunk-KGC5CRS7.mjs → chunk-OM5NNUD2.mjs} +3 -3
  34. package/dist/{chunk-KGC5CRS7.mjs.map → chunk-OM5NNUD2.mjs.map} +1 -1
  35. package/dist/{chunk-D5FL3ZHC.mjs → chunk-OW5LSEHU.mjs} +86 -43
  36. package/dist/chunk-OW5LSEHU.mjs.map +1 -0
  37. package/dist/{chunk-WSXP645I.mjs → chunk-PIIY2Z2O.mjs} +3 -3
  38. package/dist/{chunk-WSXP645I.mjs.map → chunk-PIIY2Z2O.mjs.map} +1 -1
  39. package/dist/{chunk-5JS3UFBF.js → chunk-PLEWG2L7.js} +13 -13
  40. package/dist/{chunk-5JS3UFBF.js.map → chunk-PLEWG2L7.js.map} +1 -1
  41. package/dist/{chunk-5NKGJV72.js → chunk-QSCWV47U.js} +25 -25
  42. package/dist/{chunk-5NKGJV72.js.map → chunk-QSCWV47U.js.map} +1 -1
  43. package/dist/{chunk-4PUVECVF.mjs → chunk-RBH723MG.mjs} +3 -3
  44. package/dist/{chunk-4PUVECVF.mjs.map → chunk-RBH723MG.mjs.map} +1 -1
  45. package/dist/{chunk-NDGYIHJ3.mjs → chunk-RT264BD4.mjs} +3 -3
  46. package/dist/{chunk-NDGYIHJ3.mjs.map → chunk-RT264BD4.mjs.map} +1 -1
  47. package/dist/{chunk-3J4E2THD.js → chunk-TDNBO3V7.js} +45 -45
  48. package/dist/{chunk-3J4E2THD.js.map → chunk-TDNBO3V7.js.map} +1 -1
  49. package/dist/{chunk-6R5Z2IQ5.js → chunk-ULKZGM2T.js} +86 -43
  50. package/dist/chunk-ULKZGM2T.js.map +1 -0
  51. package/dist/{chunk-JXROBMRU.mjs → chunk-UVFWKDRO.mjs} +3 -3
  52. package/dist/{chunk-JXROBMRU.mjs.map → chunk-UVFWKDRO.mjs.map} +1 -1
  53. package/dist/{chunk-GDVB7QDZ.js → chunk-V3UZCOZI.js} +102 -38
  54. package/dist/chunk-V3UZCOZI.js.map +1 -0
  55. package/dist/{chunk-V32NUE5U.js → chunk-VYU2FYDE.js} +55 -55
  56. package/dist/{chunk-V32NUE5U.js.map → chunk-VYU2FYDE.js.map} +1 -1
  57. package/dist/{chunk-M64U336M.mjs → chunk-WLNY3GVM.mjs} +6 -6
  58. package/dist/{chunk-M64U336M.mjs.map → chunk-WLNY3GVM.mjs.map} +1 -1
  59. package/dist/{chunk-LW2LFJZ7.js → chunk-XGAPZT4J.js} +36 -36
  60. package/dist/{chunk-LW2LFJZ7.js.map → chunk-XGAPZT4J.js.map} +1 -1
  61. package/dist/{chunk-LBCUQ4FY.mjs → chunk-YYNGXKUE.mjs} +3 -3
  62. package/dist/{chunk-LBCUQ4FY.mjs.map → chunk-YYNGXKUE.mjs.map} +1 -1
  63. package/dist/{chunk-N5FWIT7N.js → chunk-Z75CEP4V.js} +10 -10
  64. package/dist/{chunk-N5FWIT7N.js.map → chunk-Z75CEP4V.js.map} +1 -1
  65. package/dist/index.d.mts +13 -4
  66. package/dist/index.d.ts +13 -4
  67. package/dist/index.js +663 -663
  68. package/dist/index.mjs +2 -2
  69. package/dist/platform/admin/index.js +10 -10
  70. package/dist/platform/admin/index.mjs +4 -4
  71. package/dist/platform/agents-workspace.js +7 -7
  72. package/dist/platform/agents-workspace.mjs +6 -6
  73. package/dist/platform/app-shell.js +4 -4
  74. package/dist/platform/app-shell.mjs +3 -3
  75. package/dist/platform/auth/index.js +22 -22
  76. package/dist/platform/auth/index.mjs +4 -4
  77. package/dist/platform/billing/index.js +4 -4
  78. package/dist/platform/billing/index.mjs +3 -3
  79. package/dist/platform/impersonation/index.js +4 -4
  80. package/dist/platform/impersonation/index.mjs +3 -3
  81. package/dist/platform/index.d.mts +1 -1
  82. package/dist/platform/index.d.ts +1 -1
  83. package/dist/platform/index.js +86 -86
  84. package/dist/platform/index.mjs +18 -18
  85. package/dist/platform/pages/index.d.mts +75 -16
  86. package/dist/platform/pages/index.d.ts +75 -16
  87. package/dist/platform/pages/index.js +1089 -505
  88. package/dist/platform/pages/index.js.map +1 -1
  89. package/dist/platform/pages/index.mjs +789 -205
  90. package/dist/platform/pages/index.mjs.map +1 -1
  91. package/dist/platform/settings/index.js +7 -7
  92. package/dist/platform/settings/index.mjs +6 -6
  93. package/dist/platform/workflow-canvas-shell.js +5 -5
  94. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  95. package/package.json +1 -1
  96. package/dist/chunk-6R5Z2IQ5.js.map +0 -1
  97. package/dist/chunk-D5FL3ZHC.mjs.map +0 -1
  98. package/dist/chunk-GDVB7QDZ.js.map +0 -1
  99. package/dist/chunk-TZA5T4MJ.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/settings/platform-settings.tsx"],"names":[],"mappings":"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","file":"chunk-M64U336M.mjs","sourcesContent":["// =============================================================================\n// @datatechsolutions/windsock/ui — PlatformSettings\n// Unified settings shell consumed by every product (astrlabe, kori).\n// Composes existing building blocks:\n// - `<UserProfile>` — Profile / Security / Sessions / Linked accounts\n// - `<AdminOrganizationDetail>` — Members / Invitations / Domains\n// - `<BillingPanel>` — Current subscription + plan catalogue\n// Apps mount this at their `/settings` route; feature toggles hide sections\n// that a given user's role cannot access.\n// =============================================================================\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { SegmentedControl, InlineSpinner } from '@ui/index'\nimport type { AdminClient, AuthOrganization } from '@datatechsolutions/shared-domain'\n\nimport { useAuth } from '../../_auth'\nimport { UserProfile } from '../auth/user-profile'\nimport { AdminOrganizationDetail } from '../admin/admin-organization-detail'\nimport { BillingPanel, type BillingPanelProps } from '../billing/billing-panel'\n\nexport type PlatformSettingsSection = 'account' | 'organization' | 'billing'\n\nexport interface PlatformSettingsProps {\n /**\n * Sections to surface to the current user. The host app is responsible for\n * picking the right set based on RBAC — e.g. hide `organization` for users\n * without `org:manage` and hide `billing` for users without `billing:read`.\n * Defaults to all three.\n */\n sections?: PlatformSettingsSection[]\n /** Starting section. Defaults to the first item in `sections`. */\n defaultSection?: PlatformSettingsSection\n /**\n * Windsock admin API client. Required when `organization` is in `sections`.\n * Create it once with `createAdminClient({ issuer, authClient })` and reuse.\n */\n adminClient?: AdminClient\n /**\n * Current organization id (usually `ctx.organizationId` from the JWT).\n * Required when `organization` is in `sections`.\n */\n organizationId?: string\n /** Forwarded to `<BillingPanel>` — e.g. redirect handler, billing interval. */\n billing?: BillingPanelProps\n}\n\nconst DEFAULT_SECTIONS: PlatformSettingsSection[] = ['account', 'organization', 'billing']\n\nexport function PlatformSettings({\n sections = DEFAULT_SECTIONS,\n defaultSection,\n adminClient,\n organizationId,\n billing,\n}: PlatformSettingsProps) {\n const t = useTranslations('windsock')\n const { status } = useAuth()\n\n const visibleSections = useMemo(() => {\n // Drop `organization` if the caller didn't pass an admin client + org id.\n return sections.filter((section) => {\n if (section === 'organization') {\n return Boolean(adminClient && organizationId)\n }\n return true\n })\n }, [sections, adminClient, organizationId])\n\n const initialSection: PlatformSettingsSection = (\n defaultSection && visibleSections.includes(defaultSection)\n ? defaultSection\n : visibleSections[0] ?? 'account'\n )\n\n const [activeSection, setActiveSection] = useState<PlatformSettingsSection>(initialSection)\n const [organization, setOrganization] = useState<AuthOrganization | null>(null)\n const [orgLoadError, setOrgLoadError] = useState<string | null>(null)\n\n // Resolve the org detail record (AdminOrganizationDetail needs the full\n // AuthOrganization, not just the id). Fires once the organization tab is\n // first selected so the listOrganizations round-trip is lazy.\n useEffect(() => {\n if (activeSection !== 'organization') return\n if (!adminClient || !organizationId) return\n if (organization?.id === organizationId) return\n\n let cancelled = false\n setOrgLoadError(null)\n void adminClient.listOrganizations()\n .then((orgs) => {\n if (cancelled) return\n const match = orgs.find((org) => org.id === organizationId)\n if (match) {\n setOrganization(match)\n } else {\n setOrgLoadError('Organization not found')\n }\n })\n .catch((loadError: unknown) => {\n if (cancelled) return\n setOrgLoadError(loadError instanceof Error ? loadError.message : String(loadError))\n })\n return () => {\n cancelled = true\n }\n }, [activeSection, adminClient, organizationId, organization?.id])\n\n if (status === 'loading') {\n return (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n }\n\n if (status !== 'authenticated') {\n return null\n }\n\n if (visibleSections.length === 0) {\n return null\n }\n\n const segments = visibleSections.map((section) => ({\n value: section,\n label: t(`platformSettings.sections.${section}`),\n }))\n\n return (\n <div className=\"space-y-6\">\n {visibleSections.length > 1 && (\n <SegmentedControl\n segments={segments}\n value={activeSection}\n onChange={(value: string) => setActiveSection(value as PlatformSettingsSection)}\n fullWidth\n />\n )}\n\n {activeSection === 'account' && <UserProfile />}\n\n {activeSection === 'organization' && adminClient && organizationId && (\n organization ? (\n <AdminOrganizationDetail\n client={adminClient}\n organization={organization}\n />\n ) : orgLoadError ? (\n <div\n role=\"alert\"\n className=\"rounded-xl border border-red-300/40 bg-red-50/80 px-4 py-3 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-300\"\n >\n {orgLoadError}\n </div>\n ) : (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n )}\n\n {activeSection === 'billing' && <BillingPanel {...billing} />}\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/settings/platform-settings.tsx"],"names":[],"mappings":"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","file":"chunk-WLNY3GVM.mjs","sourcesContent":["// =============================================================================\n// @datatechsolutions/windsock/ui — PlatformSettings\n// Unified settings shell consumed by every product (astrlabe, kori).\n// Composes existing building blocks:\n// - `<UserProfile>` — Profile / Security / Sessions / Linked accounts\n// - `<AdminOrganizationDetail>` — Members / Invitations / Domains\n// - `<BillingPanel>` — Current subscription + plan catalogue\n// Apps mount this at their `/settings` route; feature toggles hide sections\n// that a given user's role cannot access.\n// =============================================================================\n\nimport { useEffect, useMemo, useState } from 'react'\nimport { useTranslations } from '@ui/lib/i18n-context'\nimport { SegmentedControl, InlineSpinner } from '@ui/index'\nimport type { AdminClient, AuthOrganization } from '@datatechsolutions/shared-domain'\n\nimport { useAuth } from '../../_auth'\nimport { UserProfile } from '../auth/user-profile'\nimport { AdminOrganizationDetail } from '../admin/admin-organization-detail'\nimport { BillingPanel, type BillingPanelProps } from '../billing/billing-panel'\n\nexport type PlatformSettingsSection = 'account' | 'organization' | 'billing'\n\nexport interface PlatformSettingsProps {\n /**\n * Sections to surface to the current user. The host app is responsible for\n * picking the right set based on RBAC — e.g. hide `organization` for users\n * without `org:manage` and hide `billing` for users without `billing:read`.\n * Defaults to all three.\n */\n sections?: PlatformSettingsSection[]\n /** Starting section. Defaults to the first item in `sections`. */\n defaultSection?: PlatformSettingsSection\n /**\n * Windsock admin API client. Required when `organization` is in `sections`.\n * Create it once with `createAdminClient({ issuer, authClient })` and reuse.\n */\n adminClient?: AdminClient\n /**\n * Current organization id (usually `ctx.organizationId` from the JWT).\n * Required when `organization` is in `sections`.\n */\n organizationId?: string\n /** Forwarded to `<BillingPanel>` — e.g. redirect handler, billing interval. */\n billing?: BillingPanelProps\n}\n\nconst DEFAULT_SECTIONS: PlatformSettingsSection[] = ['account', 'organization', 'billing']\n\nexport function PlatformSettings({\n sections = DEFAULT_SECTIONS,\n defaultSection,\n adminClient,\n organizationId,\n billing,\n}: PlatformSettingsProps) {\n const t = useTranslations('windsock')\n const { status } = useAuth()\n\n const visibleSections = useMemo(() => {\n // Drop `organization` if the caller didn't pass an admin client + org id.\n return sections.filter((section) => {\n if (section === 'organization') {\n return Boolean(adminClient && organizationId)\n }\n return true\n })\n }, [sections, adminClient, organizationId])\n\n const initialSection: PlatformSettingsSection = (\n defaultSection && visibleSections.includes(defaultSection)\n ? defaultSection\n : visibleSections[0] ?? 'account'\n )\n\n const [activeSection, setActiveSection] = useState<PlatformSettingsSection>(initialSection)\n const [organization, setOrganization] = useState<AuthOrganization | null>(null)\n const [orgLoadError, setOrgLoadError] = useState<string | null>(null)\n\n // Resolve the org detail record (AdminOrganizationDetail needs the full\n // AuthOrganization, not just the id). Fires once the organization tab is\n // first selected so the listOrganizations round-trip is lazy.\n useEffect(() => {\n if (activeSection !== 'organization') return\n if (!adminClient || !organizationId) return\n if (organization?.id === organizationId) return\n\n let cancelled = false\n setOrgLoadError(null)\n void adminClient.listOrganizations()\n .then((orgs) => {\n if (cancelled) return\n const match = orgs.find((org) => org.id === organizationId)\n if (match) {\n setOrganization(match)\n } else {\n setOrgLoadError('Organization not found')\n }\n })\n .catch((loadError: unknown) => {\n if (cancelled) return\n setOrgLoadError(loadError instanceof Error ? loadError.message : String(loadError))\n })\n return () => {\n cancelled = true\n }\n }, [activeSection, adminClient, organizationId, organization?.id])\n\n if (status === 'loading') {\n return (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n }\n\n if (status !== 'authenticated') {\n return null\n }\n\n if (visibleSections.length === 0) {\n return null\n }\n\n const segments = visibleSections.map((section) => ({\n value: section,\n label: t(`platformSettings.sections.${section}`),\n }))\n\n return (\n <div className=\"space-y-6\">\n {visibleSections.length > 1 && (\n <SegmentedControl\n segments={segments}\n value={activeSection}\n onChange={(value: string) => setActiveSection(value as PlatformSettingsSection)}\n fullWidth\n />\n )}\n\n {activeSection === 'account' && <UserProfile />}\n\n {activeSection === 'organization' && adminClient && organizationId && (\n organization ? (\n <AdminOrganizationDetail\n client={adminClient}\n organization={organization}\n />\n ) : orgLoadError ? (\n <div\n role=\"alert\"\n className=\"rounded-xl border border-red-300/40 bg-red-50/80 px-4 py-3 text-sm text-red-700 dark:border-red-500/30 dark:bg-red-500/10 dark:text-red-300\"\n >\n {orgLoadError}\n </div>\n ) : (\n <div className=\"flex items-center justify-center py-12\">\n <InlineSpinner />\n </div>\n )\n )}\n\n {activeSection === 'billing' && <BillingPanel {...billing} />}\n </div>\n )\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkTXI3QDYE_js = require('./chunk-TXI3QDYE.js');
5
- var chunkY4YIGEX6_js = require('./chunk-Y4YIGEX6.js');
4
+ var chunkMYHBXIO2_js = require('./chunk-MYHBXIO2.js');
5
+ var chunkMFF37C24_js = require('./chunk-MFF37C24.js');
6
6
  var chunkDJDZIRM6_js = require('./chunk-DJDZIRM6.js');
7
- var chunk3BFQ3SVG_js = require('./chunk-3BFQ3SVG.js');
8
- var chunk6R5Z2IQ5_js = require('./chunk-6R5Z2IQ5.js');
9
- var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
7
+ var chunkFKRIQYRG_js = require('./chunk-FKRIQYRG.js');
8
+ var chunkULKZGM2T_js = require('./chunk-ULKZGM2T.js');
10
9
  var chunk22XPYFHJ_js = require('./chunk-22XPYFHJ.js');
10
+ var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
11
11
  var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
12
12
  var react = require('react');
13
13
  var reactRouter = require('react-router');
@@ -181,9 +181,9 @@ function applyWorkflowExecutionEventToStore(actions, event) {
181
181
  }
182
182
  }
183
183
  function useWorkflowRunPresentation(events, status) {
184
- const clearNodeResults = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.clearNodeResults);
185
- const setIsRunning = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.setIsRunning);
186
- const setNodeResult = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.setNodeResult);
184
+ const clearNodeResults = chunkFKRIQYRG_js.useWorkflowStore((state) => state.clearNodeResults);
185
+ const setIsRunning = chunkFKRIQYRG_js.useWorkflowStore((state) => state.setIsRunning);
186
+ const setNodeResult = chunkFKRIQYRG_js.useWorkflowStore((state) => state.setNodeResult);
187
187
  react.useEffect(() => {
188
188
  if (status === "idle") {
189
189
  resetWorkflowRunPresentation({ clearNodeResults, setIsRunning, setNodeResult });
@@ -206,9 +206,9 @@ function useWorkflowExecution(workflowId) {
206
206
  const [activeRunId, setActiveRunId] = react.useState(null);
207
207
  const [isLaunching, setIsLaunching] = react.useState(false);
208
208
  const stream = useRunEvents(workflowId || null, activeRunId);
209
- const clearNodeResults = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.clearNodeResults);
210
- const setIsRunning = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.setIsRunning);
211
- const setNodeResult = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.setNodeResult);
209
+ const clearNodeResults = chunkFKRIQYRG_js.useWorkflowStore((state) => state.clearNodeResults);
210
+ const setIsRunning = chunkFKRIQYRG_js.useWorkflowStore((state) => state.setIsRunning);
211
+ const setNodeResult = chunkFKRIQYRG_js.useWorkflowStore((state) => state.setNodeResult);
212
212
  useWorkflowRunPresentation(stream.events, activeRunId ? stream.status : "idle");
213
213
  react.useEffect(() => {
214
214
  if (stream.status === "completed" || stream.status === "failed" || stream.status === "error") {
@@ -333,7 +333,7 @@ function AgentsWorkspace({ workflowId, messages }) {
333
333
  const tWorkflow = chunkYXN2K77G_js.useTranslations("agents.workflow");
334
334
  const tCommon = chunkYXN2K77G_js.useTranslations("common");
335
335
  const datasourceLabels = useDatasourceLabels();
336
- const { error: notifyError, success: notifySuccess } = chunk6R5Z2IQ5_js.useNotifications();
336
+ const { error: notifyError, success: notifySuccess } = chunkULKZGM2T_js.useNotifications();
337
337
  const showSuccess = react.useCallback((title, message) => {
338
338
  notifySuccess(title, message);
339
339
  }, [notifySuccess]);
@@ -357,20 +357,20 @@ function AgentsWorkspace({ workflowId, messages }) {
357
357
  const [datasources, setDatasources] = react.useState([]);
358
358
  const [modelConnections, setModelConnections] = react.useState([]);
359
359
  const [showDatasourceModal, setShowDatasourceModal] = react.useState(false);
360
- const openPipelineSettingsModal = chunk3BFQ3SVG_js.useModalStore((s) => s.openPipelineSettingsModal);
360
+ const openPipelineSettingsModal = chunkFKRIQYRG_js.useModalStore((s) => s.openPipelineSettingsModal);
361
361
  const [showRunInputDialog, setShowRunInputDialog] = react.useState(false);
362
362
  const [showPreviewPanel, setShowPreviewPanel] = react.useState(false);
363
363
  const [isCreatingAgent, setIsCreatingAgent] = react.useState(false);
364
- const openSubworkflowModal = chunkY4YIGEX6_js.useSubworkflowStore((s) => s.openModal);
365
- const closeSubworkflowModal = chunkY4YIGEX6_js.useSubworkflowStore((s) => s.closeModal);
364
+ const openSubworkflowModal = chunkMFF37C24_js.useSubworkflowStore((s) => s.openModal);
365
+ const closeSubworkflowModal = chunkMFF37C24_js.useSubworkflowStore((s) => s.closeModal);
366
366
  const [deleteTarget, setDeleteTarget] = react.useState(null);
367
367
  const [saveStatus, setSaveStatus] = react.useState("idle");
368
368
  const latestGraphRef = react.useRef(null);
369
369
  const saveTimerRef = react.useRef(null);
370
370
  const skipInitialAutoSaveRef = react.useRef(true);
371
- const showRunPanel = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.showRunPanel);
372
- const toggleRunPanel = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.toggleRunPanel);
373
- const workflowNodes = chunk3BFQ3SVG_js.useWorkflowStore((state) => state.nodes);
371
+ const showRunPanel = chunkFKRIQYRG_js.useWorkflowStore((state) => state.showRunPanel);
372
+ const toggleRunPanel = chunkFKRIQYRG_js.useWorkflowStore((state) => state.toggleRunPanel);
373
+ const workflowNodes = chunkFKRIQYRG_js.useWorkflowStore((state) => state.nodes);
374
374
  const { execute: executeWorkflowRun, stop: stopWorkflowRun, isRunning } = useWorkflowExecution(workflowId);
375
375
  const loadWorkspaceData = react.useCallback(async () => {
376
376
  setIsLoading(true);
@@ -655,7 +655,7 @@ function AgentsWorkspace({ workflowId, messages }) {
655
655
  }
656
656
  if (!workflow) {
657
657
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-[calc(100vh-120px)] items-center justify-center", children: loadError ? /* @__PURE__ */ jsxRuntime.jsx(
658
- chunk6R5Z2IQ5_js.PageErrorState,
658
+ chunkULKZGM2T_js.PageErrorState,
659
659
  {
660
660
  statusCode: 500,
661
661
  title: tCommon("serverError"),
@@ -666,7 +666,7 @@ function AgentsWorkspace({ workflowId, messages }) {
666
666
  retryLabel: tCommon("retry")
667
667
  }
668
668
  ) : /* @__PURE__ */ jsxRuntime.jsx(
669
- chunk6R5Z2IQ5_js.PageEmptyState,
669
+ chunkULKZGM2T_js.PageEmptyState,
670
670
  {
671
671
  title: tWorkflow("emptyTitle"),
672
672
  message: tWorkflow("emptyDescription"),
@@ -674,7 +674,7 @@ function AgentsWorkspace({ workflowId, messages }) {
674
674
  }
675
675
  ) });
676
676
  }
677
- return /* @__PURE__ */ jsxRuntime.jsx(chunk3BFQ3SVG_js.WorkflowBuilderProvider, { publishableKey: getPublishableKey(), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[calc(100vh-120px)] flex-col", "data-testid": "agents-workspace", children: [
677
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkFKRIQYRG_js.WorkflowBuilderProvider, { publishableKey: getPublishableKey(), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[calc(100vh-120px)] flex-col", "data-testid": "agents-workspace", children: [
678
678
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface flex h-full flex-col overflow-hidden rounded-2xl", children: [
679
679
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-shrink-0 items-center justify-between px-5 py-3", children: [
680
680
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -696,9 +696,9 @@ function AgentsWorkspace({ workflowId, messages }) {
696
696
  children: workflow.name || tWorkflow("title")
697
697
  }
698
698
  ),
699
- /* @__PURE__ */ jsxRuntime.jsx(chunk6R5Z2IQ5_js.CopyableId, { id: workflowId, className: "text-[10px]" }),
699
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULKZGM2T_js.CopyableId, { id: workflowId, className: "text-[10px]" }),
700
700
  workflow.isDraft ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center rounded-full bg-amber-100 px-2.5 py-0.5 text-[10px] font-semibold text-amber-800 dark:bg-amber-900/30 dark:text-amber-300", children: tWorkflow("draftBadge") }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center rounded-full bg-green-100 px-2.5 py-0.5 text-[10px] font-semibold text-green-800 dark:bg-green-900/30 dark:text-green-300", children: tWorkflow("published") }),
701
- /* @__PURE__ */ jsxRuntime.jsx(chunkY4YIGEX6_js.SaveStatusBadge, { status: saveStatus })
701
+ /* @__PURE__ */ jsxRuntime.jsx(chunkMFF37C24_js.SaveStatusBadge, { status: saveStatus })
702
702
  ] }),
703
703
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
704
704
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -738,7 +738,7 @@ function AgentsWorkspace({ workflowId, messages }) {
738
738
  ] }),
739
739
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-divider border-t" }),
740
740
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
741
- chunkY4YIGEX6_js.WorkflowListBar,
741
+ chunkMFF37C24_js.WorkflowListBar,
742
742
  {
743
743
  workflows,
744
744
  activeWorkflowId: workflowId,
@@ -754,7 +754,7 @@ function AgentsWorkspace({ workflowId, messages }) {
754
754
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-divider border-t" }),
755
755
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: [
756
756
  /* @__PURE__ */ jsxRuntime.jsx(
757
- chunkY4YIGEX6_js.NodePalette,
757
+ chunkMFF37C24_js.NodePalette,
758
758
  {
759
759
  agents,
760
760
  tools,
@@ -776,7 +776,7 @@ function AgentsWorkspace({ workflowId, messages }) {
776
776
  }
777
777
  ),
778
778
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
779
- chunkY4YIGEX6_js.AutoSaveWorkspace,
779
+ chunkMFF37C24_js.AutoSaveWorkspace,
780
780
  {
781
781
  workflowId,
782
782
  className: "h-full w-full",
@@ -804,7 +804,7 @@ function AgentsWorkspace({ workflowId, messages }) {
804
804
  latestGraphRef.current = graph;
805
805
  },
806
806
  renderAgentModal: (props) => /* @__PURE__ */ jsxRuntime.jsx(
807
- chunkY4YIGEX6_js.AgentModal,
807
+ chunkMFF37C24_js.AgentModal,
808
808
  {
809
809
  ...props,
810
810
  onSaved: () => {
@@ -845,7 +845,7 @@ function AgentsWorkspace({ workflowId, messages }) {
845
845
  ] })
846
846
  ] }),
847
847
  /* @__PURE__ */ jsxRuntime.jsx(
848
- chunkY4YIGEX6_js.PipelineSettingsModal,
848
+ chunkMFF37C24_js.PipelineSettingsModal,
849
849
  {
850
850
  onSave: async (changes) => {
851
851
  const metadata = {
@@ -862,7 +862,7 @@ function AgentsWorkspace({ workflowId, messages }) {
862
862
  }
863
863
  ),
864
864
  /* @__PURE__ */ jsxRuntime.jsx(
865
- chunkY4YIGEX6_js.SubworkflowModal,
865
+ chunkMFF37C24_js.SubworkflowModal,
866
866
  {
867
867
  onMaximize: (subworkflowId) => {
868
868
  closeSubworkflowModal();
@@ -886,7 +886,7 @@ function AgentsWorkspace({ workflowId, messages }) {
886
886
  }
887
887
  ),
888
888
  /* @__PURE__ */ jsxRuntime.jsx(
889
- chunkY4YIGEX6_js.RunPanel,
889
+ chunkMFF37C24_js.RunPanel,
890
890
  {
891
891
  open: showRunPanel,
892
892
  onClose: toggleRunPanel,
@@ -895,7 +895,7 @@ function AgentsWorkspace({ workflowId, messages }) {
895
895
  }
896
896
  ),
897
897
  /* @__PURE__ */ jsxRuntime.jsx(
898
- chunkY4YIGEX6_js.RunInputDialog,
898
+ chunkMFF37C24_js.RunInputDialog,
899
899
  {
900
900
  open: showRunInputDialog,
901
901
  onClose: () => setShowRunInputDialog(false),
@@ -908,7 +908,7 @@ function AgentsWorkspace({ workflowId, messages }) {
908
908
  }
909
909
  ),
910
910
  /* @__PURE__ */ jsxRuntime.jsx(
911
- chunkY4YIGEX6_js.PreviewPanel,
911
+ chunkMFF37C24_js.PreviewPanel,
912
912
  {
913
913
  open: showPreviewPanel,
914
914
  onClose: () => setShowPreviewPanel(false),
@@ -917,7 +917,7 @@ function AgentsWorkspace({ workflowId, messages }) {
917
917
  }
918
918
  ),
919
919
  /* @__PURE__ */ jsxRuntime.jsx(
920
- chunkTXI3QDYE_js.DatasourceFormModal,
920
+ chunkMYHBXIO2_js.DatasourceFormModal,
921
921
  {
922
922
  open: showDatasourceModal,
923
923
  onClose: () => setShowDatasourceModal(false),
@@ -928,7 +928,7 @@ function AgentsWorkspace({ workflowId, messages }) {
928
928
  }
929
929
  ),
930
930
  /* @__PURE__ */ jsxRuntime.jsx(
931
- chunk6R5Z2IQ5_js.DynamicIslandConfirm,
931
+ chunkULKZGM2T_js.DynamicIslandConfirm,
932
932
  {
933
933
  open: deleteTarget !== null,
934
934
  onClose: () => setDeleteTarget(null),
@@ -947,5 +947,5 @@ exports.resetWorkflowRunPresentation = resetWorkflowRunPresentation;
947
947
  exports.useRunEvents = useRunEvents;
948
948
  exports.useWorkflowExecution = useWorkflowExecution;
949
949
  exports.useWorkflowRunPresentation = useWorkflowRunPresentation;
950
- //# sourceMappingURL=chunk-LW2LFJZ7.js.map
951
- //# sourceMappingURL=chunk-LW2LFJZ7.js.map
950
+ //# sourceMappingURL=chunk-XGAPZT4J.js.map
951
+ //# sourceMappingURL=chunk-XGAPZT4J.js.map