@burdenoff/fluidgrids-fe-sdk 2026.1029.5 → 2026.1029.7

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 (43) hide show
  1. package/dist/ExecutionDetailPage-L7LZYFOT.js +22 -0
  2. package/dist/{WorkflowsList-2OYIXGWQ.js → ExecutionsListPage-7NMW6S5A.js} +9 -9
  3. package/dist/{WorkflowBuilder-EVZGOXZZ.js → WorkflowBuilder-RXVUBDZJ.js} +12 -12
  4. package/dist/{ExecutionsListPage-KC3KRBNS.js → WorkflowsList-5U74DYQ3.js} +9 -8
  5. package/dist/{chunk-5ITN7CKS.js → chunk-4MHWFZJV.js} +1 -1
  6. package/dist/{chunk-CY6KX4RG.js → chunk-6AMNEX2Y.js} +6 -1
  7. package/dist/{chunk-XRHZ3IEL.js → chunk-6SZXW2BF.js} +255 -8
  8. package/dist/{chunk-U6KI4AKI.js → chunk-6TMLIQHB.js} +199 -1
  9. package/dist/{chunk-EAJB5BNF.js → chunk-7CTIVBBA.js} +183 -26
  10. package/dist/{chunk-UZMLMPFJ.js → chunk-AXMEATLG.js} +117 -8
  11. package/dist/{chunk-NM5L7MBJ.js → chunk-BZTVAUOQ.js} +3 -3
  12. package/dist/{chunk-X3LQJLV7.js → chunk-DEGCZCHP.js} +2 -2
  13. package/dist/{chunk-WDTO6ATM.js → chunk-E7UAY3JJ.js} +2 -2
  14. package/dist/{chunk-O24MDGZY.js → chunk-EGIEFGOV.js} +677 -43
  15. package/dist/{chunk-LGGHQ7UE.js → chunk-FFOZ5VUJ.js} +1 -1
  16. package/dist/{chunk-6Y6I2ODM.js → chunk-HAFUSBYP.js} +937 -26
  17. package/dist/{chunk-ZDFDC5YW.js → chunk-IDGDMJMJ.js} +118 -96
  18. package/dist/{chunk-2U56452G.js → chunk-K4BF7PAW.js} +125 -89
  19. package/dist/{chunk-MNPZMFLF.js → chunk-KANARCPR.js} +3 -3
  20. package/dist/{chunk-5GD6OXYW.js → chunk-LAVHDFHI.js} +1 -1
  21. package/dist/{chunk-35SQULD5.js → chunk-NL4JQFFA.js} +1 -1
  22. package/dist/{chunk-SRE2JVSJ.js → chunk-OJPJ2QXD.js} +3 -3
  23. package/dist/{chunk-JUA57OVN.js → chunk-RZR3BDDZ.js} +7 -7
  24. package/dist/{chunk-DASEJQ4G.js → chunk-SZTKLZZR.js} +145 -8
  25. package/dist/{chunk-LB62TAF7.js → chunk-TYYSYSAL.js} +1 -1
  26. package/dist/{chunk-VYH65RLH.js → chunk-US4LPOB3.js} +1 -1
  27. package/dist/{chunk-XTXT4NHE.js → chunk-VIZ7W5WJ.js} +5 -5
  28. package/dist/{chunk-7PP6CRXS.js → chunk-YTUIGIVP.js} +15 -1
  29. package/dist/{chunk-TNPK2LZT.js → chunk-Z4YQTXCD.js} +4 -4
  30. package/dist/{chunk-R4SBXQ2K.js → chunk-ZE5KS2YL.js} +2 -2
  31. package/dist/{config-T7BQ7AO2.js → config-VM7FTHMZ.js} +1 -1
  32. package/dist/executions.js +13 -13
  33. package/dist/history.js +5 -5
  34. package/dist/index.d.ts +2529 -24
  35. package/dist/index.js +118 -51
  36. package/dist/nodes.js +2 -2
  37. package/dist/observability.js +7 -7
  38. package/dist/settings.js +7 -7
  39. package/dist/templates.js +11 -11
  40. package/dist/workflow-builder.js +13 -13
  41. package/dist/workflows-list.js +9 -9
  42. package/package.json +1 -1
  43. package/dist/ExecutionDetailPage-Y4K35GJ7.js +0 -21
