@burdenoff/fluidgrids-fe-sdk 2026.1110.13 → 2026.1110.15
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-3YFDDGKR.js → ExecutionDetailPage-4SROTSE6.js} +11 -11
- package/dist/{ExecutionsListPage-LQSTH2ZI.js → ExecutionsListPage-USYSLLK4.js} +8 -8
- package/dist/{WorkflowBuilder-IZR6F7N5.js → WorkflowBuilder-QVYJN4AV.js} +13 -13
- package/dist/{WorkflowsList-FA724ZVU.js → WorkflowsList-AAKPG2NB.js} +6 -6
- package/dist/{agentTools-ISAX2OP5.js → agentTools-D4CEXWE3.js} +2 -2
- package/dist/{chunk-KGZITAPA.js → chunk-2LJ5WON7.js} +5 -5
- package/dist/{chunk-EZGWG3YM.js → chunk-2TWTJOSU.js} +5 -5
- package/dist/{chunk-AL5QPU3W.js → chunk-3U6OJEBR.js} +2 -1
- package/dist/{chunk-HNH44BKA.js → chunk-ATK6IFZK.js} +4 -4
- package/dist/{chunk-CPUE7IAT.js → chunk-C6EMUPJL.js} +13 -13
- package/dist/{chunk-EM7LYTJI.js → chunk-E4JQIZYG.js} +10 -10
- package/dist/{chunk-UX5AWA4A.js → chunk-EXFTLY2C.js} +1 -1
- package/dist/{chunk-DJ6VN3MP.js → chunk-G3HMT2LN.js} +1 -1
- package/dist/{chunk-3DSR3JJL.js → chunk-G63OVVBC.js} +2 -2
- package/dist/{chunk-GNIJYZNL.js → chunk-GRGP5GS4.js} +2 -2
- package/dist/{chunk-45WET2TV.js → chunk-I77X7UAX.js} +5 -5
- package/dist/{chunk-UIOHTUZ7.js → chunk-JIQH4SXO.js} +4 -4
- package/dist/{chunk-D3V64LEJ.js → chunk-KWIQPBBA.js} +2 -2
- package/dist/{chunk-ZH7OMUYF.js → chunk-KX5UY3C3.js} +1 -1
- package/dist/{chunk-N76SCK7E.js → chunk-LBHHK2H2.js} +2 -2
- package/dist/{chunk-WX2WZWI5.js → chunk-M2Y3ZXOC.js} +442 -45
- package/dist/{chunk-SG4FNU7J.js → chunk-MCVL4CUP.js} +1 -1
- package/dist/{chunk-AE5EH6QC.js → chunk-ME2CQ2WC.js} +6 -6
- package/dist/{chunk-3MIYNJAX.js → chunk-OJCKL6ZE.js} +2 -2
- package/dist/{chunk-KIEJZVOI.js → chunk-PKXJROMZ.js} +2 -2
- package/dist/{chunk-HLBO6PI4.js → chunk-QNDTRESJ.js} +1 -1
- package/dist/{chunk-FVT3K4GZ.js → chunk-SHZYPTJU.js} +2 -2
- package/dist/{chunk-NXM2E7IB.js → chunk-UK2IGA6G.js} +3 -3
- package/dist/{chunk-BVIGBIYD.js → chunk-WHIC7LJR.js} +1 -1
- package/dist/{chunk-2SZX5K7F.js → chunk-XIHZXZJM.js} +2 -2
- package/dist/{chunk-CA7YZ2JN.js → chunk-YCGYKLUM.js} +5 -5
- package/dist/{chunk-Y5V7HQSA.js → chunk-YZNLW23N.js} +2 -2
- package/dist/executions.js +12 -12
- package/dist/history.js +5 -5
- package/dist/index.d.ts +40 -1
- package/dist/index.js +42 -42
- package/dist/{node-detail-view-7NY2H7RT.js → node-detail-view-KQ2PLIAA.js} +6 -6
- package/dist/nodes.js +2 -2
- package/dist/observability.js +5 -5
- package/dist/{quick-config-panel-JSQ2QSTJ.js → quick-config-panel-N7VR2V2X.js} +6 -6
- package/dist/settings.js +6 -6
- package/dist/templates.js +13 -13
- package/dist/workflow-builder.js +14 -14
- package/dist/workflows-list.js +6 -6
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TabButton, ReadOnlyFieldset, NodeSettingsPanel, NodeParamsForm, SchedulePanel, SCHEDULE_NODE_TYPE } from './chunk-
|
|
1
|
+
import { TabButton, ReadOnlyFieldset, NodeSettingsPanel, NodeParamsForm, SchedulePanel, SCHEDULE_NODE_TYPE } from './chunk-M2Y3ZXOC.js';
|
|
2
2
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-ERT444RG.js';
|
|
3
|
-
import { nodeTitle, FieldTree, usePhaseCFlags } from './chunk-
|
|
3
|
+
import { nodeTitle, FieldTree, usePhaseCFlags } from './chunk-GRGP5GS4.js';
|
|
4
4
|
import { useFlowStore } from './chunk-ATTUQMTG.js';
|
|
5
5
|
import { useTr } from './chunk-UULVIT25.js';
|
|
6
6
|
import { Icon } from '@iconify/react';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { CodeEditorField, normalizeCodeLanguage } from './chunk-KZCNJAMK.js';
|
|
2
2
|
import { readAssertRulesSetting, rowsFromRules, normaliseAssertRules, ruleFromRow, describeAssertRuleProblem, operatorSpec, ASSERT_OPERATORS, emptyAssertRuleRow } from './chunk-JDLQ6QIB.js';
|
|
3
|
-
import { AgentDefinitionSelectField, ConnectionSelector } from './chunk-
|
|
4
|
-
import { useResource, describeSchedule, NativeSelect, StatusPill, FieldError, isAgentNodeType, triggerSchedule, pauseSchedule, unpauseSchedule, backfillSchedule } from './chunk-
|
|
5
|
-
import { FluidGridsContext, isParamVisible, missingRequiredParameters, boundFieldsOf, asRecord, ConditionTreeBuilder, SwitchRulesEditor, casesFromRules, structuredParameterType, isStringOptionList, optionText, coerceNumber, nodeTitle, useRunGuard, paramsFromOperation, formatParameterValue, parseParameterValue, resolveLoadOptionsSpec, optionListValues, parseMappingValue, optionListText, useFluidGridsAnalytics, openRunQuotaUpgradePrompt } from './chunk-
|
|
3
|
+
import { AgentDefinitionSelectField, ConnectionSelector } from './chunk-XIHZXZJM.js';
|
|
4
|
+
import { useResource, describeSchedule, NativeSelect, StatusPill, FieldError, isAgentNodeType, triggerSchedule, pauseSchedule, unpauseSchedule, backfillSchedule } from './chunk-WHIC7LJR.js';
|
|
5
|
+
import { FluidGridsContext, isParamVisible, missingRequiredParameters, boundFieldsOf, asRecord, ConditionTreeBuilder, SwitchRulesEditor, casesFromRules, structuredParameterType, isStringOptionList, optionText, coerceNumber, nodeTitle, useRunGuard, paramsFromOperation, formatParameterValue, parseParameterValue, resolveLoadOptionsSpec, optionListValues, parseMappingValue, optionListText, useFluidGridsAnalytics, openRunQuotaUpgradePrompt, collectExtensions } from './chunk-GRGP5GS4.js';
|
|
6
6
|
import { useBuilderReadOnly } from './chunk-SDZEAIIE.js';
|
|
7
7
|
import { useFlowStore } from './chunk-ATTUQMTG.js';
|
|
8
8
|
import { getGlobalStoreClient } from './chunk-TYI2XOSI.js';
|
|
9
9
|
import { cn } from './chunk-JL7CASN5.js';
|
|
10
|
-
import { useRunFromNodeEligibilityQuery, PreviewScheduleDocument, WebhookTestListenerDocument, StopWebhookTestListenerDocument, ListenForWebhookTestEventDocument } from './chunk-
|
|
10
|
+
import { useRunFromNodeEligibilityQuery, PreviewScheduleDocument, WebhookTestListenerDocument, StopWebhookTestListenerDocument, ListenForWebhookTestEventDocument, WorkflowCallInputsDocument } from './chunk-3U6OJEBR.js';
|
|
11
11
|
import { useTr } from './chunk-UULVIT25.js';
|
|
12
12
|
import { getFluidGridsClient, getFluidGridsClientSafe } from './chunk-PDODDDHY.js';
|
|
13
13
|
import { throwIfResultError, describeOperationError } from './chunk-JKLZ6YZ3.js';
|
|
@@ -1205,6 +1205,254 @@ function WorkflowPickerField({
|
|
|
1205
1205
|
)
|
|
1206
1206
|
] });
|
|
1207
1207
|
}
|
|
1208
|
+
|
|
1209
|
+
// src/builder/lib/subworkflow-input-mapping.ts
|
|
1210
|
+
function isPlainObject(value) {
|
|
1211
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1212
|
+
}
|
|
1213
|
+
function readInputMapping(raw) {
|
|
1214
|
+
if (raw === void 0 || raw === null) return { kind: "none", entries: {} };
|
|
1215
|
+
if (isPlainObject(raw)) return { kind: "object", entries: raw };
|
|
1216
|
+
if (typeof raw !== "string") return { kind: "unreadable", entries: {} };
|
|
1217
|
+
if (raw.trim() === "") return { kind: "none", entries: {} };
|
|
1218
|
+
try {
|
|
1219
|
+
const parsed2 = JSON.parse(raw);
|
|
1220
|
+
return isPlainObject(parsed2) ? { kind: "json", entries: parsed2 } : { kind: "unreadable", entries: {} };
|
|
1221
|
+
} catch {
|
|
1222
|
+
return { kind: "unreadable", entries: {} };
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
function inputMappingExpression(mapping, name) {
|
|
1226
|
+
if (!Object.hasOwn(mapping.entries, name)) return "";
|
|
1227
|
+
const value = mapping.entries[name];
|
|
1228
|
+
if (typeof value === "string") return value;
|
|
1229
|
+
if (value === void 0) return "";
|
|
1230
|
+
return JSON.stringify(value);
|
|
1231
|
+
}
|
|
1232
|
+
function writeInputMappingExpression(raw, name, expression) {
|
|
1233
|
+
const mapping = readInputMapping(raw);
|
|
1234
|
+
if (mapping.kind === "unreadable") return raw;
|
|
1235
|
+
const next = { ...mapping.entries };
|
|
1236
|
+
if (expression.trim() === "") delete next[name];
|
|
1237
|
+
else next[name] = expression;
|
|
1238
|
+
if (Object.keys(next).length === 0) return void 0;
|
|
1239
|
+
return mapping.kind === "object" ? next : JSON.stringify(next, null, 2);
|
|
1240
|
+
}
|
|
1241
|
+
var IDENTIFIER = /^[A-Za-z_$][\w$]*$/;
|
|
1242
|
+
function inputMappingPlaceholder(name) {
|
|
1243
|
+
return IDENTIFIER.test(name) ? `output.${name}` : `output[${JSON.stringify(name)}]`;
|
|
1244
|
+
}
|
|
1245
|
+
function callInputsVersion(version) {
|
|
1246
|
+
if (typeof version === "number")
|
|
1247
|
+
return Number.isFinite(version) ? String(version) : void 0;
|
|
1248
|
+
if (typeof version === "string" && version.trim() !== "") return version;
|
|
1249
|
+
return void 0;
|
|
1250
|
+
}
|
|
1251
|
+
var WORKFLOW_CALL_INPUTS_DEBOUNCE_MS = 300;
|
|
1252
|
+
var IDLE = { status: "idle" };
|
|
1253
|
+
var LOADING = { status: "loading" };
|
|
1254
|
+
var ERROR = { status: "error" };
|
|
1255
|
+
async function requestWorkflowCallInputs(client, workflowKey, version) {
|
|
1256
|
+
const result = await client.query({
|
|
1257
|
+
query: WorkflowCallInputsDocument,
|
|
1258
|
+
variables: version === void 0 ? { workflowKey } : { workflowKey, version },
|
|
1259
|
+
// A called workflow can be edited in another tab; always ask for its current inputs.
|
|
1260
|
+
fetchPolicy: "network-only"
|
|
1261
|
+
});
|
|
1262
|
+
const inputs = result.data?.workflowCallInputs;
|
|
1263
|
+
if (!inputs) throw new Error("workflowCallInputs returned no data");
|
|
1264
|
+
return inputs;
|
|
1265
|
+
}
|
|
1266
|
+
function requestKeyOf(workflowKey, version) {
|
|
1267
|
+
return JSON.stringify([workflowKey, version ?? null]);
|
|
1268
|
+
}
|
|
1269
|
+
function useWorkflowCallInputs(workflowKey, version) {
|
|
1270
|
+
const context = useContext(FluidGridsContext);
|
|
1271
|
+
const client = context?.workspaceClient ?? getFluidGridsClientSafe();
|
|
1272
|
+
const [answer, setAnswer] = useState(null);
|
|
1273
|
+
const hasKey = workflowKey.trim() !== "";
|
|
1274
|
+
useEffect(() => {
|
|
1275
|
+
if (!hasKey || !client) return;
|
|
1276
|
+
const requestKey = requestKeyOf(workflowKey, version);
|
|
1277
|
+
let active = true;
|
|
1278
|
+
const timer = setTimeout(() => {
|
|
1279
|
+
requestWorkflowCallInputs(client, workflowKey, version).then(
|
|
1280
|
+
(inputs) => {
|
|
1281
|
+
if (!active) return;
|
|
1282
|
+
setAnswer({ requestKey, state: { status: "ready", inputs } });
|
|
1283
|
+
},
|
|
1284
|
+
() => {
|
|
1285
|
+
if (!active) return;
|
|
1286
|
+
setAnswer({ requestKey, state: ERROR });
|
|
1287
|
+
}
|
|
1288
|
+
);
|
|
1289
|
+
}, WORKFLOW_CALL_INPUTS_DEBOUNCE_MS);
|
|
1290
|
+
return () => {
|
|
1291
|
+
active = false;
|
|
1292
|
+
clearTimeout(timer);
|
|
1293
|
+
};
|
|
1294
|
+
}, [client, hasKey, workflowKey, version]);
|
|
1295
|
+
if (!hasKey) return IDLE;
|
|
1296
|
+
if (!client) return ERROR;
|
|
1297
|
+
return answer?.requestKey === requestKeyOf(workflowKey, version) ? answer.state : LOADING;
|
|
1298
|
+
}
|
|
1299
|
+
var SECTION_LABEL3 = "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground";
|
|
1300
|
+
var HINT = "text-xs text-muted-foreground";
|
|
1301
|
+
function SubworkflowInputsSection({
|
|
1302
|
+
workflowKey,
|
|
1303
|
+
version,
|
|
1304
|
+
inputMapping,
|
|
1305
|
+
onChange,
|
|
1306
|
+
testIdPrefix
|
|
1307
|
+
}) {
|
|
1308
|
+
const tr = useTr();
|
|
1309
|
+
const titleId = useId();
|
|
1310
|
+
const state = useWorkflowCallInputs(workflowKey, callInputsVersion(version));
|
|
1311
|
+
if (state.status === "idle") return null;
|
|
1312
|
+
const testId = `${testIdPrefix}-workflow-inputs`;
|
|
1313
|
+
return /* @__PURE__ */ jsxs(
|
|
1314
|
+
"section",
|
|
1315
|
+
{
|
|
1316
|
+
"aria-labelledby": titleId,
|
|
1317
|
+
"data-testid": testId,
|
|
1318
|
+
className: "mt-1 flex flex-col gap-2 rounded-md border border-border bg-muted/20 p-2.5",
|
|
1319
|
+
children: [
|
|
1320
|
+
/* @__PURE__ */ jsx("div", { id: titleId, className: SECTION_LABEL3, children: tr("fluidgrids.builder.workflowInputs.title", "Workflow inputs") }),
|
|
1321
|
+
state.status === "loading" && /* @__PURE__ */ jsx("p", { role: "status", className: HINT, "data-testid": `${testId}-loading`, children: tr("fluidgrids.builder.workflowPicker.loading", "Loading\u2026") }),
|
|
1322
|
+
state.status === "error" && /* @__PURE__ */ jsx("p", { className: HINT, "data-testid": `${testId}-error`, children: tr(
|
|
1323
|
+
"fluidgrids.builder.workflowInputs.loadFailed",
|
|
1324
|
+
"Could not load this workflow's inputs. You can still map them in Input Mapping."
|
|
1325
|
+
) }),
|
|
1326
|
+
state.status === "ready" && /* @__PURE__ */ jsx(
|
|
1327
|
+
DeclaredInputs,
|
|
1328
|
+
{
|
|
1329
|
+
inputs: state.inputs,
|
|
1330
|
+
inputMapping,
|
|
1331
|
+
onChange,
|
|
1332
|
+
testId
|
|
1333
|
+
}
|
|
1334
|
+
)
|
|
1335
|
+
]
|
|
1336
|
+
}
|
|
1337
|
+
);
|
|
1338
|
+
}
|
|
1339
|
+
function DeclaredInputs({
|
|
1340
|
+
inputs,
|
|
1341
|
+
inputMapping,
|
|
1342
|
+
onChange,
|
|
1343
|
+
testId
|
|
1344
|
+
}) {
|
|
1345
|
+
const tr = useTr();
|
|
1346
|
+
const mapping = readInputMapping(inputMapping);
|
|
1347
|
+
if (!inputs.hasCallTrigger) {
|
|
1348
|
+
return /* @__PURE__ */ jsx("p", { className: HINT, "data-testid": `${testId}-no-call-trigger`, children: tr(
|
|
1349
|
+
"fluidgrids.builder.workflowInputs.noCallTrigger",
|
|
1350
|
+
"This workflow does not start with an Execute Workflow Trigger, so it takes any data. Add one to it to declare its inputs."
|
|
1351
|
+
) });
|
|
1352
|
+
}
|
|
1353
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1354
|
+
inputs.problem && /* @__PURE__ */ jsx(
|
|
1355
|
+
"p",
|
|
1356
|
+
{
|
|
1357
|
+
role: "status",
|
|
1358
|
+
"data-testid": `${testId}-problem`,
|
|
1359
|
+
className: "rounded-md border border-status-warning-border bg-status-warning-bg-subtle px-2.5 py-2 text-xs text-status-warning-text",
|
|
1360
|
+
children: tr(
|
|
1361
|
+
"fluidgrids.builder.workflowInputs.problem",
|
|
1362
|
+
"This workflow's inputs cannot be read: {{problem}}",
|
|
1363
|
+
{ problem: inputs.problem }
|
|
1364
|
+
)
|
|
1365
|
+
}
|
|
1366
|
+
),
|
|
1367
|
+
!inputs.problem && inputs.fields.length === 0 && /* @__PURE__ */ jsx("p", { className: HINT, "data-testid": `${testId}-any-data`, children: tr(
|
|
1368
|
+
"fluidgrids.builder.workflowInputs.anyData",
|
|
1369
|
+
"This workflow accepts any data"
|
|
1370
|
+
) }),
|
|
1371
|
+
inputs.fields.length > 0 && mapping.kind === "unreadable" && /* @__PURE__ */ jsx("p", { className: HINT, "data-testid": `${testId}-mapping-unreadable`, children: tr(
|
|
1372
|
+
"fluidgrids.builder.workflowInputs.mappingUnreadable",
|
|
1373
|
+
"Input Mapping is not a JSON object. Fix it there to map these inputs here."
|
|
1374
|
+
) }),
|
|
1375
|
+
inputs.fields.map((field) => /* @__PURE__ */ jsx(
|
|
1376
|
+
InputField,
|
|
1377
|
+
{
|
|
1378
|
+
field,
|
|
1379
|
+
mapping,
|
|
1380
|
+
inputMapping,
|
|
1381
|
+
onChange,
|
|
1382
|
+
testId: `${testId}-field-${field.name}`
|
|
1383
|
+
},
|
|
1384
|
+
field.name
|
|
1385
|
+
))
|
|
1386
|
+
] });
|
|
1387
|
+
}
|
|
1388
|
+
function InputField({
|
|
1389
|
+
field,
|
|
1390
|
+
mapping,
|
|
1391
|
+
inputMapping,
|
|
1392
|
+
onChange,
|
|
1393
|
+
testId
|
|
1394
|
+
}) {
|
|
1395
|
+
const tr = useTr();
|
|
1396
|
+
const inputId = useId();
|
|
1397
|
+
const builderReadOnly = useBuilderReadOnly();
|
|
1398
|
+
const mapped = Object.keys(mapping.entries).length > 0;
|
|
1399
|
+
const missing = field.required && mapped && !Object.hasOwn(mapping.entries, field.name);
|
|
1400
|
+
const readOnly = builderReadOnly || mapping.kind === "unreadable";
|
|
1401
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
1402
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
1403
|
+
/* @__PURE__ */ jsx(
|
|
1404
|
+
"label",
|
|
1405
|
+
{
|
|
1406
|
+
htmlFor: inputId,
|
|
1407
|
+
className: "truncate font-mono text-xs font-medium text-foreground",
|
|
1408
|
+
children: field.name
|
|
1409
|
+
}
|
|
1410
|
+
),
|
|
1411
|
+
field.required && /* @__PURE__ */ jsx("span", { className: "text-destructive", children: "*" }),
|
|
1412
|
+
missing && /* @__PURE__ */ jsx(
|
|
1413
|
+
"span",
|
|
1414
|
+
{
|
|
1415
|
+
role: "status",
|
|
1416
|
+
"data-testid": `${testId}-missing`,
|
|
1417
|
+
className: "rounded border border-status-warning-border bg-status-warning-bg-subtle px-1 text-[10px] font-medium text-status-warning-text",
|
|
1418
|
+
children: tr(
|
|
1419
|
+
"fluidgrids.builder.requiredParameters.fieldMissing",
|
|
1420
|
+
"Required to run"
|
|
1421
|
+
)
|
|
1422
|
+
}
|
|
1423
|
+
),
|
|
1424
|
+
/* @__PURE__ */ jsx(
|
|
1425
|
+
"span",
|
|
1426
|
+
{
|
|
1427
|
+
"data-testid": `${testId}-type`,
|
|
1428
|
+
className: "ml-auto rounded border border-border px-1 text-[10px] uppercase tracking-wide text-muted-foreground",
|
|
1429
|
+
children: field.type
|
|
1430
|
+
}
|
|
1431
|
+
)
|
|
1432
|
+
] }),
|
|
1433
|
+
/* @__PURE__ */ jsx(
|
|
1434
|
+
"input",
|
|
1435
|
+
{
|
|
1436
|
+
id: inputId,
|
|
1437
|
+
type: "text",
|
|
1438
|
+
value: inputMappingExpression(mapping, field.name),
|
|
1439
|
+
placeholder: inputMappingPlaceholder(field.name),
|
|
1440
|
+
readOnly,
|
|
1441
|
+
spellCheck: false,
|
|
1442
|
+
autoComplete: "off",
|
|
1443
|
+
onChange: readOnly ? void 0 : (event) => onChange(
|
|
1444
|
+
writeInputMappingExpression(
|
|
1445
|
+
inputMapping,
|
|
1446
|
+
field.name,
|
|
1447
|
+
event.target.value
|
|
1448
|
+
)
|
|
1449
|
+
),
|
|
1450
|
+
"data-testid": testId,
|
|
1451
|
+
className: "w-full rounded-md border border-input bg-background px-2.5 py-1.5 font-mono text-xs outline-none transition-colors read-only:opacity-60 focus:border-primary"
|
|
1452
|
+
}
|
|
1453
|
+
)
|
|
1454
|
+
] });
|
|
1455
|
+
}
|
|
1208
1456
|
var LOAD_NODE_OPTIONS = gql`
|
|
1209
1457
|
query LoadNodeOptions(
|
|
1210
1458
|
$nodeType: String!
|
|
@@ -1336,6 +1584,160 @@ function useLoadNodeOptions(nodeType, nodeVersion, spec, connectionId) {
|
|
|
1336
1584
|
}
|
|
1337
1585
|
};
|
|
1338
1586
|
}
|
|
1587
|
+
|
|
1588
|
+
// src/hooks/load-node-options-error.ts
|
|
1589
|
+
var KIND_BY_FAILURE = {
|
|
1590
|
+
CONNECTION_UNAVAILABLE: "connection",
|
|
1591
|
+
CREDENTIALS_REJECTED: "credentials",
|
|
1592
|
+
PROVIDER_ERROR: "provider"
|
|
1593
|
+
};
|
|
1594
|
+
var KIND_BY_I18N_KEY = {
|
|
1595
|
+
"node.errors.connectionResolutionFailed": "connection",
|
|
1596
|
+
"node.errors.loadOptionsCredentialsRejected": "credentials",
|
|
1597
|
+
"node.errors.loadOptionsProviderFailed": "provider"
|
|
1598
|
+
};
|
|
1599
|
+
var PROVIDER_CODE = /^[a-z][a-z0-9_.-]{1,63}$/i;
|
|
1600
|
+
function kindOf(extensions) {
|
|
1601
|
+
const { failure, i18nKey } = extensions;
|
|
1602
|
+
if (typeof failure === "string" && failure in KIND_BY_FAILURE) {
|
|
1603
|
+
return KIND_BY_FAILURE[failure] ?? null;
|
|
1604
|
+
}
|
|
1605
|
+
if (typeof i18nKey === "string" && i18nKey in KIND_BY_I18N_KEY) {
|
|
1606
|
+
return KIND_BY_I18N_KEY[i18nKey] ?? null;
|
|
1607
|
+
}
|
|
1608
|
+
return null;
|
|
1609
|
+
}
|
|
1610
|
+
function loadOptionsErrorInfo(error) {
|
|
1611
|
+
for (const extensions of collectExtensions(error)) {
|
|
1612
|
+
const kind = kindOf(extensions);
|
|
1613
|
+
if (!kind) continue;
|
|
1614
|
+
const code = extensions.providerCode;
|
|
1615
|
+
return {
|
|
1616
|
+
kind,
|
|
1617
|
+
providerCode: typeof code === "string" && PROVIDER_CODE.test(code) ? code : null
|
|
1618
|
+
};
|
|
1619
|
+
}
|
|
1620
|
+
return { kind: "unavailable", providerCode: null };
|
|
1621
|
+
}
|
|
1622
|
+
function errorMessage(tr, kind) {
|
|
1623
|
+
switch (kind) {
|
|
1624
|
+
case "connection":
|
|
1625
|
+
return tr(
|
|
1626
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsConnectionError",
|
|
1627
|
+
"This connection can't be used. It may have expired, been revoked or not be shared with you. Reconnect it, choose another connection, or enter a value."
|
|
1628
|
+
);
|
|
1629
|
+
case "credentials":
|
|
1630
|
+
return tr(
|
|
1631
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsCredentialsError",
|
|
1632
|
+
"The provider rejected this connection. Reconnect it, choose another connection, or enter a value."
|
|
1633
|
+
);
|
|
1634
|
+
case "provider":
|
|
1635
|
+
return tr(
|
|
1636
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsProviderError",
|
|
1637
|
+
"The provider returned an error while loading options. Try again, or enter a value."
|
|
1638
|
+
);
|
|
1639
|
+
case "unavailable":
|
|
1640
|
+
return tr(
|
|
1641
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsError",
|
|
1642
|
+
"Couldn't load options \u2014 enter a value manually."
|
|
1643
|
+
);
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
function partTestId(testId, part) {
|
|
1647
|
+
return testId ? `${testId}-${part}` : void 0;
|
|
1648
|
+
}
|
|
1649
|
+
function LoadOptionsError({
|
|
1650
|
+
error,
|
|
1651
|
+
onRetry,
|
|
1652
|
+
testId
|
|
1653
|
+
}) {
|
|
1654
|
+
const tr = useTr();
|
|
1655
|
+
const { kind, providerCode } = loadOptionsErrorInfo(error);
|
|
1656
|
+
return /* @__PURE__ */ jsxs(
|
|
1657
|
+
"span",
|
|
1658
|
+
{
|
|
1659
|
+
role: "alert",
|
|
1660
|
+
"data-testid": partTestId(testId, "error"),
|
|
1661
|
+
"data-kind": kind,
|
|
1662
|
+
className: "flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-destructive",
|
|
1663
|
+
children: [
|
|
1664
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
1665
|
+
errorMessage(tr, kind),
|
|
1666
|
+
providerCode ? ` (${providerCode})` : null
|
|
1667
|
+
] }),
|
|
1668
|
+
/* @__PURE__ */ jsx(
|
|
1669
|
+
"button",
|
|
1670
|
+
{
|
|
1671
|
+
type: "button",
|
|
1672
|
+
onClick: onRetry,
|
|
1673
|
+
"data-testid": partTestId(testId, "retry"),
|
|
1674
|
+
className: "w-fit text-xs text-foreground underline",
|
|
1675
|
+
children: tr("fluidgrids.builder.nodeParamsForm.loadOptionsRetry", "Try again")
|
|
1676
|
+
}
|
|
1677
|
+
)
|
|
1678
|
+
]
|
|
1679
|
+
}
|
|
1680
|
+
);
|
|
1681
|
+
}
|
|
1682
|
+
function LoadOptionsStatus({
|
|
1683
|
+
connected,
|
|
1684
|
+
missingParameters,
|
|
1685
|
+
error,
|
|
1686
|
+
empty,
|
|
1687
|
+
manual,
|
|
1688
|
+
onToggleManual,
|
|
1689
|
+
onRetry,
|
|
1690
|
+
testId
|
|
1691
|
+
}) {
|
|
1692
|
+
const tr = useTr();
|
|
1693
|
+
if (!connected) {
|
|
1694
|
+
return /* @__PURE__ */ jsx("span", { className: "text-[11px] text-muted-foreground", children: tr(
|
|
1695
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsNoConnection",
|
|
1696
|
+
"Connect an account above to load options, or type a value"
|
|
1697
|
+
) });
|
|
1698
|
+
}
|
|
1699
|
+
if (missingParameters.length > 0) {
|
|
1700
|
+
return /* @__PURE__ */ jsxs("span", { className: "text-[11px] text-muted-foreground", children: [
|
|
1701
|
+
tr(
|
|
1702
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsMissingParameters",
|
|
1703
|
+
"Set fixed values for these parameters to load options:"
|
|
1704
|
+
),
|
|
1705
|
+
" ",
|
|
1706
|
+
missingParameters.join(", ")
|
|
1707
|
+
] });
|
|
1708
|
+
}
|
|
1709
|
+
if (error) {
|
|
1710
|
+
return /* @__PURE__ */ jsx(LoadOptionsError, { error, onRetry, testId });
|
|
1711
|
+
}
|
|
1712
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1713
|
+
empty && /* @__PURE__ */ jsx(
|
|
1714
|
+
"span",
|
|
1715
|
+
{
|
|
1716
|
+
"data-testid": partTestId(testId, "empty"),
|
|
1717
|
+
className: "text-[11px] text-muted-foreground",
|
|
1718
|
+
children: tr(
|
|
1719
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsEmpty",
|
|
1720
|
+
"No options found for this connection."
|
|
1721
|
+
)
|
|
1722
|
+
}
|
|
1723
|
+
),
|
|
1724
|
+
/* @__PURE__ */ jsx(
|
|
1725
|
+
"button",
|
|
1726
|
+
{
|
|
1727
|
+
type: "button",
|
|
1728
|
+
onClick: onToggleManual,
|
|
1729
|
+
className: "w-fit text-xs underline",
|
|
1730
|
+
children: manual ? tr(
|
|
1731
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsChoose",
|
|
1732
|
+
"Choose from list"
|
|
1733
|
+
) : tr(
|
|
1734
|
+
"fluidgrids.builder.nodeParamsForm.loadOptionsManual",
|
|
1735
|
+
"Enter IDs manually"
|
|
1736
|
+
)
|
|
1737
|
+
}
|
|
1738
|
+
)
|
|
1739
|
+
] });
|
|
1740
|
+
}
|
|
1339
1741
|
var EMPTY_VALUES = {};
|
|
1340
1742
|
var EMPTY_PARAMETERS = [];
|
|
1341
1743
|
function OptionListInput({
|
|
@@ -1415,7 +1817,7 @@ function NodeLoadOptionsSelect({
|
|
|
1415
1817
|
),
|
|
1416
1818
|
[spec, parameterValues, parameterDefaults, unavailableParameters]
|
|
1417
1819
|
);
|
|
1418
|
-
const { options, loading, error } = useLoadNodeOptions(
|
|
1820
|
+
const { options, loading, error, refetch } = useLoadNodeOptions(
|
|
1419
1821
|
nodeType,
|
|
1420
1822
|
nodeVersion,
|
|
1421
1823
|
resolved.spec,
|
|
@@ -1504,32 +1906,17 @@ function NodeLoadOptionsSelect({
|
|
|
1504
1906
|
)
|
|
1505
1907
|
] })
|
|
1506
1908
|
] }),
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
"Connect an account above to load options, or type a value"
|
|
1510
|
-
) }) : waiting ? /* @__PURE__ */ jsxs("span", { className: "text-[11px] text-muted-foreground", children: [
|
|
1511
|
-
tr(
|
|
1512
|
-
"fluidgrids.builder.nodeParamsForm.loadOptionsMissingParameters",
|
|
1513
|
-
"Set fixed values for these parameters to load options:"
|
|
1514
|
-
),
|
|
1515
|
-
" ",
|
|
1516
|
-
resolved.missingParameters.join(", ")
|
|
1517
|
-
] }) : error ? /* @__PURE__ */ jsx("span", { className: "text-[11px] text-destructive", children: tr(
|
|
1518
|
-
"fluidgrids.builder.nodeParamsForm.loadOptionsError",
|
|
1519
|
-
"Couldn't load options \u2014 enter a value manually."
|
|
1520
|
-
) }) : /* @__PURE__ */ jsx(
|
|
1521
|
-
"button",
|
|
1909
|
+
/* @__PURE__ */ jsx(
|
|
1910
|
+
LoadOptionsStatus,
|
|
1522
1911
|
{
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
"Enter IDs manually"
|
|
1532
|
-
)
|
|
1912
|
+
connected: Boolean(connectionId),
|
|
1913
|
+
missingParameters: resolved.missingParameters,
|
|
1914
|
+
error,
|
|
1915
|
+
empty: !useManual && !loading && options.length === 0,
|
|
1916
|
+
manual,
|
|
1917
|
+
onToggleManual: () => setManual((current) => !current),
|
|
1918
|
+
onRetry: refetch,
|
|
1919
|
+
testId
|
|
1533
1920
|
}
|
|
1534
1921
|
)
|
|
1535
1922
|
] });
|
|
@@ -3547,7 +3934,7 @@ function ScheduleNextRuns({
|
|
|
3547
3934
|
}
|
|
3548
3935
|
var SCHEDULE_PREVIEW_COUNT = 5;
|
|
3549
3936
|
var DEBOUNCE_MS = 400;
|
|
3550
|
-
var
|
|
3937
|
+
var IDLE2 = {
|
|
3551
3938
|
runs: [],
|
|
3552
3939
|
loading: false,
|
|
3553
3940
|
error: null,
|
|
@@ -3598,14 +3985,14 @@ async function requestSchedulePreview(client, variables) {
|
|
|
3598
3985
|
);
|
|
3599
3986
|
}
|
|
3600
3987
|
function useSchedulePreview(rules, timezone, workflowKey, nodeId) {
|
|
3601
|
-
const [state, setState] = useState(
|
|
3988
|
+
const [state, setState] = useState(IDLE2);
|
|
3602
3989
|
const context = useContext(FluidGridsContext);
|
|
3603
3990
|
const client = context?.workspaceClient ?? getFluidGridsClientSafe();
|
|
3604
3991
|
const requestKey = JSON.stringify([rules, timezone, workflowKey, nodeId]);
|
|
3605
3992
|
const latest = useRef(0);
|
|
3606
3993
|
useEffect(() => {
|
|
3607
3994
|
if (!nodeId || !client) {
|
|
3608
|
-
setState(
|
|
3995
|
+
setState(IDLE2);
|
|
3609
3996
|
return;
|
|
3610
3997
|
}
|
|
3611
3998
|
const variables = schedulePreviewVariables(
|
|
@@ -3615,7 +4002,7 @@ function useSchedulePreview(rules, timezone, workflowKey, nodeId) {
|
|
|
3615
4002
|
nodeId
|
|
3616
4003
|
);
|
|
3617
4004
|
if (variables.length === 0) {
|
|
3618
|
-
setState(
|
|
4005
|
+
setState(IDLE2);
|
|
3619
4006
|
return;
|
|
3620
4007
|
}
|
|
3621
4008
|
const ticket = ++latest.current;
|
|
@@ -5267,7 +5654,7 @@ function ChannelLinkAction({
|
|
|
5267
5654
|
) })
|
|
5268
5655
|
] });
|
|
5269
5656
|
}
|
|
5270
|
-
var
|
|
5657
|
+
var SECTION_LABEL4 = "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground";
|
|
5271
5658
|
function NodeParamsForm({
|
|
5272
5659
|
config,
|
|
5273
5660
|
nodeType,
|
|
@@ -5391,12 +5778,12 @@ function NodeParamsForm({
|
|
|
5391
5778
|
{
|
|
5392
5779
|
value: typeof argsState.agentDefinitionId === "string" ? argsState.agentDefinitionId : null,
|
|
5393
5780
|
onChange: (next) => writeFixed("agentDefinitionId", next),
|
|
5394
|
-
sectionLabelClassName:
|
|
5781
|
+
sectionLabelClassName: SECTION_LABEL4,
|
|
5395
5782
|
testIdPrefix
|
|
5396
5783
|
}
|
|
5397
5784
|
),
|
|
5398
5785
|
connectionAdapters.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-2", "data-testid": `${testIdPrefix}-connections`, children: [
|
|
5399
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
5786
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL4, children: tr(
|
|
5400
5787
|
"fluidgrids.builder.nodeParamsForm.connectionsSection",
|
|
5401
5788
|
"Connections"
|
|
5402
5789
|
) }),
|
|
@@ -5561,7 +5948,17 @@ function NodeParamsForm({
|
|
|
5561
5948
|
testId: `${testIdPrefix}-workflow-picker`
|
|
5562
5949
|
}
|
|
5563
5950
|
),
|
|
5564
|
-
p.description && /* @__PURE__ */ jsx("span", { className: "text-[11px] leading-snug text-muted-foreground", children: p.description })
|
|
5951
|
+
p.description && /* @__PURE__ */ jsx("span", { className: "text-[11px] leading-snug text-muted-foreground", children: p.description }),
|
|
5952
|
+
nodeType === "internal:subworkflow" && /* @__PURE__ */ jsx(
|
|
5953
|
+
SubworkflowInputsSection,
|
|
5954
|
+
{
|
|
5955
|
+
workflowKey: typeof argsState[p.name] === "string" ? argsState[p.name] : "",
|
|
5956
|
+
version: argsState.version,
|
|
5957
|
+
inputMapping: argsState.inputMapping,
|
|
5958
|
+
onChange: (next) => writeFixed("inputMapping", next),
|
|
5959
|
+
testIdPrefix
|
|
5960
|
+
}
|
|
5961
|
+
)
|
|
5565
5962
|
] }, p.name);
|
|
5566
5963
|
}
|
|
5567
5964
|
const mode = modeByField[p.name] ?? (mapping[p.name] !== void 0 ? "expression" : "fixed");
|
|
@@ -6199,7 +6596,7 @@ function RunOnSection({
|
|
|
6199
6596
|
) })
|
|
6200
6597
|
] });
|
|
6201
6598
|
}
|
|
6202
|
-
var
|
|
6599
|
+
var SECTION_LABEL5 = "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground";
|
|
6203
6600
|
var inputCx = "w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-sm outline-none transition-colors focus:border-primary disabled:opacity-50";
|
|
6204
6601
|
function msToSeconds(ms, fallbackMs) {
|
|
6205
6602
|
return Math.round((ms ?? fallbackMs) / 1e3 * 10) / 10;
|
|
@@ -6235,11 +6632,11 @@ function NodeSettingsPanel({
|
|
|
6235
6632
|
{
|
|
6236
6633
|
value: runOn,
|
|
6237
6634
|
onChange: (next) => writeExecutionSettings({ runOn: next }),
|
|
6238
|
-
sectionLabelClassName:
|
|
6635
|
+
sectionLabelClassName: SECTION_LABEL5
|
|
6239
6636
|
}
|
|
6240
6637
|
),
|
|
6241
6638
|
/* @__PURE__ */ jsxs("section", { className: "space-y-2", children: [
|
|
6242
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
6639
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL5, children: tr("fluidgrids.builder.nodeSettings.retrySection", "Retry on Fail") }),
|
|
6243
6640
|
/* @__PURE__ */ jsxs("label", { className: "flex w-fit cursor-pointer items-center gap-2 text-sm", children: [
|
|
6244
6641
|
/* @__PURE__ */ jsx(
|
|
6245
6642
|
"input",
|
|
@@ -6386,7 +6783,7 @@ function NodeSettingsPanel({
|
|
|
6386
6783
|
] })
|
|
6387
6784
|
] }),
|
|
6388
6785
|
/* @__PURE__ */ jsxs("section", { className: "space-y-2", children: [
|
|
6389
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
6786
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL5, children: tr("fluidgrids.builder.nodeSettings.onErrorSection", "On Error") }),
|
|
6390
6787
|
/* @__PURE__ */ jsxs(
|
|
6391
6788
|
"select",
|
|
6392
6789
|
{
|
|
@@ -6442,7 +6839,7 @@ function NodeSettingsPanel({
|
|
|
6442
6839
|
) })
|
|
6443
6840
|
] }),
|
|
6444
6841
|
/* @__PURE__ */ jsxs("section", { className: "space-y-2", children: [
|
|
6445
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
6842
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL5, children: tr("fluidgrids.builder.nodeSettings.timeoutSection", "Timeout") }),
|
|
6446
6843
|
/* @__PURE__ */ jsxs("label", { className: "flex w-fit cursor-pointer items-center gap-2 text-sm", children: [
|
|
6447
6844
|
/* @__PURE__ */ jsx(
|
|
6448
6845
|
"input",
|
|
@@ -6559,7 +6956,7 @@ function NodeSettingsPanel({
|
|
|
6559
6956
|
] })
|
|
6560
6957
|
] }),
|
|
6561
6958
|
/* @__PURE__ */ jsxs("section", { className: "space-y-2", children: [
|
|
6562
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
6959
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL5, children: tr("fluidgrids.builder.nodeSettings.otherSection", "Other") }),
|
|
6563
6960
|
/* @__PURE__ */ jsxs("label", { className: "flex w-fit cursor-pointer items-center gap-2 text-sm", children: [
|
|
6564
6961
|
/* @__PURE__ */ jsx(
|
|
6565
6962
|
"input",
|
|
@@ -6594,7 +6991,7 @@ function NodeSettingsPanel({
|
|
|
6594
6991
|
] })
|
|
6595
6992
|
] }),
|
|
6596
6993
|
/* @__PURE__ */ jsxs("section", { className: "space-y-2", children: [
|
|
6597
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
6994
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL5, children: tr("fluidgrids.builder.nodeSettings.notesSection", "Notes") }),
|
|
6598
6995
|
/* @__PURE__ */ jsx(
|
|
6599
6996
|
"textarea",
|
|
6600
6997
|
{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublishCustomNodeAction } from './chunk-XRGAH6IQ.js';
|
|
2
|
-
import { NodeEndpointConfigsDocument, NodeEndpointConfigDocument, NodeManifestDocument, fetchAllNodeEndpointConfigs } from './chunk-
|
|
2
|
+
import { NodeEndpointConfigsDocument, NodeEndpointConfigDocument, NodeManifestDocument, fetchAllNodeEndpointConfigs } from './chunk-3U6OJEBR.js';
|
|
3
3
|
import { useTr } from './chunk-UULVIT25.js';
|
|
4
4
|
import { getFluidGridsClient } from './chunk-PDODDDHY.js';
|
|
5
5
|
import { useMemo, useState, useCallback, useEffect } from 'react';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { useRunStatusCounts, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination, runStatusLabels } from './chunk-
|
|
2
|
-
import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, searchFilterConflicts, WORKFLOW_ID_MAX_LENGTH, EMPTY_SEARCH_FILTER, buildSearchAttributeFilter, MAX_SEARCH_CONDITIONS, OPERATORS_BY_TYPE } from './chunk-
|
|
3
|
-
import { useWorkflowDefinitions } from './chunk-
|
|
4
|
-
import { useResource, fetchSearchAttributes, NativeSelect, FieldError, RUN_CONTROL_DIALOG_STYLE, parseJsonInput, JsonField, fetchBatchOperations, StatusPill, fetchBatchOperation, cancelBatchOperation, startBatchTerminate, startBatchExport, startBatchOperation, jsonArg } from './chunk-
|
|
1
|
+
import { useRunStatusCounts, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination, runStatusLabels } from './chunk-2TWTJOSU.js';
|
|
2
|
+
import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, searchFilterConflicts, WORKFLOW_ID_MAX_LENGTH, EMPTY_SEARCH_FILTER, buildSearchAttributeFilter, MAX_SEARCH_CONDITIONS, OPERATORS_BY_TYPE } from './chunk-KWIQPBBA.js';
|
|
3
|
+
import { useWorkflowDefinitions } from './chunk-G63OVVBC.js';
|
|
4
|
+
import { useResource, fetchSearchAttributes, NativeSelect, FieldError, RUN_CONTROL_DIALOG_STYLE, parseJsonInput, JsonField, fetchBatchOperations, StatusPill, fetchBatchOperation, cancelBatchOperation, startBatchTerminate, startBatchExport, startBatchOperation, jsonArg } from './chunk-WHIC7LJR.js';
|
|
5
5
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
6
6
|
import { useFluidGridsPermission, FLUIDGRIDS_PERMISSIONS } from './chunk-ERT444RG.js';
|
|
7
|
-
import { useDurableParityEnabled, usePhaseCFlags } from './chunk-
|
|
8
|
-
import { WorkflowBatchOperationUpdatedDocument } from './chunk-
|
|
7
|
+
import { useDurableParityEnabled, usePhaseCFlags } from './chunk-GRGP5GS4.js';
|
|
8
|
+
import { WorkflowBatchOperationUpdatedDocument } from './chunk-3U6OJEBR.js';
|
|
9
9
|
import { useTr } from './chunk-UULVIT25.js';
|
|
10
10
|
import { getFluidGridsClient } from './chunk-PDODDDHY.js';
|
|
11
11
|
import { describeOperationError } from './chunk-JKLZ6YZ3.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { versionsOfWorkflow, VersionDiffDialog } from './chunk-
|
|
1
|
+
import { versionsOfWorkflow, VersionDiffDialog } from './chunk-KX5UY3C3.js';
|
|
2
2
|
import { historyControls } from './chunk-FNZZ5JJL.js';
|
|
3
|
-
import { useWorkflowDefinitions, useRestoreWorkflowVersion } from './chunk-
|
|
3
|
+
import { useWorkflowDefinitions, useRestoreWorkflowVersion } from './chunk-G63OVVBC.js';
|
|
4
4
|
import { useFluidGridsPageControls } from './chunk-PJAWNFJV.js';
|
|
5
5
|
import { FluidGridsDocsLink } from './chunk-4VJ3MDOV.js';
|
|
6
6
|
import { useTr } from './chunk-UULVIT25.js';
|