@burdenoff/fluidgrids-fe-sdk 2026.1113.1 → 2026.1113.2

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 (127) hide show
  1. package/dist/{AiStudioPage-D3MAk-bs.js → AiStudioPage-5KYZ8r8-.js} +464 -7
  2. package/dist/{ApprovalInboxPage-Bb8H9ruw.js → ApprovalInboxPage-BsJX4osU.js} +4 -3
  3. package/dist/{ConnectionFormDialog-Bg9_OdHX.js → ConnectionFormDialog-Dr1-CTan.js} +2 -1
  4. package/dist/CreateFluidgridsTagDocument-Dtp9KPLJ.js +1055 -0
  5. package/dist/{DataSinkDashboardPage-Dc2QuJbL.js → DataSinkDashboardPage-8ZDn85e2.js} +1 -1
  6. package/dist/{DataTablesPage-Cv4veaKK.js → DataTablesPage-BBvABuxE.js} +5 -4
  7. package/dist/{EntityTagPicker-D8ws706D.js → EntityTagPicker-BppBSEJk.js} +2 -2
  8. package/dist/{ExecutionDetailPage-CTVGE-d-.js → ExecutionDetailPage-BXDF2eoT.js} +1444 -18
  9. package/dist/ExecutionsListDocument-CzdLPpj5.js +1259 -0
  10. package/dist/{ExecutionsListPage-J0sJPuoM.js → ExecutionsListPage--4BthM8L.js} +285 -11
  11. package/dist/FailureTriagePanel-B5WCSRFo.js +1252 -0
  12. package/dist/{FluidGridsProvider-C4FVNz0n.js → FluidGridsProvider-Dc_Jhtch.js} +8666 -8734
  13. package/dist/{HistoryPage-B9XcTPrO.js → HistoryPage-BvFk2m1m.js} +4 -3
  14. package/dist/{InsightsPage-DFOltjyj.js → InsightsPage-Dwmb02F6.js} +2682 -5
  15. package/dist/{MissingNodesInstallModal-D8H-YNCJ.js → MissingNodesInstallModal-Cze674hp.js} +2 -2
  16. package/dist/{NodesPage-YQ-hP60x.js → NodesPage-C5Dq-ru-.js} +3 -2
  17. package/dist/{OpenTemplateAsCodeButton-hH26HQCk.js → OpenTemplateAsCodeButton-8MZHih6I.js} +2 -2
  18. package/dist/{PaidTemplateConfirm-DoKWMBtR.js → PaidTemplateConfirm-0G-gv29n.js} +1 -1
  19. package/dist/{PublishCustomNodeAction-5XXnSA3H.js → PublishCustomNodeAction-OOY35dUv.js} +1 -1
  20. package/dist/QuotaExhaustedDialog-wvu_-WJ-.js +55 -0
  21. package/dist/{RunnerStatusPill-Ctg4TJcP.js → RunnerStatusPill-Bh7mEsPh.js} +2 -1
  22. package/dist/{RunnersPage-CAt4YDhB.js → RunnersPage-DHeuUDil.js} +2 -2
  23. package/dist/{SettingsPage-DEKPCVVP.js → SettingsPage-CfjXiGpb.js} +694 -14
  24. package/dist/{TagFilterSelect-CwM2-DU6.js → TagFilterSelect-CAShgvbS.js} +1 -1
  25. package/dist/{TaskQueuesPage-Dhi6SIT4.js → TaskQueuesPage--Mmn36b-.js} +3 -3
  26. package/dist/{TemplateCard-DVSd_4zJ.js → TemplateCard-BA_9em22.js} +644 -352
  27. package/dist/{TemplateConfigurationModal-BKi1z7z7.js → TemplateConfigurationModal-BT3PaR0O.js} +4 -3
  28. package/dist/{TemplateDetailPanel-DK1gF7P5.js → TemplateDetailPanel-BxFNnlXm.js} +2 -1
  29. package/dist/{TemplatePreview-DuSX2Q7H.js → TemplatePreview-Bagja6WN.js} +7 -7
  30. package/dist/{TemplatesPage-CAWHh61l.js → TemplatesPage-CAajpJ5w.js} +711 -6
  31. package/dist/{VariablesPage-D7CoatWf.js → VariablesPage-CgUBKhAe.js} +3 -3
  32. package/dist/{VersionDiffDialog-DGwysiyE.js → VersionDiffDialog-D9W5Fm56.js} +233 -129
  33. package/dist/VersionLifecycleBar-DuphLOT0.js +131 -0
  34. package/dist/{WorkflowBuilder-DAeoQi5E.js → WorkflowBuilder-DMpSPElu.js} +16 -13
  35. package/dist/{WorkflowBuilder-BJgqDboZ.js → WorkflowBuilder-v8h8skwG.js} +5 -5
  36. package/dist/WorkflowDefinitionDocument-DZLbTPUZ.js +321 -0
  37. package/dist/WorkflowEditLeaseStatusDocument-Dp62med3.js +627 -0
  38. package/dist/WorkflowProposalCard-zCdUpCk8.js +249 -0
  39. package/dist/WorkflowProposalDocument-BdUbsrd0.js +620 -0
  40. package/dist/{WorkflowSearchRedirect-CMEvd_AR.js → WorkflowSearchRedirect-G78lINAE.js} +1 -1
  41. package/dist/{WorkflowShareDialog-BgHRsDP0.js → WorkflowShareDialog-B7VOgr4-.js} +304 -3
  42. package/dist/WorkflowVersionsDocument-CfPMloRW.js +3195 -0
  43. package/dist/{WorkflowsList-CcQPxWKL.js → WorkflowsList-CPYzfE4K.js} +11 -9
  44. package/dist/agent-form-D0uLvzx4.js +718 -0
  45. package/dist/{agentTools-DKpNKztf.js → agentTools-DTXUqtfu.js} +4 -4
  46. package/dist/api-BZVyX5d2.js +2286 -0
  47. package/dist/api-BqA-f-AD.js +8064 -0
  48. package/dist/app-BJUvugPM.js +3813 -0
  49. package/dist/assert-rules-CPNrO44K.js +318 -0
  50. package/dist/attach-node-helpers-CNsYtLOR.js +32 -0
  51. package/dist/badge-CXfPhoMH.js +26 -0
  52. package/dist/{canvasNoteTools-C_AN79m0.js → canvasNoteTools-DmfZwtnL.js} +3 -3
  53. package/dist/{channel-CZ70oI81.js → channel-DtF1n_ab.js} +1 -1
  54. package/dist/client-Ctl4jmY3.js +127 -0
  55. package/dist/code-editor-diagnostics-Zr0cIcx1.js +46 -0
  56. package/dist/{code-editor-field-Dt6KNWwN.js → code-editor-field-Cv907s3W.js} +2 -2
  57. package/dist/{codec-client-CJ95Rmqo.js → codec-client-CAYl6j46.js} +2 -1
  58. package/dist/conditionBuilder-D8aLGL1w.js +1134 -0
  59. package/dist/config-X97zrIvn.js +600 -0
  60. package/dist/{definition-canvas-Bshn_dSP.js → definition-canvas-DL25_6NH.js} +1 -1
  61. package/dist/{dialog-Cjb4lB4D.js → dialog-BVd152GS.js} +3 -14
  62. package/dist/durable-nodes-DXCCQYWD.js +81 -0
  63. package/dist/errors-xPZ-IbQd.js +142 -0
  64. package/dist/executions.js +2 -2
  65. package/dist/{flow-builder-D3Hl2AFk.js → flow-builder-Dv5fWJ6F.js} +9301 -8189
  66. package/dist/{node-registry-refresh-Dy0uRg9f.js → global-client-DP_Wxe5t.js} +2 -27
  67. package/dist/global-operations-7pvXw_j9.js +145 -0
  68. package/dist/history.js +1 -1
  69. package/dist/{index-CWcP-tG1.d.ts → index-DtMUtXNq.d.ts} +247 -247
  70. package/dist/index.d.ts +1 -1
  71. package/dist/index.js +4403 -46
  72. package/dist/input-ChT6Q-Pr.js +17 -0
  73. package/dist/logs-panel-DtG93ocy.js +342 -0
  74. package/dist/mapping-colors-BIX_YeCQ.js +48 -0
  75. package/dist/{node-detail-view-bVLeYarT.js → node-detail-view-BKI_2kM6.js} +12 -11
  76. package/dist/{node-editor-tab-body-JHHVtQgR.js → node-editor-tab-body-Cc1MWEFR.js} +3 -3
  77. package/dist/{node-operation-selection-DAbS6jSY.js → node-operation-selection-Czeeb2D4.js} +2 -139
  78. package/dist/node-registry-refresh-s3okf83X.js +27 -0
  79. package/dist/nodes.js +1 -1
  80. package/dist/notesKey-5EaREBGA.js +12 -0
  81. package/dist/observability.d.ts +1 -1
  82. package/dist/observability.js +2 -2
  83. package/dist/{popover-Xx3gN7vg.js → popover-DDv7J1Kl.js} +717 -6
  84. package/dist/{quick-config-panel-BvVQXuIL.js → quick-config-panel-BPCRfqWI.js} +4 -4
  85. package/dist/read-only-context-Dt9N9SIG.js +18 -0
  86. package/dist/{schedule-panel-DCb40TPN.js → schedule-panel-C1KwfLCE.js} +14 -12
  87. package/dist/settings.js +1 -1
  88. package/dist/{shared-CMfn30xT.js → shared-Ctl9ZHo1.js} +2 -1
  89. package/dist/{sidebar-node-editor-DxCWFZG2.js → sidebar-node-editor-d9Rlq5pU.js} +4 -4
  90. package/dist/sticky-notes-23j-wL6Q.js +96 -0
  91. package/dist/template-code-dqRunGOv.js +184 -0
  92. package/dist/template-preview-C01KV277.js +29 -0
  93. package/dist/templates.js +2 -2
  94. package/dist/token-refresh-link-BjN7H4qA.js +291 -0
  95. package/dist/useAgentDefinitions-ZKX2N9aP.js +3101 -0
  96. package/dist/useConnections-BlB0gbOB.js +931 -0
  97. package/dist/useDurableParity-BgLH_SCF.js +2088 -0
  98. package/dist/{useEntityTags-Db4Pc8_M.js → useEntityTags-4iW6UTly.js} +227 -3
  99. package/dist/{useExecutions-DOpG1pUQ.js → useExecutions-Bm7q_UwN.js} +6 -3
  100. package/dist/useGlobalStoreClient-DMTrywdX.js +24 -0
  101. package/dist/{useHumanRequests-ZiR0sSzS.js → useHumanRequests-DwG2tQ3f.js} +2 -1
  102. package/dist/{useObservability-rQmwhoZZ.js → useObservability-DPATdbw7.js} +4 -2
  103. package/dist/{useRunHistory-COn6dl7l.js → useRunHistory-CGfjCsJ3.js} +1122 -4
  104. package/dist/{useVariables-2ddyJX4a.js → useVariables-DFdZofLQ.js} +2 -1
  105. package/dist/{useWorkflowCodeExport-ZoUJKRSK.js → useWorkflowCodeExport-D_mCuhKP.js} +289 -4
  106. package/dist/useWorkflowOrganization-r5FWNBs6.js +1690 -0
  107. package/dist/useWorkflowProposal-Bh2_qjmM.js +7478 -0
  108. package/dist/{useWorkflows-jOW60YmD.js → useWorkflows-aqVD7kGa.js} +694 -4
  109. package/dist/workflow-builder.js +5 -5
  110. package/dist/{workflow-code-transfer-l9wO34S0.js → workflow-code-transfer-5C0HUzae.js} +1 -53
  111. package/dist/workflow-host.js +4 -2
  112. package/dist/workflow-pages.d.ts +1 -1
  113. package/dist/workflow-pages.js +19 -19
  114. package/dist/workflow-preview.js +3 -2
  115. package/dist/workflows-list.js +1 -1
  116. package/package.json +1 -1
  117. package/dist/FailureTriagePanel-BbYFYeV_.js +0 -311
  118. package/dist/WorkflowProposalCard-DGMdZC4R.js +0 -1432
  119. package/dist/agent-form-Bfvm32j1.js +0 -83
  120. package/dist/api-DQtHXbIg.js +0 -224
  121. package/dist/api-MeAm6g7E.js +0 -55
  122. package/dist/client-C9XSzSXr.js +0 -1147
  123. package/dist/graphql-operation-types-C9qbvRa8.js +0 -53122
  124. package/dist/useAgentDefinitions-_hgNCK1A.js +0 -550
  125. package/dist/useConnections-Cs7LCWEM.js +0 -401
  126. package/dist/useDurableParity-CcLeCDfv.js +0 -504
  127. package/dist/useWorkflowOrganization-QxVePSkk.js +0 -282
