@datatechsolutions/ui 2.11.84 → 2.11.85

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 (51) hide show
  1. package/dist/astrlabe/index.js +107 -107
  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-JJWFMKZY.js → chunk-2URBM4LA.js} +7 -7
  6. package/dist/{chunk-JJWFMKZY.js.map → chunk-2URBM4LA.js.map} +1 -1
  7. package/dist/{chunk-WGELLCOZ.js → chunk-3YVQXDKJ.js} +4 -4
  8. package/dist/{chunk-WGELLCOZ.js.map → chunk-3YVQXDKJ.js.map} +1 -1
  9. package/dist/{chunk-SGJ24J2Q.js → chunk-6F3IMKDZ.js} +39 -39
  10. package/dist/{chunk-SGJ24J2Q.js.map → chunk-6F3IMKDZ.js.map} +1 -1
  11. package/dist/{chunk-CCRBT7TA.mjs → chunk-6OWYGDNW.mjs} +6 -6
  12. package/dist/{chunk-CCRBT7TA.mjs.map → chunk-6OWYGDNW.mjs.map} +1 -1
  13. package/dist/{chunk-BH2AU3LG.mjs → chunk-D4TESEYK.mjs} +3 -3
  14. package/dist/{chunk-BH2AU3LG.mjs.map → chunk-D4TESEYK.mjs.map} +1 -1
  15. package/dist/{chunk-EDE36MKE.mjs → chunk-G7DZU3NM.mjs} +3 -3
  16. package/dist/{chunk-EDE36MKE.mjs.map → chunk-G7DZU3NM.mjs.map} +1 -1
  17. package/dist/{chunk-63AL2RN5.mjs → chunk-HK6J6HQP.mjs} +4 -4
  18. package/dist/{chunk-63AL2RN5.mjs.map → chunk-HK6J6HQP.mjs.map} +1 -1
  19. package/dist/{chunk-MNQEZL7B.mjs → chunk-JUTOBBBI.mjs} +4 -4
  20. package/dist/{chunk-MNQEZL7B.mjs.map → chunk-JUTOBBBI.mjs.map} +1 -1
  21. package/dist/{chunk-CXIQWPBH.js → chunk-K26RY4EQ.js} +26 -26
  22. package/dist/{chunk-CXIQWPBH.js.map → chunk-K26RY4EQ.js.map} +1 -1
  23. package/dist/{chunk-GV6WJCEB.js → chunk-KNXAOJAK.js} +3 -3
  24. package/dist/{chunk-GV6WJCEB.js.map → chunk-KNXAOJAK.js.map} +1 -1
  25. package/dist/{chunk-SW6TVAIJ.js → chunk-SV4SMITM.js} +36 -36
  26. package/dist/{chunk-SW6TVAIJ.js.map → chunk-SV4SMITM.js.map} +1 -1
  27. package/dist/{chunk-HU3EAHFO.mjs → chunk-TLDVFFAK.mjs} +3 -3
  28. package/dist/{chunk-HU3EAHFO.mjs.map → chunk-TLDVFFAK.mjs.map} +1 -1
  29. package/dist/{chunk-EFREXNZB.js → chunk-TZ62G5WM.js} +64 -64
  30. package/dist/{chunk-EFREXNZB.js.map → chunk-TZ62G5WM.js.map} +1 -1
  31. package/dist/{chunk-CHLJUSXX.mjs → chunk-XOZMUCMF.mjs} +4 -4
  32. package/dist/{chunk-CHLJUSXX.mjs.map → chunk-XOZMUCMF.mjs.map} +1 -1
  33. package/dist/{chunk-L6FVIWAJ.js → chunk-ZHHRWC27.js} +128 -128
  34. package/dist/{chunk-L6FVIWAJ.js.map → chunk-ZHHRWC27.js.map} +1 -1
  35. package/dist/{chunk-I6WYV2AN.mjs → chunk-ZJQ5RLGK.mjs} +3 -3
  36. package/dist/{chunk-I6WYV2AN.mjs.map → chunk-ZJQ5RLGK.mjs.map} +1 -1
  37. package/dist/index.js +761 -761
  38. package/dist/index.mjs +2 -2
  39. package/dist/platform/agents-workspace.js +7 -7
  40. package/dist/platform/agents-workspace.mjs +6 -6
  41. package/dist/platform/app-shell.js +4 -4
  42. package/dist/platform/app-shell.mjs +3 -3
  43. package/dist/platform/index.js +37 -37
  44. package/dist/platform/index.mjs +11 -11
  45. package/dist/platform/pages/index.js +202 -197
  46. package/dist/platform/pages/index.js.map +1 -1
  47. package/dist/platform/pages/index.mjs +14 -9
  48. package/dist/platform/pages/index.mjs.map +1 -1
  49. package/dist/platform/workflow-canvas-shell.js +5 -5
  50. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  51. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/platform-state-provider.tsx","../src/platform/app-shell.tsx"],"names":["createContext","useAuth","useMemo","useContext","LOCALE_FLAGS","useTranslations","usePlatformPreferences","usePathname","useRouter","useNotifications","useLocale","LANGUAGE_META","useCallback","jsx","PlatformShell","RectangleStackIcon","HomeIcon"],"mappings":"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","file":"chunk-JJWFMKZY.js","sourcesContent":["import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { useAuth, type AuthUser } from '@datatechsolutions/windsock/client'\n\ntype PlatformState = {\n currentOrganizationId: string\n actor: AuthUser | null\n}\n\nconst PlatformStateContext = createContext<PlatformState | null>(null)\n\nexport type PlatformStateProviderProps = {\n children: ReactNode\n /**\n * Function that converts a JWT role claim to the app's canonical role\n * union (the same `normalizePlatformRole` produced by\n * `createPlatformRbac()` in this app). Lifted out as a prop because\n * each consuming app uses its own role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport function PlatformStateProvider({ children, normalizeRole }: PlatformStateProviderProps) {\n const { user } = useAuth()\n\n const state = useMemo<PlatformState>(() => {\n const organizationId = user?.organizationId ?? ''\n\n const actor: AuthUser | null = user\n ? {\n ...user,\n role: normalizeRole(user.role),\n organizationId,\n }\n : null\n\n return {\n currentOrganizationId: organizationId,\n actor,\n }\n }, [user, normalizeRole])\n\n return (\n <PlatformStateContext.Provider value={state}>\n {children}\n </PlatformStateContext.Provider>\n )\n}\n\nexport function usePlatformState() {\n const context = useContext(PlatformStateContext)\n if (!context) throw new Error('usePlatformState must be used inside PlatformStateProvider')\n return context\n}\n","import { useCallback, useMemo, type ComponentType, type ReactNode } from 'react'\nimport { RectangleStackIcon, HomeIcon } from '@heroicons/react/24/outline'\nimport { useAuth, usePlatformPreferences } from '@datatechsolutions/windsock/client'\nimport { LANGUAGE_META } from '@datatechsolutions/shared-domain/i18n'\nimport {\n PlatformShell,\n type NavigationItem,\n} from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useLocale, useTranslations } from '@ui/lib/i18n-context'\nimport { usePathname, useRouter } from '@ui/lib/router-context'\nimport { LOCALE_FLAGS } from '@ui/lib/locale-flags'\nimport { usePlatformState } from './platform-state-provider'\n\nfunction resolveFlag(locale: string): string | undefined {\n const code = locale === 'pt-BR' ? 'br' : locale\n return LOCALE_FLAGS?.[code as keyof typeof LOCALE_FLAGS]\n}\n\nexport type PlatformAppShellProps = {\n /** App display name (e.g. \"Astrlabe\"). */\n appName: string\n /** Tailwind gradient classes for the shell branding (e.g. \"from-sky-500 to-indigo-600\"). */\n appGradient: string\n /** Branded logo node rendered inside the flyout trigger. */\n appLogo: ReactNode\n /**\n * Optional app icon for the branded loader (defaults to the platform's\n * RectangleStackIcon if omitted).\n */\n appIcon?: ReactNode\n /**\n * Optional override for the dock dashboard icon (defaults to HomeIcon).\n */\n dashboardIcon?: ComponentType<{ className?: string }>\n\n /** App-specific navigation items already pre-translated. */\n navigationItems: NavigationItem[]\n /** Custom ordering of launchpad page tiles. */\n pageOrder: string[]\n /**\n * Map of navigation/module ID → required permission name. The shell\n * filters `navigationItems` so that any item whose ID has an entry here\n * is hidden unless `hasPermission` returns true for the listed permission.\n */\n modulePermissions: Record<string, string>\n /**\n * Permission predicate, typically `(p) => can(actor, p)` from each app's\n * `createPlatformRbac()` factory.\n */\n hasPermission: (permission: string) => boolean\n\n /**\n * Optional settings/profile drawer content (e.g. an app-specific\n * `<SettingsModal>`). Receives the open state + close handler the shell\n * manages internally so the drawer renders inside the shell chrome.\n */\n settingsModal?: (props: { open: boolean; onClose: () => void }) => ReactNode\n\n children: ReactNode\n}\n\n/**\n * Cross-app platform shell — wires `<PlatformShell>` from ui to windsock's\n * auth + preferences hooks and to ui's i18n/router contexts. Each app\n * passes its own logo, gradient, navigation, and permission predicate; the\n * rest of the chrome (header, dock, flyout, sign-out confirm modal) is\n * shared.\n */\nexport function PlatformAppShell({\n appName,\n appGradient,\n appLogo,\n appIcon,\n dashboardIcon,\n navigationItems,\n pageOrder,\n modulePermissions,\n hasPermission,\n settingsModal,\n children,\n}: PlatformAppShellProps) {\n const tCommon = useTranslations('common')\n const { user, status, logout } = useAuth()\n // Validate the platform-state provider is mounted above this shell;\n // the actor itself isn't read here, but the same provider feeds children.\n usePlatformState()\n const { resolvedTheme, setTheme, dockPosition, dockAutoHide, dockEnabled } = usePlatformPreferences()\n const pathname = usePathname()\n const router = useRouter()\n const { history, openHistory } = useNotifications()\n const currentLocale = useLocale()\n const localeMeta = LANGUAGE_META[currentLocale as keyof typeof LANGUAGE_META]\n\n const items = useMemo(() => navigationItems.filter((item) => {\n const permission = modulePermissions[item.id]\n if (!permission) return true\n return hasPermission(permission)\n }), [navigationItems, modulePermissions, hasPermission])\n\n const handleSignOut = useCallback(() => { void logout('/login') }, [logout])\n const handleToggleTheme = useCallback(\n () => { setTheme(resolvedTheme === 'dark' ? 'light' : 'dark') },\n [resolvedTheme, setTheme],\n )\n const handleNavigate = useCallback((href: string) => router.push(href), [router])\n const handlePrefetch = useCallback((href: string) => router.prefetch(href), [router])\n\n const shellUser = user\n ? {\n name: user.name ?? null,\n email: user.email ?? null,\n image: user.image ?? null,\n role: user.role ?? null,\n permissions: user.permissions as string[] | undefined,\n organizationId: user.organizationId ?? null,\n }\n : null\n\n return (\n <PlatformShell\n items={items}\n launchpadPageOrder={pageOrder}\n user={shellUser}\n authStatus={status}\n onSignOut={handleSignOut}\n dockPosition={dockPosition}\n dockAutoHide={dockAutoHide}\n dockEnabled={dockEnabled}\n resolvedTheme={resolvedTheme}\n onToggleTheme={handleToggleTheme}\n pathname={pathname}\n onNavigate={handleNavigate}\n onPrefetch={handlePrefetch}\n appName={appName}\n appIcon={appIcon ?? <RectangleStackIcon className=\"h-full w-full\" />}\n appLogo={appLogo}\n appGradient={appGradient}\n dashboardIcon={dashboardIcon ?? HomeIcon}\n notificationCount={history.length}\n onNotifications={openHistory}\n labels={{\n home: tCommon('home'),\n profile: tCommon('profile'),\n signOut: tCommon('signOut'),\n signOutConfirmTitle: tCommon('signOutConfirmTitle'),\n cancel: tCommon('cancel'),\n notifications: tCommon('notifications'),\n theme: tCommon('theme'),\n currentTheme: resolvedTheme === 'dark' ? tCommon('darkMode') : tCommon('lightMode'),\n language: tCommon('language'),\n currentLocale: localeMeta?.nativeName ?? currentLocale,\n localeFlag: resolveFlag(currentLocale),\n actions: tCommon('actions'),\n }}\n {...(settingsModal ? { profileDrawer: settingsModal } : {})}\n >\n {children}\n </PlatformShell>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/platform-state-provider.tsx","../src/platform/app-shell.tsx"],"names":["createContext","useAuth","useMemo","useContext","LOCALE_FLAGS","useTranslations","usePlatformPreferences","usePathname","useRouter","useNotifications","useLocale","LANGUAGE_META","useCallback","jsx","PlatformShell","RectangleStackIcon","HomeIcon"],"mappings":"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","file":"chunk-2URBM4LA.js","sourcesContent":["import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { useAuth, type AuthUser } from '@datatechsolutions/windsock/client'\n\ntype PlatformState = {\n currentOrganizationId: string\n actor: AuthUser | null\n}\n\nconst PlatformStateContext = createContext<PlatformState | null>(null)\n\nexport type PlatformStateProviderProps = {\n children: ReactNode\n /**\n * Function that converts a JWT role claim to the app's canonical role\n * union (the same `normalizePlatformRole` produced by\n * `createPlatformRbac()` in this app). Lifted out as a prop because\n * each consuming app uses its own role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport function PlatformStateProvider({ children, normalizeRole }: PlatformStateProviderProps) {\n const { user } = useAuth()\n\n const state = useMemo<PlatformState>(() => {\n const organizationId = user?.organizationId ?? ''\n\n const actor: AuthUser | null = user\n ? {\n ...user,\n role: normalizeRole(user.role),\n organizationId,\n }\n : null\n\n return {\n currentOrganizationId: organizationId,\n actor,\n }\n }, [user, normalizeRole])\n\n return (\n <PlatformStateContext.Provider value={state}>\n {children}\n </PlatformStateContext.Provider>\n )\n}\n\nexport function usePlatformState() {\n const context = useContext(PlatformStateContext)\n if (!context) throw new Error('usePlatformState must be used inside PlatformStateProvider')\n return context\n}\n","import { useCallback, useMemo, type ComponentType, type ReactNode } from 'react'\nimport { RectangleStackIcon, HomeIcon } from '@heroicons/react/24/outline'\nimport { useAuth, usePlatformPreferences } from '@datatechsolutions/windsock/client'\nimport { LANGUAGE_META } from '@datatechsolutions/shared-domain/i18n'\nimport {\n PlatformShell,\n type NavigationItem,\n} from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useLocale, useTranslations } from '@ui/lib/i18n-context'\nimport { usePathname, useRouter } from '@ui/lib/router-context'\nimport { LOCALE_FLAGS } from '@ui/lib/locale-flags'\nimport { usePlatformState } from './platform-state-provider'\n\nfunction resolveFlag(locale: string): string | undefined {\n const code = locale === 'pt-BR' ? 'br' : locale\n return LOCALE_FLAGS?.[code as keyof typeof LOCALE_FLAGS]\n}\n\nexport type PlatformAppShellProps = {\n /** App display name (e.g. \"Astrlabe\"). */\n appName: string\n /** Tailwind gradient classes for the shell branding (e.g. \"from-sky-500 to-indigo-600\"). */\n appGradient: string\n /** Branded logo node rendered inside the flyout trigger. */\n appLogo: ReactNode\n /**\n * Optional app icon for the branded loader (defaults to the platform's\n * RectangleStackIcon if omitted).\n */\n appIcon?: ReactNode\n /**\n * Optional override for the dock dashboard icon (defaults to HomeIcon).\n */\n dashboardIcon?: ComponentType<{ className?: string }>\n\n /** App-specific navigation items already pre-translated. */\n navigationItems: NavigationItem[]\n /** Custom ordering of launchpad page tiles. */\n pageOrder: string[]\n /**\n * Map of navigation/module ID → required permission name. The shell\n * filters `navigationItems` so that any item whose ID has an entry here\n * is hidden unless `hasPermission` returns true for the listed permission.\n */\n modulePermissions: Record<string, string>\n /**\n * Permission predicate, typically `(p) => can(actor, p)` from each app's\n * `createPlatformRbac()` factory.\n */\n hasPermission: (permission: string) => boolean\n\n /**\n * Optional settings/profile drawer content (e.g. an app-specific\n * `<SettingsModal>`). Receives the open state + close handler the shell\n * manages internally so the drawer renders inside the shell chrome.\n */\n settingsModal?: (props: { open: boolean; onClose: () => void }) => ReactNode\n\n children: ReactNode\n}\n\n/**\n * Cross-app platform shell — wires `<PlatformShell>` from ui to windsock's\n * auth + preferences hooks and to ui's i18n/router contexts. Each app\n * passes its own logo, gradient, navigation, and permission predicate; the\n * rest of the chrome (header, dock, flyout, sign-out confirm modal) is\n * shared.\n */\nexport function PlatformAppShell({\n appName,\n appGradient,\n appLogo,\n appIcon,\n dashboardIcon,\n navigationItems,\n pageOrder,\n modulePermissions,\n hasPermission,\n settingsModal,\n children,\n}: PlatformAppShellProps) {\n const tCommon = useTranslations('common')\n const { user, status, logout } = useAuth()\n // Validate the platform-state provider is mounted above this shell;\n // the actor itself isn't read here, but the same provider feeds children.\n usePlatformState()\n const { resolvedTheme, setTheme, dockPosition, dockAutoHide, dockEnabled } = usePlatformPreferences()\n const pathname = usePathname()\n const router = useRouter()\n const { history, openHistory } = useNotifications()\n const currentLocale = useLocale()\n const localeMeta = LANGUAGE_META[currentLocale as keyof typeof LANGUAGE_META]\n\n const items = useMemo(() => navigationItems.filter((item) => {\n const permission = modulePermissions[item.id]\n if (!permission) return true\n return hasPermission(permission)\n }), [navigationItems, modulePermissions, hasPermission])\n\n const handleSignOut = useCallback(() => { void logout('/login') }, [logout])\n const handleToggleTheme = useCallback(\n () => { setTheme(resolvedTheme === 'dark' ? 'light' : 'dark') },\n [resolvedTheme, setTheme],\n )\n const handleNavigate = useCallback((href: string) => router.push(href), [router])\n const handlePrefetch = useCallback((href: string) => router.prefetch(href), [router])\n\n const shellUser = user\n ? {\n name: user.name ?? null,\n email: user.email ?? null,\n image: user.image ?? null,\n role: user.role ?? null,\n permissions: user.permissions as string[] | undefined,\n organizationId: user.organizationId ?? null,\n }\n : null\n\n return (\n <PlatformShell\n items={items}\n launchpadPageOrder={pageOrder}\n user={shellUser}\n authStatus={status}\n onSignOut={handleSignOut}\n dockPosition={dockPosition}\n dockAutoHide={dockAutoHide}\n dockEnabled={dockEnabled}\n resolvedTheme={resolvedTheme}\n onToggleTheme={handleToggleTheme}\n pathname={pathname}\n onNavigate={handleNavigate}\n onPrefetch={handlePrefetch}\n appName={appName}\n appIcon={appIcon ?? <RectangleStackIcon className=\"h-full w-full\" />}\n appLogo={appLogo}\n appGradient={appGradient}\n dashboardIcon={dashboardIcon ?? HomeIcon}\n notificationCount={history.length}\n onNotifications={openHistory}\n labels={{\n home: tCommon('home'),\n profile: tCommon('profile'),\n signOut: tCommon('signOut'),\n signOutConfirmTitle: tCommon('signOutConfirmTitle'),\n cancel: tCommon('cancel'),\n notifications: tCommon('notifications'),\n theme: tCommon('theme'),\n currentTheme: resolvedTheme === 'dark' ? tCommon('darkMode') : tCommon('lightMode'),\n language: tCommon('language'),\n currentLocale: localeMeta?.nativeName ?? currentLocale,\n localeFlag: resolveFlag(currentLocale),\n actions: tCommon('actions'),\n }}\n {...(settingsModal ? { profileDrawer: settingsModal } : {})}\n >\n {children}\n </PlatformShell>\n )\n}\n"]}
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkEFREXNZB_js = require('./chunk-EFREXNZB.js');
4
+ var chunkTZ62G5WM_js = require('./chunk-TZ62G5WM.js');
5
5
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
8
8
  function WorkflowCanvasShell({ graph, messages }) {
9
9
  const locale = chunkYXN2K77G_js.useLocale();
10
10
  return /* @__PURE__ */ jsxRuntime.jsx(
11
- chunkEFREXNZB_js.Workspace,
11
+ chunkTZ62G5WM_js.Workspace,
12
12
  {
13
13
  initialGraph: graph,
14
14
  locale,
@@ -18,5 +18,5 @@ function WorkflowCanvasShell({ graph, messages }) {
18
18
  }
19
19
 
20
20
  exports.WorkflowCanvasShell = WorkflowCanvasShell;
21
- //# sourceMappingURL=chunk-WGELLCOZ.js.map
22
- //# sourceMappingURL=chunk-WGELLCOZ.js.map
21
+ //# sourceMappingURL=chunk-3YVQXDKJ.js.map
22
+ //# sourceMappingURL=chunk-3YVQXDKJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":["useLocale","jsx","Workspace"],"mappings":";;;;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAASA,0BAAA,EAAU;AACzB,EAAA,uBACEC,cAAA;AAAA,IAACC,0BAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-WGELLCOZ.js","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":["useLocale","jsx","Workspace"],"mappings":";;;;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAASA,0BAAA,EAAU;AACzB,EAAA,uBACEC,cAAA;AAAA,IAACC,0BAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-3YVQXDKJ.js","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkSW6TVAIJ_js = require('./chunk-SW6TVAIJ.js');
4
+ var chunkSV4SMITM_js = require('./chunk-SV4SMITM.js');
5
5
  var chunkYXPHJ2BQ_js = require('./chunk-YXPHJ2BQ.js');
6
- var chunkL6FVIWAJ_js = require('./chunk-L6FVIWAJ.js');
6
+ var chunkZHHRWC27_js = require('./chunk-ZHHRWC27.js');
7
7
  var chunk5UU3RQRB_js = require('./chunk-5UU3RQRB.js');
8
- var chunkEFREXNZB_js = require('./chunk-EFREXNZB.js');
9
- var chunkGV6WJCEB_js = require('./chunk-GV6WJCEB.js');
8
+ var chunkTZ62G5WM_js = require('./chunk-TZ62G5WM.js');
9
+ var chunkKNXAOJAK_js = require('./chunk-KNXAOJAK.js');
10
10
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
11
11
  var react = require('react');
12
12
  var reactRouter = require('react-router');
@@ -180,9 +180,9 @@ function applyWorkflowExecutionEventToStore(actions, event) {
180
180
  }
181
181
  }
182
182
  function useWorkflowRunPresentation(events, status) {
183
- const clearNodeResults = chunkEFREXNZB_js.useWorkflowStore((state) => state.clearNodeResults);
184
- const setIsRunning = chunkEFREXNZB_js.useWorkflowStore((state) => state.setIsRunning);
185
- const setNodeResult = chunkEFREXNZB_js.useWorkflowStore((state) => state.setNodeResult);
183
+ const clearNodeResults = chunkTZ62G5WM_js.useWorkflowStore((state) => state.clearNodeResults);
184
+ const setIsRunning = chunkTZ62G5WM_js.useWorkflowStore((state) => state.setIsRunning);
185
+ const setNodeResult = chunkTZ62G5WM_js.useWorkflowStore((state) => state.setNodeResult);
186
186
  react.useEffect(() => {
187
187
  if (status === "idle") {
188
188
  resetWorkflowRunPresentation({ clearNodeResults, setIsRunning, setNodeResult });
@@ -205,9 +205,9 @@ function useWorkflowExecution(workflowId) {
205
205
  const [activeRunId, setActiveRunId] = react.useState(null);
206
206
  const [isLaunching, setIsLaunching] = react.useState(false);
207
207
  const stream = useRunEvents(workflowId || null, activeRunId);
208
- const clearNodeResults = chunkEFREXNZB_js.useWorkflowStore((state) => state.clearNodeResults);
209
- const setIsRunning = chunkEFREXNZB_js.useWorkflowStore((state) => state.setIsRunning);
210
- const setNodeResult = chunkEFREXNZB_js.useWorkflowStore((state) => state.setNodeResult);
208
+ const clearNodeResults = chunkTZ62G5WM_js.useWorkflowStore((state) => state.clearNodeResults);
209
+ const setIsRunning = chunkTZ62G5WM_js.useWorkflowStore((state) => state.setIsRunning);
210
+ const setNodeResult = chunkTZ62G5WM_js.useWorkflowStore((state) => state.setNodeResult);
211
211
  useWorkflowRunPresentation(stream.events, activeRunId ? stream.status : "idle");
212
212
  react.useEffect(() => {
213
213
  if (stream.status === "completed" || stream.status === "failed" || stream.status === "error") {
@@ -332,7 +332,7 @@ function AgentsWorkspace({ workflowId, messages }) {
332
332
  const tWorkflow = chunkYXN2K77G_js.useTranslations("agents.workflow");
333
333
  const tCommon = chunkYXN2K77G_js.useTranslations("common");
334
334
  const datasourceLabels = useDatasourceLabels();
335
- const { error: notifyError, success: notifySuccess } = chunkGV6WJCEB_js.useNotifications();
335
+ const { error: notifyError, success: notifySuccess } = chunkKNXAOJAK_js.useNotifications();
336
336
  const showSuccess = react.useCallback((title, message) => {
337
337
  notifySuccess(title, message);
338
338
  }, [notifySuccess]);
@@ -356,20 +356,20 @@ function AgentsWorkspace({ workflowId, messages }) {
356
356
  const [datasources, setDatasources] = react.useState([]);
357
357
  const [modelConnections, setModelConnections] = react.useState([]);
358
358
  const [showDatasourceModal, setShowDatasourceModal] = react.useState(false);
359
- const openPipelineSettingsModal = chunkEFREXNZB_js.useModalStore((s) => s.openPipelineSettingsModal);
359
+ const openPipelineSettingsModal = chunkTZ62G5WM_js.useModalStore((s) => s.openPipelineSettingsModal);
360
360
  const [showRunInputDialog, setShowRunInputDialog] = react.useState(false);
361
361
  const [showPreviewPanel, setShowPreviewPanel] = react.useState(false);
362
362
  const [isCreatingAgent, setIsCreatingAgent] = react.useState(false);
363
- const openSubworkflowModal = chunkL6FVIWAJ_js.useSubworkflowStore((s) => s.openModal);
364
- const closeSubworkflowModal = chunkL6FVIWAJ_js.useSubworkflowStore((s) => s.closeModal);
363
+ const openSubworkflowModal = chunkZHHRWC27_js.useSubworkflowStore((s) => s.openModal);
364
+ const closeSubworkflowModal = chunkZHHRWC27_js.useSubworkflowStore((s) => s.closeModal);
365
365
  const [deleteTarget, setDeleteTarget] = react.useState(null);
366
366
  const [saveStatus, setSaveStatus] = react.useState("idle");
367
367
  const latestGraphRef = react.useRef(null);
368
368
  const saveTimerRef = react.useRef(null);
369
369
  const skipInitialAutoSaveRef = react.useRef(true);
370
- const showRunPanel = chunkEFREXNZB_js.useWorkflowStore((state) => state.showRunPanel);
371
- const toggleRunPanel = chunkEFREXNZB_js.useWorkflowStore((state) => state.toggleRunPanel);
372
- const workflowNodes = chunkEFREXNZB_js.useWorkflowStore((state) => state.nodes);
370
+ const showRunPanel = chunkTZ62G5WM_js.useWorkflowStore((state) => state.showRunPanel);
371
+ const toggleRunPanel = chunkTZ62G5WM_js.useWorkflowStore((state) => state.toggleRunPanel);
372
+ const workflowNodes = chunkTZ62G5WM_js.useWorkflowStore((state) => state.nodes);
373
373
  const { execute: executeWorkflowRun, stop: stopWorkflowRun, isRunning } = useWorkflowExecution(workflowId);
374
374
  const loadWorkspaceData = react.useCallback(async () => {
375
375
  setIsLoading(true);
@@ -652,7 +652,7 @@ function AgentsWorkspace({ workflowId, messages }) {
652
652
  }
653
653
  if (!workflow) {
654
654
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-[calc(100vh-120px)] items-center justify-center", children: loadError ? /* @__PURE__ */ jsxRuntime.jsx(
655
- chunkGV6WJCEB_js.PageErrorState,
655
+ chunkKNXAOJAK_js.PageErrorState,
656
656
  {
657
657
  statusCode: 500,
658
658
  title: tCommon("serverError"),
@@ -663,7 +663,7 @@ function AgentsWorkspace({ workflowId, messages }) {
663
663
  retryLabel: tCommon("retry")
664
664
  }
665
665
  ) : /* @__PURE__ */ jsxRuntime.jsx(
666
- chunkGV6WJCEB_js.PageEmptyState,
666
+ chunkKNXAOJAK_js.PageEmptyState,
667
667
  {
668
668
  title: tWorkflow("emptyTitle"),
669
669
  message: tWorkflow("emptyDescription"),
@@ -671,7 +671,7 @@ function AgentsWorkspace({ workflowId, messages }) {
671
671
  }
672
672
  ) });
673
673
  }
674
- return /* @__PURE__ */ jsxRuntime.jsx(chunkEFREXNZB_js.WorkflowBuilderProvider, { publishableKey: getPublishableKey(), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[calc(100vh-120px)] flex-col", "data-testid": "agents-workspace", children: [
674
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkTZ62G5WM_js.WorkflowBuilderProvider, { publishableKey: getPublishableKey(), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[calc(100vh-120px)] flex-col", "data-testid": "agents-workspace", children: [
675
675
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface flex h-full flex-col overflow-hidden rounded-2xl", children: [
676
676
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-shrink-0 items-center justify-between px-5 py-3", children: [
677
677
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
@@ -693,13 +693,13 @@ function AgentsWorkspace({ workflowId, messages }) {
693
693
  children: workflow.name || tWorkflow("title")
694
694
  }
695
695
  ),
696
- /* @__PURE__ */ jsxRuntime.jsx(chunkGV6WJCEB_js.CopyableId, { id: workflowId, className: "text-[10px]" }),
696
+ /* @__PURE__ */ jsxRuntime.jsx(chunkKNXAOJAK_js.CopyableId, { id: workflowId, className: "text-[10px]" }),
697
697
  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") }),
698
- /* @__PURE__ */ jsxRuntime.jsx(chunkL6FVIWAJ_js.SaveStatusBadge, { status: saveStatus })
698
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZHHRWC27_js.SaveStatusBadge, { status: saveStatus })
699
699
  ] }),
700
700
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
701
701
  /* @__PURE__ */ jsxRuntime.jsx(
702
- chunkGV6WJCEB_js.Button,
702
+ chunkKNXAOJAK_js.Button,
703
703
  {
704
704
  size: "xs",
705
705
  plain: true,
@@ -708,11 +708,11 @@ function AgentsWorkspace({ workflowId, messages }) {
708
708
  children: /* @__PURE__ */ jsxRuntime.jsx(outline.ChartBarIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" })
709
709
  }
710
710
  ),
711
- isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(chunkGV6WJCEB_js.Button, { size: "xs", outline: true, onClick: stopWorkflowRun, children: [
711
+ isRunning ? /* @__PURE__ */ jsxRuntime.jsxs(chunkKNXAOJAK_js.Button, { size: "xs", outline: true, onClick: stopWorkflowRun, children: [
712
712
  /* @__PURE__ */ jsxRuntime.jsx(outline.StopIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
713
713
  tWorkflow("runPanel.stop")
714
714
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs(
715
- chunkGV6WJCEB_js.Button,
715
+ chunkKNXAOJAK_js.Button,
716
716
  {
717
717
  size: "xs",
718
718
  outline: true,
@@ -725,7 +725,7 @@ function AgentsWorkspace({ workflowId, messages }) {
725
725
  ]
726
726
  }
727
727
  ),
728
- /* @__PURE__ */ jsxRuntime.jsxs(chunkGV6WJCEB_js.Button, { gradient: true, size: "xs", onClick: () => {
728
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkKNXAOJAK_js.Button, { gradient: true, size: "xs", onClick: () => {
729
729
  void handlePublish();
730
730
  }, disabled: isPublishing, children: [
731
731
  /* @__PURE__ */ jsxRuntime.jsx(outline.DocumentCheckIcon, { className: "h-3.5 w-3.5", "data-slot": "icon" }),
@@ -735,7 +735,7 @@ function AgentsWorkspace({ workflowId, messages }) {
735
735
  ] }),
736
736
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-divider border-t" }),
737
737
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pt-3", children: /* @__PURE__ */ jsxRuntime.jsx(
738
- chunkL6FVIWAJ_js.WorkflowListBar,
738
+ chunkZHHRWC27_js.WorkflowListBar,
739
739
  {
740
740
  workflows,
741
741
  activeWorkflowId: workflowId,
@@ -751,7 +751,7 @@ function AgentsWorkspace({ workflowId, messages }) {
751
751
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "liquid-divider border-t" }),
752
752
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 overflow-hidden", children: [
753
753
  /* @__PURE__ */ jsxRuntime.jsx(
754
- chunkL6FVIWAJ_js.NodePalette,
754
+ chunkZHHRWC27_js.NodePalette,
755
755
  {
756
756
  agents,
757
757
  tools,
@@ -773,7 +773,7 @@ function AgentsWorkspace({ workflowId, messages }) {
773
773
  }
774
774
  ),
775
775
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
776
- chunkL6FVIWAJ_js.AutoSaveWorkspace,
776
+ chunkZHHRWC27_js.AutoSaveWorkspace,
777
777
  {
778
778
  workflowId,
779
779
  className: "h-full w-full",
@@ -801,7 +801,7 @@ function AgentsWorkspace({ workflowId, messages }) {
801
801
  latestGraphRef.current = graph;
802
802
  },
803
803
  renderAgentModal: (props) => /* @__PURE__ */ jsxRuntime.jsx(
804
- chunkL6FVIWAJ_js.AgentModal,
804
+ chunkZHHRWC27_js.AgentModal,
805
805
  {
806
806
  ...props,
807
807
  onSaved: () => {
@@ -842,7 +842,7 @@ function AgentsWorkspace({ workflowId, messages }) {
842
842
  ] })
843
843
  ] }),
844
844
  /* @__PURE__ */ jsxRuntime.jsx(
845
- chunkL6FVIWAJ_js.PipelineSettingsModal,
845
+ chunkZHHRWC27_js.PipelineSettingsModal,
846
846
  {
847
847
  onSave: async (changes) => {
848
848
  const metadata = {
@@ -859,7 +859,7 @@ function AgentsWorkspace({ workflowId, messages }) {
859
859
  }
860
860
  ),
861
861
  /* @__PURE__ */ jsxRuntime.jsx(
862
- chunkL6FVIWAJ_js.SubworkflowModal,
862
+ chunkZHHRWC27_js.SubworkflowModal,
863
863
  {
864
864
  onMaximize: (subworkflowId) => {
865
865
  closeSubworkflowModal();
@@ -883,7 +883,7 @@ function AgentsWorkspace({ workflowId, messages }) {
883
883
  }
884
884
  ),
885
885
  /* @__PURE__ */ jsxRuntime.jsx(
886
- chunkL6FVIWAJ_js.RunPanel,
886
+ chunkZHHRWC27_js.RunPanel,
887
887
  {
888
888
  open: showRunPanel,
889
889
  onClose: toggleRunPanel,
@@ -892,7 +892,7 @@ function AgentsWorkspace({ workflowId, messages }) {
892
892
  }
893
893
  ),
894
894
  /* @__PURE__ */ jsxRuntime.jsx(
895
- chunkL6FVIWAJ_js.RunInputDialog,
895
+ chunkZHHRWC27_js.RunInputDialog,
896
896
  {
897
897
  open: showRunInputDialog,
898
898
  onClose: () => setShowRunInputDialog(false),
@@ -905,7 +905,7 @@ function AgentsWorkspace({ workflowId, messages }) {
905
905
  }
906
906
  ),
907
907
  /* @__PURE__ */ jsxRuntime.jsx(
908
- chunkL6FVIWAJ_js.PreviewPanel,
908
+ chunkZHHRWC27_js.PreviewPanel,
909
909
  {
910
910
  open: showPreviewPanel,
911
911
  onClose: () => setShowPreviewPanel(false),
@@ -914,7 +914,7 @@ function AgentsWorkspace({ workflowId, messages }) {
914
914
  }
915
915
  ),
916
916
  /* @__PURE__ */ jsxRuntime.jsx(
917
- chunkSW6TVAIJ_js.DatasourceFormModal,
917
+ chunkSV4SMITM_js.DatasourceFormModal,
918
918
  {
919
919
  open: showDatasourceModal,
920
920
  onClose: () => setShowDatasourceModal(false),
@@ -925,7 +925,7 @@ function AgentsWorkspace({ workflowId, messages }) {
925
925
  }
926
926
  ),
927
927
  /* @__PURE__ */ jsxRuntime.jsx(
928
- chunkGV6WJCEB_js.DynamicIslandConfirm,
928
+ chunkKNXAOJAK_js.DynamicIslandConfirm,
929
929
  {
930
930
  open: deleteTarget !== null,
931
931
  onClose: () => setDeleteTarget(null),
@@ -939,5 +939,5 @@ function AgentsWorkspace({ workflowId, messages }) {
939
939
  }
940
940
 
941
941
  exports.AgentsWorkspace = AgentsWorkspace;
942
- //# sourceMappingURL=chunk-SGJ24J2Q.js.map
943
- //# sourceMappingURL=chunk-SGJ24J2Q.js.map
942
+ //# sourceMappingURL=chunk-6F3IMKDZ.js.map
943
+ //# sourceMappingURL=chunk-6F3IMKDZ.js.map