@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.
- package/dist/ExecutionDetailPage-L7LZYFOT.js +22 -0
- package/dist/{WorkflowsList-2OYIXGWQ.js → ExecutionsListPage-7NMW6S5A.js} +9 -9
- package/dist/{WorkflowBuilder-EVZGOXZZ.js → WorkflowBuilder-RXVUBDZJ.js} +12 -12
- package/dist/{ExecutionsListPage-KC3KRBNS.js → WorkflowsList-5U74DYQ3.js} +9 -8
- package/dist/{chunk-5ITN7CKS.js → chunk-4MHWFZJV.js} +1 -1
- package/dist/{chunk-CY6KX4RG.js → chunk-6AMNEX2Y.js} +6 -1
- package/dist/{chunk-XRHZ3IEL.js → chunk-6SZXW2BF.js} +255 -8
- package/dist/{chunk-U6KI4AKI.js → chunk-6TMLIQHB.js} +199 -1
- package/dist/{chunk-EAJB5BNF.js → chunk-7CTIVBBA.js} +183 -26
- package/dist/{chunk-UZMLMPFJ.js → chunk-AXMEATLG.js} +117 -8
- package/dist/{chunk-NM5L7MBJ.js → chunk-BZTVAUOQ.js} +3 -3
- package/dist/{chunk-X3LQJLV7.js → chunk-DEGCZCHP.js} +2 -2
- package/dist/{chunk-WDTO6ATM.js → chunk-E7UAY3JJ.js} +2 -2
- package/dist/{chunk-O24MDGZY.js → chunk-EGIEFGOV.js} +677 -43
- package/dist/{chunk-LGGHQ7UE.js → chunk-FFOZ5VUJ.js} +1 -1
- package/dist/{chunk-6Y6I2ODM.js → chunk-HAFUSBYP.js} +937 -26
- package/dist/{chunk-ZDFDC5YW.js → chunk-IDGDMJMJ.js} +118 -96
- package/dist/{chunk-2U56452G.js → chunk-K4BF7PAW.js} +125 -89
- package/dist/{chunk-MNPZMFLF.js → chunk-KANARCPR.js} +3 -3
- package/dist/{chunk-5GD6OXYW.js → chunk-LAVHDFHI.js} +1 -1
- package/dist/{chunk-35SQULD5.js → chunk-NL4JQFFA.js} +1 -1
- package/dist/{chunk-SRE2JVSJ.js → chunk-OJPJ2QXD.js} +3 -3
- package/dist/{chunk-JUA57OVN.js → chunk-RZR3BDDZ.js} +7 -7
- package/dist/{chunk-DASEJQ4G.js → chunk-SZTKLZZR.js} +145 -8
- package/dist/{chunk-LB62TAF7.js → chunk-TYYSYSAL.js} +1 -1
- package/dist/{chunk-VYH65RLH.js → chunk-US4LPOB3.js} +1 -1
- package/dist/{chunk-XTXT4NHE.js → chunk-VIZ7W5WJ.js} +5 -5
- package/dist/{chunk-7PP6CRXS.js → chunk-YTUIGIVP.js} +15 -1
- package/dist/{chunk-TNPK2LZT.js → chunk-Z4YQTXCD.js} +4 -4
- package/dist/{chunk-R4SBXQ2K.js → chunk-ZE5KS2YL.js} +2 -2
- package/dist/{config-T7BQ7AO2.js → config-VM7FTHMZ.js} +1 -1
- package/dist/executions.js +13 -13
- package/dist/history.js +5 -5
- package/dist/index.d.ts +2529 -24
- package/dist/index.js +118 -51
- package/dist/nodes.js +2 -2
- package/dist/observability.js +7 -7
- package/dist/settings.js +7 -7
- package/dist/templates.js +11 -11
- package/dist/workflow-builder.js +13 -13
- package/dist/workflows-list.js +9 -9
- package/package.json +1 -1
- package/dist/ExecutionDetailPage-Y4K35GJ7.js +0 -21
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { validateDateRange } from './chunk-
|
|
2
|
-
import { useAvailableTags } from './chunk-
|
|
1
|
+
import { validateDateRange, statusCountFilter, STATUS_COUNT_GROUP_BY, statusCountsOf } from './chunk-AXMEATLG.js';
|
|
2
|
+
import { useAvailableTags } from './chunk-LAVHDFHI.js';
|
|
3
3
|
import { executionsControls } from './chunk-D3UWK7GY.js';
|
|
4
4
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
5
|
-
import {
|
|
5
|
+
import { useDurableParityEnabled, throwIfResultError, describeOperationError } from './chunk-K4BF7PAW.js';
|
|
6
|
+
import { useExecutionsStore } from './chunk-6AMNEX2Y.js';
|
|
7
|
+
import { SetWorkflowRunVersioningOverrideDocument, WorkflowRunsCountDocument, DurableParityRunFieldsDocument, WorkflowRunPendingDocument, WorkflowRunMetadataDocument } from './chunk-YTUIGIVP.js';
|
|
6
8
|
import { useTr } from './chunk-UULVIT25.js';
|
|
9
|
+
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
7
10
|
import { Icon } from '@iconify/react';
|
|
8
11
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
9
12
|
import { useMemo, useState, useCallback, useRef, useEffect } from 'react';
|
|
@@ -135,16 +138,10 @@ var NODE_STATUS_CONFIG = {
|
|
|
135
138
|
icon: "mdi:subdirectory-arrow-right"
|
|
136
139
|
}
|
|
137
140
|
};
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
showLabel = true,
|
|
143
|
-
animated = true
|
|
144
|
-
}) {
|
|
145
|
-
const tr = useTr();
|
|
146
|
-
const config = RUN_STATUS_CONFIG[status] ?? RUN_STATUS_CONFIG.PENDING;
|
|
147
|
-
const labels = {
|
|
141
|
+
|
|
142
|
+
// src/modules/executions/utils/run-status-labels.ts
|
|
143
|
+
function runStatusLabels(tr) {
|
|
144
|
+
return {
|
|
148
145
|
PENDING: tr(
|
|
149
146
|
"fluidgrids.executions.executionFilters.statusPending",
|
|
150
147
|
"Pending"
|
|
@@ -171,6 +168,17 @@ function ExecutionStatusBadge({
|
|
|
171
168
|
"Terminated"
|
|
172
169
|
)
|
|
173
170
|
};
|
|
171
|
+
}
|
|
172
|
+
function ExecutionStatusBadge({
|
|
173
|
+
status,
|
|
174
|
+
size = "md",
|
|
175
|
+
showIcon = true,
|
|
176
|
+
showLabel = true,
|
|
177
|
+
animated = true
|
|
178
|
+
}) {
|
|
179
|
+
const tr = useTr();
|
|
180
|
+
const config = RUN_STATUS_CONFIG[status] ?? RUN_STATUS_CONFIG.PENDING;
|
|
181
|
+
const labels = runStatusLabels(tr);
|
|
174
182
|
const sizeClasses = {
|
|
175
183
|
sm: "px-1.5 py-0.5 text-xs gap-1",
|
|
176
184
|
md: "px-2 py-1 text-sm gap-1.5",
|
|
@@ -249,6 +257,23 @@ function NodeStatusBadge({
|
|
|
249
257
|
}
|
|
250
258
|
);
|
|
251
259
|
}
|
|
260
|
+
|
|
261
|
+
// src/modules/executions/utils/active-filters.ts
|
|
262
|
+
function countActiveFilters(filter, parityEnabled) {
|
|
263
|
+
return [
|
|
264
|
+
filter.status !== "all",
|
|
265
|
+
filter.workflowKey !== "",
|
|
266
|
+
filter.dateRange.preset !== "all",
|
|
267
|
+
filter.search !== "",
|
|
268
|
+
filter.triggerType !== "all",
|
|
269
|
+
filter.durationMinSeconds !== null,
|
|
270
|
+
filter.durationMaxSeconds !== null,
|
|
271
|
+
filter.errorType !== "all",
|
|
272
|
+
filter.nodeId !== "",
|
|
273
|
+
filter.tagId !== "",
|
|
274
|
+
parityEnabled && filter.workflowId.trim() !== ""
|
|
275
|
+
].filter(Boolean).length;
|
|
276
|
+
}
|
|
252
277
|
function TagFilterSelect({
|
|
253
278
|
value,
|
|
254
279
|
onChange,
|
|
@@ -504,18 +529,8 @@ function ExecutionFilters({
|
|
|
504
529
|
},
|
|
505
530
|
[setDateRange]
|
|
506
531
|
);
|
|
507
|
-
const
|
|
508
|
-
|
|
509
|
-
filter.workflowKey !== "",
|
|
510
|
-
filter.dateRange.preset !== "all",
|
|
511
|
-
filter.search !== "",
|
|
512
|
-
filter.triggerType !== "all",
|
|
513
|
-
filter.durationMinSeconds !== null,
|
|
514
|
-
filter.durationMaxSeconds !== null,
|
|
515
|
-
filter.errorType !== "all",
|
|
516
|
-
filter.nodeId !== "",
|
|
517
|
-
filter.tagId !== ""
|
|
518
|
-
].filter(Boolean).length;
|
|
532
|
+
const parityEnabled = useDurableParityEnabled();
|
|
533
|
+
const activeFiltersCount = countActiveFilters(filter, parityEnabled);
|
|
519
534
|
const assistantControls = useMemo(
|
|
520
535
|
() => executionsControls({
|
|
521
536
|
page: tr("fluidgrids.executions.executionsList.title", "Executions"),
|
|
@@ -2721,5 +2736,147 @@ function Pagination({
|
|
|
2721
2736
|
] })
|
|
2722
2737
|
] });
|
|
2723
2738
|
}
|
|
2739
|
+
var RUN_PENDING_POLL_INTERVAL_MS = 5e3;
|
|
2740
|
+
async function fetchDurableParityRunFields(runId) {
|
|
2741
|
+
const result = await getFluidGridsClient().query({
|
|
2742
|
+
query: DurableParityRunFieldsDocument,
|
|
2743
|
+
variables: { id: runId },
|
|
2744
|
+
fetchPolicy: "network-only"
|
|
2745
|
+
});
|
|
2746
|
+
throwIfResultError(result);
|
|
2747
|
+
return result.data?.workflowRun ?? null;
|
|
2748
|
+
}
|
|
2749
|
+
async function fetchRunPending(runId) {
|
|
2750
|
+
const result = await getFluidGridsClient().query({
|
|
2751
|
+
query: WorkflowRunPendingDocument,
|
|
2752
|
+
variables: { id: runId },
|
|
2753
|
+
fetchPolicy: "network-only"
|
|
2754
|
+
});
|
|
2755
|
+
throwIfResultError(result);
|
|
2756
|
+
return result.data?.workflowRun?.pending ?? null;
|
|
2757
|
+
}
|
|
2758
|
+
async function fetchRunMetadata(runId) {
|
|
2759
|
+
const result = await getFluidGridsClient().query({
|
|
2760
|
+
query: WorkflowRunMetadataDocument,
|
|
2761
|
+
variables: { runId },
|
|
2762
|
+
fetchPolicy: "network-only"
|
|
2763
|
+
});
|
|
2764
|
+
throwIfResultError(result);
|
|
2765
|
+
return result.data?.workflowRunStackTrace ?? null;
|
|
2766
|
+
}
|
|
2767
|
+
async function fetchRunStatusCounts(input) {
|
|
2768
|
+
const filter = statusCountFilter(input);
|
|
2769
|
+
const result = await getFluidGridsClient().query({
|
|
2770
|
+
query: WorkflowRunsCountDocument,
|
|
2771
|
+
variables: { filter, groupBy: [...STATUS_COUNT_GROUP_BY] },
|
|
2772
|
+
fetchPolicy: "network-only"
|
|
2773
|
+
});
|
|
2774
|
+
throwIfResultError(result);
|
|
2775
|
+
const count = result.data?.workflowRunsCount;
|
|
2776
|
+
if (!count) throw new Error("The run count returned no result");
|
|
2777
|
+
return { total: count.total, counts: statusCountsOf(count.groups) };
|
|
2778
|
+
}
|
|
2779
|
+
async function setRunVersioningOverride(input) {
|
|
2780
|
+
const reason = input.reason?.trim();
|
|
2781
|
+
const result = await getFluidGridsClient().mutate({
|
|
2782
|
+
mutation: SetWorkflowRunVersioningOverrideDocument,
|
|
2783
|
+
variables: {
|
|
2784
|
+
runId: input.runId,
|
|
2785
|
+
override: input.override,
|
|
2786
|
+
reason: reason || null
|
|
2787
|
+
}
|
|
2788
|
+
});
|
|
2789
|
+
throwIfResultError(result);
|
|
2790
|
+
const data = result.data?.setWorkflowRunVersioningOverride;
|
|
2791
|
+
if (!data) throw new Error("The override returned no result");
|
|
2792
|
+
return data.versioning ?? null;
|
|
2793
|
+
}
|
|
2794
|
+
function useRunRead(runId, enabled, load, { live = false, intervalMs = 0 }) {
|
|
2795
|
+
const [data, setData] = useState(null);
|
|
2796
|
+
const [loading, setLoading] = useState(false);
|
|
2797
|
+
const [error, setError] = useState(null);
|
|
2798
|
+
const request = useRef(0);
|
|
2799
|
+
const refetch = useCallback(async () => {
|
|
2800
|
+
if (!runId || !enabled) return;
|
|
2801
|
+
const id = ++request.current;
|
|
2802
|
+
setLoading(true);
|
|
2803
|
+
try {
|
|
2804
|
+
const next = await load(runId);
|
|
2805
|
+
if (id !== request.current) return;
|
|
2806
|
+
setData(next);
|
|
2807
|
+
setError(null);
|
|
2808
|
+
} catch (err) {
|
|
2809
|
+
if (id !== request.current) return;
|
|
2810
|
+
setError(describeOperationError(err));
|
|
2811
|
+
} finally {
|
|
2812
|
+
if (id === request.current) setLoading(false);
|
|
2813
|
+
}
|
|
2814
|
+
}, [runId, enabled, load]);
|
|
2815
|
+
useEffect(() => {
|
|
2816
|
+
request.current += 1;
|
|
2817
|
+
setData(null);
|
|
2818
|
+
setError(null);
|
|
2819
|
+
setLoading(false);
|
|
2820
|
+
void refetch();
|
|
2821
|
+
}, [refetch]);
|
|
2822
|
+
useEffect(() => {
|
|
2823
|
+
if (!live || !enabled || !runId || intervalMs <= 0) return;
|
|
2824
|
+
const timer = setInterval(() => {
|
|
2825
|
+
void refetch();
|
|
2826
|
+
}, intervalMs);
|
|
2827
|
+
return () => clearInterval(timer);
|
|
2828
|
+
}, [live, enabled, runId, intervalMs, refetch]);
|
|
2829
|
+
return { data: enabled ? data : null, loading, error, refetch };
|
|
2830
|
+
}
|
|
2831
|
+
function useDurableParityRunFields(runId, enabled) {
|
|
2832
|
+
const { data, error, refetch } = useRunRead(
|
|
2833
|
+
runId,
|
|
2834
|
+
enabled,
|
|
2835
|
+
fetchDurableParityRunFields,
|
|
2836
|
+
{}
|
|
2837
|
+
);
|
|
2838
|
+
return { fields: data, error, refetch };
|
|
2839
|
+
}
|
|
2840
|
+
function useRunPending(runId, { enabled, live }) {
|
|
2841
|
+
const { data, loading, error, refetch } = useRunRead(
|
|
2842
|
+
runId,
|
|
2843
|
+
enabled,
|
|
2844
|
+
fetchRunPending,
|
|
2845
|
+
{ live, intervalMs: RUN_PENDING_POLL_INTERVAL_MS }
|
|
2846
|
+
);
|
|
2847
|
+
return { pending: data, loading, error, refetch };
|
|
2848
|
+
}
|
|
2849
|
+
function useRunMetadata(runId, enabled) {
|
|
2850
|
+
const { data, loading, error, refetch } = useRunRead(
|
|
2851
|
+
runId,
|
|
2852
|
+
enabled,
|
|
2853
|
+
fetchRunMetadata,
|
|
2854
|
+
{}
|
|
2855
|
+
);
|
|
2856
|
+
return { answer: data, loading, error, refetch };
|
|
2857
|
+
}
|
|
2858
|
+
function useRunStatusCounts(input, enabled) {
|
|
2859
|
+
const [state, setState] = useState({ total: null, counts: [] });
|
|
2860
|
+
const [error, setError] = useState(null);
|
|
2861
|
+
const request = useRef(0);
|
|
2862
|
+
const filterKey = JSON.stringify(statusCountFilter(input));
|
|
2863
|
+
const refetch = useCallback(async () => {
|
|
2864
|
+
if (!enabled) return;
|
|
2865
|
+
const id = ++request.current;
|
|
2866
|
+
try {
|
|
2867
|
+
const next = await fetchRunStatusCounts(JSON.parse(filterKey));
|
|
2868
|
+
if (id !== request.current) return;
|
|
2869
|
+
setState(next);
|
|
2870
|
+
setError(null);
|
|
2871
|
+
} catch (err) {
|
|
2872
|
+
if (id !== request.current) return;
|
|
2873
|
+
setError(describeOperationError(err));
|
|
2874
|
+
}
|
|
2875
|
+
}, [enabled, filterKey]);
|
|
2876
|
+
useEffect(() => {
|
|
2877
|
+
void refetch();
|
|
2878
|
+
}, [refetch]);
|
|
2879
|
+
return enabled ? { ...state, error, refetch } : { total: null, counts: [], error: null, refetch };
|
|
2880
|
+
}
|
|
2724
2881
|
|
|
2725
|
-
export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeTimeline, Pagination, RunLogViewer, TagFilterSelect, buildNodeDisplayMap, formatRunVersion };
|
|
2882
|
+
export { ExecutionCards, ExecutionFilters, ExecutionStats, ExecutionStatusBadge, ExecutionTable, ExecutionTimeline, NodeTimeline, Pagination, RunLogViewer, TagFilterSelect, buildNodeDisplayMap, formatRunVersion, runStatusLabels, setRunVersioningOverride, useDurableParityRunFields, useRunMetadata, useRunPending, useRunStatusCounts };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { REPLAY_WORKFLOW_RUN, RETRY_WORKFLOW_RUNS } from './chunk-5ERAJC2I.js';
|
|
2
|
-
import { useFluidGridsAnalytics, throwIfResultError, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-
|
|
3
|
-
import { useExecutionsStore } from './chunk-
|
|
4
|
-
import { ExecutionsListDocument, ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument } from './chunk-
|
|
2
|
+
import { useFluidGridsAnalytics, throwIfResultError, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-K4BF7PAW.js';
|
|
3
|
+
import { useExecutionsStore } from './chunk-6AMNEX2Y.js';
|
|
4
|
+
import { ExecutionsListDocument, ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument } from './chunk-YTUIGIVP.js';
|
|
5
5
|
import { useTr } from './chunk-UULVIT25.js';
|
|
6
6
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
7
7
|
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
@@ -75,6 +75,107 @@ function dateRangeToInput(start, end) {
|
|
|
75
75
|
return input;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
// src/modules/executions/utils/run-parity.ts
|
|
79
|
+
function isRecord(value) {
|
|
80
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
81
|
+
}
|
|
82
|
+
function text(value) {
|
|
83
|
+
return typeof value === "string" && value.trim() ? value : void 0;
|
|
84
|
+
}
|
|
85
|
+
function runChainLinks(run) {
|
|
86
|
+
const candidates = [
|
|
87
|
+
["previous", run.continuedFromRunId],
|
|
88
|
+
["next", run.continuedToRunId],
|
|
89
|
+
["first", run.firstRunId],
|
|
90
|
+
["root", run.rootRunId === run.parentRunId ? null : run.rootRunId]
|
|
91
|
+
];
|
|
92
|
+
const seen = /* @__PURE__ */ new Set([run.id]);
|
|
93
|
+
const links = [];
|
|
94
|
+
for (const [kind, runId] of candidates) {
|
|
95
|
+
if (!runId || seen.has(runId)) continue;
|
|
96
|
+
seen.add(runId);
|
|
97
|
+
links.push({ kind, runId });
|
|
98
|
+
}
|
|
99
|
+
return links;
|
|
100
|
+
}
|
|
101
|
+
function shortRunId(runId, length = 12) {
|
|
102
|
+
return runId.length > length ? `${runId.slice(0, length)}\u2026` : runId;
|
|
103
|
+
}
|
|
104
|
+
function handlersOf(value) {
|
|
105
|
+
const entries = Array.isArray(value) ? value.map((entry) => [void 0, entry]) : isRecord(value) ? Object.entries(value) : [];
|
|
106
|
+
const handlers = [];
|
|
107
|
+
for (const [key, entry] of entries) {
|
|
108
|
+
if (typeof entry === "string") {
|
|
109
|
+
handlers.push({ name: entry });
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (!isRecord(entry)) continue;
|
|
113
|
+
const name = text(entry.name) ?? key;
|
|
114
|
+
if (!name) continue;
|
|
115
|
+
const description = text(entry.description);
|
|
116
|
+
handlers.push(description ? { name, description } : { name });
|
|
117
|
+
}
|
|
118
|
+
return handlers;
|
|
119
|
+
}
|
|
120
|
+
function parseMetadataDefinition(definition) {
|
|
121
|
+
const value = isRecord(definition) ? definition : {};
|
|
122
|
+
return {
|
|
123
|
+
name: text(value.name),
|
|
124
|
+
signals: handlersOf(value.signals),
|
|
125
|
+
queries: handlersOf(value.queries),
|
|
126
|
+
updates: handlersOf(value.updates)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
var WORKFLOW_ID_MAX_LENGTH = 256;
|
|
130
|
+
function withWorkflowIdFilter(input, workflowId, parityEnabled) {
|
|
131
|
+
const value = workflowId.trim();
|
|
132
|
+
if (!parityEnabled || !value) return input;
|
|
133
|
+
return { ...input, businessId: value.slice(0, WORKFLOW_ID_MAX_LENGTH) };
|
|
134
|
+
}
|
|
135
|
+
function statusCountFilter(input) {
|
|
136
|
+
const rest = { ...input };
|
|
137
|
+
delete rest.limit;
|
|
138
|
+
delete rest.offset;
|
|
139
|
+
delete rest.status;
|
|
140
|
+
return rest;
|
|
141
|
+
}
|
|
142
|
+
var STATUS_COUNT_GROUP_BY = ["STATUS" /* Status */];
|
|
143
|
+
function statusCountsOf(groups) {
|
|
144
|
+
const counts = /* @__PURE__ */ new Map();
|
|
145
|
+
for (const group of groups) {
|
|
146
|
+
const status = group.values[0] ?? group.key;
|
|
147
|
+
if (!status) continue;
|
|
148
|
+
counts.set(status, (counts.get(status) ?? 0) + group.count);
|
|
149
|
+
}
|
|
150
|
+
return [...counts.entries()].map(([status, count]) => ({ status, count })).sort((a, b) => b.count - a.count || a.status.localeCompare(b.status));
|
|
151
|
+
}
|
|
152
|
+
function overrideRequestOf(choice, version) {
|
|
153
|
+
if (choice === "remove") return { ok: true, override: null };
|
|
154
|
+
if (choice === "autoUpgrade")
|
|
155
|
+
return {
|
|
156
|
+
ok: true,
|
|
157
|
+
override: { behavior: "AUTO_UPGRADE" /* AutoUpgrade */ }
|
|
158
|
+
};
|
|
159
|
+
const pinned = version.trim();
|
|
160
|
+
if (!pinned) return { ok: false, reason: "versionRequired" };
|
|
161
|
+
return {
|
|
162
|
+
ok: true,
|
|
163
|
+
override: { behavior: "PINNED" /* Pinned */, version: pinned }
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function callbackTone(status) {
|
|
167
|
+
switch (status) {
|
|
168
|
+
case "DELIVERED":
|
|
169
|
+
return "success";
|
|
170
|
+
case "FAILED":
|
|
171
|
+
return "error";
|
|
172
|
+
case "DELIVERING":
|
|
173
|
+
return "info";
|
|
174
|
+
default:
|
|
175
|
+
return "neutral";
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
78
179
|
// src/modules/executions/utils/retry.ts
|
|
79
180
|
var NON_REPLAYABLE_CONTEXT_KEYS = ["isScheduled", "workspaceId"];
|
|
80
181
|
function buildRetryTriggerInput(run) {
|
|
@@ -443,7 +544,9 @@ function useExecutionActions() {
|
|
|
443
544
|
};
|
|
444
545
|
}
|
|
445
546
|
var EXECUTIONS_SEARCH_DEBOUNCE_MS = 350;
|
|
446
|
-
function useExecutionsWithStore(
|
|
547
|
+
function useExecutionsWithStore({
|
|
548
|
+
durableParity = false
|
|
549
|
+
} = {}) {
|
|
447
550
|
const { filter, pagination, setTotal } = useExecutionsStore();
|
|
448
551
|
const [debouncedSearch, setDebouncedSearch] = useState(filter.search);
|
|
449
552
|
useEffect(() => {
|
|
@@ -490,15 +593,21 @@ function useExecutionsWithStore() {
|
|
|
490
593
|
if (filter.tagId) {
|
|
491
594
|
baseInput.tagIds = [filter.tagId];
|
|
492
595
|
}
|
|
493
|
-
return baseInput;
|
|
494
|
-
}, [
|
|
596
|
+
return withWorkflowIdFilter(baseInput, filter.workflowId, durableParity);
|
|
597
|
+
}, [
|
|
598
|
+
filter,
|
|
599
|
+
debouncedSearch,
|
|
600
|
+
pagination.page,
|
|
601
|
+
pagination.pageSize,
|
|
602
|
+
durableParity
|
|
603
|
+
]);
|
|
495
604
|
const result = useExecutions(input);
|
|
496
605
|
useEffect(() => {
|
|
497
606
|
if (result.total !== pagination.total) {
|
|
498
607
|
setTotal(result.total);
|
|
499
608
|
}
|
|
500
609
|
}, [result.total, pagination.total, setTotal]);
|
|
501
|
-
return result;
|
|
610
|
+
return { ...result, input };
|
|
502
611
|
}
|
|
503
612
|
function useAutoRefresh(refetchFn, enabled = true, interval = 5e3) {
|
|
504
613
|
useEffect(() => {
|
|
@@ -510,4 +619,4 @@ function useAutoRefresh(refetchFn, enabled = true, interval = 5e3) {
|
|
|
510
619
|
}, [enabled, interval, refetchFn]);
|
|
511
620
|
}
|
|
512
621
|
|
|
513
|
-
export { useAutoRefresh, useExecution, useExecutionActions, useExecutionStats, useExecutions, useExecutionsWithStore, validateDateRange };
|
|
622
|
+
export { STATUS_COUNT_GROUP_BY, WORKFLOW_ID_MAX_LENGTH, callbackTone, overrideRequestOf, parseMetadataDefinition, runChainLinks, shortRunId, statusCountFilter, statusCountsOf, useAutoRefresh, useExecution, useExecutionActions, useExecutionStats, useExecutions, useExecutionsWithStore, validateDateRange };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { FailureTriagePanel } from './chunk-
|
|
2
|
-
import { useDataSinks, useDataSinkData, useInsightsData, useRunReplayActions } from './chunk-
|
|
3
|
-
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-
|
|
1
|
+
import { FailureTriagePanel } from './chunk-ZE5KS2YL.js';
|
|
2
|
+
import { useDataSinks, useDataSinkData, useInsightsData, useRunReplayActions } from './chunk-US4LPOB3.js';
|
|
3
|
+
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-K4BF7PAW.js';
|
|
4
4
|
import { useTr } from './chunk-UULVIT25.js';
|
|
5
5
|
import { useState, useMemo, useEffect } from 'react';
|
|
6
6
|
import { Icon } from '@iconify/react';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { describeOperationError, useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME, throwIfResultError } from './chunk-
|
|
2
|
-
import { ExportWorkflowCodeDocument } from './chunk-
|
|
1
|
+
import { describeOperationError, useFluidGridsAnalytics, emitWorkflowLimitHit, emitUpgradeClicked, WORKFLOWS_QUOTA_NAME, throwIfResultError } from './chunk-K4BF7PAW.js';
|
|
2
|
+
import { ExportWorkflowCodeDocument } from './chunk-YTUIGIVP.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
5
5
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { useWorkflowDefinitions } from './chunk-SRE2JVSJ.js';
|
|
2
1
|
import { historyControls } from './chunk-D3UWK7GY.js';
|
|
2
|
+
import { useWorkflowDefinitions } from './chunk-OJPJ2QXD.js';
|
|
3
3
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
4
4
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
5
|
-
import { getFluidGridsConfig } from './chunk-
|
|
5
|
+
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
6
6
|
import { useTr } from './chunk-UULVIT25.js';
|
|
7
7
|
import { useState, useMemo, useCallback } from 'react';
|
|
8
8
|
import { useNavigate } from 'react-router';
|