@@ -2,12 +2,12 @@
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
4
4
  import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
5
- import { m as describeOperationError } from "./client-C9XSzSXr.js";
5
+ import { t as describeOperationError } from "./errors-xPZ-IbQd.js";
6
6
  import { t as ConfirmActionDialog } from "./ConfirmActionDialog-D9Pir3bc.js";
7
7
  import { t as Disclosure } from "./Disclosure-DQiUKrqd.js";
8
- import { a as useWorkflowProjects } from "./useWorkflowOrganization-QxVePSkk.js";
8
+ import { a as useWorkflowProjects } from "./useWorkflowOrganization-r5FWNBs6.js";
9
9
  import { i as SdkPermissionButton, t as FLUIDGRIDS_PERMISSIONS } from "./constants-dcxg6zG6.js";
10
- import { a as useSecretsProviderConfigs, c as useVariables, i as useSaveSecretsProviderConfig, n as useDeleteVariable, o as useTestSecretsProviderConnection, r as useRevealVariableValue, s as useUpdateVariable, t as useCreateVariable } from "./useVariables-2ddyJX4a.js";
10
+ import { a as useSecretsProviderConfigs, c as useVariables, i as useSaveSecretsProviderConfig, n as useDeleteVariable, o as useTestSecretsProviderConnection, r as useRevealVariableValue, s as useUpdateVariable, t as useCreateVariable } from "./useVariables-DFdZofLQ.js";
11
11
  import { useCallback, useEffect, useRef, useState } from "react";