@@ -1,16 +1,135 @@
1
- import { ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination } from './chunk-EAJB5BNF.js';
2
- import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh } from './chunk-UZMLMPFJ.js';
3
- import { useWorkflowDefinitions } from './chunk-SRE2JVSJ.js';
1
+ import { useRunStatusCounts, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination, runStatusLabels } from './chunk-7CTIVBBA.js';
2
+ import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, WORKFLOW_ID_MAX_LENGTH } from './chunk-AXMEATLG.js';
3
+ import { useWorkflowDefinitions } from './chunk-OJPJ2QXD.js';
4
4
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
5
- import { useExecutionsStore } from './chunk-CY6KX4RG.js';
5
+ import { useDurableParityEnabled } from './chunk-K4BF7PAW.js';
6
+ import { useExecutionsStore } from './chunk-6AMNEX2Y.js';
6
7
  import { useTr } from './chunk-UULVIT25.js';
7
- import { useRef, useCallback, useMemo } from 'react';
8
+ import { useRef, useCallback, useMemo, useState, useEffect } from 'react';
8
9
  import { useNavigate, useSearchParams } from 'react-router';
9
10
  import { Icon } from '@iconify/react';
10
11
  import { toast } from 'sonner';
11
12
  import { Button } from '@burdenoff/fe-libs/button';
12
- import { jsxs, jsx } from 'react/jsx-runtime';
13
+ import { Input } from '@burdenoff/fe-libs/ui';
14
+ import { cn } from '@burdenoff/fe-libs/utils';
15
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
13
16
 
17
+ var WORKFLOW_ID_FILTER_DEBOUNCE_MS = 350;
18
+ var RUN_STATUSES = [
19
+ "PENDING",
20
+ "RUNNING",
21
+ "WAITING",
22
+ "COMPLETED",
23
+ "FAILED",
24
+ "CANCELLED",
25
+ "TERMINATED"
26
+ ];
27
+ function isRunStatus(value) {
28
+ return RUN_STATUSES.includes(value);
29
+ }
30
+ function RunsParityBar({
31
+ workflowId,
32
+ onWorkflowIdChange,
33
+ total,
34
+ counts,
35
+ countsError,
36
+ selectedStatus,
37
+ onSelectStatus
38
+ }) {
39
+ const tr = useTr();
40
+ const statusLabels = runStatusLabels(tr);
41
+ const [draft, setDraft] = useState(workflowId);
42
+ useEffect(() => {
43
+ setDraft(workflowId);
44
+ }, [workflowId]);
45
+ useEffect(() => {
46
+ if (draft === workflowId) return;
47
+ const timer = setTimeout(
48
+ () => onWorkflowIdChange(draft),
49
+ WORKFLOW_ID_FILTER_DEBOUNCE_MS
50
+ );
51
+ return () => clearTimeout(timer);
52
+ }, [draft, workflowId, onWorkflowIdChange]);
53
+ return /* @__PURE__ */ jsxs(
54
+ "div",
55
+ {
56
+ "data-testid": "runs-parity-bar",
57
+ className: "mb-6 flex flex-col gap-3 lg:flex-row lg:items-center",
58
+ children: [
59
+ /* @__PURE__ */ jsxs("label", { className: "flex min-w-0 items-center gap-2 text-sm text-text-secondary lg:w-80", children: [
60
+ /* @__PURE__ */ jsx(Icon, { icon: "mdi:key-outline", width: 16, className: "shrink-0" }),
61
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: tr("fluidgrids.executions.parity.workflowIdFilter", "Workflow ID") }),
62
+ /* @__PURE__ */ jsx(
63
+ Input,
64
+ {
65
+ value: draft,
66
+ maxLength: WORKFLOW_ID_MAX_LENGTH,
67
+ placeholder: tr(
68
+ "fluidgrids.executions.parity.workflowIdPlaceholder",
69
+ "Filter by workflow ID"
70
+ ),
71
+ onChange: (event) => setDraft(event.target.value),
72
+ "data-testid": "runs-workflow-id-filter"
73
+ }
74
+ )
75
+ ] }),
76
+ /* @__PURE__ */ jsx(
77
+ "div",
78
+ {
79
+ className: "flex flex-wrap items-center gap-2",
80
+ "data-testid": "runs-status-counts",
81
+ children: countsError ? /* @__PURE__ */ jsxs("span", { className: "text-xs text-[var(--color-status-error-text)]", children: [
82
+ tr(
83
+ "fluidgrids.executions.parity.countsError",
84
+ "Could not count the runs:"
85
+ ),
86
+ " ",
87
+ countsError
88
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
89
+ total !== null && /* @__PURE__ */ jsx(
90
+ "button",
91
+ {
92
+ type: "button",
93
+ onClick: () => onSelectStatus("all"),
94
+ className: cn(
95
+ "rounded-full border px-2.5 py-1 text-xs",
96
+ selectedStatus === "all" ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-secondary text-text-secondary hover:text-text-primary"
97
+ ),
98
+ "aria-pressed": selectedStatus === "all",
99
+ "data-testid": "runs-count-all",
100
+ children: tr("fluidgrids.executions.parity.countAll", "All {{count}}", {
101
+ count: total
102
+ })
103
+ }
104
+ ),
105
+ counts.map(
106
+ ({ status, count }) => isRunStatus(status) ? /* @__PURE__ */ jsx(
107
+ "button",
108
+ {
109
+ type: "button",
110
+ onClick: () => onSelectStatus(status),
111
+ className: cn(
112
+ "rounded-full border px-2.5 py-1 text-xs",
113
+ selectedStatus === status ? "border-action-primary-bg bg-action-primary-bg text-action-primary-text" : "border-border-secondary text-text-secondary hover:text-text-primary"
114
+ ),
115
+ "aria-pressed": selectedStatus === status,
116
+ "data-testid": `runs-count-${status}`,
117
+ children: tr(
118
+ "fluidgrids.executions.parity.countStatus",
119
+ "{{status}} {{count}}",
120
+ { status: statusLabels[status], count }
121
+ )
122
+ },
123
+ status
124
+ ) : null
125
+ )
126
+ ] })
127
+ }
128
+ )
129
+ ]
130
+ }
131
+ );
132
+ }
14
133
  function ExecutionsListPage() {
15
134
  const tr = useTr();
16
135
  const navigate = useNavigate();
@@ -22,6 +141,8 @@ function ExecutionsListPage() {
22
141
  clearSelection,
23
142
  setStatusFilter,
24
143
  setWorkflowFilter,
144
+ setWorkflowIdFilter,
145
+ filter,
25
146
  autoRefresh,
26
147
  autoRefreshInterval
27
148
  } = useExecutionsStore();
@@ -34,7 +155,10 @@ function ExecutionsListPage() {
34
155
  setWorkflowFilter(workflowKeyParam);
35
156
  }
36
157
  }
