@burdenoff/fluidgrids-fe-sdk 2026.1008.2 → 2026.1008.3

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 (49) hide show
  1. package/dist/ExecutionDetailPage-JB5UYJMF.js +12 -0
  2. package/dist/{ExecutionDetailPage-HPAU7U3E.js.map → ExecutionDetailPage-JB5UYJMF.js.map} +1 -1
  3. package/dist/ExecutionsListPage-RDGTW6UF.js +11 -0
  4. package/dist/{ExecutionsListPage-TLXVEIRK.js.map → ExecutionsListPage-RDGTW6UF.js.map} +1 -1
  5. package/dist/{WorkflowBuilder-YJLWNBT3.js → WorkflowBuilder-YVIRBXAH.js} +6 -6
  6. package/dist/{WorkflowBuilder-YJLWNBT3.js.map → WorkflowBuilder-YVIRBXAH.js.map} +1 -1
  7. package/dist/{WorkflowsList-YSZWXFMZ.js → WorkflowsList-CQRXZV6I.js} +5 -5
  8. package/dist/{WorkflowsList-YSZWXFMZ.js.map → WorkflowsList-CQRXZV6I.js.map} +1 -1
  9. package/dist/{chunk-W7APOU2R.js → chunk-5DQU54IB.js} +63 -8
  10. package/dist/chunk-5DQU54IB.js.map +1 -0
  11. package/dist/{chunk-W73HBP7B.js → chunk-5UB3HSNE.js} +5 -5
  12. package/dist/{chunk-W73HBP7B.js.map → chunk-5UB3HSNE.js.map} +1 -1
  13. package/dist/{chunk-LVKUOMLJ.js → chunk-CZ7APZ5B.js} +5 -5
  14. package/dist/{chunk-LVKUOMLJ.js.map → chunk-CZ7APZ5B.js.map} +1 -1
  15. package/dist/{chunk-F2BBRTLB.js → chunk-DFGJKGWH.js} +6 -4
  16. package/dist/chunk-DFGJKGWH.js.map +1 -0
  17. package/dist/{chunk-WKALLY4E.js → chunk-EL672H2D.js} +4 -4
  18. package/dist/{chunk-WKALLY4E.js.map → chunk-EL672H2D.js.map} +1 -1
  19. package/dist/{chunk-WYQ4OBES.js → chunk-F5UXTEW5.js} +3 -3
  20. package/dist/{chunk-WYQ4OBES.js.map → chunk-F5UXTEW5.js.map} +1 -1
  21. package/dist/{chunk-NG32SZ75.js → chunk-FA7S7YMY.js} +3 -3
  22. package/dist/{chunk-NG32SZ75.js.map → chunk-FA7S7YMY.js.map} +1 -1
  23. package/dist/{chunk-IOV4YPQU.js → chunk-M2YFTRLL.js} +4 -4
  24. package/dist/{chunk-IOV4YPQU.js.map → chunk-M2YFTRLL.js.map} +1 -1
  25. package/dist/{chunk-I2766GDR.js → chunk-VGJKZYW2.js} +10 -4
  26. package/dist/chunk-VGJKZYW2.js.map +1 -0
  27. package/dist/{chunk-2C6CUHM3.js → chunk-XBIHI224.js} +3 -3
  28. package/dist/{chunk-2C6CUHM3.js.map → chunk-XBIHI224.js.map} +1 -1
  29. package/dist/{chunk-KIJDG6MG.js → chunk-Z5HU6MUG.js} +4 -4
  30. package/dist/{chunk-KIJDG6MG.js.map → chunk-Z5HU6MUG.js.map} +1 -1
  31. package/dist/config-SCVEDF5V.js +3 -0
  32. package/dist/{config-YHUOLDAL.js.map → config-SCVEDF5V.js.map} +1 -1
  33. package/dist/executions.js +5 -5
  34. package/dist/history.js +3 -3
  35. package/dist/index.d.ts +16 -5
  36. package/dist/index.js +23 -18
  37. package/dist/index.js.map +1 -1
  38. package/dist/templates.js +4 -4
  39. package/dist/{workflow-builder-CpdCzzst.d.ts → workflow-builder-DvbjeuIN.d.ts} +5 -1
  40. package/dist/workflow-builder.d.ts +1 -1
  41. package/dist/workflow-builder.js +5 -5
  42. package/dist/workflows-list.js +3 -3
  43. package/package.json +1 -1
  44. package/dist/ExecutionDetailPage-HPAU7U3E.js +0 -12
  45. package/dist/ExecutionsListPage-TLXVEIRK.js +0 -11
  46. package/dist/chunk-F2BBRTLB.js.map +0 -1
  47. package/dist/chunk-I2766GDR.js.map +0 -1
  48. package/dist/chunk-W7APOU2R.js.map +0 -1
  49. package/dist/config-YHUOLDAL.js +0 -3
@@ -1,5 +1,5 @@
1
- import { useWorkflowDefinitions } from './chunk-2C6CUHM3.js';
2
- import { getFluidGridsConfig } from './chunk-F2BBRTLB.js';
1
+ import { useWorkflowDefinitions } from './chunk-XBIHI224.js';
2
+ import { getFluidGridsConfig } from './chunk-DFGJKGWH.js';
3
3
  import { useTr } from './chunk-7YWBH2A5.js';
4
4
  import { useState, useMemo, useCallback } from 'react';
5
5
  import { useNavigate } from 'react-router';
@@ -470,5 +470,5 @@ function HistoryPage() {
470
470
  }
471
471
 
472
472
  export { HistoryPage };