12
12
  import { useNavigate } from "react-router";
13
13
  import { Icon } from "@iconify/react";
@@ -1,8 +1,11 @@
1
1
  "use client";
2
+ import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
2
3
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
- import { _ as throwIfResultError, m as describeOperationError, n as getFluidGridsClient } from "./client-C9XSzSXr.js";
4
- import { Ar as WorkflowDefinitionDocument, wi as WorkflowVersionDiffDocument } from "./graphql-operation-types-C9qbvRa8.js";
5
- import { t as canvasFromDefinition } from "./definition-canvas-Bshn_dSP.js";
4
+ import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
5
+ import { o as throwIfResultError, t as describeOperationError } from "./errors-xPZ-IbQd.js";
6
+ import { t as WorkflowDefinitionDocument } from "./WorkflowDefinitionDocument-DZLbTPUZ.js";
7
+ import { t as canvasFromDefinition } from "./definition-canvas-DL25_6NH.js";
8
+ import { a as lifecycleStageLabel, i as diffStatusLabel, n as DIFF_EDGE_STROKE, o as countLifecycle, r as DIFF_STATUS_CLASSES, s as lifecycleStageOf, t as VersionLifecycleBar } from "./VersionLifecycleBar-DuphLOT0.js";
6
9
  import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
7
10
  import { Background, Controls, Handle, MiniMap, Position, ReactFlow, ReactFlowProvider } from "@xyflow/react";
8
11
  import { cn } from "@burdenoff/fe-libs/utils";
@@ -11,6 +14,231 @@ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
11
14
  import "@xyflow/react/dist/style.css";
12
15
  import { ArrowLeftRight, Eye, Loader2, RotateCcw } from "lucide-react";
13
16
 