37
- const { executions, total, loading, error, refetch } = useExecutionsWithStore();
158
+ const parityEnabled = useDurableParityEnabled();
159
+ const { executions, total, loading, error, refetch, input } = useExecutionsWithStore({ durableParity: parityEnabled });
160
+ const statusCounts = useRunStatusCounts(input, parityEnabled);
161
+ const refetchCounts = statusCounts.refetch;
38
162
  const {
39
163
  stats,
40
164
  loading: statsLoading,
@@ -52,7 +176,8 @@ function ExecutionsListPage() {
52
176
  useCallback(() => {
53
177
  refetch();
54
178
  refetchStats();
55
- }, [refetch, refetchStats]),
179
+ void refetchCounts();
180
+ }, [refetch, refetchStats, refetchCounts]),
56
181
  autoRefresh,
57
182
  autoRefreshInterval
58
183
  );
@@ -246,6 +371,18 @@ function ExecutionsListPage() {
246
371
  }
247
372
  ) }),
248
373
  /* @__PURE__ */ jsx("div", { className: "mb-6", "data-tour": "fluidgrids-runs-filters", children: /* @__PURE__ */ jsx(ExecutionFilters, { workflows: workflowOptions, onRefresh: refetch }) }),
374
+ parityEnabled && /* @__PURE__ */ jsx(
375
+ RunsParityBar,
376
+ {
377
+ workflowId: filter.workflowId,
378
+ onWorkflowIdChange: setWorkflowIdFilter,
379
+ total: statusCounts.total,
380
+ counts: statusCounts.counts,
381
+ countsError: statusCounts.error,
382
+ selectedStatus: filter.status,
383
+ onSelectStatus: handleFilterByStatus
384
+ }
385
+ ),
249
386
  selection.runIds.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mb-4 p-3 bg-action-primary-bg/10 rounded-lg flex flex-wrap items-center gap-3", children: [