473
- //# sourceMappingURL=chunk-IOV4YPQU.js.map
474
- //# sourceMappingURL=chunk-IOV4YPQU.js.map
473
+ //# sourceMappingURL=chunk-M2YFTRLL.js.map
474
+ //# sourceMappingURL=chunk-M2YFTRLL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/history/pages/HistoryPage.tsx"],"names":[],"mappings":"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","file":"chunk-IOV4YPQU.js","sourcesContent":["/**\n * HistoryPage — cross-workflow version history.\n *\n * Fetches every version row in one paginated `workflowDefinitions` query\n * (latestOnly defaults to false, so the list API already returns one row per\n * version) and resolves \"Changed By\" ids to human names via the shared\n * actor-profile lookup.\n */\nimport { useState, useMemo, useCallback } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport { Icon } from \"@iconify/react\";\nimport { Button } from \"@burdenoff/fe-libs/button\";\nimport {\n Skeleton,\n Input,\n Badge,\n Select,\n SelectTrigger,\n SelectValue,\n SelectContent,\n SelectItem,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n TooltipProvider,\n} from \"@burdenoff/fe-libs/ui\";\nimport {\n useActorProfiles,\n buildActorFallback,\n type ActorInput,\n} from \"@burdenoff/fe-libs/shared\";\nimport { useWorkflowDefinitions } from \"../../../hooks/useWorkflows\";\nimport { useTr } from \"../../../hooks/useTr\";\nimport { getFluidGridsConfig } from \"../../../config\";\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst PAGE_SIZE = 20;\n\n/** Upper bound on version rows fetched for the screen (newest first). */\nconst FETCH_LIMIT = 500;\n\nfunction useStatusStyles() {\n const tr = useTr();\n return useMemo<\n Record<\n string,\n {\n label: string;\n variant: \"default\" | \"secondary\" | \"outline\" | \"destructive\";\n }\n >\n >(\n () => ({\n ACTIVE: {\n label: tr(\"fluidgrids.history.historyPage.statusActive\", \"Active\"),\n variant: \"default\",\n },\n DRAFT: {\n label: tr(\"fluidgrids.history.historyPage.statusDraft\", \"Draft\"),\n variant: \"secondary\",\n },\n ARCHIVED: {\n label: tr(\"fluidgrids.history.historyPage.statusArchived\", \"Archived\"),\n variant: \"outline\",\n },\n DEPRECATED: {\n label: tr(\n \"fluidgrids.history.historyPage.statusDeprecated\",\n \"Deprecated\",\n ),\n variant: \"destructive\",\n },\n }),\n [tr],\n );\n}\n\n// ============================================================================\n// Sub-Components\n// ============================================================================\n\nfunction HistoryTableSkeleton() {\n return (\n <div className=\"space-y-3\">\n {Array.from({ length: 6 }).map((_, i) => (\n <Skeleton\n key={i}\n className=\"h-14 w-full rounded-lg bg-card-foreground/10\"\n />\n ))}\n </div>\n );\n}\n\nfunction EmptyState() {\n const tr = useTr();\n return (\n <div className=\"flex flex-col items-center justify-center py-20 text-center\">\n <div className=\"rounded-full bg-background-secondary p-4 mb-4\">\n <Icon icon=\"mdi:history\" width={40} className=\"text-text-secondary\" />\n </div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-2\">\n {tr(\"fluidgrids.history.historyPage.emptyTitle\", \"No version history\")}\n </h3>\n <p className=\"text-sm text-text-secondary max-w-md\">\n {tr(\n \"fluidgrids.history.historyPage.emptyHint\",\n \"Version history will appear here once you create and update workflows.\",\n )}\n </p>\n </div>\n );\n}\n\nfunction ErrorState({\n message,\n onRetry,\n}: {\n message: string;\n onRetry: () => void;\n}) {\n const tr = useTr();\n return (\n <div className=\"p-4 bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded-lg\">\n <div className=\"flex items-center gap-2 text-[var(--color-status-error-text)]\">\n <Icon icon=\"mdi:alert-circle\" width={20} />\n <span className=\"font-medium\">\n {tr(\n \"fluidgrids.history.historyPage.errorHeading\",\n \"Error loading history\",\n )}\n </span>\n </div>\n <p className=\"mt-1 text-sm text-[var(--color-status-error-text)]\">\n {message}\n </p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onRetry}\n className=\"mt-3 border-[var(--color-status-error-border)] text-[var(--color-status-error-text)] hover:bg-[var(--color-status-error-bg-subtle)]\"\n >\n {tr(\"fluidgrids.history.historyPage.errorRetry\", \"Retry\")}\n </Button>\n </div>\n );\n}\n\nfunction StatCard({\n label,\n value,\n valueClassName,\n}: {\n label: string;\n value: number;\n valueClassName?: string;\n}) {\n return (\n <div className=\"p-3 rounded-lg bg-background-secondary border border-border-secondary\">\n <p className=\"text-xs text-text-secondary\">{label}</p>\n <p\n className={`text-xl font-bold ${valueClassName ?? \"text-text-primary\"}`}\n >\n {value}\n </p>\n </div>\n );\n}\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport function HistoryPage() {\n const tr = useTr();\n const navigate = useNavigate();\n const STATUS_STYLES = useStatusStyles();\n const [search, setSearch] = useState(\"\");\n const [workflowFilter, setWorkflowFilter] = useState<string>(\"all\");\n const [page, setPage] = useState(0);\n\n // One query returns every version row (latestOnly is false by default),\n // newest first — no per-workflow fan-out needed.\n const {\n workflows: versionRows,\n total,\n hasMore,\n loading,\n error,\n refetch,\n } = useWorkflowDefinitions({ limit: FETCH_LIMIT });\n\n const allRows = useMemo(\n () =>\n [...versionRows].sort(\n (a, b) =>\n new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime(),\n ),\n [versionRows],\n );\n\n // Distinct workflows (latest row per key) for the stat + filter dropdown.\n const distinctWorkflows = useMemo(() => {\n const byKey = new Map<string, { workflowKey: string; name: string }>();\n for (const row of allRows) {\n if (!byKey.has(row.workflowKey)) {\n byKey.set(row.workflowKey, {\n workflowKey: row.workflowKey,\n name: row.name,\n });\n }\n }\n return [...byKey.values()];\n }, [allRows]);\n\n // Resolve createdById → display names (workspace-scoped, cached, batched).\n const config = getFluidGridsConfig();\n const actorInputs = useMemo<ActorInput[]>(() => {\n const ids = new Set<string>();\n for (const row of allRows) {\n if (row.createdById) ids.add(row.createdById);\n }\n return [...ids].map((actorId) => ({ actorId, actorType: \"user\" }));\n }, [allRows]);\n const actorProfiles = useActorProfiles(actorInputs, {\n workspaceId: config.workspaceId || undefined,\n orgId: config.organizationId,\n authToken: config.authToken,\n });\n\n const changedByLabel = useCallback(\n (createdById?: string | null): string => {\n if (!createdById) return \"—\";\n return (\n actorProfiles[createdById]?.displayName ??\n buildActorFallback({ actorId: createdById, actorType: \"user\" })\n .displayName\n );\n },\n [actorProfiles],\n );\n\n // Filter rows\n const filteredRows = useMemo(() => {\n let rows = allRows;\n\n if (workflowFilter !== \"all\") {\n rows = rows.filter((r) => r.workflowKey === workflowFilter);\n }\n\n if (search.trim()) {\n const q = search.toLowerCase();\n rows = rows.filter(\n (r) =>\n r.name.toLowerCase().includes(q) ||\n r.version.toLowerCase().includes(q) ||\n r.workflowKey.toLowerCase().includes(q) ||\n changedByLabel(r.createdById).toLowerCase().includes(q),\n );\n }\n\n return rows;\n }, [allRows, workflowFilter, search, changedByLabel]);\n\n // Pagination\n const totalPages = Math.max(1, Math.ceil(filteredRows.length / PAGE_SIZE));\n const paginatedRows = filteredRows.slice(\n page * PAGE_SIZE,\n (page + 1) * PAGE_SIZE,\n );\n\n const handleNavigateToVersion = (workflowKey: string, version: string) => {\n navigate(`../workflow/${workflowKey}/${version}`);\n };\n\n const formatDate = (dateStr: string) => {\n try {\n return new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(new Date(dateStr));\n } catch {\n return dateStr;\n }\n };\n\n const countByStatus = (status: string) =>\n allRows.filter((r) => r.status === status).length;\n\n return (\n <div className=\"p-4 sm:p-6 bg-background-primary min-h-screen\">\n {/* Header */}\n <div\n className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6\"\n data-tour=\"fluidgrids-history-header\"\n >\n <div>\n <h1 className=\"text-2xl sm:text-3xl font-bold text-text-primary\">\n {tr(\"fluidgrids.history.historyPage.title\", \"Version History\")}\n </h1>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n \"fluidgrids.history.historyPage.subtitle\",\n \"Track changes and versions across all workflows\",\n )}\n </p>\n </div>\n <div className=\"flex items-center gap-3\">\n <Button variant=\"outline\" onClick={() => refetch()}>\n <Icon icon=\"mdi:refresh\" className=\"mr-2\" width={16} />\n {tr(\"fluidgrids.history.historyPage.refreshButton\", \"Refresh\")}\n </Button>\n <Button variant=\"outline\" onClick={() => navigate(\"../list\")}>\n <Icon icon=\"mdi:arrow-left\" className=\"mr-2\" width={16} />\n {tr(\n \"fluidgrids.history.historyPage.backToWorkflowsButton\",\n \"Back to Workflows\",\n )}\n </Button>\n </div>\n </div>\n\n {/* Filters */}\n <div className=\"flex flex-col sm:flex-row gap-3 mb-6\">\n <div\n className=\"relative flex-1 max-w-sm\"\n data-tour=\"fluidgrids-history-search\"\n >\n <Icon\n icon=\"mdi:magnify\"\n width={18}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary\"\n />\n <Input\n placeholder={tr(\n \"fluidgrids.history.historyPage.searchPlaceholder\",\n \"Search by name, version, key, or author...\",\n )}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setPage(0);\n }}\n className=\"pl-10 bg-background-secondary border-border-secondary\"\n />\n </div>\n <Select\n value={workflowFilter}\n onValueChange={(val) => {\n setWorkflowFilter(val);\n setPage(0);\n }}\n >\n <SelectTrigger\n className=\"w-[220px] bg-background-secondary border-border-secondary\"\n data-tour=\"fluidgrids-history-workflow-filter\"\n >\n <SelectValue\n placeholder={tr(\n \"fluidgrids.history.historyPage.workflowFilterPlaceholder\",\n \"All Workflows\",\n )}\n />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">\n {tr(\n \"fluidgrids.history.historyPage.workflowFilterAllOption\",\n \"All Workflows\",\n )}\n </SelectItem>\n {distinctWorkflows.map((w) => (\n <SelectItem key={w.workflowKey} value={w.workflowKey}>\n {w.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Stats */}\n <div className=\"grid grid-cols-2 sm:grid-cols-5 gap-3 mb-6\">\n <StatCard\n label={tr(\n \"fluidgrids.history.historyPage.statTotalVersions\",\n \"Total Versions\",\n )}\n value={total || allRows.length}\n />\n <StatCard\n label={tr(\n \"fluidgrids.history.historyPage.statWorkflows\",\n \"Workflows\",\n )}\n value={distinctWorkflows.length}\n />\n <StatCard\n label={tr(\"fluidgrids.history.historyPage.statActive\", \"Active\")}\n value={countByStatus(\"ACTIVE\")}\n valueClassName=\"text-[var(--color-status-success-text)]\"\n />\n <StatCard\n label={tr(\"fluidgrids.history.historyPage.statDraft\", \"Draft\")}\n value={countByStatus(\"DRAFT\")}\n valueClassName=\"text-[var(--color-status-warning-text)]\"\n />\n <StatCard\n label={tr(\"fluidgrids.history.historyPage.statArchived\", \"Archived\")}\n value={countByStatus(\"ARCHIVED\")}\n />\n </div>\n\n {hasMore && (\n <p className=\"text-xs text-text-secondary mb-4\">\n {tr(\n \"fluidgrids.history.historyPage.partialResultsHint\",\n \"Showing the {{shown}} most recent versions of {{total}}.\",\n { shown: allRows.length, total: total ?? allRows.length },\n )}\n </p>\n )}\n\n {/* Error State */}\n {error && (\n <div className=\"mb-6\">\n <ErrorState message={error.message} onRetry={refetch} />\n </div>\n )}\n\n {/* Table */}\n {loading ? (\n <HistoryTableSkeleton />\n ) : filteredRows.length === 0 ? (\n <EmptyState />\n ) : (\n <div className=\"overflow-x-auto rounded-lg border border-border-secondary\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-secondary bg-background-secondary\">\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnWorkflowName\",\n \"Workflow Name\",\n )}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnVersion\",\n \"Version\",\n )}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\"fluidgrids.history.historyPage.columnStatus\", \"Status\")}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnChangedBy\",\n \"Changed By\",\n )}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnChangedAt\",\n \"Changed At\",\n )}\n </th>\n <th className=\"text-right px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnActions\",\n \"Actions\",\n )}\n </th>\n </tr>\n </thead>\n <tbody>\n {paginatedRows.map((row) => {\n const statusStyle =\n STATUS_STYLES[row.status] ?? STATUS_STYLES.DRAFT;\n return (\n <tr\n key={row.id}\n className=\"border-b border-border-secondary last:border-0 hover:bg-background-secondary/50 cursor-pointer transition-colors\"\n onClick={() =>\n handleNavigateToVersion(row.workflowKey, row.version)\n }\n >\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n <Icon\n icon=\"mdi:workflow\"\n width={18}\n className=\"text-text-secondary\"\n />\n <div>\n <p className=\"font-medium text-text-primary\">\n {row.name}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {row.workflowKey}\n </p>\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <code className=\"text-xs bg-background-secondary px-2 py-0.5 rounded text-text-primary\">\n {row.version}\n </code>\n </td>\n <td className=\"px-4 py-3\">\n <Badge variant={statusStyle.variant}>\n {statusStyle.label}\n </Badge>\n </td>\n <td className=\"px-4 py-3 text-text-secondary\">\n <div\n className=\"flex items-center gap-1.5\"\n title={row.createdById ?? undefined}\n >\n <Icon icon=\"mdi:account\" width={16} />\n <span className=\"truncate max-w-[160px]\">\n {changedByLabel(row.createdById)}\n </span>\n </div>\n </td>\n <td className=\"px-4 py-3 text-text-secondary\">\n {formatDate(row.updatedAt)}\n </td>\n <td className=\"px-4 py-3 text-right\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleNavigateToVersion(\n row.workflowKey,\n row.version,\n );\n }}\n className=\"p-1.5 rounded hover:bg-background-secondary text-text-secondary hover:text-text-primary transition-colors\"\n >\n <Icon icon=\"mdi:open-in-new\" width={16} />\n </button>\n </TooltipTrigger>\n <TooltipContent>\n {tr(\n \"fluidgrids.history.historyPage.openInBuilderTooltip\",\n \"Open in builder\",\n )}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n\n {/* Pagination */}\n {filteredRows.length > PAGE_SIZE && (\n <div className=\"flex items-center justify-between mt-4 px-1\">\n <p className=\"text-sm text-text-secondary\">\n Showing {page * PAGE_SIZE + 1}–\n {Math.min((page + 1) * PAGE_SIZE, filteredRows.length)} of{\" \"}\n {filteredRows.length}\n </p>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={page === 0}\n onClick={() => setPage((p) => p - 1)}\n >\n <Icon icon=\"mdi:chevron-left\" width={16} />\n {tr(\n \"fluidgrids.history.historyPage.previousPageButton\",\n \"Previous\",\n )}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={page >= totalPages - 1}\n onClick={() => setPage((p) => p + 1)}\n >\n {tr(\"fluidgrids.history.historyPage.nextPageButton\", \"Next\")}\n <Icon icon=\"mdi:chevron-right\" width={16} />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/modules/history/pages/HistoryPage.tsx"],"names":[],"mappings":"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","file":"chunk-M2YFTRLL.js","sourcesContent":["/**\n * HistoryPage — cross-workflow version history.\n *\n * Fetches every version row in one paginated `workflowDefinitions` query\n * (latestOnly defaults to false, so the list API already returns one row per\n * version) and resolves \"Changed By\" ids to human names via the shared\n * actor-profile lookup.\n */\nimport { useState, useMemo, useCallback } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport { Icon } from \"@iconify/react\";\nimport { Button } from \"@burdenoff/fe-libs/button\";\nimport {\n Skeleton,\n Input,\n Badge,\n Select,\n SelectTrigger,\n SelectValue,\n SelectContent,\n SelectItem,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n TooltipProvider,\n} from \"@burdenoff/fe-libs/ui\";\nimport {\n useActorProfiles,\n buildActorFallback,\n type ActorInput,\n} from \"@burdenoff/fe-libs/shared\";\nimport { useWorkflowDefinitions } from \"../../../hooks/useWorkflows\";\nimport { useTr } from \"../../../hooks/useTr\";\nimport { getFluidGridsConfig } from \"../../../config\";\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst PAGE_SIZE = 20;\n\n/** Upper bound on version rows fetched for the screen (newest first). */\nconst FETCH_LIMIT = 500;\n\nfunction useStatusStyles() {\n const tr = useTr();\n return useMemo<\n Record<\n string,\n {\n label: string;\n variant: \"default\" | \"secondary\" | \"outline\" | \"destructive\";\n }\n >\n >(\n () => ({\n ACTIVE: {\n label: tr(\"fluidgrids.history.historyPage.statusActive\", \"Active\"),\n variant: \"default\",\n },\n DRAFT: {\n label: tr(\"fluidgrids.history.historyPage.statusDraft\", \"Draft\"),\n variant: \"secondary\",\n },\n ARCHIVED: {\n label: tr(\"fluidgrids.history.historyPage.statusArchived\", \"Archived\"),\n variant: \"outline\",\n },\n DEPRECATED: {\n label: tr(\n \"fluidgrids.history.historyPage.statusDeprecated\",\n \"Deprecated\",\n ),\n variant: \"destructive\",\n },\n }),\n [tr],\n );\n}\n\n// ============================================================================\n// Sub-Components\n// ============================================================================\n\nfunction HistoryTableSkeleton() {\n return (\n <div className=\"space-y-3\">\n {Array.from({ length: 6 }).map((_, i) => (\n <Skeleton\n key={i}\n className=\"h-14 w-full rounded-lg bg-card-foreground/10\"\n />\n ))}\n </div>\n );\n}\n\nfunction EmptyState() {\n const tr = useTr();\n return (\n <div className=\"flex flex-col items-center justify-center py-20 text-center\">\n <div className=\"rounded-full bg-background-secondary p-4 mb-4\">\n <Icon icon=\"mdi:history\" width={40} className=\"text-text-secondary\" />\n </div>\n <h3 className=\"text-lg font-semibold text-text-primary mb-2\">\n {tr(\"fluidgrids.history.historyPage.emptyTitle\", \"No version history\")}\n </h3>\n <p className=\"text-sm text-text-secondary max-w-md\">\n {tr(\n \"fluidgrids.history.historyPage.emptyHint\",\n \"Version history will appear here once you create and update workflows.\",\n )}\n </p>\n </div>\n );\n}\n\nfunction ErrorState({\n message,\n onRetry,\n}: {\n message: string;\n onRetry: () => void;\n}) {\n const tr = useTr();\n return (\n <div className=\"p-4 bg-[var(--color-status-error-bg-subtle)] border border-[var(--color-status-error-border)] rounded-lg\">\n <div className=\"flex items-center gap-2 text-[var(--color-status-error-text)]\">\n <Icon icon=\"mdi:alert-circle\" width={20} />\n <span className=\"font-medium\">\n {tr(\n \"fluidgrids.history.historyPage.errorHeading\",\n \"Error loading history\",\n )}\n </span>\n </div>\n <p className=\"mt-1 text-sm text-[var(--color-status-error-text)]\">\n {message}\n </p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onRetry}\n className=\"mt-3 border-[var(--color-status-error-border)] text-[var(--color-status-error-text)] hover:bg-[var(--color-status-error-bg-subtle)]\"\n >\n {tr(\"fluidgrids.history.historyPage.errorRetry\", \"Retry\")}\n </Button>\n </div>\n );\n}\n\nfunction StatCard({\n label,\n value,\n valueClassName,\n}: {\n label: string;\n value: number;\n valueClassName?: string;\n}) {\n return (\n <div className=\"p-3 rounded-lg bg-background-secondary border border-border-secondary\">\n <p className=\"text-xs text-text-secondary\">{label}</p>\n <p\n className={`text-xl font-bold ${valueClassName ?? \"text-text-primary\"}`}\n >\n {value}\n </p>\n </div>\n );\n}\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport function HistoryPage() {\n const tr = useTr();\n const navigate = useNavigate();\n const STATUS_STYLES = useStatusStyles();\n const [search, setSearch] = useState(\"\");\n const [workflowFilter, setWorkflowFilter] = useState<string>(\"all\");\n const [page, setPage] = useState(0);\n\n // One query returns every version row (latestOnly is false by default),\n // newest first — no per-workflow fan-out needed.\n const {\n workflows: versionRows,\n total,\n hasMore,\n loading,\n error,\n refetch,\n } = useWorkflowDefinitions({ limit: FETCH_LIMIT });\n\n const allRows = useMemo(\n () =>\n [...versionRows].sort(\n (a, b) =>\n new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime(),\n ),\n [versionRows],\n );\n\n // Distinct workflows (latest row per key) for the stat + filter dropdown.\n const distinctWorkflows = useMemo(() => {\n const byKey = new Map<string, { workflowKey: string; name: string }>();\n for (const row of allRows) {\n if (!byKey.has(row.workflowKey)) {\n byKey.set(row.workflowKey, {\n workflowKey: row.workflowKey,\n name: row.name,\n });\n }\n }\n return [...byKey.values()];\n }, [allRows]);\n\n // Resolve createdById → display names (workspace-scoped, cached, batched).\n const config = getFluidGridsConfig();\n const actorInputs = useMemo<ActorInput[]>(() => {\n const ids = new Set<string>();\n for (const row of allRows) {\n if (row.createdById) ids.add(row.createdById);\n }\n return [...ids].map((actorId) => ({ actorId, actorType: \"user\" }));\n }, [allRows]);\n const actorProfiles = useActorProfiles(actorInputs, {\n workspaceId: config.workspaceId || undefined,\n orgId: config.organizationId,\n authToken: config.authToken,\n });\n\n const changedByLabel = useCallback(\n (createdById?: string | null): string => {\n if (!createdById) return \"—\";\n return (\n actorProfiles[createdById]?.displayName ??\n buildActorFallback({ actorId: createdById, actorType: \"user\" })\n .displayName\n );\n },\n [actorProfiles],\n );\n\n // Filter rows\n const filteredRows = useMemo(() => {\n let rows = allRows;\n\n if (workflowFilter !== \"all\") {\n rows = rows.filter((r) => r.workflowKey === workflowFilter);\n }\n\n if (search.trim()) {\n const q = search.toLowerCase();\n rows = rows.filter(\n (r) =>\n r.name.toLowerCase().includes(q) ||\n r.version.toLowerCase().includes(q) ||\n r.workflowKey.toLowerCase().includes(q) ||\n changedByLabel(r.createdById).toLowerCase().includes(q),\n );\n }\n\n return rows;\n }, [allRows, workflowFilter, search, changedByLabel]);\n\n // Pagination\n const totalPages = Math.max(1, Math.ceil(filteredRows.length / PAGE_SIZE));\n const paginatedRows = filteredRows.slice(\n page * PAGE_SIZE,\n (page + 1) * PAGE_SIZE,\n );\n\n const handleNavigateToVersion = (workflowKey: string, version: string) => {\n navigate(`../workflow/${workflowKey}/${version}`);\n };\n\n const formatDate = (dateStr: string) => {\n try {\n return new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(new Date(dateStr));\n } catch {\n return dateStr;\n }\n };\n\n const countByStatus = (status: string) =>\n allRows.filter((r) => r.status === status).length;\n\n return (\n <div className=\"p-4 sm:p-6 bg-background-primary min-h-screen\">\n {/* Header */}\n <div\n className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-6\"\n data-tour=\"fluidgrids-history-header\"\n >\n <div>\n <h1 className=\"text-2xl sm:text-3xl font-bold text-text-primary\">\n {tr(\"fluidgrids.history.historyPage.title\", \"Version History\")}\n </h1>\n <p className=\"text-text-secondary mt-1\">\n {tr(\n \"fluidgrids.history.historyPage.subtitle\",\n \"Track changes and versions across all workflows\",\n )}\n </p>\n </div>\n <div className=\"flex items-center gap-3\">\n <Button variant=\"outline\" onClick={() => refetch()}>\n <Icon icon=\"mdi:refresh\" className=\"mr-2\" width={16} />\n {tr(\"fluidgrids.history.historyPage.refreshButton\", \"Refresh\")}\n </Button>\n <Button variant=\"outline\" onClick={() => navigate(\"../list\")}>\n <Icon icon=\"mdi:arrow-left\" className=\"mr-2\" width={16} />\n {tr(\n \"fluidgrids.history.historyPage.backToWorkflowsButton\",\n \"Back to Workflows\",\n )}\n </Button>\n </div>\n </div>\n\n {/* Filters */}\n <div className=\"flex flex-col sm:flex-row gap-3 mb-6\">\n <div\n className=\"relative flex-1 max-w-sm\"\n data-tour=\"fluidgrids-history-search\"\n >\n <Icon\n icon=\"mdi:magnify\"\n width={18}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary\"\n />\n <Input\n placeholder={tr(\n \"fluidgrids.history.historyPage.searchPlaceholder\",\n \"Search by name, version, key, or author...\",\n )}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setPage(0);\n }}\n className=\"pl-10 bg-background-secondary border-border-secondary\"\n />\n </div>\n <Select\n value={workflowFilter}\n onValueChange={(val) => {\n setWorkflowFilter(val);\n setPage(0);\n }}\n >\n <SelectTrigger\n className=\"w-[220px] bg-background-secondary border-border-secondary\"\n data-tour=\"fluidgrids-history-workflow-filter\"\n >\n <SelectValue\n placeholder={tr(\n \"fluidgrids.history.historyPage.workflowFilterPlaceholder\",\n \"All Workflows\",\n )}\n />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">\n {tr(\n \"fluidgrids.history.historyPage.workflowFilterAllOption\",\n \"All Workflows\",\n )}\n </SelectItem>\n {distinctWorkflows.map((w) => (\n <SelectItem key={w.workflowKey} value={w.workflowKey}>\n {w.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Stats */}\n <div className=\"grid grid-cols-2 sm:grid-cols-5 gap-3 mb-6\">\n <StatCard\n label={tr(\n \"fluidgrids.history.historyPage.statTotalVersions\",\n \"Total Versions\",\n )}\n value={total || allRows.length}\n />\n <StatCard\n label={tr(\n \"fluidgrids.history.historyPage.statWorkflows\",\n \"Workflows\",\n )}\n value={distinctWorkflows.length}\n />\n <StatCard\n label={tr(\"fluidgrids.history.historyPage.statActive\", \"Active\")}\n value={countByStatus(\"ACTIVE\")}\n valueClassName=\"text-[var(--color-status-success-text)]\"\n />\n <StatCard\n label={tr(\"fluidgrids.history.historyPage.statDraft\", \"Draft\")}\n value={countByStatus(\"DRAFT\")}\n valueClassName=\"text-[var(--color-status-warning-text)]\"\n />\n <StatCard\n label={tr(\"fluidgrids.history.historyPage.statArchived\", \"Archived\")}\n value={countByStatus(\"ARCHIVED\")}\n />\n </div>\n\n {hasMore && (\n <p className=\"text-xs text-text-secondary mb-4\">\n {tr(\n \"fluidgrids.history.historyPage.partialResultsHint\",\n \"Showing the {{shown}} most recent versions of {{total}}.\",\n { shown: allRows.length, total: total ?? allRows.length },\n )}\n </p>\n )}\n\n {/* Error State */}\n {error && (\n <div className=\"mb-6\">\n <ErrorState message={error.message} onRetry={refetch} />\n </div>\n )}\n\n {/* Table */}\n {loading ? (\n <HistoryTableSkeleton />\n ) : filteredRows.length === 0 ? (\n <EmptyState />\n ) : (\n <div className=\"overflow-x-auto rounded-lg border border-border-secondary\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-secondary bg-background-secondary\">\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnWorkflowName\",\n \"Workflow Name\",\n )}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnVersion\",\n \"Version\",\n )}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\"fluidgrids.history.historyPage.columnStatus\", \"Status\")}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnChangedBy\",\n \"Changed By\",\n )}\n </th>\n <th className=\"text-left px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnChangedAt\",\n \"Changed At\",\n )}\n </th>\n <th className=\"text-right px-4 py-3 font-medium text-text-secondary\">\n {tr(\n \"fluidgrids.history.historyPage.columnActions\",\n \"Actions\",\n )}\n </th>\n </tr>\n </thead>\n <tbody>\n {paginatedRows.map((row) => {\n const statusStyle =\n STATUS_STYLES[row.status] ?? STATUS_STYLES.DRAFT;\n return (\n <tr\n key={row.id}\n className=\"border-b border-border-secondary last:border-0 hover:bg-background-secondary/50 cursor-pointer transition-colors\"\n onClick={() =>\n handleNavigateToVersion(row.workflowKey, row.version)\n }\n >\n <td className=\"px-4 py-3\">\n <div className=\"flex items-center gap-2\">\n <Icon\n icon=\"mdi:workflow\"\n width={18}\n className=\"text-text-secondary\"\n />\n <div>\n <p className=\"font-medium text-text-primary\">\n {row.name}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {row.workflowKey}\n </p>\n </div>\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <code className=\"text-xs bg-background-secondary px-2 py-0.5 rounded text-text-primary\">\n {row.version}\n </code>\n </td>\n <td className=\"px-4 py-3\">\n <Badge variant={statusStyle.variant}>\n {statusStyle.label}\n </Badge>\n </td>\n <td className=\"px-4 py-3 text-text-secondary\">\n <div\n className=\"flex items-center gap-1.5\"\n title={row.createdById ?? undefined}\n >\n <Icon icon=\"mdi:account\" width={16} />\n <span className=\"truncate max-w-[160px]\">\n {changedByLabel(row.createdById)}\n </span>\n </div>\n </td>\n <td className=\"px-4 py-3 text-text-secondary\">\n {formatDate(row.updatedAt)}\n </td>\n <td className=\"px-4 py-3 text-right\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={(e) => {\n e.stopPropagation();\n handleNavigateToVersion(\n row.workflowKey,\n row.version,\n );\n }}\n className=\"p-1.5 rounded hover:bg-background-secondary text-text-secondary hover:text-text-primary transition-colors\"\n >\n <Icon icon=\"mdi:open-in-new\" width={16} />\n </button>\n </TooltipTrigger>\n <TooltipContent>\n {tr(\n \"fluidgrids.history.historyPage.openInBuilderTooltip\",\n \"Open in builder\",\n )}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n )}\n\n {/* Pagination */}\n {filteredRows.length > PAGE_SIZE && (\n <div className=\"flex items-center justify-between mt-4 px-1\">\n <p className=\"text-sm text-text-secondary\">\n Showing {page * PAGE_SIZE + 1}–\n {Math.min((page + 1) * PAGE_SIZE, filteredRows.length)} of{\" \"}\n {filteredRows.length}\n </p>\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={page === 0}\n onClick={() => setPage((p) => p - 1)}\n >\n <Icon icon=\"mdi:chevron-left\" width={16} />\n {tr(\n \"fluidgrids.history.historyPage.previousPageButton\",\n \"Previous\",\n )}\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={page >= totalPages - 1}\n onClick={() => setPage((p) => p + 1)}\n >\n {tr(\"fluidgrids.history.historyPage.nextPageButton\", \"Next\")}\n <Icon icon=\"mdi:chevron-right\" width={16} />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,8 +1,8 @@
1
- import { FluidGridsProvider, Card, FluidGridsMark } from './chunk-W7APOU2R.js';
1
+ import { FluidGridsProvider, Card, FluidGridsMark } from './chunk-5DQU54IB.js';
2
2
  import { Input } from './chunk-P5PKRQAO.js';