17
+ // src/generated/documents/wspace/WorkflowVersionDiffDocument.ts
18
+ const WorkflowVersionDiffDocument = {
19
+ "kind": "Document",
20
+ "definitions": [{
21
+ "kind": "OperationDefinition",
22
+ "operation": "query",
23
+ "name": {
24
+ "kind": "Name",
25
+ "value": "WorkflowVersionDiff"
26
+ },
27
+ "variableDefinitions": [
28
+ {
29
+ "kind": "VariableDefinition",
30
+ "variable": {
31
+ "kind": "Variable",
32
+ "name": {
33
+ "kind": "Name",
34
+ "value": "workflowKey"
35
+ }
36
+ },
37
+ "type": {
38
+ "kind": "NonNullType",
39
+ "type": {
40
+ "kind": "NamedType",
41
+ "name": {
42
+ "kind": "Name",
43
+ "value": "String"
44
+ }
45
+ }
46
+ },
47
+ "directives": []
48
+ },
49
+ {
50
+ "kind": "VariableDefinition",
51
+ "variable": {
52
+ "kind": "Variable",
53
+ "name": {
54
+ "kind": "Name",
55
+ "value": "fromVersion"
56
+ }
57
+ },
58
+ "type": {
59
+ "kind": "NonNullType",
60
+ "type": {
61
+ "kind": "NamedType",
62
+ "name": {
63
+ "kind": "Name",
64
+ "value": "String"
65
+ }
66
+ }
67
+ },
68
+ "directives": []
69
+ },
70
+ {
71
+ "kind": "VariableDefinition",
72
+ "variable": {
73
+ "kind": "Variable",
74
+ "name": {
75
+ "kind": "Name",
76
+ "value": "toVersion"
77
+ }
78
+ },
79
+ "type": {
80
+ "kind": "NonNullType",
81
+ "type": {
82
+ "kind": "NamedType",
83
+ "name": {
84
+ "kind": "Name",
85
+ "value": "String"
86
+ }
87
+ }
88
+ },
89
+ "directives": []
90
+ }
91
+ ],
92
+ "directives": [],
93
+ "selectionSet": {
94
+ "kind": "SelectionSet",
95
+ "selections": [{
96
+ "kind": "Field",
97
+ "name": {
98
+ "kind": "Name",
99
+ "value": "workflowVersionDiff"
100
+ },
101
+ "arguments": [
102
+ {
103
+ "kind": "Argument",
104
+ "name": {
105
+ "kind": "Name",
106
+ "value": "workflowKey"
107
+ },
108
+ "value": {
109
+ "kind": "Variable",
110
+ "name": {
111
+ "kind": "Name",
112
+ "value": "workflowKey"
113
+ }
114
+ }
115
+ },
116
+ {
117
+ "kind": "Argument",
118
+ "name": {
119
+ "kind": "Name",
120
+ "value": "fromVersion"
121
+ },
122
+ "value": {
123
+ "kind": "Variable",
124
+ "name": {
125
+ "kind": "Name",
126
+ "value": "fromVersion"
127
+ }
128
+ }
129
+ },
130
+ {
131
+ "kind": "Argument",
132
+ "name": {
133
+ "kind": "Name",
134
+ "value": "toVersion"
135
+ },
136
+ "value": {
137
+ "kind": "Variable",
138
+ "name": {
139
+ "kind": "Name",
140
+ "value": "toVersion"
141
+ }
142
+ }
143
+ }
144
+ ],
145
+ "directives": [],
146
+ "selectionSet": {
147
+ "kind": "SelectionSet",
148
+ "selections": [
149
+ {
150
+ "kind": "Field",
151
+ "name": {
152
+ "kind": "Name",
153
+ "value": "workflowKey"
154
+ },
155
+ "arguments": [],
156
+ "directives": []
157
+ },
158
+ {
159
+ "kind": "Field",
160
+ "name": {
161
+ "kind": "Name",
162
+ "value": "fromVersion"
163
+ },
164
+ "arguments": [],
165
+ "directives": []
166
+ },
167
+ {
168
+ "kind": "Field",
169
+ "name": {
170
+ "kind": "Name",
171
+ "value": "toVersion"
172
+ },
173
+ "arguments": [],
174
+ "directives": []
175
+ },
176
+ {
177
+ "kind": "Field",
178
+ "name": {
179
+ "kind": "Name",
180
+ "value": "truncated"
181
+ },
182
+ "arguments": [],
183
+ "directives": []
184
+ },
185
+ {
186
+ "kind": "Field",
187
+ "name": {
188
+ "kind": "Name",
189
+ "value": "entries"
190
+ },
191
+ "arguments": [],
192
+ "directives": [],
193
+ "selectionSet": {
194
+ "kind": "SelectionSet",
195
+ "selections": [
196
+ {
197
+ "kind": "Field",
198
+ "name": {
199
+ "kind": "Name",
200
+ "value": "path"
201
+ },
202
+ "arguments": [],
203
+ "directives": []
204
+ },
205
+ {
206
+ "kind": "Field",
207
+ "name": {
208
+ "kind": "Name",
209
+ "value": "kind"
210
+ },
211
+ "arguments": [],
212
+ "directives": []
213
+ },
214
+ {
215
+ "kind": "Field",
216
+ "name": {
217
+ "kind": "Name",
218
+ "value": "before"
219
+ },
220
+ "arguments": [],
221
+ "directives": []
222
+ },
223
+ {
224
+ "kind": "Field",
225
+ "name": {
226
+ "kind": "Name",
227
+ "value": "after"
228
+ },
229
+ "arguments": [],
230
+ "directives": []
231
+ }
232
+ ]
233
+ }
234
+ }
235
+ ]
236
+ }
237
+ }]
238
+ }
239
+ }]
240
+ };
241
+
14
242
  // src/modules/history/utils/version-graph-diff.ts
15
243
  /** Node keys that only describe how the canvas is drawn, never what runs. */