250
387
  /* @__PURE__ */ jsxs("span", { className: "text-sm text-text-primary", children: [
251
388
  selection.runIds.length,
@@ -1,4 +1,4 @@
1
- import { NodeEndpointConfigsDocument, NodeEndpointConfigDocument, NodeManifestDocument, fetchAllNodeEndpointConfigs } from './chunk-7PP6CRXS.js';
1
+ import { NodeEndpointConfigsDocument, NodeEndpointConfigDocument, NodeManifestDocument, fetchAllNodeEndpointConfigs } from './chunk-YTUIGIVP.js';
2
2
  import { useTr } from './chunk-UULVIT25.js';
3
3
  import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
4
4
  import { useMemo, useState, useCallback, useEffect } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { LOG_STREAM_DESTINATIONS, CREATE_LOG_STREAM_DESTINATION, UPDATE_LOG_STREAM_DESTINATION, DELETE_LOG_STREAM_DESTINATION, TEST_LOG_STREAM_DESTINATION, REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS, OBSERVABILITY_DASHBOARD_SUMMARY, OBSERVABILITY_FAILED_RUNS, OBSERVABILITY_DATA_SINKS, OBSERVABILITY_DATA_SINK_DATA } from './chunk-5ERAJC2I.js';
2
- import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt, useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-2U56452G.js';
2
+ import { throwIfResultError, describeOperationError, useFluidGridsAnalytics, emitRunStarted, openRunQuotaUpgradePrompt, useFluidGridsFlag, FLUIDGRIDS_FLAGS } from './chunk-K4BF7PAW.js';
3
3
  import { useTr } from './chunk-UULVIT25.js';
4
4
  import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
5
5
  import { useCallback, useState, useMemo, useEffect } from 'react';
@@ -1,11 +1,11 @@
1
- import { CreateWorkflowRefusalDialog, firstWorkflowProgress, GUIDED_TOUR_STATE, builderPathFor } from './chunk-LGGHQ7UE.js';
2
- import { useExecutions } from './chunk-UZMLMPFJ.js';
3
- import { useExportWorkflowAs, downloadWorkflowExport, importAcceptAttribute, QuotaExhaustedDialog, importFileKind, parseWorkflowImport, CODE_EXPORT_FORMATS, ImportSourceError, assertImportByteSize, MAX_IMPORT_ARCHIVE_BYTES, readProjectArchive, checkTypeScriptImport, MAX_IMPORT_SOURCE_BYTES, typeScriptModuleFile, typeScriptImportSource, workflowNameFromFile, primaryImportModule } from './chunk-X3LQJLV7.js';
4
- import { useCreateWorkflow, useWorkflowDefinitions, useLazyWorkflowDefinition, useImportWorkflow, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-SRE2JVSJ.js';
1
+ import { CreateWorkflowRefusalDialog, firstWorkflowProgress, GUIDED_TOUR_STATE, builderPathFor } from './chunk-FFOZ5VUJ.js';
2
+ import { useExecutions } from './chunk-AXMEATLG.js';
3
+ import { useExportWorkflowAs, downloadWorkflowExport, importAcceptAttribute, QuotaExhaustedDialog, importFileKind, parseWorkflowImport, CODE_EXPORT_FORMATS, ImportSourceError, assertImportByteSize, MAX_IMPORT_ARCHIVE_BYTES, readProjectArchive, checkTypeScriptImport, MAX_IMPORT_SOURCE_BYTES, typeScriptModuleFile, typeScriptImportSource, workflowNameFromFile, primaryImportModule } from './chunk-DEGCZCHP.js';
5
4
  import { workflowsListControls } from './chunk-D3UWK7GY.js';
5
+ import { useCreateWorkflow, useWorkflowDefinitions, useLazyWorkflowDefinition, useImportWorkflow, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-OJPJ2QXD.js';
6
6
  import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
7
7
  import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
8
- import { createThenOpen, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, useFluidGridsFlag, FLUIDGRIDS_FLAGS, SdkPermissionButton, BILLING_PLANS_PATH, describeOperationError, useFlowStore, SdkPermissionGate, isQuotaExhaustedFailure } from './chunk-2U56452G.js';
8
+ import { createThenOpen, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, useFluidGridsFlag, FLUIDGRIDS_FLAGS, SdkPermissionButton, BILLING_PLANS_PATH, describeOperationError, useFlowStore, SdkPermissionGate, isQuotaExhaustedFailure } from './chunk-K4BF7PAW.js';
9
9
  import { useTr } from './chunk-UULVIT25.js';
10
10
  import { useState, useRef, useCallback, useMemo } from 'react';
11
11
  import { useNavigate } from 'react-router';