@burdenoff/fluidgrids-fe-sdk 2026.1031.3 → 2026.1031.5
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-RZZJHBK3.js +22 -0
- package/dist/{ExecutionsListPage-AYDGFU6W.js → ExecutionsListPage-QXYQ5YEE.js} +8 -8
- package/dist/{WorkflowBuilder-N3ZUYFRK.js → WorkflowBuilder-KZKWWJZO.js} +11 -11
- package/dist/{WorkflowsList-BZXBTGNL.js → WorkflowsList-EHQTSSJY.js} +8 -8
- package/dist/{chunk-IGROOI7E.js → chunk-3B2VD4N4.js} +2 -2
- package/dist/{chunk-CIR7WF4W.js → chunk-4OOE56HK.js} +1 -1
- package/dist/{chunk-44KAAKFK.js → chunk-4VAPV7YT.js} +5 -5
- package/dist/{chunk-P3TGCUXP.js → chunk-6YGBRJNV.js} +5 -37
- package/dist/{chunk-R4Q37Q4X.js → chunk-7SUFXFQN.js} +3 -3
- package/dist/{chunk-OGYAC7QW.js → chunk-AHDYETEE.js} +1 -1
- package/dist/{chunk-475XP5J7.js → chunk-AWQCF6GS.js} +5 -5
- package/dist/{chunk-ADTEMSJI.js → chunk-BWQW6YSJ.js} +849 -4
- package/dist/{chunk-PKG6BCHB.js → chunk-E3KE67MX.js} +2 -2
- package/dist/{chunk-WHPQRYZD.js → chunk-H5HYJUUS.js} +5 -5
- package/dist/{chunk-Z3FYBDE3.js → chunk-HQX7JZLY.js} +33 -1
- package/dist/{chunk-BHD4CDLL.js → chunk-JQUFGF5P.js} +1 -1
- package/dist/{chunk-AW3UXMNI.js → chunk-KEYKB4E7.js} +12 -1
- package/dist/{chunk-DHR2YURL.js → chunk-KUSE5B2O.js} +163 -9
- package/dist/{chunk-XX6D7IND.js → chunk-NVAXIB4O.js} +2 -2
- package/dist/{chunk-6PGLJWIC.js → chunk-OXLYHOSQ.js} +30 -8
- package/dist/{chunk-Q3HKE627.js → chunk-QLE7GSOQ.js} +3 -3
- package/dist/{chunk-QKQOTEAB.js → chunk-S2I6ABXE.js} +1 -1
- package/dist/{chunk-INMYNHJL.js → chunk-TVOXRODW.js} +34 -2
- package/dist/{chunk-PTROESUB.js → chunk-UHG27FEH.js} +4 -4
- package/dist/{chunk-DJAGZUHW.js → chunk-VILOIOPD.js} +1238 -26
- package/dist/{chunk-GV5RJ6BU.js → chunk-X3WUWLRX.js} +4 -4
- package/dist/{chunk-JFQGODKK.js → chunk-XLAH4NWJ.js} +1 -1
- package/dist/{chunk-VJWJGSRS.js → chunk-YBJOZDR6.js} +1 -1
- package/dist/{chunk-P2VAHDGO.js → chunk-YQNL73BB.js} +2 -2
- package/dist/executions.js +12 -12
- package/dist/history.js +4 -4
- package/dist/index.d.ts +741 -4
- package/dist/index.js +38 -38
- package/dist/nodes.js +2 -2
- package/dist/observability.js +6 -6
- package/dist/settings.js +6 -6
- package/dist/templates.js +10 -10
- package/dist/workflow-builder.js +12 -12
- package/dist/workflows-list.js +8 -8
- package/package.json +3 -2
- package/dist/ExecutionDetailPage-WOOORXXU.js +0 -22
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { useDurableParityRunFields,
|
|
2
|
-
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-
|
|
3
|
-
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-
|
|
4
|
-
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-
|
|
5
|
-
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, EntityTagPicker, RunHistoryView, SignalRunDialog, terminateDurableRun, useWorkflowProposal, WorkflowProposalCard } from './chunk-
|
|
1
|
+
import { useDurableParityRunFields, useRunMetadata, useRunPending, ExecutionStatusBadge, NodeTimeline, RunLogViewer, setRunVersioningOverride } from './chunk-6YGBRJNV.js';
|
|
2
|
+
import { useExecution, useExecutionActions, useAutoRefresh, runChainLinks, shortRunId, callbackTone, parseMetadataDefinition, overrideRequestOf } from './chunk-NVAXIB4O.js';
|
|
3
|
+
import { fetchRunFailureClusters, OPEN_STATUSES, dismissRunFailureCluster, BUCKET_LABELS } from './chunk-YQNL73BB.js';
|
|
4
|
+
import { useRunPolicyDecisions, RunPolicyDecisions } from './chunk-YBJOZDR6.js';
|
|
5
|
+
import { useDurableRunFields, useRunHistory, useDeterminismStatus, useRunStackTrace, EntityTagPicker, RunHistoryView, SignalRunDialog, terminateDurableRun, canSaveRunAsTestCase, useWorkflowProposal, WorkflowProposalCard, MAX_CASE_NAME, saveRunAsTestCase } from './chunk-BWQW6YSJ.js';
|
|
6
|
+
import { buildNodeDisplayMap, formatRunVersion } from './chunk-TVOXRODW.js';
|
|
6
7
|
import { AiCreditBalanceSlot } from './chunk-Y53CVZVV.js';
|
|
7
|
-
import { useWorkflowVersions } from './chunk-
|
|
8
|
-
import { throwIfResultError, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, useDurableFunctionNodesEnabled, useDurableParityEnabled, runSignalTargets, canSignalRun, describeOperationError } from './chunk-
|
|
8
|
+
import { useWorkflowVersions } from './chunk-E3KE67MX.js';
|
|
9
|
+
import { throwIfResultError, useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS, useDurableFunctionNodesEnabled, useDurableParityEnabled, runSignalTargets, canSignalRun, useWorkflowTestsEnabled, SdkPermissionButton, describeOperationError } from './chunk-OXLYHOSQ.js';
|
|
9
10
|
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
10
|
-
import { RunLogsDocument, RunLogAppendedDocument, ExplainRunDocument } from './chunk-
|
|
11
|
+
import { RunLogsDocument, RunLogAppendedDocument, ExplainRunDocument } from './chunk-KEYKB4E7.js';
|
|
11
12
|
import { useTr } from './chunk-UULVIT25.js';
|
|
12
13
|
import { getFluidGridsClient, getFluidGridsClientSafe } from './chunk-NTWG3CJX.js';
|
|
13
14
|
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
@@ -15,12 +16,13 @@ import { useParams, useNavigate, Link } from 'react-router';
|
|
|
15
16
|
import { Icon } from '@iconify/react';
|
|
16
17
|
import { toast } from 'sonner';
|
|
17
18
|
import { Button } from '@burdenoff/fe-libs/button';
|
|
18
|
-
import { Card, CardHeader, Badge, CardContent, Label, Textarea, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, Input, Button as Button$1 } from '@burdenoff/fe-libs/ui';
|
|
19
|
+
import { Card, CardHeader, Badge, CardContent, Label, Textarea, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, Input, Button as Button$1, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from '@burdenoff/fe-libs/ui';
|
|
19
20
|
import { useActorProfiles, buildActorFallback } from '@burdenoff/fe-libs/shared';
|
|
20
21
|
import { gql } from '@apollo/client';
|
|
21
22
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
22
23
|
import ReactMarkdown from 'react-markdown';
|
|
23
24
|
import { cn } from '@burdenoff/fe-libs/utils';
|
|
25
|
+
import { FlaskConical } from 'lucide-react';
|
|
24
26
|
|
|
25
27
|
var POLL_INTERVAL_MS = 2e3;
|
|
26
28
|
var PAGE_SIZE = 500;
|
|
@@ -2148,6 +2150,149 @@ function RunVersioningOverrideDialogHost({
|
|
|
2148
2150
|
}
|
|
2149
2151
|
);
|
|
2150
2152
|
}
|
|
2153
|
+
function SaveRunAsTestCaseButton(props) {
|
|
2154
|
+
const enabled = useWorkflowTestsEnabled();
|
|
2155
|
+
if (!enabled || !canSaveRunAsTestCase(props)) return null;
|
|
2156
|
+
return /* @__PURE__ */ jsx(SaveRunAsTestCase, { runId: props.runId });
|
|
2157
|
+
}
|
|
2158
|
+
function SaveRunAsTestCase({ runId }) {
|
|
2159
|
+
const tr = useTr();
|
|
2160
|
+
const [open, setOpen] = useState(false);
|
|
2161
|
+
const [name, setName] = useState("");
|
|
2162
|
+
const [description, setDescription] = useState("");
|
|
2163
|
+
const [saving, setSaving] = useState(false);
|
|
2164
|
+
const openDialog = () => {
|
|
2165
|
+
setName(`Run ${runId.slice(0, 8)}`);
|
|
2166
|
+
setDescription("");
|
|
2167
|
+
setOpen(true);
|
|
2168
|
+
};
|
|
2169
|
+
const save = async () => {
|
|
2170
|
+
const trimmed = name.trim();
|
|
2171
|
+
if (!trimmed) return;
|
|
2172
|
+
setSaving(true);
|
|
2173
|
+
try {
|
|
2174
|
+
const created = await saveRunAsTestCase(
|
|
2175
|
+
runId,
|
|
2176
|
+
trimmed,
|
|
2177
|
+
description.trim() || void 0
|
|
2178
|
+
);
|
|
2179
|
+
toast.success(
|
|
2180
|
+
tr(
|
|
2181
|
+
"fluidgrids.executions.saveAsTestCase.saved",
|
|
2182
|
+
"Saved as a test case"
|
|
2183
|
+
),
|
|
2184
|
+
{
|
|
2185
|
+
description: tr(
|
|
2186
|
+
"fluidgrids.executions.saveAsTestCase.savedDescription",
|
|
2187
|
+
"{{name}} is in the workflow's Tests panel.",
|
|
2188
|
+
{ name: created.name }
|
|
2189
|
+
),
|
|
2190
|
+
dismissible: true
|
|
2191
|
+
}
|
|
2192
|
+
);
|
|
2193
|
+
setOpen(false);
|
|
2194
|
+
} catch (err) {
|
|
2195
|
+
toast.error(
|
|
2196
|
+
tr(
|
|
2197
|
+
"fluidgrids.executions.saveAsTestCase.error",
|
|
2198
|
+
"Could not save the run as a test case"
|
|
2199
|
+
),
|
|
2200
|
+
{ description: err instanceof Error ? err.message : String(err) }
|
|
2201
|
+
);
|
|
2202
|
+
} finally {
|
|
2203
|
+
setSaving(false);
|
|
2204
|
+
}
|
|
2205
|
+
};
|
|
2206
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2207
|
+
/* @__PURE__ */ jsx(
|
|
2208
|
+
SdkPermissionButton,
|
|
2209
|
+
{
|
|
2210
|
+
permission: FLUIDGRIDS_PERMISSIONS.WORKFLOW_UPDATE,
|
|
2211
|
+
deniedTooltip: tr(
|
|
2212
|
+
"fluidgrids.executions.saveAsTestCase.denied",
|
|
2213
|
+
"You need edit access to this workflow to save test cases"
|
|
2214
|
+
),
|
|
2215
|
+
children: /* @__PURE__ */ jsxs(
|
|
2216
|
+
Button,
|
|
2217
|
+
{
|
|
2218
|
+
variant: "outline",
|
|
2219
|
+
size: "sm",
|
|
2220
|
+
onClick: openDialog,
|
|
2221
|
+
"data-testid": "fluidgrids-save-run-as-test-case",
|
|
2222
|
+
children: [
|
|
2223
|
+
/* @__PURE__ */ jsx(FlaskConical, { className: "mr-1 size-4" }),
|
|
2224
|
+
tr(
|
|
2225
|
+
"fluidgrids.executions.saveAsTestCase.button",
|
|
2226
|
+
"Save as test case"
|
|
2227
|
+
)
|
|
2228
|
+
]
|
|
2229
|
+
}
|
|
2230
|
+
)
|
|
2231
|
+
}
|
|
2232
|
+
),
|
|
2233
|
+
/* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (next) => !saving && setOpen(next), children: /* @__PURE__ */ jsxs(DialogContent, { "data-testid": "fluidgrids-save-run-as-test-case-dialog", children: [
|
|
2234
|
+
/* @__PURE__ */ jsxs(DialogHeader, { children: [
|
|
2235
|
+
/* @__PURE__ */ jsx(DialogTitle, { children: tr(
|
|
2236
|
+
"fluidgrids.executions.saveAsTestCase.title",
|
|
2237
|
+
"Save this run as a test case"
|
|
2238
|
+
) }),
|
|
2239
|
+
/* @__PURE__ */ jsx(DialogDescription, { children: tr(
|
|
2240
|
+
"fluidgrids.executions.saveAsTestCase.body",
|
|
2241
|
+
"The test case replays this run's input. Every connection call the run made is mocked with the output it returned; the workflow's own logic runs for real."
|
|
2242
|
+
) })
|
|
2243
|
+
] }),
|
|
2244
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
2245
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
2246
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "fg-run-test-case-name", className: "text-xs", children: tr("fluidgrids.executions.saveAsTestCase.name", "Name") }),
|
|
2247
|
+
/* @__PURE__ */ jsx(
|
|
2248
|
+
Input,
|
|
2249
|
+
{
|
|
2250
|
+
id: "fg-run-test-case-name",
|
|
2251
|
+
value: name,
|
|
2252
|
+
maxLength: MAX_CASE_NAME,
|
|
2253
|
+
onChange: (event) => setName(event.target.value)
|
|
2254
|
+
}
|
|
2255
|
+
)
|
|
2256
|
+
] }),
|
|
2257
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
2258
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "fg-run-test-case-description", className: "text-xs", children: tr(
|
|
2259
|
+
"fluidgrids.executions.saveAsTestCase.description",
|
|
2260
|
+
"Description (optional)"
|
|
2261
|
+
) }),
|
|
2262
|
+
/* @__PURE__ */ jsx(
|
|
2263
|
+
Textarea,
|
|
2264
|
+
{
|
|
2265
|
+
id: "fg-run-test-case-description",
|
|
2266
|
+
value: description,
|
|
2267
|
+
rows: 2,
|
|
2268
|
+
onChange: (event) => setDescription(event.target.value)
|
|
2269
|
+
}
|
|
2270
|
+
)
|
|
2271
|
+
] })
|
|
2272
|
+
] }),
|
|
2273
|
+
/* @__PURE__ */ jsxs(DialogFooter, { children: [
|
|
2274
|
+
/* @__PURE__ */ jsx(
|
|
2275
|
+
Button,
|
|
2276
|
+
{
|
|
2277
|
+
variant: "outline",
|
|
2278
|
+
disabled: saving,
|
|
2279
|
+
onClick: () => setOpen(false),
|
|
2280
|
+
children: tr("fluidgrids.executions.saveAsTestCase.cancel", "Cancel")
|
|
2281
|
+
}
|
|
2282
|
+
),
|
|
2283
|
+
/* @__PURE__ */ jsx(
|
|
2284
|
+
Button,
|
|
2285
|
+
{
|
|
2286
|
+
disabled: saving || name.trim() === "",
|
|
2287
|
+
onClick: () => void save(),
|
|
2288
|
+
"data-testid": "fluidgrids-save-run-as-test-case-confirm",
|
|
2289
|
+
children: tr("fluidgrids.executions.saveAsTestCase.confirm", "Save")
|
|
2290
|
+
}
|
|
2291
|
+
)
|
|
2292
|
+
] })
|
|
2293
|
+
] }) })
|
|
2294
|
+
] });
|
|
2295
|
+
}
|
|
2151
2296
|
var ALL_DETAIL_TABS = [
|
|
2152
2297
|
"timeline",
|
|
2153
2298
|
"history",
|
|
@@ -2829,6 +2974,15 @@ function ExecutionDetailPage() {
|
|
|
2829
2974
|
]
|
|
2830
2975
|
}
|
|
2831
2976
|
),
|
|
2977
|
+
/* @__PURE__ */ jsx(
|
|
2978
|
+
SaveRunAsTestCaseButton,
|
|
2979
|
+
{
|
|
2980
|
+
runId: execution.id,
|
|
2981
|
+
status: execution.status,
|
|
2982
|
+
workflowKey: execution.workflowKey,
|
|
2983
|
+
isDurable: isDurableRun || durableEnabled && durableFields.fields?.id !== execution.id
|
|
2984
|
+
}
|
|
2985
|
+
),
|
|
2832
2986
|
/* @__PURE__ */ jsxs(Button, { variant: "outline", size: "sm", onClick: refetch, children: [
|
|
2833
2987
|
/* @__PURE__ */ jsx(Icon, { icon: "mdi:refresh", className: "mr-1", width: 16 }),
|
|
2834
2988
|
tr(
|
|
@@ -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-
|
|
2
|
+
import { useFluidGridsAnalytics, throwIfResultError, emitRunStarted, openRunQuotaUpgradePrompt } from './chunk-OXLYHOSQ.js';
|
|
3
3
|
import { useExecutionsStore } from './chunk-6AMNEX2Y.js';
|
|
4
|
-
import { ExecutionsListDocument, ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument } from './chunk-
|
|
4
|
+
import { ExecutionsListDocument, ExecutionDetailDocument, ExecutionStatsDocument, PauseExecutionDocument, ResumeExecutionDocument, CancelExecutionDocument, RetryNodeDocument, TriggerWorkflowDocument, TerminateExecutionDocument } from './chunk-KEYKB4E7.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';
|
|
@@ -2,7 +2,7 @@ import { cn as cn$1 } from './chunk-JL7CASN5.js';
|
|
|
2
2
|
import { getGlobalStoreClient, createGlobalStoreClient, setGlobalStoreClient, resetGlobalStoreClient } from './chunk-PXIFUMLA.js';
|
|
3
3
|
import { getFluidGridsConfig, validateTrustedOrigin, resetFluidGridsExecutionState, setFluidGridsConfig, resetFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
4
4
|
import { GetMyNodeInstallationsDocument } from './chunk-G77IGC3Y.js';
|
|
5
|
-
import { fetchAllNodeEndpointConfigs, NodeManifestDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, ExecuteStepDocument, TriggerWorkflowDocument, RunFromNodeDocument, ExecutionDetailDocument, WorkflowDefinitionDocument, WorkflowRunDocument } from './chunk-
|
|
5
|
+
import { fetchAllNodeEndpointConfigs, NodeManifestDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, ExecuteStepDocument, TriggerWorkflowDocument, RunFromNodeDocument, ExecutionDetailDocument, WorkflowDefinitionDocument, WorkflowRunDocument } from './chunk-KEYKB4E7.js';
|
|
6
6
|
import { useTr, ENGLISH_FALLBACK_TRANSLATOR, FluidGridsTranslationProvider } from './chunk-UULVIT25.js';
|
|
7
7
|
import { waitForFluidGridsClient, getFluidGridsClient, getFluidGridsClientSafe, createFluidGridsClient, setFluidGridsClient, resetFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
8
8
|
import * as React2 from 'react';
|
|
@@ -43,6 +43,9 @@ var RUN_CONTROL_NODE_TYPES = /* @__PURE__ */ new Set([
|
|
|
43
43
|
"internal:signal-run",
|
|
44
44
|
"internal:set-search-attributes"
|
|
45
45
|
]);
|
|
46
|
+
var WORKFLOW_TEST_NODE_TYPES = /* @__PURE__ */ new Set([
|
|
47
|
+
"internal:assert"
|
|
48
|
+
]);
|
|
46
49
|
function isRunControlNodeType(nodeType) {
|
|
47
50
|
return !!nodeType && RUN_CONTROL_NODE_TYPES.has(nodeType);
|
|
48
51
|
}
|
|
@@ -51,12 +54,14 @@ function paletteGatesOf(gates) {
|
|
|
51
54
|
return {
|
|
52
55
|
durableFunctions: gates,
|
|
53
56
|
runControl: false,
|
|
54
|
-
searchAttributes: false
|
|
57
|
+
searchAttributes: false,
|
|
58
|
+
workflowTests: false
|
|
55
59
|
};
|
|
56
60
|
return {
|
|
57
61
|
durableFunctions: gates?.durableFunctions === true,
|
|
58
62
|
runControl: gates?.runControl === true,
|
|
59
|
-
searchAttributes: gates?.searchAttributes === true
|
|
63
|
+
searchAttributes: gates?.searchAttributes === true,
|
|
64
|
+
workflowTests: gates?.workflowTests === true
|
|
60
65
|
};
|
|
61
66
|
}
|
|
62
67
|
function hiddenBy(nodeType, gates) {
|
|
@@ -64,6 +69,7 @@ function hiddenBy(nodeType, gates) {
|
|
|
64
69
|
if (nodeType === "internal:signal-run") return !gates.runControl;
|
|
65
70
|
if (nodeType === "internal:set-search-attributes")
|
|
66
71
|
return !gates.searchAttributes;
|
|
72
|
+
if (WORKFLOW_TEST_NODE_TYPES.has(nodeType)) return !gates.workflowTests;
|
|
67
73
|
return false;
|
|
68
74
|
}
|
|
69
75
|
function isDurableFunctionNodeType(nodeType) {
|
|
@@ -139,7 +145,14 @@ var FLUIDGRIDS_FLAGS = {
|
|
|
139
145
|
* Phase C Python durable functions: editing Python sources in the browser
|
|
140
146
|
* editor. Needs `codeFirst` and `durableFunctions`. Defaults OFF.
|
|
141
147
|
*/
|
|
142
|
-
pythonDurableFunctions: "fluidgrids.python-durable-functions"
|
|
148
|
+
pythonDurableFunctions: "fluidgrids.python-durable-functions",
|
|
149
|
+
/**
|
|
150
|
+
* Workflow test suites (BOFF-9960): the builder's Tests panel, saving a run
|
|
151
|
+
* as a test case and the Assert node in the palette. A rollout gate, so it
|
|
152
|
+
* defaults OFF and fails closed; wspace-workflow-svc answers every test-suite
|
|
153
|
+
* field with FEATURE_DISABLED while it is off for the workspace.
|
|
154
|
+
*/
|
|
155
|
+
workflowTests: "fluidgrids.workflow-tests"
|
|
143
156
|
};
|
|
144
157
|
var FLUIDGRIDS_FLAG_DEFAULTS = {
|
|
145
158
|
[FLUIDGRIDS_FLAGS.logStreams]: true,
|
|
@@ -151,7 +164,8 @@ var FLUIDGRIDS_FLAG_DEFAULTS = {
|
|
|
151
164
|
[FLUIDGRIDS_FLAGS.searchAttributes]: false,
|
|
152
165
|
[FLUIDGRIDS_FLAGS.runArchival]: false,
|
|
153
166
|
[FLUIDGRIDS_FLAGS.schedulePolicies]: false,
|
|
154
|
-
[FLUIDGRIDS_FLAGS.pythonDurableFunctions]: false
|
|
167
|
+
[FLUIDGRIDS_FLAGS.pythonDurableFunctions]: false,
|
|
168
|
+
[FLUIDGRIDS_FLAGS.workflowTests]: false
|
|
155
169
|
};
|
|
156
170
|
var settledEvaluations = /* @__PURE__ */ new WeakMap();
|
|
157
171
|
function evaluationsUsable(context) {
|
|
@@ -229,12 +243,19 @@ function usePhaseCFlags() {
|
|
|
229
243
|
function useSelfHostedWorkersEnabled() {
|
|
230
244
|
return usePhaseCFlags().selfHostedWorkers;
|
|
231
245
|
}
|
|
246
|
+
function useWorkflowTestsEnabled() {
|
|
247
|
+
return useFluidGridsFlag(FLUIDGRIDS_FLAGS.workflowTests);
|
|
248
|
+
}
|
|
232
249
|
function resolvePaletteGates(context) {
|
|
233
250
|
const phaseC = resolvePhaseCFlags(context);
|
|
234
251
|
return {
|
|
235
252
|
durableFunctions: resolveFluidGridsFlag(context, FLUIDGRIDS_FLAGS.codeFirst) && resolveFluidGridsFlag(context, FLUIDGRIDS_FLAGS.durableFunctions),
|
|
236
253
|
runControl: phaseC.runControl,
|
|
237
|
-
searchAttributes: phaseC.searchAttributes
|
|
254
|
+
searchAttributes: phaseC.searchAttributes,
|
|
255
|
+
workflowTests: resolveFluidGridsFlag(
|
|
256
|
+
context,
|
|
257
|
+
FLUIDGRIDS_FLAGS.workflowTests
|
|
258
|
+
)
|
|
238
259
|
};
|
|
239
260
|
}
|
|
240
261
|
function usePaletteGates() {
|
|
@@ -3750,6 +3771,7 @@ function SdkPermissionButton({
|
|
|
3750
3771
|
permission,
|
|
3751
3772
|
deniedBehavior = "disable",
|
|
3752
3773
|
deniedTooltip = DEFAULT_DENIED_TOOLTIP,
|
|
3774
|
+
deniedTooltipClassName,
|
|
3753
3775
|
children
|
|
3754
3776
|
}) {
|
|
3755
3777
|
const { allowed, isLoading } = useFluidGridsPermission(permission);
|
|
@@ -3762,7 +3784,7 @@ function SdkPermissionButton({
|
|
|
3762
3784
|
if (isLoading) return disabledChild;
|
|
3763
3785
|
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
3764
3786
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx("span", { className: "inline-flex cursor-not-allowed", children: disabledChild }) }),
|
|
3765
|
-
/* @__PURE__ */ jsx(TooltipContent, { children: deniedTooltip })
|
|
3787
|
+
/* @__PURE__ */ jsx(TooltipContent, { className: deniedTooltipClassName, children: deniedTooltip })
|
|
3766
3788
|
] }) });
|
|
3767
3789
|
}
|
|
3768
3790
|
function SdkPermissionGate({
|
|
@@ -9976,4 +9998,4 @@ function useNodeExecution() {
|
|
|
9976
9998
|
};
|
|
9977
9999
|
}
|
|
9978
10000
|
|
|
9979
|
-
export { ALLOW_ALL_PERMISSIONS, AUTOSAVE_DEBOUNCE_MS, AUTOSAVE_RETRY_DELAYS_MS, AVAILABLE_NODES, BILLING_PLANS_PATH, BuilderReadOnlyProvider, CODE_WORKFLOW_NODE_TYPE, ConnectionFormDialog, ConnectionSelector, DURABLE_FUNCTION_NODE_TYPES, EDIT_SESSION_ID, ExpressionEditor, FLUIDGRIDS_FLAGS, FLUIDGRIDS_FLAG_DEFAULTS, FLUIDGRIDS_PERMISSIONS, FluidGridsContext, FluidGridsPermissionsProvider, FluidGridsProvider, NODES, NODES_METADATA, NODE_CONFIGS, NODE_OPERATION_DRAG_DATA_FORMAT, NODE_TYPES, NODE_TYPE_DRAG_DATA_FORMAT, NodePropertyPanel, NodeTypeIcon, PHASE_C_FLAGS_OFF, RUNS_QUOTA_NAME, RUN_CONTROL_NODE_TYPES, STICKY_NOTE_TYPE, SdkPermissionButton, SdkPermissionGate, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, WORKFLOWS_QUOTA_NAME, bannerOf, blankWorkflowCreateInput, buildOperationSeed, buildStickyNode, builderPathOf, canAutosave, canRenderOperationPanel, canSignalRun, changedSourceFiles, childRunIdOf, classifyCreateRefusal, clearCodeWorkflowDefinitionCache, codeBuildIdOf, components_default, createConfiguredNode, createThenOpen, declaredOutputFields, declaredSignals, defaultSourcePath, describeOperationError, diagnosticsByPath, editStateOf, emitNodeInstalled, emitRunFailed, emitRunLimitHit, emitRunStarted, emitTemplateUsed, emitUpgradeClicked, emitWorkflowCreated, emitWorkflowLimitHit, emitWorkflowPublished, ensureNodeConfigsLoaded, evaluatePermissionCheck, fieldsFromIO, fieldsFromValue, filterPaletteNodes, findQuotaRefusal, findSaveConflict, forgetSessionForReload, formatParameterValue, getNodeDetail, getNodeMetadata, inAppLeaveTarget, interfaceFields, interfaceHandlers, isDurableFunctionNodeType, isEditableSourcePath, isForbiddenError, isImageIcon, isLocked, isNodeConfigsInitialized, isNodeTrigger, isNodeTypeHiddenFromPalette, isParamVisible, isQuotaExhaustedFailure, isRunControlNodeType, isTriggerOperation, leaseCallQueue, leaveNeedsConfirmation, listCustomBlocks, liveInternalOperations, loadDefinitionJson, mergeStickyNotes, nodeAccent, nodesOf, onNodeTypesUpdate, openRunQuotaUpgradePrompt, parseParameterValue, parseRawSignalPayload, pathToExpression, payloadFromCardValues, phaseAfterAcquire, phaseAfterTakeOver, projectLanguage, readCodeWorkflowState, readDisplayOptions, refetchStoreNodes, registerCustomBlock, registerWorkflowNodeTypes, releasesOnClose, rememberOwnStatusChange, rememberRevision, rememberSessionForReload, resolveInputHandles, resolveNodeOperation, resolveOperationName, resolveOutputHandles, resolvePhaseCFlags, resolveUiSpec, runPreparationOf, runSignalTargets, runTriggerFromMode, saveIndicatorOf, savesInPlace, sessionBeforeReload, shouldReleaseForIdle, signalPayloadCard, snapshotForSave, sourceLanguageOf, stripSubmitActions, structuredParameterType, subscribeWorkflowSaved, synchronizeOperationUpdate, throwIfResultError, tickAction, toCodeMirrorDiagnostics, useAgentDefinitionList, useAgentDefinitions, useBuilderReadOnly, useCodeWorkflowInterface, useConnection, useConnections, useConnectionsByProvider, useCreateConnection, useDurableFunctionNodesEnabled, useDurableParityEnabled, useEditLeaseLocked, useEditLeaseStore, useFlowStore, useFluidGridsAnalytics, useFluidGridsContext, useFluidGridsFlag, useFluidGridsPermission, useInitiateOAuth, useInsertNode, useIsValidConnection, useNodeExecution, useNodeRegistryRevision, usePaletteGates, usePhaseCFlags, useProviders, useSaveStatusStore, useSaveWorkflow, useSelfHostedWorkersEnabled, workflowFingerprint };
|
|
10001
|
+
export { ALLOW_ALL_PERMISSIONS, AUTOSAVE_DEBOUNCE_MS, AUTOSAVE_RETRY_DELAYS_MS, AVAILABLE_NODES, BILLING_PLANS_PATH, BuilderReadOnlyProvider, CODE_WORKFLOW_NODE_TYPE, ConnectionFormDialog, ConnectionSelector, DURABLE_FUNCTION_NODE_TYPES, EDIT_SESSION_ID, ExpressionEditor, FLUIDGRIDS_FLAGS, FLUIDGRIDS_FLAG_DEFAULTS, FLUIDGRIDS_PERMISSIONS, FluidGridsContext, FluidGridsPermissionsProvider, FluidGridsProvider, NODES, NODES_METADATA, NODE_CONFIGS, NODE_OPERATION_DRAG_DATA_FORMAT, NODE_TYPES, NODE_TYPE_DRAG_DATA_FORMAT, NodePropertyPanel, NodeTypeIcon, PHASE_C_FLAGS_OFF, RUNS_QUOTA_NAME, RUN_CONTROL_NODE_TYPES, STICKY_NOTE_TYPE, SdkPermissionButton, SdkPermissionGate, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, WORKFLOWS_QUOTA_NAME, WORKFLOW_TEST_NODE_TYPES, bannerOf, blankWorkflowCreateInput, buildOperationSeed, buildStickyNode, builderPathOf, canAutosave, canRenderOperationPanel, canSignalRun, changedSourceFiles, childRunIdOf, classifyCreateRefusal, clearCodeWorkflowDefinitionCache, codeBuildIdOf, components_default, createConfiguredNode, createThenOpen, declaredOutputFields, declaredSignals, defaultSourcePath, describeOperationError, diagnosticsByPath, editStateOf, emitNodeInstalled, emitRunFailed, emitRunLimitHit, emitRunStarted, emitTemplateUsed, emitUpgradeClicked, emitWorkflowCreated, emitWorkflowLimitHit, emitWorkflowPublished, ensureNodeConfigsLoaded, evaluatePermissionCheck, fieldsFromIO, fieldsFromValue, filterPaletteNodes, findQuotaRefusal, findSaveConflict, forgetSessionForReload, formatParameterValue, getNodeDetail, getNodeMetadata, inAppLeaveTarget, interfaceFields, interfaceHandlers, isDurableFunctionNodeType, isEditableSourcePath, isForbiddenError, isImageIcon, isLocked, isNodeConfigsInitialized, isNodeTrigger, isNodeTypeHiddenFromPalette, isParamVisible, isQuotaExhaustedFailure, isRunControlNodeType, isTriggerOperation, leaseCallQueue, leaveNeedsConfirmation, listCustomBlocks, liveInternalOperations, loadDefinitionJson, mergeStickyNotes, nodeAccent, nodesOf, onNodeTypesUpdate, openRunQuotaUpgradePrompt, parseParameterValue, parseRawSignalPayload, pathToExpression, payloadFromCardValues, phaseAfterAcquire, phaseAfterTakeOver, projectLanguage, readCodeWorkflowState, readDisplayOptions, refetchStoreNodes, registerCustomBlock, registerWorkflowNodeTypes, releasesOnClose, rememberOwnStatusChange, rememberRevision, rememberSessionForReload, resolveInputHandles, resolveNodeOperation, resolveOperationName, resolveOutputHandles, resolvePhaseCFlags, resolveUiSpec, runPreparationOf, runSignalTargets, runTriggerFromMode, saveIndicatorOf, savesInPlace, sessionBeforeReload, shouldReleaseForIdle, signalPayloadCard, snapshotForSave, sourceLanguageOf, stripSubmitActions, structuredParameterType, subscribeWorkflowSaved, synchronizeOperationUpdate, throwIfResultError, tickAction, toCodeMirrorDiagnostics, useAgentDefinitionList, useAgentDefinitions, useBuilderReadOnly, useCodeWorkflowInterface, useConnection, useConnections, useConnectionsByProvider, useCreateConnection, useDurableFunctionNodesEnabled, useDurableParityEnabled, useEditLeaseLocked, useEditLeaseStore, useFlowStore, useFluidGridsAnalytics, useFluidGridsContext, useFluidGridsFlag, useFluidGridsPermission, useInitiateOAuth, useInsertNode, useIsValidConnection, useNodeExecution, useNodeRegistryRevision, usePaletteGates, usePhaseCFlags, useProviders, useSaveStatusStore, useSaveWorkflow, useSelfHostedWorkersEnabled, useWorkflowTestsEnabled, workflowFingerprint };
|
|
@@ -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-YQNL73BB.js';
|
|
2
|
+
import { useDataSinks, useDataSinkData, useInsightsData, useRunReplayActions } from './chunk-4OOE56HK.js';
|
|
3
|
+
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-OXLYHOSQ.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
1
|
import { historyControls } from './chunk-FNZZ5JJL.js';
|
|
2
|
-
import { useWorkflowDefinitions } from './chunk-
|
|
2
|
+
import { useWorkflowDefinitions } from './chunk-E3KE67MX.js';
|
|
3
3
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
4
4
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
5
5
|
import { getFluidGridsConfig } from './chunk-6AMNEX2Y.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FluidgridsEntityTagsDocument, AvailableFluidgridsTagsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, UntagFluidgridsEntityDocument, ReplaceFluidgridsEntityTagsDocument, CreateFluidgridsTagDocument, DataTablesTagsDocument } from './chunk-
|
|
1
|
+
import { FluidgridsEntityTagsDocument, AvailableFluidgridsTagsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, UntagFluidgridsEntityDocument, ReplaceFluidgridsEntityTagsDocument, CreateFluidgridsTagDocument, DataTablesTagsDocument } from './chunk-KEYKB4E7.js';
|
|
2
2
|
import { getFluidGridsClient } from './chunk-NTWG3CJX.js';
|
|
3
3
|
import { useState, useCallback, useEffect } from 'react';
|
|
4
4
|
|
|
@@ -176,4 +176,36 @@ function useDataTableTagOverlay(limit = 200) {
|
|
|
176
176
|
return { tagsById, refetch: fetchOverlay };
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
// src/modules/executions/utils/run-display.ts
|
|
180
|
+
function formatRunVersion(version) {
|
|
181
|
+
if (!version) return "";
|
|
182
|
+
return version.startsWith("v") ? version : `v${version}`;
|
|
183
|
+
}
|
|
184
|
+
function asString(value) {
|
|
185
|
+
return typeof value === "string" && value.trim() ? value : void 0;
|
|
186
|
+
}
|
|
187
|
+
function buildNodeDisplayMap(definitionJson) {
|
|
188
|
+
const map = {};
|
|
189
|
+
const nodes = definitionJson?.data?.nodes;
|
|
190
|
+
if (!Array.isArray(nodes)) return map;
|
|
191
|
+
for (const node of nodes) {
|
|
192
|
+
const id = asString(node?.id);
|
|
193
|
+
if (!id) continue;
|
|
194
|
+
const label = asString(node?.data?.label) ?? asString(node?.data?.nodeData?.name) ?? asString(node?.type);
|
|
195
|
+
if (!label) continue;
|
|
196
|
+
const operation = asString(node?.data?.operation_name);
|
|
197
|
+
map[id] = {
|
|
198
|
+
label,
|
|
199
|
+
// 'execute' is the internal single-op pseudo-operation — the builder
|
|
200
|
+
// hides it on cards, so the runs screens do too.
|
|
201
|
+
operation: operation === "execute" ? void 0 : operation
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
return map;
|
|
205
|
+
}
|
|
206
|
+
function nodeDisplayTitle(display, fallback) {
|
|
207
|
+
if (!display) return fallback;
|
|
208
|
+
return display.operation ? `${display.label} \xB7 ${display.operation}` : display.label;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export { FLUIDGRIDS_ENTITY_TYPES, buildNodeDisplayMap, formatRunVersion, nodeDisplayTitle, tagLabel, useAvailableTags, useCreateTag, useDataTableTagOverlay, useDraftEntityTags, useEntityTags, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { useRunStatusCounts, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination, runStatusLabels } from './chunk-
|
|
2
|
-
import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, WORKFLOW_ID_MAX_LENGTH } from './chunk-
|
|
3
|
-
import { useWorkflowDefinitions } from './chunk-
|
|
1
|
+
import { useRunStatusCounts, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination, runStatusLabels } from './chunk-6YGBRJNV.js';
|
|
2
|
+
import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, WORKFLOW_ID_MAX_LENGTH } from './chunk-NVAXIB4O.js';
|
|
3
|
+
import { useWorkflowDefinitions } from './chunk-E3KE67MX.js';
|
|
4
4
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
5
|
-
import { useDurableParityEnabled } from './chunk-
|
|
5
|
+
import { useDurableParityEnabled } from './chunk-OXLYHOSQ.js';
|
|
6
6
|
import { useExecutionsStore } from './chunk-6AMNEX2Y.js';
|
|
7
7
|
import { useTr } from './chunk-UULVIT25.js';
|
|
8
8
|
import { useRef, useCallback, useMemo, useState, useEffect } from 'react';
|