3
3
  import { Button } from './chunk-DBOMRIP5.js';
4
4
  import { cn } from './chunk-3ZYUGTIT.js';
5
- import { useWorkflowDefinition } from './chunk-2C6CUHM3.js';
5
+ import { useWorkflowDefinition } from './chunk-XBIHI224.js';
6
6
  import { useFlowStore } from './chunk-3B5YEXSW.js';
7
7
  import { useTr } from './chunk-7YWBH2A5.js';
8
8
  import { useState, useRef, useEffect, useCallback } from 'react';
@@ -479,6 +479,9 @@ function WorkflowBuilder({
479
479
  authToken,
480
480
  workspaceId,
481
481
  tenantId,
482
+ productId,
483
+ userId,
484
+ workspaceToken,
482
485
  organizationId,
483
486
  workspaceClient,
484
487
  globalClient,
@@ -493,6 +496,9 @@ function WorkflowBuilder({
493
496
  authToken,
494
497
  workspaceId,
495
498
  tenantId,
499
+ productId,
500
+ userId,
501
+ workspaceToken,
496
502
  organizationId,
497
503
  workspaceClient,
498
504
  globalClient,
@@ -540,5 +546,5 @@ function WorkflowSearchRedirect() {
540
546
  }
541
547
 
542
548
  export { WorkflowBuilder, WorkflowBuilderCore, WorkflowSearchRedirect };
543
- //# sourceMappingURL=chunk-I2766GDR.js.map
544
- //# sourceMappingURL=chunk-I2766GDR.js.map
549
+ //# sourceMappingURL=chunk-VGJKZYW2.js.map
550
+ //# sourceMappingURL=chunk-VGJKZYW2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/builder/components/ui/sonner.tsx","../src/components/WorkflowBuilderCore.tsx","../src/components/WorkflowBuilder.tsx","../src/pages/WorkflowSearchRedirect.tsx"],"names":["Sonner","jsx","jsxs"],"mappings":"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","file":"chunk-VGJKZYW2.js","sourcesContent":["import { useTheme } from \"@burdenoff/fe-libs/shared/hooks/shell\";\nimport { Toaster as Sonner } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { resolvedTheme = \"light\" } = useTheme();\n\n return (\n <Sonner\n theme={resolvedTheme as ToasterProps[\"theme\"]}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n \"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n description: \"group-[.toast]:text-muted-foreground\",\n actionButton:\n \"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n cancelButton:\n \"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","import { useCallback, useEffect, useState, useRef } from \"react\";\nimport {\n ReactFlow,\n Background,\n Controls,\n MiniMap,\n Handle,\n Position,\n type NodeTypes,\n MarkerType,\n type NodeProps,\n useReactFlow,\n ReactFlowProvider,\n} from \"@xyflow/react\";\nimport { useShallow } from \"zustand/shallow\";\nimport \"@xyflow/react/dist/style.css\";\n\nimport { useFlowStore } from \"../builder/stores/flow-store\";\nimport { Button } from \"../ui/button\";\nimport { Input } from \"../ui/input\";\nimport { Card } from \"../ui/card\";\nimport { cn } from \"../utils/cn\";\nimport type { WorkflowData, FlowNode } from \"../types\";\nimport { ArrowLeft, Play, Save, Trash2 } from \"lucide-react\";\nimport { Toaster } from \"../builder/components/ui/sonner\";\nimport { useTr } from \"../hooks/useTr\";\nimport { FluidGridsMark } from \"./shared/FluidGridsMark\";\n\nexport interface WorkflowBuilderCoreProps {\n /** Initial workflow data to render */\n workflow?: WorkflowData;\n /** Readonly mode - disables editing */\n readonly?: boolean;\n /** Hide the header toolbar */\n hideHeader?: boolean;\n /** Hide the sidebar */\n hideSidebar?: boolean;\n /** Hide the logs panel */\n hideLogsPanel?: boolean;\n /** Callback when workflow is saved */\n onSave?: (workflow: WorkflowData) => void;\n /** Callback when workflow execution starts */\n onExecute?: (runId: string) => void;\n /** Callback when a node is clicked */\n onNodeClick?: (node: FlowNode) => void;\n /** Callback when back button is clicked */\n onBack?: () => void;\n /** Custom className */\n className?: string;\n}\n\n// Default edge options\nconst defaultEdgeOptions = {\n type: \"smoothstep\",\n markerEnd: {\n type: MarkerType.ArrowClosed,\n width: 21,\n height: 21,\n },\n style: {\n stroke: \"#888\",\n },\n};\n\n// Handle styles\nconst handleStyle: React.CSSProperties = {\n width: 10,\n height: 10,\n background: \"#3b82f6\", // blue-500\n border: \"2px solid white\",\n};\n\n// Base node styles\nconst baseNodeStyle: React.CSSProperties = {\n padding: \"8px 16px\",\n borderRadius: \"8px\",\n fontWeight: 500,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n position: \"relative\",\n color: \"white\",\n};\n\n// Node type → colour mapping\nconst NODE_COLORS: Record<string, string> = {\n \"trigger:api\": \"#22c55e\",\n end: \"#ef4444\",\n \"internal:if\": \"#8b5cf6\",\n \"internal:switch\": \"#8b5cf6\",\n \"internal:loop\": \"#f59e0b\",\n \"internal:merge\": \"#6366f1\",\n \"internal:set\": \"#3b82f6\",\n \"internal:filter\": \"#06b6d4\",\n \"internal:aggregate\": \"#0891b2\",\n \"internal:wait\": \"#64748b\",\n \"internal:noop\": \"#94a3b8\",\n \"internal:http\": \"#f97316\",\n default: \"#3b82f6\",\n};\n\nfunction getNodeColor(type: string): string {\n return NODE_COLORS[type] ?? NODE_COLORS.default;\n}\n\n// Trigger Node component - has only source handle (bottom)\nfunction TriggerNode({ data }: NodeProps) {\n const tr = useTr();\n const label = (data as { label?: string }).label;\n return (\n <div style={{ ...baseNodeStyle, background: getNodeColor(\"trigger:api\") }}>\n {label ||\n tr(\n \"fluidgrids.components.workflowBuilderCore.triggerNodeLabel\",\n \"API Trigger\",\n )}\n <Handle type=\"source\" position={Position.Bottom} style={handleStyle} />\n </div>\n );\n}\n\n// End Node component - has only target handle (top)\nfunction EndNode({ data }: NodeProps) {\n const tr = useTr();\n const label = (data as { label?: string }).label;\n return (\n <div style={{ ...baseNodeStyle, background: getNodeColor(\"end\") }}>\n <Handle type=\"target\" position={Position.Top} style={handleStyle} />\n {label ||\n tr(\"fluidgrids.components.workflowBuilderCore.endNodeLabel\", \"End\")}\n </div>\n );\n}\n\n// Action Node component - has both source (bottom) and target (top) handles\nfunction ActionNode({ data, type }: NodeProps) {\n const tr = useTr();\n const label = (data as { label?: string }).label;\n const color = getNodeColor(type || \"default\");\n return (\n <div\n style={{\n ...baseNodeStyle,\n background: color,\n minWidth: 120,\n textAlign: \"center\",\n }}\n >\n <Handle type=\"target\" position={Position.Top} style={handleStyle} />\n {label ||\n tr(\n \"fluidgrids.components.workflowBuilderCore.actionNodeLabel\",\n \"Action\",\n )}\n <Handle type=\"source\" position={Position.Bottom} style={handleStyle} />\n </div>\n );\n}\n\n// Define node types\nconst NODE_TYPES: NodeTypes = {\n \"trigger:api\": TriggerNode,\n end: EndNode,\n \"internal:if\": ActionNode,\n \"internal:switch\": ActionNode,\n \"internal:loop\": ActionNode,\n \"internal:merge\": ActionNode,\n \"internal:set\": ActionNode,\n \"internal:filter\": ActionNode,\n \"internal:aggregate\": ActionNode,\n \"internal:wait\": ActionNode,\n \"internal:noop\": ActionNode,\n \"internal:http\": ActionNode,\n \"internal:subworkflow\": ActionNode,\n default: ActionNode,\n};\n\n// Counter for unique node ids\nlet nodeIdCounter = 0;\n\nfunction FlowBuilderInner({\n workflow,\n readonly = false,\n hideHeader = false,\n hideSidebar = false,\n hideLogsPanel = false,\n onSave,\n onExecute,\n onNodeClick,\n onBack,\n className,\n}: WorkflowBuilderCoreProps) {\n const reactFlowInstance = useReactFlow();\n const tr = useTr();\n\n const setWorkflow = useFlowStore((s) => s.actions.setWorkflow);\n const resetWorkflow = useFlowStore((s) => s.actions.resetWorkflow);\n const deleteNode = useFlowStore((s) => s.actions.nodes.deleteNode);\n const setNodes = useFlowStore((s) => s.actions.nodes.setNodes);\n\n const [nodes, edges, onNodesChange, onEdgesChange, onConnect] = useFlowStore(\n useShallow((s) => [\n s.workflow.nodes,\n s.workflow.edges,\n s.actions.nodes.onNodesChange,\n s.actions.edges.onEdgesChange,\n s.actions.edges.onConnect,\n ]),\n );\n\n const [workflowName, setWorkflowName] = useState(\n workflow?.name || \"Untitled Workflow\",\n );\n\n // Selected node for properties panel\n const [selectedNodeId, setSelectedNodeId] = useState<string | null>(null);\n\n // Ref for the ReactFlow wrapper (needed for drop position calculation)\n const reactFlowWrapper = useRef<HTMLDivElement>(null);\n\n // Initialize workflow on mount\n useEffect(() => {\n resetWorkflow();\n if (workflow) {\n setWorkflow(workflow);\n setWorkflowName(workflow.name || \"Untitled Workflow\");\n }\n }, [workflow, resetWorkflow, setWorkflow]);\n\n const handleNameChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setWorkflowName(e.target.value);\n setWorkflow({ name: e.target.value });\n };\n\n const handleSave = () => {\n const savedWorkflow: WorkflowData = {\n id: workflow?.id || \"\",\n workflowKey: workflow?.workflowKey || \"\",\n name: workflowName,\n version: workflow?.version || \"1\",\n alias: workflow?.alias,\n nodes: nodes as FlowNode[],\n edges,\n sidebar: {\n active: \"none\",\n panels: {\n nodeProperties: {\n selectedNode: null,\n },\n },\n },\n };\n onSave?.(savedWorkflow);\n };\n\n const handleExecute = () => {\n // Generate a run ID and trigger execution\n const runId = `run-${Date.now()}`;\n onExecute?.(runId);\n };\n\n // ---- Node click → select in sidebar ----\n const handleNodeClick = useCallback(\n (\n _event: React.MouseEvent,\n node: { id: string; [key: string]: unknown },\n ) => {\n setSelectedNodeId(node.id);\n onNodeClick?.(node as unknown as FlowNode);\n },\n [onNodeClick],\n );\n\n // Deselect when clicking the pane\n const handlePaneClick = useCallback(() => {\n setSelectedNodeId(null);\n }, []);\n\n // ---- Drag-and-drop from external palette ----\n const handleDragOver = useCallback((event: React.DragEvent) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"copy\";\n }, []);\n\n const handleDrop = useCallback(\n (event: React.DragEvent) => {\n event.preventDefault();\n\n const raw = event.dataTransfer.getData(\"application/json\");\n if (!raw) return;\n\n let payload: { id?: string; type?: string; label?: string };\n try {\n payload = JSON.parse(raw);\n } catch {\n return;\n }\n\n const nodeType = payload.type || payload.id || \"default\";\n const label = payload.label || nodeType;\n\n // Calculate drop position in flow coordinates\n const bounds = reactFlowWrapper.current?.getBoundingClientRect();\n if (!bounds) return;\n\n const position = reactFlowInstance.screenToFlowPosition({\n x: event.clientX - bounds.left,\n y: event.clientY - bounds.top,\n });\n\n nodeIdCounter += 1;\n const newNodeId = `${nodeType}-${Date.now()}-${nodeIdCounter}`;\n const newNode: FlowNode = {\n id: newNodeId,\n type: nodeType,\n position,\n data: { label },\n };\n\n // Append to the existing nodes via the store\n const currentNodes = useFlowStore.getState().workflow.nodes;\n setNodes([...currentNodes, newNode]);\n },\n [reactFlowInstance, setNodes],\n );\n\n // ---- Selected node helpers ----\n const selectedNode = selectedNodeId\n ? (nodes.find((n) => n.id === selectedNodeId) as FlowNode | undefined)\n : null;\n\n const handleSelectedNodeLabelChange = useCallback(\n (newLabel: string) => {\n if (!selectedNodeId) return;\n const currentNodes = useFlowStore.getState().workflow.nodes;\n const updated = currentNodes.map((n) =>\n n.id === selectedNodeId\n ? { ...n, data: { ...n.data, label: newLabel } }\n : n,\n );\n setNodes(updated);\n },\n [selectedNodeId, setNodes],\n );\n\n const handleDeleteSelectedNode = useCallback(() => {\n if (!selectedNode) return;\n if (selectedNode.deletable === false) return; // can't delete trigger/end\n deleteNode(selectedNode);\n setSelectedNodeId(null);\n }, [selectedNode, deleteNode]);\n\n return (\n <div\n className={cn(\"flex flex-col flex-1 h-full w-full min-h-0\", className)}\n >\n {/* Header */}\n {!hideHeader && (\n <Card className=\"h-14 shrink-0 border-0 rounded-none bg-gradient-to-r from-primary/20 to-transparent p-2 flex items-center justify-between border-b\">\n <div className=\"flex items-center gap-2\">\n {onBack && (\n <Button variant=\"ghost\" size=\"icon\" onClick={onBack}>\n <ArrowLeft className=\"size-5\" />\n </Button>\n )}\n <Input\n className=\"font-semibold max-w-[300px]\"\n value={workflowName}\n onChange={handleNameChange}\n placeholder={tr(\n \"fluidgrids.components.workflowBuilderCore.workflowNamePlaceholder\",\n \"Workflow Name\",\n )}\n disabled={readonly}\n />\n </div>\n\n {!readonly && (\n <div className=\"flex items-center gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleSave}>\n <Save className=\"size-4 mr-1\" />\n {tr(\"fluidgrids.components.workflowBuilderCore.save\", \"Save\")}\n </Button>\n <Button size=\"sm\" onClick={handleExecute}>\n <Play className=\"size-4 mr-1\" />\n {tr(\"fluidgrids.components.workflowBuilderCore.run\", \"Run\")}\n </Button>\n </div>\n )}\n </Card>\n )}\n\n {/* Main content */}\n <div className=\"flex flex-1 min-h-0 overflow-hidden\">\n {/* Canvas */}\n <div className=\"flex-1 h-full relative\" ref={reactFlowWrapper}>\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={readonly ? undefined : onNodesChange}\n onEdgesChange={readonly ? undefined : onEdgesChange}\n onConnect={readonly ? undefined : onConnect}\n onNodeClick={readonly ? undefined : handleNodeClick}\n onPaneClick={handlePaneClick}\n onDragOver={readonly ? undefined : handleDragOver}\n onDrop={readonly ? undefined : handleDrop}\n nodeTypes={NODE_TYPES}\n defaultEdgeOptions={defaultEdgeOptions}\n fitView\n snapToGrid\n snapGrid={[16, 16]}\n proOptions={{ hideAttribution: true }}\n deleteKeyCode={readonly ? null : \"Backspace\"}\n >\n <Background gap={24} />\n <Controls />\n <MiniMap />\n </ReactFlow>\n {/* Always shown, whatever readonly/hideHeader/hideSidebar say — no\n white-labelling. */}\n <FluidGridsMark />\n </div>\n\n {/* Sidebar — Node Properties */}\n {!hideSidebar && !readonly && (\n <div className=\"w-60 shrink-0 border-l bg-card overflow-y-auto\">\n <div className=\"p-4 border-b\">\n <div className=\"text-sm font-semibold\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.nodePropertiesHeading\",\n \"Node Properties\",\n )}\n </div>\n </div>\n\n {selectedNode ? (\n <div className=\"p-4 space-y-4\">\n {/* Node ID */}\n <div>\n <label className=\"block text-xs font-medium text-muted-foreground mb-1\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.nodeIdLabel\",\n \"Node ID\",\n )}\n </label>\n <code className=\"block text-xs bg-muted px-2 py-1 rounded font-mono break-all\">\n {selectedNode.id}\n </code>\n </div>\n\n {/* Node Type */}\n <div>\n <label className=\"block text-xs font-medium text-muted-foreground mb-1\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.nodeTypeLabel\",\n \"Type\",\n )}\n </label>\n <div className=\"flex items-center gap-2\">\n <span\n className=\"inline-block w-3 h-3 rounded-full shrink-0\"\n style={{\n background: getNodeColor(\n selectedNode.type || \"default\",\n ),\n }}\n />\n <code className=\"text-xs font-mono\">\n {selectedNode.type}\n </code>\n </div>\n </div>\n\n {/* Label */}\n <div>\n <label className=\"block text-xs font-medium text-muted-foreground mb-1\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.nodeLabelLabel\",\n \"Label\",\n )}\n </label>\n <Input\n value={\n (selectedNode.data as { label?: string })?.label ?? \"\"\n }\n onChange={(e) =>\n handleSelectedNodeLabelChange(e.target.value)\n }\n className=\"text-sm\"\n placeholder={tr(\n \"fluidgrids.components.workflowBuilderCore.nodeLabelPlaceholder\",\n \"Node label\",\n )}\n />\n </div>\n\n {/* Position */}\n <div>\n <label className=\"block text-xs font-medium text-muted-foreground mb-1\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.positionLabel\",\n \"Position\",\n )}\n </label>\n <div className=\"grid grid-cols-2 gap-2 text-xs text-muted-foreground\">\n <div>\n X:{\" \"}\n <span className=\"font-mono\">\n {Math.round(selectedNode.position.x)}\n </span>\n </div>\n <div>\n Y:{\" \"}\n <span className=\"font-mono\">\n {Math.round(selectedNode.position.y)}\n </span>\n </div>\n </div>\n </div>\n\n {/* Connected edges */}\n <div>\n <label className=\"block text-xs font-medium text-muted-foreground mb-1\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.connectionsLabel\",\n \"Connections\",\n )}\n </label>\n <div className=\"text-xs text-muted-foreground\">\n {(() => {\n const inbound = edges.filter(\n (e) => e.target === selectedNode.id,\n );\n const outbound = edges.filter(\n (e) => e.source === selectedNode.id,\n );\n return (\n <>\n <div>\n {inbound.length} inbound, {outbound.length} outbound\n </div>\n </>\n );\n })()}\n </div>\n </div>\n\n {/* Delete */}\n {selectedNode.deletable !== false && (\n <div className=\"pt-2 border-t\">\n <Button\n variant=\"destructive\"\n size=\"sm\"\n className=\"w-full\"\n onClick={handleDeleteSelectedNode}\n >\n <Trash2 className=\"size-4 mr-1\" />\n {tr(\n \"fluidgrids.components.workflowBuilderCore.deleteNode\",\n \"Delete Node\",\n )}\n </Button>\n </div>\n )}\n </div>\n ) : (\n <div className=\"p-4\">\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.noSelectionHint\",\n \"Click a node on the canvas to view and edit its properties.\",\n )}\n </p>\n <p className=\"text-xs text-muted-foreground mt-2\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.dragPaletteHint\",\n \"Drag nodes from the palette on the left to add them to the workflow.\",\n )}\n </p>\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Logs panel placeholder */}\n {!hideLogsPanel && (\n <div className=\"h-32 border-t bg-card p-2\">\n <div className=\"text-sm font-medium mb-2\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.executionLogsHeading\",\n \"Execution Logs\",\n )}\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {tr(\n \"fluidgrids.components.workflowBuilderCore.executionLogsEmpty\",\n \"Execution logs will appear here when you run the workflow\",\n )}\n </p>\n </div>\n )}\n </div>\n );\n}\n\nexport function WorkflowBuilderCore(props: WorkflowBuilderCoreProps) {\n return (\n <ReactFlowProvider>\n <FlowBuilderInner {...props} />\n <Toaster richColors position=\"bottom-center\" duration={2000} />\n </ReactFlowProvider>\n );\n}\n","import { type ApolloClient } from \"@apollo/client/core\";\nimport { FluidGridsProvider } from \"./FluidGridsProvider\";\nimport {\n WorkflowBuilderCore,\n type WorkflowBuilderCoreProps,\n} from \"./WorkflowBuilderCore\";\nimport type { WorkflowData } from \"../types\";\n\nexport interface WorkflowBuilderProps extends Omit<\n WorkflowBuilderCoreProps,\n \"workflow\"\n> {\n /** Workflow ID to load */\n workflowId?: string;\n /** Workflow version to load */\n workflowVersion?: string;\n /** Initial workflow data (bypasses API fetch) */\n initialWorkflow?: WorkflowData;\n /** Workspace API Gateway URL */\n apiGatewayUrl?: string;\n /** Global API Gateway URL (for store operations) */\n globalApiUrl?: string;\n /** Authentication token */\n authToken?: string;\n /** Current workspace ID */\n workspaceId: string;\n /** Product namespace, actor identity and workspace authentication. */\n productId?: string;\n userId?: string;\n workspaceToken?: string;\n /** Current tenant ID */\n tenantId?: string;\n /** Organization ID */\n organizationId?: string;\n /** Optional: Provide your own workspace Apollo client */\n workspaceClient?: ApolloClient;\n /** Optional: Provide your own global Apollo client */\n globalClient?: ApolloClient;\n}\n\n/**\n * WorkflowBuilder - Standalone workflow builder component with Apollo client support\n *\n * Use this component when you want to embed the workflow builder in any React app.\n * You can either:\n * 1. Provide pre-configured Apollo clients (workspaceClient + globalClient) - Recommended\n * 2. Provide URLs and let the component create clients internally\n *\n * @example Dual Client Injection (Recommended)\n * ```tsx\n * import { createFluidGridsClients } from '@fluidgrids/fe-sdk';\n *\n * const { workspaceClient, globalClient } = createFluidGridsClients({\n * workspaceApiUrl: 'http://localhost:4000/workspaces/graphql',\n * globalApiUrl: 'http://localhost:4000/global/graphql',\n * authToken: token,\n * workspaceId: 'ws-123',\n * });\n *\n * <WorkflowBuilder\n * workspaceClient={workspaceClient}\n * globalClient={globalClient}\n * workspaceId=\"ws-123\"\n * onSave={(workflow) => console.log(workflow)}\n * />\n * ```\n *\n * @example URL-based (Simpler, less flexible)\n * ```tsx\n * <WorkflowBuilder\n * apiGatewayUrl=\"http://localhost:4000/workspaces/graphql\"\n * globalApiUrl=\"http://localhost:4000/global/graphql\"\n * authToken={token}\n * workspaceId=\"ws-123\"\n * onSave={(workflow) => console.log(workflow)}\n * />\n * ```\n */\nexport function WorkflowBuilder({\n workflowId,\n workflowVersion,\n initialWorkflow,\n apiGatewayUrl,\n globalApiUrl,\n authToken,\n workspaceId,\n tenantId,\n productId,\n userId,\n workspaceToken,\n organizationId,\n workspaceClient,\n globalClient,\n ...coreProps\n}: WorkflowBuilderProps) {\n // If initialWorkflow is provided, use it directly\n // Otherwise, the workflow will need to be loaded from the API\n const workflow =\n initialWorkflow || createDefaultWorkflow(workflowId, workflowVersion);\n\n return (\n <FluidGridsProvider\n apiGatewayUrl={apiGatewayUrl}\n globalApiUrl={globalApiUrl}\n authToken={authToken}\n workspaceId={workspaceId}\n tenantId={tenantId}\n productId={productId}\n userId={userId}\n workspaceToken={workspaceToken}\n organizationId={organizationId}\n workspaceClient={workspaceClient}\n globalClient={globalClient}\n >\n <WorkflowBuilderCore workflow={workflow} {...coreProps} />\n </FluidGridsProvider>\n );\n}\n\nfunction createDefaultWorkflow(id?: string, version?: string): WorkflowData {\n return {\n id: id || `workflow-${Date.now()}`,\n workflowKey: id || `workflow-${Date.now()}`,\n name: \"Untitled Workflow\",\n version: version || \"1\",\n nodes: [],\n edges: [],\n sidebar: {\n active: \"store-browse\",\n panels: {\n nodeProperties: {\n selectedNode: null,\n },\n },\n },\n };\n}\n","import { Navigate, useParams } from \"react-router\";\nimport { Icon } from \"@iconify/react\";\nimport { useWorkflowDefinition } from \"../hooks/useWorkflows\";\n\n/**\n * Global search indexes WorkflowDefinition by its database id, but the\n * builder route (`workflow/:workflowKey/:version`) is keyed by workflowKey +\n * version. This page bridges the two: it resolves the id to its current\n * workflowKey/version and redirects there.\n */\nexport function WorkflowSearchRedirect() {\n const { id } = useParams<{ id: string }>();\n const { workflow, loading, error } = useWorkflowDefinition(undefined, id);\n\n if (loading) {\n return (\n <div className=\"flex h-full min-h-[40vh] items-center justify-center gap-2 text-sm text-muted-foreground\">\n <Icon icon=\"svg-spinners:ring-resize\" className=\"size-4\" />\n Opening workflow…\n </div>\n );\n }\n\n if (error || !workflow) {\n return <Navigate to=\"../list\" replace />;\n }\n\n return (\n <Navigate\n to={`../workflow/${workflow.workflowKey}/${workflow.version}`}\n replace\n />\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { getFluidGridsConfig } from './chunk-F2BBRTLB.js';
1
+ import { getFluidGridsConfig } from './chunk-DFGJKGWH.js';
2
2
  import { WorkflowDefinitionsDocument, WorkflowDefinitionDocument, WorkflowVersionsDocument, CreateWorkflowDefinitionDocument, ImportWorkflowDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, DeleteWorkflowDefinitionDocument, DuplicateWorkflowDocument, RestoreWorkflowVersionDocument, TriggerWorkflowDocument, WorkflowRunsDocument, WorkflowRunDocument, DashboardSummaryDocument, ActivateWorkflowDefinitionDocument, DeactivateWorkflowDefinitionDocument } from './chunk-3P4YQ7DO.js';
3
3
  import { throwIfResultError } from './chunk-LMO5ASOE.js';
4
4
  import { getFluidGridsClient } from './chunk-ZBMMEE5U.js';
@@ -660,5 +660,5 @@ function useDeactivateWorkflow() {
660
660
  }
661
661
 
662
662
  export { useActivateWorkflow, useCreateWorkflow, useCreateWorkflowVersion, useDashboardSummary, useDeactivateWorkflow, useDeleteWorkflow, useDuplicateWorkflow, useImportWorkflow, useLazyWorkflowDefinition, useRestoreWorkflowVersion, useTriggerWorkflow, useUpdateWorkflow, useWorkflowDefinition, useWorkflowDefinitions, useWorkflowRun, useWorkflowRuns, useWorkflowVersions };
663
- //# sourceMappingURL=chunk-2C6CUHM3.js.map
664
- //# sourceMappingURL=chunk-2C6CUHM3.js.map
663
+ //# sourceMappingURL=chunk-XBIHI224.js.map
664
+ //# sourceMappingURL=chunk-XBIHI224.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useWorkflows.ts"],"names":[],"mappings":"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","file":"chunk-2C6CUHM3.js","sourcesContent":["import { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { getFluidGridsClient } from \"../graphql/client\";\nimport { getFluidGridsConfig } from \"../config\";\nimport {\n WorkflowDefinitionsDocument,\n WorkflowDefinitionDocument,\n WorkflowVersionsDocument,\n CreateWorkflowDefinitionDocument,\n UpdateWorkflowDefinitionDocument,\n CreateWorkflowVersionDocument,\n DeleteWorkflowDefinitionDocument,\n DuplicateWorkflowDocument,\n TriggerWorkflowDocument,\n WorkflowRunsDocument,\n WorkflowRunDocument,\n DashboardSummaryDocument,\n RestoreWorkflowVersionDocument,\n ActivateWorkflowDefinitionDocument,\n DeactivateWorkflowDefinitionDocument,\n ImportWorkflowDocument,\n} from \"../generated/operations\";\nimport type {\n ActivateWorkflowDefinitionMutation,\n DeactivateWorkflowDefinitionMutation,\n ImportWorkflowMutation,\n} from \"../generated/operations\";\nimport type {\n WorkflowDefinition,\n ListWorkflowDefinitionsInput,\n CreateWorkflowDefinitionInput,\n UpdateWorkflowDefinitionInput,\n TriggerWorkflowInput,\n ImportWorkflowInput,\n} from \"../generated/graphql-types\";\n\nimport { throwIfResultError } from \"../graphql/errors\";\nimport type { EntityTagAssignment } from \"./useEntityTags\";\n\n// Alias for backward compatibility\nconst WORKFLOW_DEFINITIONS = WorkflowDefinitionsDocument;\nconst WORKFLOW_DEFINITION = WorkflowDefinitionDocument;\nconst WORKFLOW_VERSIONS = WorkflowVersionsDocument;\nconst CREATE_WORKFLOW_DEFINITION = CreateWorkflowDefinitionDocument;\nconst UPDATE_WORKFLOW_DEFINITION = UpdateWorkflowDefinitionDocument;\nconst CREATE_WORKFLOW_VERSION = CreateWorkflowVersionDocument;\nconst DELETE_WORKFLOW_DEFINITION = DeleteWorkflowDefinitionDocument;\nconst DUPLICATE_WORKFLOW = DuplicateWorkflowDocument;\nconst TRIGGER_WORKFLOW = TriggerWorkflowDocument;\nconst WORKFLOW_RUNS = WorkflowRunsDocument;\nconst WORKFLOW_RUN = WorkflowRunDocument;\nconst DASHBOARD_SUMMARY = DashboardSummaryDocument;\nconst RESTORE_WORKFLOW_VERSION = RestoreWorkflowVersionDocument;\nconst IMPORT_WORKFLOW = ImportWorkflowDocument;\n\n// ============================================================================\n// Workflow Definition Hooks\n// ============================================================================\n\ninterface WorkflowDefinitionsData {\n workflowDefinitions: {\n items: WorkflowDefinition[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowDefinitionData {\n workflowDefinition: WorkflowDefinition | null;\n}\n\ninterface WorkflowVersionsData {\n workflowVersions: WorkflowDefinition[];\n}\n\n/**\n * Check if an error is Apollo's \"Store reset while query was in flight\" error (error 89)\n * This happens when the shell's MultiGatewayProvider cleans up during re-renders\n */\nfunction isStoreResetError(err: unknown): boolean {\n if (err instanceof Error) {\n // Check for error 89 in the message URL or error text\n return (\n err.message.includes(\"message%22%3A89\") ||\n err.message.includes(\"Store reset while query was in flight\")\n );\n }\n return false;\n}\n\n/**\n * Hook to fetch list of workflow definitions\n * Uses Apollo Client with the WORKFLOW_DEFINITIONS query\n * Automatically filters by productId if configured\n */\nexport function useWorkflowDefinitions(\n input: ListWorkflowDefinitionsInput = {},\n) {\n const [workflows, setWorkflows] = useState<WorkflowDefinition[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [retryCount, setRetryCount] = useState(0);\n\n // Add productId filter if configured\n const config = getFluidGridsConfig();\n const inputWithProductFilter = {\n ...input,\n customFilters: {\n ...(input.customFilters || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n },\n };\n\n // Stringify input to use as stable dependency\n const inputKey = JSON.stringify(inputWithProductFilter);\n\n const fetchData = useCallback(\n async (isRetry = false) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionsData>({\n query: WORKFLOW_DEFINITIONS,\n variables: { input: JSON.parse(inputKey) },\n fetchPolicy: \"network-only\",\n });\n setWorkflows(result.data?.workflowDefinitions?.items ?? []);\n setTotal(result.data?.workflowDefinitions?.total ?? 0);\n setHasMore(result.data?.workflowDefinitions?.hasMore ?? false);\n // Reset retry count on success\n if (isRetry) setRetryCount(0);\n } catch (err) {\n // Handle Apollo error 89 \"Store reset while query was in flight\"\n // This occurs when shell's MultiGatewayProvider cleans up during re-renders\n // Retry after a short delay to allow client to stabilize\n if (isStoreResetError(err)) {\n console.warn(\n \"[useWorkflowDefinitions] Store reset error - will retry\",\n );\n if (retryCount < 3) {\n setRetryCount((prev) => prev + 1);\n // Don't set loading to false, will retry\n return;\n }\n console.warn(\"[useWorkflowDefinitions] Max retries reached\");\n }\n console.error(\"[useWorkflowDefinitions] Error:\", err);\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n },\n [inputKey, retryCount],\n );\n\n // Initial fetch and retry on store reset\n useEffect(() => {\n fetchData(retryCount > 0);\n }, [fetchData, retryCount]);\n\n // Retry with delay when retryCount increases\n useEffect(() => {\n if (retryCount > 0 && retryCount <= 3) {\n const timer = setTimeout(() => {\n fetchData(true);\n }, 500 * retryCount); // Exponential backoff: 500ms, 1000ms, 1500ms\n return () => clearTimeout(timer);\n }\n }, [retryCount, fetchData]);\n\n // Build workflowKey -> tag assignments from the same list query so the list\n // page does not need a second workflowDefinitions request just for tags.\n const tagsByKey = useMemo(() => {\n const map: Record<string, EntityTagAssignment[]> = {};\n for (const workflow of workflows) {\n const assignments = workflow.tagAssignments;\n if (assignments && assignments.length > 0 && !map[workflow.workflowKey]) {\n map[workflow.workflowKey] = assignments as EntityTagAssignment[];\n }\n }\n return map;\n }, [workflows]);\n\n return {\n workflows,\n total,\n hasMore,\n loading,\n error,\n tagsByKey,\n refetch: () => fetchData(false),\n };\n}\n\n/**\n * Hook to fetch a single workflow definition\n */\nexport function useWorkflowDefinition(workflowKey?: string, id?: string) {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!workflowKey && !id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id },\n fetchPolicy: \"cache-first\",\n });\n setWorkflow(result.data?.workflowDefinition ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [workflowKey, id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n workflow,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Lazy hook to fetch workflow definition on demand\n */\nexport function useLazyWorkflowDefinition() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const getWorkflow = useCallback(\n async (workflowKey?: string, id?: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id, ...(version ? { version } : {}) },\n fetchPolicy: \"network-only\",\n });\n const data = result.data?.workflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n getWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to fetch workflow versions\n */\nexport function useWorkflowVersions(workflowKey: string) {\n const [versions, setVersions] = useState<WorkflowDefinition[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async (): Promise<WorkflowDefinition[]> => {\n if (!workflowKey) {\n setLoading(false);\n return [];\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowVersionsData>({\n query: WORKFLOW_VERSIONS,\n variables: { workflowKey },\n fetchPolicy: \"network-only\",\n });\n const fetched = result.data?.workflowVersions ?? [];\n setVersions(fetched);\n return fetched;\n } catch (err) {\n setError(err as Error);\n return [];\n } finally {\n setLoading(false);\n }\n }, [workflowKey]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n versions,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Workflow Mutation Hooks\n// ============================================================================\n\ninterface CreateWorkflowData {\n createWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface UpdateWorkflowData {\n updateWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface CreateVersionData {\n createWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface DuplicateWorkflowData {\n duplicateWorkflow: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface TriggerWorkflowData {\n triggerWorkflow: {\n runId: string;\n workflowKey: string;\n version: string;\n triggerNodeId: string;\n status: string;\n };\n}\n\n/**\n * Hook to create a new workflow definition\n * Automatically adds productId and productName to context if configured\n */\nexport function useCreateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createWorkflow = useCallback(\n async (input: CreateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const config = getFluidGridsConfig();\n\n // Add productId to context for product-level isolation\n const inputWithProductContext = {\n ...input,\n context: {\n ...(input.context || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n ...(config.productName ? { productName: config.productName } : {}),\n },\n };\n\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<CreateWorkflowData>({\n mutation: CREATE_WORKFLOW_DEFINITION,\n variables: { input: inputWithProductContext },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = result.data?.createWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Import a portable workflow definition through the backend validation path.\n *\n * Unlike createWorkflow, this mutation validates node availability and returns\n * structured validation errors before creating a draft.\n */\nexport function useImportWorkflow() {\n const [result, setResult] = useState<\n ImportWorkflowMutation[\"importWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const importWorkflow = useCallback(async (input: ImportWorkflowInput) => {\n setLoading(true);\n setError(null);\n try {\n const config = getFluidGridsConfig();\n const inputWithProductContext: ImportWorkflowInput = {\n ...input,\n context: {\n ...(input.context || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n ...(config.productName ? { productName: config.productName } : {}),\n },\n };\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<ImportWorkflowMutation>({\n mutation: IMPORT_WORKFLOW,\n variables: { input: inputWithProductContext },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.importWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return {\n importWorkflow,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to update a workflow definition\n */\nexport function useUpdateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const updateWorkflow = useCallback(\n async (id: string, input: UpdateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<UpdateWorkflowData>({\n mutation: UPDATE_WORKFLOW_DEFINITION,\n variables: { id, input },\n }),\n );\n const data = result.data?.updateWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n updateWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to create a new workflow version\n */\nexport function useCreateWorkflowVersion() {\n const [result, setResult] = useState<\n CreateVersionData[\"createWorkflowVersion\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createVersion = useCallback(\n async (\n workflowKey: string,\n input: { version: string; definitionJson: unknown; description?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<CreateVersionData>({\n mutation: CREATE_WORKFLOW_VERSION,\n variables: { workflowKey, input },\n }),\n );\n const data = response.data?.createWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to delete a workflow definition.\n * - If version is provided: deletes that specific version only.\n * - If version is omitted: deletes ALL versions for the workflowKey (removes the entire workflow).\n */\nexport function useDeleteWorkflow() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const deleteWorkflow = useCallback(\n async (workflowKey: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate({\n mutation: DELETE_WORKFLOW_DEFINITION,\n variables: { workflowKey, ...(version ? { version } : {}) },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n return (\n (result.data as { deleteWorkflowDefinition?: boolean })\n ?.deleteWorkflowDefinition ?? false\n );\n } catch (err) {\n setError(err as Error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n deleteWorkflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to duplicate a workflow\n */\nexport function useDuplicateWorkflow() {\n const [result, setResult] = useState<\n DuplicateWorkflowData[\"duplicateWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const duplicateWorkflow = useCallback(\n async (\n workflowKey: string,\n version: string,\n input: { newWorkflowKey: string; newVersion?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<DuplicateWorkflowData>({\n mutation: DUPLICATE_WORKFLOW,\n variables: { workflowKey, version, input },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.duplicateWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n // Re-thrown (not swallowed) so callers can inspect the real error —\n // e.g. isQuotaExhaustedError(err.cause) — instead of only ever\n // seeing a generic \"Failed to duplicate workflow\" message. Every\n // existing caller already wraps this call in its own try/catch.\n setError(err as Error);\n throw err;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n duplicateWorkflow,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to restore a previous workflow version (creates a new DRAFT from the old version's definitionJson)\n */\nexport function useRestoreWorkflowVersion() {\n const [result, setResult] = useState<{\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n } | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const restoreVersion = useCallback(\n async (workflowKey: string, version: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<{\n restoreWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n }>({\n mutation: RESTORE_WORKFLOW_VERSION,\n variables: { workflowKey, version },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.restoreWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n restoreVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to trigger a workflow execution\n */\nexport function useTriggerWorkflow() {\n const [result, setResult] = useState<\n TriggerWorkflowData[\"triggerWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const triggerWorkflow = useCallback(async (input: TriggerWorkflowInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<TriggerWorkflowData>({\n mutation: TRIGGER_WORKFLOW,\n variables: { input },\n }),\n );\n const data = response.data?.triggerWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return {\n triggerWorkflow,\n result,\n loading,\n error,\n };\n}\n\n// ============================================================================\n// Workflow Runs Hooks\n// ============================================================================\n\ninterface WorkflowRunsData {\n workflowRuns: {\n items: unknown[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowRunData {\n workflowRun: unknown;\n}\n\n/**\n * Hook to fetch workflow runs\n */\nexport function useWorkflowRuns(\n input: {\n workflowKey?: string;\n status?: string;\n limit?: number;\n offset?: number;\n } = {},\n) {\n const [runs, setRuns] = useState<unknown[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunsData>({\n query: WORKFLOW_RUNS,\n variables: { input },\n fetchPolicy: \"cache-first\",\n });\n setRuns(result.data?.workflowRuns?.items ?? []);\n setTotal(result.data?.workflowRuns?.total ?? 0);\n setHasMore(result.data?.workflowRuns?.hasMore ?? false);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [input]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n runs,\n total,\n hasMore,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Hook to fetch a single workflow run with node states\n */\nexport function useWorkflowRun(id: string) {\n const [run, setRun] = useState<unknown>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunData>({\n query: WORKFLOW_RUN,\n variables: { id },\n fetchPolicy: \"cache-first\",\n });\n setRun(result.data?.workflowRun ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n run,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Dashboard Hook\n// ============================================================================\n\ninterface DashboardSummaryData {\n dashboardSummary: {\n workflowsCount: number;\n activeWorkflowsCount: number;\n archivedWorkflowsCount: number;\n runsCountTotal: number;\n runsCompletedCount: number;\n runsFailedCount: number;\n runsRunningCount: number;\n runsPendingCount: number;\n workflowSuccessRate: number;\n nodeUsageStats: unknown[];\n recentRuns: unknown[];\n recentWorkflows: unknown[];\n };\n}\n\n/**\n * Hook to fetch dashboard summary\n */\nexport function useDashboardSummary(\n options: { workspaceId?: string; tenantId?: string; projectId?: string } = {},\n) {\n const [summary, setSummary] = useState<\n DashboardSummaryData[\"dashboardSummary\"] | null\n >(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<DashboardSummaryData>({\n query: DASHBOARD_SUMMARY,\n variables: options,\n fetchPolicy: \"cache-first\",\n });\n setSummary(result.data?.dashboardSummary ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [options]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n summary,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Activate / Deactivate Workflow Hooks\n// ============================================================================\n\nconst ACTIVATE_WORKFLOW_DEFINITION = ActivateWorkflowDefinitionDocument;\nconst DEACTIVATE_WORKFLOW_DEFINITION = DeactivateWorkflowDefinitionDocument;\n\n/**\n * Hook to activate a workflow definition (set status to ACTIVE)\n */\nexport function useActivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const activateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<ActivateWorkflowDefinitionMutation>({\n mutation: ACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n // Activation changes sibling versions' statuses too (previous\n // ACTIVE becomes ARCHIVED) — refresh the version list everywhere.\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.activateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error activating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { activateWorkflow, loading };\n}\n\n/**\n * Hook to deactivate a workflow definition (set status back to DRAFT)\n */\nexport function useDeactivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const deactivateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<DeactivateWorkflowDefinitionMutation>({\n mutation: DEACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.deactivateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error deactivating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { deactivateWorkflow, loading };\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useWorkflows.ts"],"names":[],"mappings":"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","file":"chunk-XBIHI224.js","sourcesContent":["import { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { getFluidGridsClient } from \"../graphql/client\";\nimport { getFluidGridsConfig } from \"../config\";\nimport {\n WorkflowDefinitionsDocument,\n WorkflowDefinitionDocument,\n WorkflowVersionsDocument,\n CreateWorkflowDefinitionDocument,\n UpdateWorkflowDefinitionDocument,\n CreateWorkflowVersionDocument,\n DeleteWorkflowDefinitionDocument,\n DuplicateWorkflowDocument,\n TriggerWorkflowDocument,\n WorkflowRunsDocument,\n WorkflowRunDocument,\n DashboardSummaryDocument,\n RestoreWorkflowVersionDocument,\n ActivateWorkflowDefinitionDocument,\n DeactivateWorkflowDefinitionDocument,\n ImportWorkflowDocument,\n} from \"../generated/operations\";\nimport type {\n ActivateWorkflowDefinitionMutation,\n DeactivateWorkflowDefinitionMutation,\n ImportWorkflowMutation,\n} from \"../generated/operations\";\nimport type {\n WorkflowDefinition,\n ListWorkflowDefinitionsInput,\n CreateWorkflowDefinitionInput,\n UpdateWorkflowDefinitionInput,\n TriggerWorkflowInput,\n ImportWorkflowInput,\n} from \"../generated/graphql-types\";\n\nimport { throwIfResultError } from \"../graphql/errors\";\nimport type { EntityTagAssignment } from \"./useEntityTags\";\n\n// Alias for backward compatibility\nconst WORKFLOW_DEFINITIONS = WorkflowDefinitionsDocument;\nconst WORKFLOW_DEFINITION = WorkflowDefinitionDocument;\nconst WORKFLOW_VERSIONS = WorkflowVersionsDocument;\nconst CREATE_WORKFLOW_DEFINITION = CreateWorkflowDefinitionDocument;\nconst UPDATE_WORKFLOW_DEFINITION = UpdateWorkflowDefinitionDocument;\nconst CREATE_WORKFLOW_VERSION = CreateWorkflowVersionDocument;\nconst DELETE_WORKFLOW_DEFINITION = DeleteWorkflowDefinitionDocument;\nconst DUPLICATE_WORKFLOW = DuplicateWorkflowDocument;\nconst TRIGGER_WORKFLOW = TriggerWorkflowDocument;\nconst WORKFLOW_RUNS = WorkflowRunsDocument;\nconst WORKFLOW_RUN = WorkflowRunDocument;\nconst DASHBOARD_SUMMARY = DashboardSummaryDocument;\nconst RESTORE_WORKFLOW_VERSION = RestoreWorkflowVersionDocument;\nconst IMPORT_WORKFLOW = ImportWorkflowDocument;\n\n// ============================================================================\n// Workflow Definition Hooks\n// ============================================================================\n\ninterface WorkflowDefinitionsData {\n workflowDefinitions: {\n items: WorkflowDefinition[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowDefinitionData {\n workflowDefinition: WorkflowDefinition | null;\n}\n\ninterface WorkflowVersionsData {\n workflowVersions: WorkflowDefinition[];\n}\n\n/**\n * Check if an error is Apollo's \"Store reset while query was in flight\" error (error 89)\n * This happens when the shell's MultiGatewayProvider cleans up during re-renders\n */\nfunction isStoreResetError(err: unknown): boolean {\n if (err instanceof Error) {\n // Check for error 89 in the message URL or error text\n return (\n err.message.includes(\"message%22%3A89\") ||\n err.message.includes(\"Store reset while query was in flight\")\n );\n }\n return false;\n}\n\n/**\n * Hook to fetch list of workflow definitions\n * Uses Apollo Client with the WORKFLOW_DEFINITIONS query\n * Automatically filters by productId if configured\n */\nexport function useWorkflowDefinitions(\n input: ListWorkflowDefinitionsInput = {},\n) {\n const [workflows, setWorkflows] = useState<WorkflowDefinition[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [retryCount, setRetryCount] = useState(0);\n\n // Add productId filter if configured\n const config = getFluidGridsConfig();\n const inputWithProductFilter = {\n ...input,\n customFilters: {\n ...(input.customFilters || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n },\n };\n\n // Stringify input to use as stable dependency\n const inputKey = JSON.stringify(inputWithProductFilter);\n\n const fetchData = useCallback(\n async (isRetry = false) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionsData>({\n query: WORKFLOW_DEFINITIONS,\n variables: { input: JSON.parse(inputKey) },\n fetchPolicy: \"network-only\",\n });\n setWorkflows(result.data?.workflowDefinitions?.items ?? []);\n setTotal(result.data?.workflowDefinitions?.total ?? 0);\n setHasMore(result.data?.workflowDefinitions?.hasMore ?? false);\n // Reset retry count on success\n if (isRetry) setRetryCount(0);\n } catch (err) {\n // Handle Apollo error 89 \"Store reset while query was in flight\"\n // This occurs when shell's MultiGatewayProvider cleans up during re-renders\n // Retry after a short delay to allow client to stabilize\n if (isStoreResetError(err)) {\n console.warn(\n \"[useWorkflowDefinitions] Store reset error - will retry\",\n );\n if (retryCount < 3) {\n setRetryCount((prev) => prev + 1);\n // Don't set loading to false, will retry\n return;\n }\n console.warn(\"[useWorkflowDefinitions] Max retries reached\");\n }\n console.error(\"[useWorkflowDefinitions] Error:\", err);\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n },\n [inputKey, retryCount],\n );\n\n // Initial fetch and retry on store reset\n useEffect(() => {\n fetchData(retryCount > 0);\n }, [fetchData, retryCount]);\n\n // Retry with delay when retryCount increases\n useEffect(() => {\n if (retryCount > 0 && retryCount <= 3) {\n const timer = setTimeout(() => {\n fetchData(true);\n }, 500 * retryCount); // Exponential backoff: 500ms, 1000ms, 1500ms\n return () => clearTimeout(timer);\n }\n }, [retryCount, fetchData]);\n\n // Build workflowKey -> tag assignments from the same list query so the list\n // page does not need a second workflowDefinitions request just for tags.\n const tagsByKey = useMemo(() => {\n const map: Record<string, EntityTagAssignment[]> = {};\n for (const workflow of workflows) {\n const assignments = workflow.tagAssignments;\n if (assignments && assignments.length > 0 && !map[workflow.workflowKey]) {\n map[workflow.workflowKey] = assignments as EntityTagAssignment[];\n }\n }\n return map;\n }, [workflows]);\n\n return {\n workflows,\n total,\n hasMore,\n loading,\n error,\n tagsByKey,\n refetch: () => fetchData(false),\n };\n}\n\n/**\n * Hook to fetch a single workflow definition\n */\nexport function useWorkflowDefinition(workflowKey?: string, id?: string) {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!workflowKey && !id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id },\n fetchPolicy: \"cache-first\",\n });\n setWorkflow(result.data?.workflowDefinition ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [workflowKey, id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n workflow,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Lazy hook to fetch workflow definition on demand\n */\nexport function useLazyWorkflowDefinition() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const getWorkflow = useCallback(\n async (workflowKey?: string, id?: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowDefinitionData>({\n query: WORKFLOW_DEFINITION,\n variables: { workflowKey, id, ...(version ? { version } : {}) },\n fetchPolicy: \"network-only\",\n });\n const data = result.data?.workflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n getWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to fetch workflow versions\n */\nexport function useWorkflowVersions(workflowKey: string) {\n const [versions, setVersions] = useState<WorkflowDefinition[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async (): Promise<WorkflowDefinition[]> => {\n if (!workflowKey) {\n setLoading(false);\n return [];\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowVersionsData>({\n query: WORKFLOW_VERSIONS,\n variables: { workflowKey },\n fetchPolicy: \"network-only\",\n });\n const fetched = result.data?.workflowVersions ?? [];\n setVersions(fetched);\n return fetched;\n } catch (err) {\n setError(err as Error);\n return [];\n } finally {\n setLoading(false);\n }\n }, [workflowKey]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n versions,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Workflow Mutation Hooks\n// ============================================================================\n\ninterface CreateWorkflowData {\n createWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface UpdateWorkflowData {\n updateWorkflowDefinition: WorkflowDefinition;\n}\n\ninterface CreateVersionData {\n createWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface DuplicateWorkflowData {\n duplicateWorkflow: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n}\n\ninterface TriggerWorkflowData {\n triggerWorkflow: {\n runId: string;\n workflowKey: string;\n version: string;\n triggerNodeId: string;\n status: string;\n };\n}\n\n/**\n * Hook to create a new workflow definition\n * Automatically adds productId and productName to context if configured\n */\nexport function useCreateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createWorkflow = useCallback(\n async (input: CreateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const config = getFluidGridsConfig();\n\n // Add productId to context for product-level isolation\n const inputWithProductContext = {\n ...input,\n context: {\n ...(input.context || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n ...(config.productName ? { productName: config.productName } : {}),\n },\n };\n\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<CreateWorkflowData>({\n mutation: CREATE_WORKFLOW_DEFINITION,\n variables: { input: inputWithProductContext },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = result.data?.createWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Import a portable workflow definition through the backend validation path.\n *\n * Unlike createWorkflow, this mutation validates node availability and returns\n * structured validation errors before creating a draft.\n */\nexport function useImportWorkflow() {\n const [result, setResult] = useState<\n ImportWorkflowMutation[\"importWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const importWorkflow = useCallback(async (input: ImportWorkflowInput) => {\n setLoading(true);\n setError(null);\n try {\n const config = getFluidGridsConfig();\n const inputWithProductContext: ImportWorkflowInput = {\n ...input,\n context: {\n ...(input.context || {}),\n ...(config.productId ? { productId: config.productId } : {}),\n ...(config.productName ? { productName: config.productName } : {}),\n },\n };\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<ImportWorkflowMutation>({\n mutation: IMPORT_WORKFLOW,\n variables: { input: inputWithProductContext },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.importWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return {\n importWorkflow,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to update a workflow definition\n */\nexport function useUpdateWorkflow() {\n const [workflow, setWorkflow] = useState<WorkflowDefinition | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const updateWorkflow = useCallback(\n async (id: string, input: UpdateWorkflowDefinitionInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<UpdateWorkflowData>({\n mutation: UPDATE_WORKFLOW_DEFINITION,\n variables: { id, input },\n }),\n );\n const data = result.data?.updateWorkflowDefinition ?? null;\n setWorkflow(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n updateWorkflow,\n workflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to create a new workflow version\n */\nexport function useCreateWorkflowVersion() {\n const [result, setResult] = useState<\n CreateVersionData[\"createWorkflowVersion\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const createVersion = useCallback(\n async (\n workflowKey: string,\n input: { version: string; definitionJson: unknown; description?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<CreateVersionData>({\n mutation: CREATE_WORKFLOW_VERSION,\n variables: { workflowKey, input },\n }),\n );\n const data = response.data?.createWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n createVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to delete a workflow definition.\n * - If version is provided: deletes that specific version only.\n * - If version is omitted: deletes ALL versions for the workflowKey (removes the entire workflow).\n */\nexport function useDeleteWorkflow() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const deleteWorkflow = useCallback(\n async (workflowKey: string, version?: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate({\n mutation: DELETE_WORKFLOW_DEFINITION,\n variables: { workflowKey, ...(version ? { version } : {}) },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n return (\n (result.data as { deleteWorkflowDefinition?: boolean })\n ?.deleteWorkflowDefinition ?? false\n );\n } catch (err) {\n setError(err as Error);\n return false;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n deleteWorkflow,\n loading,\n error,\n };\n}\n\n/**\n * Hook to duplicate a workflow\n */\nexport function useDuplicateWorkflow() {\n const [result, setResult] = useState<\n DuplicateWorkflowData[\"duplicateWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const duplicateWorkflow = useCallback(\n async (\n workflowKey: string,\n version: string,\n input: { newWorkflowKey: string; newVersion?: string },\n ) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<DuplicateWorkflowData>({\n mutation: DUPLICATE_WORKFLOW,\n variables: { workflowKey, version, input },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.duplicateWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n // Re-thrown (not swallowed) so callers can inspect the real error —\n // e.g. isQuotaExhaustedError(err.cause) — instead of only ever\n // seeing a generic \"Failed to duplicate workflow\" message. Every\n // existing caller already wraps this call in its own try/catch.\n setError(err as Error);\n throw err;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n duplicateWorkflow,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to restore a previous workflow version (creates a new DRAFT from the old version's definitionJson)\n */\nexport function useRestoreWorkflowVersion() {\n const [result, setResult] = useState<{\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n } | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const restoreVersion = useCallback(\n async (workflowKey: string, version: string) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<{\n restoreWorkflowVersion: {\n success: boolean;\n message?: string;\n workflow?: WorkflowDefinition;\n };\n }>({\n mutation: RESTORE_WORKFLOW_VERSION,\n variables: { workflowKey, version },\n refetchQueries: [\"WorkflowDefinitions\"],\n }),\n );\n const data = response.data?.restoreWorkflowVersion ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n return {\n restoreVersion,\n result,\n loading,\n error,\n };\n}\n\n/**\n * Hook to trigger a workflow execution\n */\nexport function useTriggerWorkflow() {\n const [result, setResult] = useState<\n TriggerWorkflowData[\"triggerWorkflow\"] | null\n >(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const triggerWorkflow = useCallback(async (input: TriggerWorkflowInput) => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const response = throwIfResultError(\n await client.mutate<TriggerWorkflowData>({\n mutation: TRIGGER_WORKFLOW,\n variables: { input },\n }),\n );\n const data = response.data?.triggerWorkflow ?? null;\n setResult(data);\n return data;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return {\n triggerWorkflow,\n result,\n loading,\n error,\n };\n}\n\n// ============================================================================\n// Workflow Runs Hooks\n// ============================================================================\n\ninterface WorkflowRunsData {\n workflowRuns: {\n items: unknown[];\n total: number;\n hasMore: boolean;\n };\n}\n\ninterface WorkflowRunData {\n workflowRun: unknown;\n}\n\n/**\n * Hook to fetch workflow runs\n */\nexport function useWorkflowRuns(\n input: {\n workflowKey?: string;\n status?: string;\n limit?: number;\n offset?: number;\n } = {},\n) {\n const [runs, setRuns] = useState<unknown[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunsData>({\n query: WORKFLOW_RUNS,\n variables: { input },\n fetchPolicy: \"cache-first\",\n });\n setRuns(result.data?.workflowRuns?.items ?? []);\n setTotal(result.data?.workflowRuns?.total ?? 0);\n setHasMore(result.data?.workflowRuns?.hasMore ?? false);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [input]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n runs,\n total,\n hasMore,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n/**\n * Hook to fetch a single workflow run with node states\n */\nexport function useWorkflowRun(id: string) {\n const [run, setRun] = useState<unknown>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n if (!id) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<WorkflowRunData>({\n query: WORKFLOW_RUN,\n variables: { id },\n fetchPolicy: \"cache-first\",\n });\n setRun(result.data?.workflowRun ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n run,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Dashboard Hook\n// ============================================================================\n\ninterface DashboardSummaryData {\n dashboardSummary: {\n workflowsCount: number;\n activeWorkflowsCount: number;\n archivedWorkflowsCount: number;\n runsCountTotal: number;\n runsCompletedCount: number;\n runsFailedCount: number;\n runsRunningCount: number;\n runsPendingCount: number;\n workflowSuccessRate: number;\n nodeUsageStats: unknown[];\n recentRuns: unknown[];\n recentWorkflows: unknown[];\n };\n}\n\n/**\n * Hook to fetch dashboard summary\n */\nexport function useDashboardSummary(\n options: { workspaceId?: string; tenantId?: string; projectId?: string } = {},\n) {\n const [summary, setSummary] = useState<\n DashboardSummaryData[\"dashboardSummary\"] | null\n >(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const client = getFluidGridsClient();\n const result = await client.query<DashboardSummaryData>({\n query: DASHBOARD_SUMMARY,\n variables: options,\n fetchPolicy: \"cache-first\",\n });\n setSummary(result.data?.dashboardSummary ?? null);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [options]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n return {\n summary,\n loading,\n error,\n refetch: fetchData,\n };\n}\n\n// ============================================================================\n// Activate / Deactivate Workflow Hooks\n// ============================================================================\n\nconst ACTIVATE_WORKFLOW_DEFINITION = ActivateWorkflowDefinitionDocument;\nconst DEACTIVATE_WORKFLOW_DEFINITION = DeactivateWorkflowDefinitionDocument;\n\n/**\n * Hook to activate a workflow definition (set status to ACTIVE)\n */\nexport function useActivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const activateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<ActivateWorkflowDefinitionMutation>({\n mutation: ACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n // Activation changes sibling versions' statuses too (previous\n // ACTIVE becomes ARCHIVED) — refresh the version list everywhere.\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.activateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error activating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { activateWorkflow, loading };\n}\n\n/**\n * Hook to deactivate a workflow definition (set status back to DRAFT)\n */\nexport function useDeactivateWorkflow() {\n const [loading, setLoading] = useState(false);\n\n const deactivateWorkflow = useCallback(async (id: string) => {\n setLoading(true);\n try {\n const client = getFluidGridsClient();\n const result = throwIfResultError(\n await client.mutate<DeactivateWorkflowDefinitionMutation>({\n mutation: DEACTIVATE_WORKFLOW_DEFINITION,\n variables: { id },\n refetchQueries: [\"WorkflowVersions\", \"WorkflowDefinitions\"],\n }),\n );\n return result.data?.deactivateWorkflowDefinition ?? null;\n } catch (err) {\n console.error(\"Error deactivating workflow:\", err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { deactivateWorkflow, loading };\n}\n"]}