16
244
  const LAYOUT_NODE_KEYS = /* @__PURE__ */ new Set([
@@ -364,102 +592,6 @@ function useVersionComparison(workflowKey, fromVersion, toVersion) {
364
592
  };
365
593
  }
366
594
 
367
- // src/modules/history/utils/version-lifecycle.ts
368
- const LIFECYCLE_STAGES = [
369
- "DRAFT",
370
- "ACTIVE",
371
- "DEPRECATED",
372
- "ARCHIVED"
373
- ];
374
- /** The stage a stored status maps to; anything unknown reads as a draft. */
375
- function lifecycleStageOf(status) {
376
- const upper = (status ?? "").toUpperCase();
377
- return LIFECYCLE_STAGES.includes(upper) ? upper : "DRAFT";
378
- }
379
- /** Index of the stage on the bar (0 = Draft). */
380
- function lifecycleIndex(status) {
381
- return LIFECYCLE_STAGES.indexOf(lifecycleStageOf(status));
382
- }
383
- function countLifecycle(versions) {
384
- const counts = {
385
- DRAFT: 0,
386
- ACTIVE: 0,
387
- DEPRECATED: 0,
388
- ARCHIVED: 0
389
- };
390
- for (const version of versions) counts[lifecycleStageOf(version.status)] += 1;
391
- return counts;
392
- }
393
- /**
394
- * How each step of the bar is drawn for one version: the stages before its
395
- * own are done, its own is current, the rest are upcoming.
396
- */
397
- function lifecycleSteps(status) {
398
- const current = lifecycleIndex(status);
399
- return LIFECYCLE_STAGES.map((stage, index) => ({
400
- stage,
401
- state: index < current ? "done" : index === current ? "current" : "upcoming"
402
- }));
403
- }
404
- /**
405
- * The versions of one workflow from a cross-workflow row list, newest first
406
- * by creation time (the order `workflowVersions` returns).
407
- */
408
- function versionsOfWorkflow(rows, workflowKey) {
409
- const time = (value) => {
410
- const parsed = value ? new Date(value).getTime() : NaN;
411
- return Number.isNaN(parsed) ? 0 : parsed;
412
- };
413
- return rows.filter((row) => row.workflowKey === workflowKey).sort((a, b) => time(b.createdAt) - time(a.createdAt));
414
- }
415
-
416
- // src/modules/history/components/diff-styles.ts
417
- const DIFF_STATUS_CLASSES = {
418
- added: {
419
- card: "border-[var(--color-status-success-border)] bg-[var(--color-status-success-bg)]",
420
- chip: "border-[var(--color-status-success-border)] bg-[var(--color-status-success-bg)] text-[var(--color-status-success-text)]",
421
- text: "text-[var(--color-status-success-text)]"
422
- },
423
- removed: {
424
- card: "border-dashed border-[var(--color-status-error-border)] bg-[var(--color-status-error-bg)] opacity-80",
425
- chip: "border-[var(--color-status-error-border)] bg-[var(--color-status-error-bg)] text-[var(--color-status-error-text)]",
426
- text: "text-[var(--color-status-error-text)]"
427
- },
428
- modified: {
429
- card: "border-[var(--color-status-warning-border)] bg-[var(--color-status-warning-bg)]",
430
- chip: "border-[var(--color-status-warning-border)] bg-[var(--color-status-warning-bg)] text-[var(--color-status-warning-text)]",
431
- text: "text-[var(--color-status-warning-text)]"
432
- },
433
- unchanged: {
434
- card: "border-border bg-card",
435
- chip: "border-border bg-muted text-muted-foreground",
436
- text: "text-muted-foreground"
437
- }
438
- };
439
- /** Stroke for an edge of each status, as a CSS variable reference. */
440
- const DIFF_EDGE_STROKE = {
441
- added: "var(--color-status-success-text)",
442
- removed: "var(--color-status-error-text)",
443
- modified: "var(--color-status-warning-text)",
444
- unchanged: "var(--color-border-strong)"
445
- };
446
- function diffStatusLabel(tr, status) {
447
- switch (status) {
448
- case "added": return tr("fluidgrids.history.versionDiff.statusAdded", "Added");
449
- case "removed": return tr("fluidgrids.history.versionDiff.statusRemoved", "Removed");
450
- case "modified": return tr("fluidgrids.history.versionDiff.statusModified", "Modified");
451
- default: return tr("fluidgrids.history.versionDiff.statusUnchanged", "Unchanged");
452
- }
453
- }
454
- function lifecycleStageLabel(tr, stage) {
455
- switch (stage) {
456
- case "ACTIVE": return tr("fluidgrids.history.lifecycle.active", "Active");
457
- case "DEPRECATED": return tr("fluidgrids.history.lifecycle.deprecated", "Deprecated");
458
- case "ARCHIVED": return tr("fluidgrids.history.lifecycle.archived", "Archived");
459
- default: return tr("fluidgrids.history.lifecycle.draft", "Draft");
460
- }
461
- }
462
-
463
595
  // src/modules/history/components/diff-flow.ts
464
596
  /** The builder's names for a node's single default output and input. */
465
597
  const DEFAULT_HANDLES = /* @__PURE__ */ new Set(["source", "target"]);
@@ -1003,35 +1135,6 @@ function JsonLineDiffView({ before, after, fromVersion, toVersion }) {
1003
1135
  });
1004
1136
  }
1005
1137
 
1006
- // src/modules/history/components/VersionLifecycleBar.tsx
1007
- /**
1008
- * Draft → Active → Deprecated → Archived bar for one version (BOFF-4074,
1009
- * mock fg-23-version-history.png). With `counts`, each step also says how
1010
- * many versions of the workflow are at that stage.
1011
- */
1012
- function VersionLifecycleBar({ status, counts, className }) {
1013
- const tr = useTr();
1014
- const steps = lifecycleSteps(status);
1015
- return /* @__PURE__ */ jsx("ol", {
1016
- className: cn("flex w-full items-stretch gap-1", className),
1017
- "aria-label": tr("fluidgrids.history.lifecycle.ariaLabel", "Version lifecycle"),
1018
- "data-testid": "fluidgrids-version-lifecycle",
1019
- children: steps.map(({ stage, state }) => /* @__PURE__ */ jsxs("li", {
1020
- "aria-current": state === "current" ? "step" : void 0,
1021
- "data-stage": stage,
1022
- "data-state": state,
1023
- className: cn("flex min-w-0 flex-1 flex-col items-center rounded-md border px-1.5 py-1 text-center text-[11px] leading-tight", state === "current" && "border-primary bg-primary/10 font-semibold text-primary", state === "done" && "border-border bg-muted text-muted-foreground", state === "upcoming" && "border-dashed border-border text-muted-foreground"),
1024
- children: [/* @__PURE__ */ jsx("span", {
1025
- className: "truncate",
1026
- children: lifecycleStageLabel(tr, stage)
1027
- }), counts && /* @__PURE__ */ jsx("span", {
1028
- className: "text-[10px] font-normal tabular-nums",
1029
- children: counts[stage]
1030
- })]
1031
- }, stage))
1032
- });
1033
- }
1034
-
1035
1138
  // src/modules/history/components/VersionDiffDialog.tsx
1036
1139
  /**
1037
1140
  * Version diff dialog (BOFF-4074, mock fg-23-version-history.png): pick two
@@ -1042,6 +1145,7 @@ function VersionLifecycleBar({ status, counts, className }) {
1042
1145
  *
1043
1146
  * Used by the builder's Versions panel and by the Version History page.
1044
1147
  */
1148
+ var VersionDiffDialog_exports = /* @__PURE__ */ __exportAll({ VersionDiffDialog: () => VersionDiffDialog });
1045
1149
  function statusVariant(status) {
1046
1150
  switch (lifecycleStageOf(status)) {
1047
1151
  case "ACTIVE": return "default";
@@ -1312,4 +1416,4 @@ function VersionDiffDialog({ open, onOpenChange, workflowKey, workflowName, vers
1312
1416
  })] });
1313
1417
  }
1314
1418
 
1315
- export { versionsOfWorkflow as i, VersionLifecycleBar as n, countLifecycle as r, VersionDiffDialog as t };
1419
+ export { VersionDiffDialog_exports as n, WorkflowVersionDiffDocument as r, VersionDiffDialog as t };
@@ -0,0 +1,131 @@
1
+ "use client";
2
+ import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
3
+ import { cn } from "@burdenoff/fe-libs/utils";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ // src/modules/history/utils/version-lifecycle.ts
7
+ const LIFECYCLE_STAGES = [
8
+ "DRAFT",
9
+ "ACTIVE",
10
+ "DEPRECATED",
11
+ "ARCHIVED"
12
+ ];
13
+ /** The stage a stored status maps to; anything unknown reads as a draft. */
14
+ function lifecycleStageOf(status) {
15
+ const upper = (status ?? "").toUpperCase();
16
+ return LIFECYCLE_STAGES.includes(upper) ? upper : "DRAFT";
17
+ }
18
+ /** Index of the stage on the bar (0 = Draft). */
19
+ function lifecycleIndex(status) {
20
+ return LIFECYCLE_STAGES.indexOf(lifecycleStageOf(status));
21
+ }
22
+ function countLifecycle(versions) {
23
+ const counts = {
24
+ DRAFT: 0,
25
+ ACTIVE: 0,
26
+ DEPRECATED: 0,
27
+ ARCHIVED: 0
28
+ };
29
+ for (const version of versions) counts[lifecycleStageOf(version.status)] += 1;
30
+ return counts;
31
+ }
32
+ /**
33
+ * How each step of the bar is drawn for one version: the stages before its
34
+ * own are done, its own is current, the rest are upcoming.
35
+ */
36
+ function lifecycleSteps(status) {
37
+ const current = lifecycleIndex(status);
38
+ return LIFECYCLE_STAGES.map((stage, index) => ({
39
+ stage,
40
+ state: index < current ? "done" : index === current ? "current" : "upcoming"
41
+ }));
42
+ }
43
+ /**
44
+ * The versions of one workflow from a cross-workflow row list, newest first
45
+ * by creation time (the order `workflowVersions` returns).
46
+ */
47
+ function versionsOfWorkflow(rows, workflowKey) {
48
+ const time = (value) => {
49
+ const parsed = value ? new Date(value).getTime() : NaN;
50
+ return Number.isNaN(parsed) ? 0 : parsed;
51
+ };
52
+ return rows.filter((row) => row.workflowKey === workflowKey).sort((a, b) => time(b.createdAt) - time(a.createdAt));
53
+ }
54
+
55
+ // src/modules/history/components/diff-styles.ts
56
+ const DIFF_STATUS_CLASSES = {
57
+ added: {
58
+ card: "border-[var(--color-status-success-border)] bg-[var(--color-status-success-bg)]",
59
+ chip: "border-[var(--color-status-success-border)] bg-[var(--color-status-success-bg)] text-[var(--color-status-success-text)]",
60
+ text: "text-[var(--color-status-success-text)]"
61
+ },
62
+ removed: {
63
+ card: "border-dashed border-[var(--color-status-error-border)] bg-[var(--color-status-error-bg)] opacity-80",
64
+ chip: "border-[var(--color-status-error-border)] bg-[var(--color-status-error-bg)] text-[var(--color-status-error-text)]",
65
+ text: "text-[var(--color-status-error-text)]"
66
+ },
67
+ modified: {
68
+ card: "border-[var(--color-status-warning-border)] bg-[var(--color-status-warning-bg)]",
69
+ chip: "border-[var(--color-status-warning-border)] bg-[var(--color-status-warning-bg)] text-[var(--color-status-warning-text)]",
70
+ text: "text-[var(--color-status-warning-text)]"
71
+ },
72
+ unchanged: {
73
+ card: "border-border bg-card",
74
+ chip: "border-border bg-muted text-muted-foreground",
75
+ text: "text-muted-foreground"
76
+ }
77
+ };
78
+ /** Stroke for an edge of each status, as a CSS variable reference. */
79
+ const DIFF_EDGE_STROKE = {
80
+ added: "var(--color-status-success-text)",
81
+ removed: "var(--color-status-error-text)",
82
+ modified: "var(--color-status-warning-text)",
83
+ unchanged: "var(--color-border-strong)"
84
+ };
85
+ function diffStatusLabel(tr, status) {
86
+ switch (status) {
87
+ case "added": return tr("fluidgrids.history.versionDiff.statusAdded", "Added");
88
+ case "removed": return tr("fluidgrids.history.versionDiff.statusRemoved", "Removed");
89
+ case "modified": return tr("fluidgrids.history.versionDiff.statusModified", "Modified");
90
+ default: return tr("fluidgrids.history.versionDiff.statusUnchanged", "Unchanged");
91
+ }
92
+ }
93
+ function lifecycleStageLabel(tr, stage) {
94
+ switch (stage) {
95
+ case "ACTIVE": return tr("fluidgrids.history.lifecycle.active", "Active");
96
+ case "DEPRECATED": return tr("fluidgrids.history.lifecycle.deprecated", "Deprecated");
97
+ case "ARCHIVED": return tr("fluidgrids.history.lifecycle.archived", "Archived");
98
+ default: return tr("fluidgrids.history.lifecycle.draft", "Draft");
99
+ }
100
+ }
101
+
102
+ // src/modules/history/components/VersionLifecycleBar.tsx
103
+ /**
104
+ * Draft → Active → Deprecated → Archived bar for one version (BOFF-4074,
105
+ * mock fg-23-version-history.png). With `counts`, each step also says how
106
+ * many versions of the workflow are at that stage.
107
+ */
108
+ function VersionLifecycleBar({ status, counts, className }) {
109
+ const tr = useTr();
110
+ const steps = lifecycleSteps(status);
111
+ return /* @__PURE__ */ jsx("ol", {
112
+ className: cn("flex w-full items-stretch gap-1", className),
113
+ "aria-label": tr("fluidgrids.history.lifecycle.ariaLabel", "Version lifecycle"),
114
+ "data-testid": "fluidgrids-version-lifecycle",
115
+ children: steps.map(({ stage, state }) => /* @__PURE__ */ jsxs("li", {
116
+ "aria-current": state === "current" ? "step" : void 0,
117
+ "data-stage": stage,
118
+ "data-state": state,
119
+ className: cn("flex min-w-0 flex-1 flex-col items-center rounded-md border px-1.5 py-1 text-center text-[11px] leading-tight", state === "current" && "border-primary bg-primary/10 font-semibold text-primary", state === "done" && "border-border bg-muted text-muted-foreground", state === "upcoming" && "border-dashed border-border text-muted-foreground"),
120
+ children: [/* @__PURE__ */ jsx("span", {
121
+ className: "truncate",
122
+ children: lifecycleStageLabel(tr, stage)
123
+ }), counts && /* @__PURE__ */ jsx("span", {
124
+ className: "text-[10px] font-normal tabular-nums",
125
+ children: counts[stage]
126
+ })]
127
+ }, stage))
128
+ });
129
+ }
130
+
131
+ export { lifecycleStageLabel as a, versionsOfWorkflow as c, diffStatusLabel as i, DIFF_EDGE_STROKE as n, countLifecycle as o, DIFF_STATUS_CLASSES as r, lifecycleStageOf as s, VersionLifecycleBar as t };
@@ -1,18 +1,21 @@
1
1
  "use client";
2
2
  import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
3
- import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-D3Hl2AFk.js";
3
+ import { d as releaseLeaseKeptForReload, f as useWorkflowReloadStore, t as FlowBuilderPage } from "./flow-builder-Dv5fWJ6F.js";
4
4
  import { n as registerLiveCanvasHandler } from "./liveCanvas-D5ytXDp8.js";
5
- import { _ as throwIfResultError, n as getFluidGridsClient, x as getFluidGridsConfig } from "./client-C9XSzSXr.js";
6
- import { Ar as WorkflowDefinitionDocument } from "./graphql-operation-types-C9qbvRa8.js";
5
+ import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
6
+ import { n as getFluidGridsClient } from "./client-Ctl4jmY3.js";
7
+ import { o as throwIfResultError } from "./errors-xPZ-IbQd.js";
8
+ import { t as WorkflowDefinitionDocument } from "./WorkflowDefinitionDocument-DZLbTPUZ.js";
7
9
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
8
- import { At as classifyCreateRefusal, Ot as blankWorkflowCreateInput, Pt as useSaveStatusStore, Q as paramsFromOperation, Qt as rememberRevision, V as createConfiguredNode, _n as resolveNodeOperation, cn as workflowFingerprint, g as registerWorkflowNodeTypes, h as registerNodeManifests, m as refetchStoreNodes, o as NODE_CONFIGS, rn as codeBuildIdOf, u as ensureNodeTypesLoaded } from "./FluidGridsProvider-C4FVNz0n.js";
9
- import { F as mergeStickyNotes, H as useFlowStore } from "./node-operation-selection-DAbS6jSY.js";
10
- import { t as canvasFromDefinition } from "./definition-canvas-Bshn_dSP.js";
11
- import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-jOW60YmD.js";
12
- import { S as useInstalledNodes, c as buildNodeCheck, l as buildRequiredNodeTypes, u as getWorkflowNodeTypes } from "./TemplateCard-DVSd_4zJ.js";
10
+ import { E as createConfiguredNode, Ht as codeBuildIdOf, L as paramsFromOperation, Lt as rememberRevision, g as registerWorkflowNodeTypes, h as registerNodeManifests, ht as classifyCreateRefusal, m as refetchStoreNodes, nn as resolveNodeOperation, o as NODE_CONFIGS, pt as blankWorkflowCreateInput, qt as workflowFingerprint, u as ensureNodeTypesLoaded, yt as useSaveStatusStore } from "./FluidGridsProvider-Dc_Jhtch.js";
11
+ import { M as useFlowStore } from "./node-operation-selection-Czeeb2D4.js";
12
+ import { t as canvasFromDefinition } from "./definition-canvas-DL25_6NH.js";
13
+ import { l as useLazyWorkflowDefinition, n as useCreateWorkflow } from "./useWorkflows-aqVD7kGa.js";
14
+ import { _ as useInstalledNodes, a as buildNodeCheck, o as buildRequiredNodeTypes, s as getWorkflowNodeTypes } from "./TemplateCard-BA_9em22.js";
15
+ import { r as mergeStickyNotes } from "./sticky-notes-23j-wL6Q.js";
13
16
  import { c as withoutGuidedTourIntent, l as decideMissingWorkflow, o as isGuidedTourIntent, s as pickGuidedTour, u as isCreateIntent } from "./firstWorkflow-C_h0KMB2.js";
14
17
  import { t as BILLING_PLANS_PATH } from "./quota-Cdt8yz7N.js";
15
- import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-ZoUJKRSK.js";
18
+ import { c as CreateWorkflowRefusalDialog } from "./useWorkflowCodeExport-D_mCuhKP.js";
16
19
  import { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
17
20
  import { useLocation, useNavigate, useParams } from "react-router";
18
21
  import { Icon } from "@iconify/react";
@@ -1088,7 +1091,7 @@ function GuidedTourStarter({ ready }) {
1088
1091
  }
1089
1092
 
1090
1093
  // src/builder/app/workflow/work/page.tsx
1091
- const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-D8H-YNCJ.js").then((m) => ({ default: m.MissingNodesInstallModal })));
1094
+ const LazyMissingNodesInstallModal = lazy(() => import("./MissingNodesInstallModal-Cze674hp.js").then((m) => ({ default: m.MissingNodesInstallModal })));
1092
1095
  function WorkflowItem({ readonly = false }) {
1093
1096
  if (readonly) {
1094
1097
  const queryParams = new URLSearchParams(window.location.search);
@@ -1159,9 +1162,9 @@ function WorkflowItem({ readonly = false }) {
1159
1162
  setInstalling(true);
1160
1163
  setInstallErrors([]);
1161
1164
  try {
1162
- const { getGlobalStoreClient } = await import("./node-registry-refresh-Dy0uRg9f.js").then((n) => n.a);
1163
- const { InstallWorkflowNodeDocument } = await import("./FluidGridsProvider-C4FVNz0n.js").then((n) => n.y);
1164
- const { getFluidGridsConfig } = await import("./client-C9XSzSXr.js").then((n) => n.b);
1165
+ const { getGlobalStoreClient } = await import("./global-client-DP_Wxe5t.js").then((n) => n.r);
1166
+ const { InstallWorkflowNodeDocument } = await import("./global-operations-7pvXw_j9.js").then((n) => n.t);
1167
+ const { getFluidGridsConfig } = await import("./config-X97zrIvn.js").then((n) => n.n);
1165
1168
  const storeClient = getGlobalStoreClient();
1166
1169
  const cfg = getFluidGridsConfig();
1167
1170
  for (let i = 0; i < nodesToInstall.length; i++) {
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { n as FluidGridsProvider, xn as useCanvasEdges } from "./FluidGridsProvider-C4FVNz0n.js";
3
- import { H as useFlowStore } from "./node-operation-selection-DAbS6jSY.js";
2
+ import { n as FluidGridsProvider, on as useCanvasEdges } from "./FluidGridsProvider-Dc_Jhtch.js";
3
+ import { M as useFlowStore } from "./node-operation-selection-Czeeb2D4.js";
4
4
  import { t as Button } from "./button-DG7y_FVJ.js";
5
- import { d as Input } from "./dialog-Cjb4lB4D.js";
6
- import { w as Card } from "./TemplateCard-DVSd_4zJ.js";
5
+ import { t as Input } from "./input-ChT6Q-Pr.js";
6
+ import { v as Card } from "./TemplateCard-BA_9em22.js";
7
7
  import { t as cn } from "./cn-QqidFIgr.js";
8
8
  import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
9
- import { _ as useNodeSelectedEvent, v as FluidGridsMark } from "./flow-builder-D3Hl2AFk.js";
9
+ import { m as FluidGridsMark, p as useNodeSelectedEvent } from "./flow-builder-Dv5fWJ6F.js";
10
10
  import { useCallback, useEffect, useRef, useState } from "react";
11
11
  import { Background, Controls, Handle, MarkerType, MiniMap, Position, ReactFlow, ReactFlowProvider, useReactFlow } from "@xyflow/react";
12
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";