@burdenoff/fluidgrids-fe-sdk 2026.1114.7 → 2026.1115.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AiStudioPage-DLl4ld32.js → AiStudioPage-CtHmZ3Lw.js} +4 -4
- package/dist/{DataSinkDashboardPage-Dnp1yRYQ.js → DataSinkDashboardPage-DFtWv2nD.js} +1 -1
- package/dist/{ExecutionDetailPage-DxeySgR3.js → ExecutionDetailPage-C-aY7qWI.js} +116 -21
- package/dist/{ExecutionsListPage-CMrOaFKQ.js → ExecutionsListPage-BYW5WiX7.js} +4 -4
- package/dist/{FluidGridsProvider-C-WGQwuT.js → FluidGridsProvider-CDjkq3Zj.js} +281 -59
- package/dist/{HistoryPage-D4rkw4zu.js → HistoryPage-fMZlXsIY.js} +1 -1
- package/dist/{InsightsPage-CVzNu4F7.js → InsightsPage-DozSYGVD.js} +1 -1
- package/dist/{PaidTemplateConfirm-IWOHVR6s.js → PaidTemplateConfirm-Crs0CXXl.js} +1 -1
- package/dist/{SettingsPage-DwA2ZjyH.js → SettingsPage-qSvV7r0y.js} +3 -3
- package/dist/{TemplateCard-9Beuqm5_.js → TemplateCard-BsrXJ1Su.js} +2 -2
- package/dist/{TemplatePreview-Bi6LSeH8.js → TemplatePreview-BOIhJSBD.js} +4 -4
- package/dist/{TemplatesPage-D9fOKAn4.js → TemplatesPage-dj7NseMt.js} +6 -6
- package/dist/{WorkflowBuilder-CdcGE0Mf.js → WorkflowBuilder-ByG9twmu.js} +5 -5
- package/dist/{WorkflowBuilder-Bzx-e5lX.js → WorkflowBuilder-DjpAoBVO.js} +3 -3
- package/dist/{WorkflowSearchRedirect-0MLrCjDn.js → WorkflowSearchRedirect-DRidTx1L.js} +1 -1
- package/dist/{WorkflowsList-CBqxxI44.js → WorkflowsList-BQ_5hkWi.js} +5 -5
- package/dist/{agentTools-DuCukaUX.js → agentTools-Cx5yPBe7.js} +3 -2
- package/dist/{canvasNoteTools-DnsO-gHe.js → canvasNoteTools-BxknF5rX.js} +1 -1
- package/dist/executions.js +2 -2
- package/dist/{flow-builder-CbF9P7cI.js → flow-builder-D8f31DFR.js} +22 -18
- package/dist/history.js +1 -1
- package/dist/{index-D10JzNP1.d.ts → index-BprVea6e.d.ts} +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +91 -91
- package/dist/{node-detail-view-CP6sq02c.js → node-detail-view-C__INEVF.js} +4 -4
- package/dist/{node-editor-tab-body-B6kxLf6Q.js → node-editor-tab-body-BintGoSp.js} +2 -2
- package/dist/observability.d.ts +1 -1
- package/dist/observability.js +2 -2
- package/dist/{popover-9gY3-2dY.js → popover-2-6xmS1q.js} +2 -2
- package/dist/{quick-config-panel-TGCW64qe.js → quick-config-panel-Bxi9TwCG.js} +3 -3
- package/dist/{schedule-panel-zrFYGtkx.js → schedule-panel-BbRtGDEt.js} +4 -4
- package/dist/settings.js +1 -1
- package/dist/{sidebar-node-editor-BPg2NKzJ.js → sidebar-node-editor-DG-34YEW.js} +3 -3
- package/dist/templates.js +2 -2
- package/dist/{useAgentDefinitions-9pmnEpb8.js → useAgentDefinitions-YUDx_OW2.js} +1 -1
- package/dist/{useDurableParity-gigqyXDq.js → useDurableParity-X_zfFzQv.js} +1 -1
- package/dist/{useExecutions-wka2Z5w3.js → useExecutions-BWbMt16D.js} +1 -1
- package/dist/{useGlobalStoreClient-BcwWGtm7.js → useGlobalStoreClient-CwBAeiXV.js} +1 -1
- package/dist/{useObservability-CjZTYldC.js → useObservability-mXM7lCop.js} +1 -1
- package/dist/{useRunHistory-Be-GggNA.js → useRunHistory-DYDriBz1.js} +1 -1
- package/dist/{useWorkflowCodeExport-ChAzmhi6.js → useWorkflowCodeExport-uKBDVvnA.js} +1 -1
- package/dist/{useWorkflows-BrqrVT8h.js → useWorkflows-Dg7q_Tzf.js} +1 -1
- package/dist/workflow-builder.js +4 -4
- package/dist/{workflow-description-ReGwCZXS.js → workflow-description-CeXdyWX8.js} +1 -1
- package/dist/workflow-pages.d.ts +1 -1
- package/dist/workflow-pages.js +13 -13
- package/dist/workflows-list.js +1 -1
- package/package.json +1 -1
|
@@ -15,6 +15,7 @@ import { a as collectExtensions, n as QUOTA_EXHAUSTED_CODE, o as errorCodesOf, r
|
|
|
15
15
|
import { c as setFluidGridsConfig, l as validateTrustedOrigin, o as resetFluidGridsConfig, r as getFluidGridsConfig, s as resetFluidGridsExecutionState } from "./config-X97zrIvn.js";
|
|
16
16
|
import { a as useFgAskableAction } from "./askAboutBridge-ByYsQams.js";
|
|
17
17
|
import { i as readableNodeType } from "./run-display-UjLAoYqQ.js";
|
|
18
|
+
import { Fw as NodeManifestDetail } from "./graphql-types-dS3Fk9Z5.js";
|
|
18
19
|
import { t as provideNodeRegistryRefresh } from "./node-registry-refresh-s3okf83X.js";
|
|
19
20
|
import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
20
21
|
import { useNavigate, useParams } from "react-router";
|
|
@@ -3559,6 +3560,23 @@ const NodeManifestsDocument = {
|
|
|
3559
3560
|
}
|
|
3560
3561
|
},
|
|
3561
3562
|
"directives": []
|
|
3563
|
+
}, {
|
|
3564
|
+
"kind": "VariableDefinition",
|
|
3565
|
+
"variable": {
|
|
3566
|
+
"kind": "Variable",
|
|
3567
|
+
"name": {
|
|
3568
|
+
"kind": "Name",
|
|
3569
|
+
"value": "detail"
|
|
3570
|
+
}
|
|
3571
|
+
},
|
|
3572
|
+
"type": {
|
|
3573
|
+
"kind": "NamedType",
|
|
3574
|
+
"name": {
|
|
3575
|
+
"kind": "Name",
|
|
3576
|
+
"value": "NodeManifestDetail"
|
|
3577
|
+
}
|
|
3578
|
+
},
|
|
3579
|
+
"directives": []
|
|
3562
3580
|
}],
|
|
3563
3581
|
"directives": [],
|
|
3564
3582
|
"selectionSet": {
|
|
@@ -3582,6 +3600,19 @@ const NodeManifestsDocument = {
|
|
|
3582
3600
|
"value": "refs"
|
|
3583
3601
|
}
|
|
3584
3602
|
}
|
|
3603
|
+
}, {
|
|
3604
|
+
"kind": "Argument",
|
|
3605
|
+
"name": {
|
|
3606
|
+
"kind": "Name",
|
|
3607
|
+
"value": "detail"
|
|
3608
|
+
},
|
|
3609
|
+
"value": {
|
|
3610
|
+
"kind": "Variable",
|
|
3611
|
+
"name": {
|
|
3612
|
+
"kind": "Name",
|
|
3613
|
+
"value": "detail"
|
|
3614
|
+
}
|
|
3615
|
+
}
|
|
3585
3616
|
}],
|
|
3586
3617
|
"directives": []
|
|
3587
3618
|
}]
|
|
@@ -5383,7 +5414,9 @@ function useNodeExecution() {
|
|
|
5383
5414
|
}
|
|
5384
5415
|
setNodeStatus(nodeId, "running");
|
|
5385
5416
|
try {
|
|
5386
|
-
|
|
5417
|
+
const stepNodes = workflow.nodes.filter((node) => node.id === nodeId);
|
|
5418
|
+
await loadFullManifestsOfSummaries(stepNodes.map((node) => node.type));
|
|
5419
|
+
normalizeWorkflowParameters(stepNodes, workflow.edges, (type) => NODE_CONFIGS.find((config) => config.type === type)?.operations);
|
|
5387
5420
|
const client = getFluidGridsClient();
|
|
5388
5421
|
const stepResult = throwIfResultError(await client.mutate({
|
|
5389
5422
|
mutation: EXECUTE_STEP,
|
|
@@ -5498,7 +5531,9 @@ function useNodeExecution() {
|
|
|
5498
5531
|
}
|
|
5499
5532
|
setNodeStatus(triggerNode.id, "running");
|
|
5500
5533
|
try {
|
|
5501
|
-
|
|
5534
|
+
const runNodes = workflow.nodes.filter((node) => node.data.disabled !== true);
|
|
5535
|
+
await loadFullManifestsOfSummaries(runNodes.map((node) => node.type));
|
|
5536
|
+
normalizeWorkflowParameters(runNodes, workflow.edges, (type) => NODE_CONFIGS.find((config) => config.type === type)?.operations);
|
|
5502
5537
|
const client = getFluidGridsClient();
|
|
5503
5538
|
const triggerResult = throwIfResultError(await client.mutate({
|
|
5504
5539
|
mutation: TRIGGER_WORKFLOW,
|
|
@@ -6827,6 +6862,7 @@ function useSaveWorkflow() {
|
|
|
6827
6862
|
const inPlace = !forkRequested && savesInPlace(workflow);
|
|
6828
6863
|
const expectedRevision = revisionOf(workflow.dbId);
|
|
6829
6864
|
const client = getFluidGridsClient();
|
|
6865
|
+
await loadFullManifestsOfSummaries((workflow.nodes ?? []).map((node) => node.type));
|
|
6830
6866
|
const { preparedWorkflow, owned } = builderDefinition(snapshot, workflowKey, !!mintedKey);
|
|
6831
6867
|
const definitionJson = workflow.dbId && !inPlace ? mergeDefinitionJson(await readStoredDefinition(client, workflow.dbId), owned) : owned;
|
|
6832
6868
|
let savedVersion = workflow.version;
|
|
@@ -8670,7 +8706,8 @@ function asRecord(value) {
|
|
|
8670
8706
|
}
|
|
8671
8707
|
function fallbackOperations(type) {
|
|
8672
8708
|
if (!type) return void 0;
|
|
8673
|
-
|
|
8709
|
+
const config = NODE_CONFIGS.find((c) => c.type === type);
|
|
8710
|
+
return config?.manifestDetail === "SUMMARY" ? void 0 : config?.operations;
|
|
8674
8711
|
}
|
|
8675
8712
|
function selectedOperationOf(data, type) {
|
|
8676
8713
|
const live = liveInternalOperations(type);
|
|
@@ -8813,6 +8850,11 @@ function useNodeConfig(target, options) {
|
|
|
8813
8850
|
}, [nodeId, selectedSource]);
|
|
8814
8851
|
const sourceNode = useMemo(() => nodes.find((n) => n.id === selectedSource), [nodes, selectedSource]);
|
|
8815
8852
|
const currentEdge = useMemo(() => incoming.find((e) => e.source === selectedSource), [incoming, selectedSource]);
|
|
8853
|
+
const nodeType = node?.type;
|
|
8854
|
+
const sourceType = sourceNode?.type;
|
|
8855
|
+
useEffect(() => {
|
|
8856
|
+
loadFullManifestsOfSummaries([nodeType, sourceType]);
|
|
8857
|
+
}, [nodeType, sourceType]);
|
|
8816
8858
|
const registryRevision = useNodeRegistryRevision();
|
|
8817
8859
|
const currentOp = useMemo(() => {
|
|
8818
8860
|
return selectedOperationOf(asRecord(node?.data), node?.type);
|
|
@@ -9349,7 +9391,9 @@ function pickOperationToPin(type, operationName) {
|
|
|
9349
9391
|
/**
|
|
9350
9392
|
* A new canvas node of `type` at `position`, pinned to its operation the way
|
|
9351
9393
|
* the Node Store pins it. Pure: no React Flow instance needed, so the builder's
|
|
9352
|
-
* agent tools create nodes exactly as a person's click does.
|
|
9394
|
+
* agent tools create nodes exactly as a person's click does. The node type's
|
|
9395
|
+
* full manifest must be registered (`ensureNodeTypeReady`): a palette summary
|
|
9396
|
+
* lacks the operation's form and defaults.
|
|
9353
9397
|
*/
|
|
9354
9398
|
function createConfiguredNode(type, position, operationName) {
|
|
9355
9399
|
const newNode = createNodeWithDefaultData(type, {
|
|
@@ -9363,13 +9407,25 @@ function createConfiguredNode(type, position, operationName) {
|
|
|
9363
9407
|
}
|
|
9364
9408
|
return newNode;
|
|
9365
9409
|
}
|
|
9410
|
+
/**
|
|
9411
|
+
* Place a node of `type` on the canvas, selected, at `pos` (the viewport centre
|
|
9412
|
+
* when left out). The palette lists summaries, so the node type's full manifest
|
|
9413
|
+
* is loaded first (BOFF-13066); a type already used in this session is placed at
|
|
9414
|
+
* once. Resolves to the new node, or null when its manifest could not be loaded
|
|
9415
|
+
* (the person is told, and nothing is placed).
|
|
9416
|
+
*/
|
|
9366
9417
|
function useInsertNode() {
|
|
9367
9418
|
const { addNodes, screenToFlowPosition, getNodes, updateNode } = useReactFlow();
|
|
9368
|
-
|
|
9419
|
+
const tr = useTr();
|
|
9420
|
+
return useCallback(async (type, pos, operationName) => {
|
|
9369
9421
|
const _pos = pos || screenToFlowPosition({
|
|
9370
9422
|
x: window.innerWidth / 2,
|
|
9371
9423
|
y: window.innerHeight / 2
|
|
9372
9424
|
});
|
|
9425
|
+
if (!await ensureNodeTypeReady(type)) {
|
|
9426
|
+
toast.error(tr("fluidgrids.builder.insertNode.loadFailed", "Could not load this node. Check your connection and try again."));
|
|
9427
|
+
return null;
|
|
9428
|
+
}
|
|
9373
9429
|
getNodes().forEach((node) => {
|
|
9374
9430
|
if (node.selected) updateNode(node.id, { selected: false });
|
|
9375
9431
|
});
|
|
@@ -9380,7 +9436,8 @@ function useInsertNode() {
|
|
|
9380
9436
|
screenToFlowPosition,
|
|
9381
9437
|
getNodes,
|
|
9382
9438
|
addNodes,
|
|
9383
|
-
updateNode
|
|
9439
|
+
updateNode,
|
|
9440
|
+
tr
|
|
9384
9441
|
]);
|
|
9385
9442
|
}
|
|
9386
9443
|
|
|
@@ -9831,7 +9888,7 @@ function AdapterPort({ nodeId, adapter, index, total }) {
|
|
|
9831
9888
|
const diamondColor = hasConnection ? "bg-[var(--color-accent-primary)]" : "bg-[var(--color-text-muted)]";
|
|
9832
9889
|
const lineColor = hasConnection ? "before:bg-[var(--color-accent-primary)]" : "before:bg-[var(--color-border-strong)]";
|
|
9833
9890
|
/** Create the chosen sub-node below the parent and attach it to this port. */
|
|
9834
|
-
const addSubNode = useCallback((candidate) => {
|
|
9891
|
+
const addSubNode = useCallback(async (candidate) => {
|
|
9835
9892
|
setPickerOpen(false);
|
|
9836
9893
|
const parent = getNode(nodeId);
|
|
9837
9894
|
const origin = parent?.position ?? {
|
|
@@ -9843,7 +9900,7 @@ function AdapterPort({ nodeId, adapter, index, total }) {
|
|
|
9843
9900
|
x: origin.x + (index - (total - 1) / 2) * 180,
|
|
9844
9901
|
y: origin.y + parentHeight + 190
|
|
9845
9902
|
};
|
|
9846
|
-
const created = insertNode(candidate.type, position, candidate.adapterOperation);
|
|
9903
|
+
const created = await insertNode(candidate.type, position, candidate.adapterOperation);
|
|
9847
9904
|
if (!created?.id) return;
|
|
9848
9905
|
created.data = {
|
|
9849
9906
|
...created.data,
|
|
@@ -10201,7 +10258,7 @@ const getNodeMetadata = (value) => {
|
|
|
10201
10258
|
}, [executeStep, id]);
|
|
10202
10259
|
const stepGuard = useRunGuard(handleExecuteStep, { nodeId: id });
|
|
10203
10260
|
const missingCredentials = useMemo(() => {
|
|
10204
|
-
const visibleAdapters = getVisibleConnectionAdapters(String(value?.type ?? ""), data?.operation_name, value?.operations ?? (data?.nodeData)?.operations, data?.nodeData);
|
|
10261
|
+
const visibleAdapters = getVisibleConnectionAdapters(String(value?.type ?? ""), data?.operation_name, (value?.manifestDetail === "SUMMARY" ? void 0 : value?.operations) ?? (data?.nodeData)?.operations, data?.nodeData);
|
|
10205
10262
|
if (visibleAdapters.length === 0) return false;
|
|
10206
10263
|
const selected = (data?.args)?.connections ?? (data?.args)?.credentials ?? [];
|
|
10207
10264
|
return missingRequiredAdapters(visibleAdapters, selected).length > 0;
|
|
@@ -10761,12 +10818,19 @@ const GetMyNodeInstallationsDocument = {
|
|
|
10761
10818
|
|
|
10762
10819
|
// src/builder/components/flow-builder/components/blocks/node-manifests.ts
|
|
10763
10820
|
/**
|
|
10764
|
-
*
|
|
10765
|
-
* response
|
|
10766
|
-
*
|
|
10821
|
+
* Full manifests per request. The server takes up to 500; smaller requests keep
|
|
10822
|
+
* each response smaller (a store manifest reaches 620 KB) and let the gateway
|
|
10823
|
+
* resolve them side by side. The builder asks for full manifests only for the
|
|
10824
|
+
* node types it uses, rarely more than a few dozen.
|
|
10767
10825
|
*/
|
|
10768
10826
|
const NODE_MANIFEST_BATCH_SIZE = 100;
|
|
10827
|
+
/**
|
|
10828
|
+
* Summaries per request: the server's limit. The whole prod palette (about 370
|
|
10829
|
+
* nodes) is one request of well under a megabyte.
|
|
10830
|
+
*/
|
|
10831
|
+
const NODE_MANIFEST_SUMMARY_BATCH_SIZE = 500;
|
|
10769
10832
|
const manifestCache = /* @__PURE__ */ new Map();
|
|
10833
|
+
const summaryCache = /* @__PURE__ */ new Map();
|
|
10770
10834
|
function manifestKey(nodeType, version) {
|
|
10771
10835
|
return `${nodeType}@${version}`;
|
|
10772
10836
|
}
|
|
@@ -10791,18 +10855,42 @@ function rememberNodeManifests(values) {
|
|
|
10791
10855
|
}
|
|
10792
10856
|
return manifests;
|
|
10793
10857
|
}
|
|
10794
|
-
/**
|
|
10795
|
-
|
|
10796
|
-
|
|
10858
|
+
/**
|
|
10859
|
+
* Whether `manifest` is a full manifest this session loaded: the one the session
|
|
10860
|
+
* cache holds for its version. A summary never is.
|
|
10861
|
+
*/
|
|
10862
|
+
function isFullNodeManifest(manifest) {
|
|
10863
|
+
return manifestCache.get(manifestKey(manifest.nodeType, manifest.version)) === manifest;
|
|
10864
|
+
}
|
|
10865
|
+
/** Keep summaries for the session, apart from the full manifests. */
|
|
10866
|
+
function rememberNodeManifestSummaries(values) {
|
|
10867
|
+
const summaries = [];
|
|
10868
|
+
for (const value of values) {
|
|
10869
|
+
const summary = asNodeManifest(value);
|
|
10870
|
+
if (!summary) continue;
|
|
10871
|
+
const key = manifestKey(summary.nodeType, summary.version);
|
|
10872
|
+
const known = manifestCache.get(key);
|
|
10873
|
+
if (known) {
|
|
10874
|
+
summaries.push(known);
|
|
10875
|
+
continue;
|
|
10876
|
+
}
|
|
10877
|
+
summaryCache.set(key, summary);
|
|
10878
|
+
summaries.push(summary);
|
|
10879
|
+
}
|
|
10880
|
+
return summaries;
|
|
10797
10881
|
}
|
|
10798
10882
|
/**
|
|
10799
|
-
* Manifests for `refs
|
|
10800
|
-
* from it; the rest are fetched with
|
|
10801
|
-
* `
|
|
10802
|
-
*
|
|
10803
|
-
*
|
|
10883
|
+
* Manifests for `refs` at the given detail (full by default): exact versions
|
|
10884
|
+
* already in the session cache are served from it; the rest are fetched with
|
|
10885
|
+
* `nodeManifests`, all requests in parallel, at most `NODE_MANIFEST_BATCH_SIZE`
|
|
10886
|
+
* refs per request for full manifests and `NODE_MANIFEST_SUMMARY_BATCH_SIZE` for
|
|
10887
|
+
* summaries. A full manifest in the cache also answers a request for a summary.
|
|
10888
|
+
* Refs the registry does not know are absent from the result. A failed request
|
|
10889
|
+
* is logged and its refs are treated as unknown, so one bad batch never empties
|
|
10890
|
+
* the palette.
|
|
10804
10891
|
*/
|
|
10805
|
-
async function loadNodeManifests(client, refs) {
|
|
10892
|
+
async function loadNodeManifests(client, refs, detail = "FULL") {
|
|
10893
|
+
const summary = detail === "SUMMARY";
|
|
10806
10894
|
const result = [];
|
|
10807
10895
|
const missing = [];
|
|
10808
10896
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -10810,20 +10898,25 @@ async function loadNodeManifests(client, refs) {
|
|
|
10810
10898
|
const key = manifestKey(ref.nodeType, ref.version ?? "");
|
|
10811
10899
|
if (!ref.nodeType || seen.has(key)) continue;
|
|
10812
10900
|
seen.add(key);
|
|
10813
|
-
const cached = ref.version ?
|
|
10901
|
+
const cached = ref.version ? manifestCache.get(key) ?? (summary ? summaryCache.get(key) : void 0) : void 0;
|
|
10814
10902
|
if (cached) result.push(cached);
|
|
10815
10903
|
else missing.push(ref.version ? ref : { nodeType: ref.nodeType });
|
|
10816
10904
|
}
|
|
10905
|
+
const batchSize = summary ? 500 : 100;
|
|
10817
10906
|
const batches = [];
|
|
10818
|
-
for (let i = 0; i < missing.length; i +=
|
|
10907
|
+
for (let i = 0; i < missing.length; i += batchSize) batches.push(missing.slice(i, i + batchSize));
|
|
10819
10908
|
const fetched = await Promise.all(batches.map(async (batch) => {
|
|
10820
10909
|
try {
|
|
10821
10910
|
const { data } = await client.query({
|
|
10822
10911
|
query: NodeManifestsDocument,
|
|
10823
|
-
variables:
|
|
10912
|
+
variables: summary ? {
|
|
10913
|
+
refs: batch,
|
|
10914
|
+
detail: "SUMMARY"
|
|
10915
|
+
} : { refs: batch },
|
|
10824
10916
|
fetchPolicy: "no-cache"
|
|
10825
10917
|
});
|
|
10826
|
-
|
|
10918
|
+
const manifests = data?.nodeManifests ?? [];
|
|
10919
|
+
return summary ? rememberNodeManifestSummaries(manifests) : rememberNodeManifests(manifests);
|
|
10827
10920
|
} catch (error) {
|
|
10828
10921
|
const message = error instanceof Error ? error.message : String(error);
|
|
10829
10922
|
console.error(`[Workflows] Could not load ${batch.length} node manifest(s):`, message);
|
|
@@ -10837,7 +10930,7 @@ async function loadNodeManifests(client, refs) {
|
|
|
10837
10930
|
// src/builder/components/flow-builder/components/blocks/index.ts
|
|
10838
10931
|
const NODE_CONFIGS = [];
|
|
10839
10932
|
/** The registry entry for one manifest. */
|
|
10840
|
-
function toNodeConfig(manifest, publishType) {
|
|
10933
|
+
function toNodeConfig(manifest, publishType, manifestDetail = "FULL") {
|
|
10841
10934
|
const manifestOps = manifest.operations;
|
|
10842
10935
|
const operations = Array.isArray(manifestOps) ? manifestOps : manifestOps?.operations ?? manifestOps;
|
|
10843
10936
|
return {
|
|
@@ -10864,12 +10957,68 @@ function toNodeConfig(manifest, publishType) {
|
|
|
10864
10957
|
}
|
|
10865
10958
|
},
|
|
10866
10959
|
operations,
|
|
10867
|
-
publishType
|
|
10960
|
+
publishType,
|
|
10961
|
+
manifestDetail
|
|
10868
10962
|
};
|
|
10869
10963
|
}
|
|
10964
|
+
/** The registry entry of a node type: the first one, as every reader takes it. */
|
|
10965
|
+
function nodeConfigOf(type) {
|
|
10966
|
+
return type ? NODE_CONFIGS.find((config) => config.type === type) : void 0;
|
|
10967
|
+
}
|
|
10870
10968
|
function hasNodeConfig(type) {
|
|
10871
10969
|
return NODE_CONFIGS.some((config) => config.type === type);
|
|
10872
10970
|
}
|
|
10971
|
+
/**
|
|
10972
|
+
* Whether the node type's registry entry carries its full manifest. False for a
|
|
10973
|
+
* palette summary and for a type the registry does not hold.
|
|
10974
|
+
*/
|
|
10975
|
+
function hasFullNodeConfig(type) {
|
|
10976
|
+
const config = nodeConfigOf(type);
|
|
10977
|
+
return config !== void 0 && config.manifestDetail !== "SUMMARY";
|
|
10978
|
+
}
|
|
10979
|
+
/** The node types whose registry entry carries its full manifest. */
|
|
10980
|
+
function fullNodeConfigTypes() {
|
|
10981
|
+
const types = /* @__PURE__ */ new Set();
|
|
10982
|
+
for (const config of NODE_CONFIGS) if (config.manifestDetail !== "SUMMARY") types.add(config.type);
|
|
10983
|
+
return types;
|
|
10984
|
+
}
|
|
10985
|
+
/**
|
|
10986
|
+
* Turn a summary entry into the full one, in place: node components already
|
|
10987
|
+
* created for it read the same object. The node type's registry metadata
|
|
10988
|
+
* (`NODES`, `NODES_METADATA`), which new canvas nodes copy their data from,
|
|
10989
|
+
* takes the full manifest too.
|
|
10990
|
+
*/
|
|
10991
|
+
function upgradeNodeConfig(config, manifest) {
|
|
10992
|
+
Object.assign(config, toNodeConfig(manifest, config.publishType ?? manifest.publishType));
|
|
10993
|
+
const entry = NODES.find((node) => node.type === config.type);
|
|
10994
|
+
if (entry) {
|
|
10995
|
+
entry.defaultData = {
|
|
10996
|
+
...entry.defaultData,
|
|
10997
|
+
version: config.defaultData.version,
|
|
10998
|
+
nodeData: config.defaultData.nodeData
|
|
10999
|
+
};
|
|
11000
|
+
const metadata = NODES_METADATA[config.type];
|
|
11001
|
+
if (metadata) metadata.defaultData = entry.defaultData;
|
|
11002
|
+
}
|
|
11003
|
+
}
|
|
11004
|
+
/**
|
|
11005
|
+
* Register a full manifest: a new entry when its node type has none, or the full
|
|
11006
|
+
* form of the type's summary entry of the same version. An entry that is already
|
|
11007
|
+
* full, or a summary of another version, is left as it is. True when the
|
|
11008
|
+
* registry changed.
|
|
11009
|
+
*/
|
|
11010
|
+
function registerFullManifest(manifest) {
|
|
11011
|
+
const config = nodeConfigOf(manifest.nodeType);
|
|
11012
|
+
if (!config) {
|
|
11013
|
+
NODE_CONFIGS.push(toNodeConfig(manifest, manifest.publishType));
|
|
11014
|
+
return true;
|
|
11015
|
+
}
|
|
11016
|
+
if (config.manifestDetail === "SUMMARY" && config.defaultData.version === manifest.version) {
|
|
11017
|
+
upgradeNodeConfig(config, manifest);
|
|
11018
|
+
return true;
|
|
11019
|
+
}
|
|
11020
|
+
return false;
|
|
11021
|
+
}
|
|
10873
11022
|
/** Add a config unless its node type is already registered. */
|
|
10874
11023
|
function addNodeConfig(config) {
|
|
10875
11024
|
if (hasNodeConfig(config.type)) return false;
|
|
@@ -10935,8 +11084,13 @@ async function loadInstalledStoreNodes(onlyTypes) {
|
|
|
10935
11084
|
/**
|
|
10936
11085
|
* Load the full palette into NODE_CONFIGS: every available registry node in the
|
|
10937
11086
|
* registry's order (newest first), then the installed store nodes.
|
|
11087
|
+
*
|
|
11088
|
+
* Palette entries are summaries, except where this session holds the full
|
|
11089
|
+
* manifest of the entry's version. Node types whose entry was full before the
|
|
11090
|
+
* load (the canvas's), and those in `keepFull`, keep a full entry: their full
|
|
11091
|
+
* manifests are loaded before the palette replaces the registry.
|
|
10938
11092
|
*/
|
|
10939
|
-
async function initializeNodeConfigs() {
|
|
11093
|
+
async function initializeNodeConfigs(keepFull = /* @__PURE__ */ new Set()) {
|
|
10940
11094
|
try {
|
|
10941
11095
|
const client = await waitForFluidGridsClient(15e3, 150);
|
|
10942
11096
|
if (!client) {
|
|
@@ -10953,12 +11107,22 @@ async function initializeNodeConfigs() {
|
|
|
10953
11107
|
const manifests = await loadNodeManifests(client, entries.map((entry) => ({
|
|
10954
11108
|
nodeType: entry.nodeType,
|
|
10955
11109
|
version: entry.nodeVersion
|
|
10956
|
-
})));
|
|
11110
|
+
})), "SUMMARY");
|
|
10957
11111
|
const byVersion = new Map(manifests.map((manifest) => [`${manifest.nodeType}@${manifest.version}`, manifest]));
|
|
11112
|
+
const full = /* @__PURE__ */ new Set([...keepFull, ...fullNodeConfigTypes()]);
|
|
11113
|
+
const fullRefs = [];
|
|
11114
|
+
for (const entry of entries) {
|
|
11115
|
+
const manifest = byVersion.get(`${entry.nodeType}@${entry.nodeVersion}`);
|
|
11116
|
+
if (manifest && full.has(entry.nodeType) && !isFullNodeManifest(manifest)) fullRefs.push({
|
|
11117
|
+
nodeType: entry.nodeType,
|
|
11118
|
+
version: entry.nodeVersion
|
|
11119
|
+
});
|
|
11120
|
+
}
|
|
11121
|
+
if (fullRefs.length > 0) for (const manifest of await loadNodeManifests(client, fullRefs)) byVersion.set(`${manifest.nodeType}@${manifest.version}`, manifest);
|
|
10958
11122
|
const palette = [];
|
|
10959
11123
|
for (const entry of entries) {
|
|
10960
11124
|
const manifest = byVersion.get(`${entry.nodeType}@${entry.nodeVersion}`);
|
|
10961
|
-
if (manifest) palette.push(toNodeConfig(manifest, entry.publishType ?? void 0));
|
|
11125
|
+
if (manifest) palette.push(toNodeConfig(manifest, entry.publishType ?? void 0, isFullNodeManifest(manifest) ? "FULL" : "SUMMARY"));
|
|
10962
11126
|
}
|
|
10963
11127
|
const listed = new Set(palette.map((config) => config.type));
|
|
10964
11128
|
const earlier = NODE_CONFIGS.filter((config) => !listed.has(config.type));
|
|
@@ -10988,12 +11152,30 @@ function unregisteredTypes(types) {
|
|
|
10988
11152
|
if (isInitialized) return [];
|
|
10989
11153
|
return [...new Set(types)].filter((type) => isRegistryNodeType(type) && !hasNodeConfig(type));
|
|
10990
11154
|
}
|
|
11155
|
+
/**
|
|
11156
|
+
* The distinct registry node types of `types` whose full manifest the registry
|
|
11157
|
+
* should load: those without an entry (until the full palette is in, after which
|
|
11158
|
+
* a type it lacks is not available anywhere) and those with a palette summary.
|
|
11159
|
+
*/
|
|
11160
|
+
function typesNeedingFullManifest(types) {
|
|
11161
|
+
return [...new Set(types)].filter((type) => {
|
|
11162
|
+
if (!isRegistryNodeType(type)) return false;
|
|
11163
|
+
const config = nodeConfigOf(type);
|
|
11164
|
+
return config ? config.manifestDetail === "SUMMARY" : !isInitialized;
|
|
11165
|
+
});
|
|
11166
|
+
}
|
|
10991
11167
|
async function loadRegistryNodeTypes(types) {
|
|
10992
11168
|
try {
|
|
10993
11169
|
const client = await waitForFluidGridsClient(15e3, 150);
|
|
10994
11170
|
if (client) {
|
|
10995
|
-
const manifests = await loadNodeManifests(client, types.map((nodeType) =>
|
|
10996
|
-
|
|
11171
|
+
const manifests = await loadNodeManifests(client, types.map((nodeType) => {
|
|
11172
|
+
const version = nodeConfigOf(nodeType)?.defaultData.version;
|
|
11173
|
+
return version ? {
|
|
11174
|
+
nodeType,
|
|
11175
|
+
version
|
|
11176
|
+
} : { nodeType };
|
|
11177
|
+
}));
|
|
11178
|
+
for (const manifest of manifests) registerFullManifest(manifest);
|
|
10997
11179
|
}
|
|
10998
11180
|
} catch (error) {
|
|
10999
11181
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
@@ -11002,12 +11184,13 @@ async function loadRegistryNodeTypes(types) {
|
|
|
11002
11184
|
rebuildNodeArrays();
|
|
11003
11185
|
}
|
|
11004
11186
|
/**
|
|
11005
|
-
* Register the given node types from the node registry
|
|
11006
|
-
* `nodeManifests` request for the ones not registered
|
|
11007
|
-
*
|
|
11187
|
+
* Register the given node types from the node registry, with their full
|
|
11188
|
+
* manifests: one batched `nodeManifests` request for the ones not registered
|
|
11189
|
+
* yet or registered as a palette summary. Types the registry is known to lack
|
|
11190
|
+
* (see `registerNodeManifests`) are not asked about. Never rejects.
|
|
11008
11191
|
*/
|
|
11009
11192
|
function ensureRegistryNodeTypesLoaded(types) {
|
|
11010
|
-
const wanted =
|
|
11193
|
+
const wanted = typesNeedingFullManifest(types).filter((type) => !registryLacks.has(type));
|
|
11011
11194
|
if (wanted.length === 0) return Promise.resolve();
|
|
11012
11195
|
const pending = /* @__PURE__ */ new Set();
|
|
11013
11196
|
const fresh = [];
|
|
@@ -11042,12 +11225,13 @@ async function ensureInstalledNodeTypesLoaded(types) {
|
|
|
11042
11225
|
rebuildNodeArrays();
|
|
11043
11226
|
}
|
|
11044
11227
|
/**
|
|
11045
|
-
* Make sure the given node types are registered
|
|
11046
|
-
* palette: what a canvas needs before it is
|
|
11047
|
-
*
|
|
11048
|
-
*
|
|
11049
|
-
*
|
|
11050
|
-
*
|
|
11228
|
+
* Make sure the given node types are registered with their full manifests,
|
|
11229
|
+
* without loading the rest of the palette: what a canvas needs before it is
|
|
11230
|
+
* drawn, saved or run. Types already registered in full cost nothing; the rest
|
|
11231
|
+
* (unregistered, or a palette summary) are fetched with one batched request, and
|
|
11232
|
+
* a type the registry does not carry is looked up among the workspace's
|
|
11233
|
+
* installed store nodes. Types that resolve nowhere stay unregistered (the
|
|
11234
|
+
* canvas draws them with the fallback card). Never rejects.
|
|
11051
11235
|
*/
|
|
11052
11236
|
async function ensureNodeTypesLoaded(types) {
|
|
11053
11237
|
const wanted = [...types];
|
|
@@ -11055,6 +11239,37 @@ async function ensureNodeTypesLoaded(types) {
|
|
|
11055
11239
|
await ensureInstalledNodeTypesLoaded(wanted);
|
|
11056
11240
|
}
|
|
11057
11241
|
/**
|
|
11242
|
+
* Load a node type's full manifest before a node of it is placed (BOFF-13066):
|
|
11243
|
+
* the palette holds only summaries. Resolves true when the node can be placed:
|
|
11244
|
+
* its registry entry is full, or the registry holds no entry for it (a
|
|
11245
|
+
* client-side node type, placed from its own defaults as before). False when
|
|
11246
|
+
* only the summary is available, because the full manifest could not be loaded.
|
|
11247
|
+
*/
|
|
11248
|
+
async function ensureNodeTypeReady(type) {
|
|
11249
|
+
await ensureNodeTypesLoaded([type]);
|
|
11250
|
+
return nodeConfigOf(type)?.manifestDetail !== "SUMMARY";
|
|
11251
|
+
}
|
|
11252
|
+
/**
|
|
11253
|
+
* Load the full manifests of the given node types that the registry holds only
|
|
11254
|
+
* as palette summaries (BOFF-13066); every other type is left as it is, so this
|
|
11255
|
+
* costs nothing where a canvas's node types are loaded. What the builder's save
|
|
11256
|
+
* and run paths and the node panel call before they read a node's operation
|
|
11257
|
+
* fields. Never rejects.
|
|
11258
|
+
*/
|
|
11259
|
+
function loadFullManifestsOfSummaries(types) {
|
|
11260
|
+
const summaries = [...types].filter((type) => nodeConfigOf(type ?? void 0)?.manifestDetail === "SUMMARY");
|
|
11261
|
+
return summaries.length > 0 ? ensureRegistryNodeTypesLoaded(summaries) : Promise.resolve();
|
|
11262
|
+
}
|
|
11263
|
+
/**
|
|
11264
|
+
* Start loading a node type's full manifest ahead of use (a drag that has just
|
|
11265
|
+
* started, a Node Store detail that has just opened), so placing it does not
|
|
11266
|
+
* wait. Never rejects.
|
|
11267
|
+
*/
|
|
11268
|
+
function prefetchNodeType(type) {
|
|
11269
|
+
if (!type || hasFullNodeConfig(type)) return;
|
|
11270
|
+
ensureNodeTypesLoaded([type]);
|
|
11271
|
+
}
|
|
11272
|
+
/**
|
|
11058
11273
|
* Register manifests that arrived with a workflow (`WorkflowDefinition.nodeManifests`)
|
|
11059
11274
|
* and keep them in the session cache, so the canvas needs no further request.
|
|
11060
11275
|
*
|
|
@@ -11064,7 +11279,7 @@ async function ensureNodeTypesLoaded(types) {
|
|
|
11064
11279
|
*/
|
|
11065
11280
|
function registerNodeManifests(values, lookedUp = []) {
|
|
11066
11281
|
let added = false;
|
|
11067
|
-
for (const manifest of rememberNodeManifests(values)) if (
|
|
11282
|
+
for (const manifest of rememberNodeManifests(values)) if (registerFullManifest(manifest)) added = true;
|
|
11068
11283
|
for (const type of lookedUp) if (isRegistryNodeType(type) && !hasNodeConfig(type)) registryLacks.add(type);
|
|
11069
11284
|
if (added) rebuildNodeArrays();
|
|
11070
11285
|
}
|
|
@@ -11104,8 +11319,9 @@ async function refetchStoreNodes() {
|
|
|
11104
11319
|
return;
|
|
11105
11320
|
}
|
|
11106
11321
|
try {
|
|
11322
|
+
const keepFull = fullNodeConfigTypes();
|
|
11107
11323
|
resetNodeRegistry();
|
|
11108
|
-
await initializeNodeConfigs();
|
|
11324
|
+
await initializeNodeConfigs(keepFull);
|
|
11109
11325
|
isInitialized = NODE_CONFIGS.length > 0;
|
|
11110
11326
|
rebuildNodeArrays();
|
|
11111
11327
|
} catch (error) {
|
|
@@ -11147,7 +11363,9 @@ function notifyNodeTypesListeners() {
|
|
|
11147
11363
|
*/
|
|
11148
11364
|
function liveInternalOperations(type) {
|
|
11149
11365
|
if (!type?.startsWith("internal:")) return void 0;
|
|
11150
|
-
const
|
|
11366
|
+
const config = nodeConfigOf(type);
|
|
11367
|
+
if (!config || config.manifestDetail === "SUMMARY") return void 0;
|
|
11368
|
+
const operations = config.operations;
|
|
11151
11369
|
return Array.isArray(operations) && operations.length > 0 ? operations : void 0;
|
|
11152
11370
|
}
|
|
11153
11371
|
/**
|
|
@@ -11268,20 +11486,24 @@ registerBaseNodeTypes();
|
|
|
11268
11486
|
* registry entries load in the background and replace it (BOFF-10387).
|
|
11269
11487
|
*/
|
|
11270
11488
|
function registerWorkflowNodeTypes(workflowNodes) {
|
|
11271
|
-
const
|
|
11272
|
-
for (const node of workflowNodes)
|
|
11273
|
-
|
|
11274
|
-
|
|
11275
|
-
|
|
11276
|
-
|
|
11277
|
-
|
|
11278
|
-
|
|
11279
|
-
|
|
11280
|
-
|
|
11281
|
-
|
|
11282
|
-
|
|
11489
|
+
const wanted = [];
|
|
11490
|
+
for (const node of workflowNodes) {
|
|
11491
|
+
if (!node.type) continue;
|
|
11492
|
+
if (nodeConfigOf(node.type)?.manifestDetail === "SUMMARY") wanted.push(node.type);
|
|
11493
|
+
if (!NODE_TYPES[node.type]) {
|
|
11494
|
+
wanted.push(node.type);
|
|
11495
|
+
const meta = getNodeMetadata({
|
|
11496
|
+
type: node.type,
|
|
11497
|
+
defaultData: {
|
|
11498
|
+
version: node.data?.version,
|
|
11499
|
+
nodeData: node.data?.nodeData
|
|
11500
|
+
},
|
|
11501
|
+
operations: node.data?.operations
|
|
11502
|
+
});
|
|
11503
|
+
if (meta?.node) NODE_TYPES[node.type] = meta.node;
|
|
11504
|
+
}
|
|
11283
11505
|
}
|
|
11284
|
-
ensureNodeTypesLoaded(
|
|
11506
|
+
ensureNodeTypesLoaded(wanted);
|
|
11285
11507
|
}
|
|
11286
11508
|
|
|
11287
11509
|
// src/components/FluidGridsProvider.tsx
|
|
@@ -11482,4 +11704,4 @@ function useFluidGridsContext() {
|
|
|
11482
11704
|
return context;
|
|
11483
11705
|
}
|
|
11484
11706
|
|
|
11485
|
-
export {
|
|
11707
|
+
export { resolveLoadOptionsSpec as $, resettledBaseline as $t, describeRunError as A, BuilderRunStatusDocument as An, useEditLeaseStore as At, coerceNumber as B, connectionsForAdapter as Bn, EDIT_SESSION_ID as Bt, getNodeMetadata as C, payloadFromCardValues as Cn, classifyCreateRefusal as Ct, runQuestions as D, NodeManifestsDocument as Dn, useSaveStatusStore as Dt, isFailedStatus as E, NodePaletteEntriesDocument as En, saveIndicatorOf as Et, useInsertNode as F, CreateWorkflowDefinitionDocument as Fn, phaseAfterAcquire as Ft, paramsFromOperation as G, getNodeDetail as Gn, rememberRevision as Gt, nodeSubtitle as H, matchesAdapterProvider as Hn, rememberSessionForReload as Ht, MissingParametersDialog as I, ExecutionsListDocument as In, phaseAfterTakeOver as It, resolveUiSpec as J, useMarkdownRenderer as Jn, AUTOSAVE_RETRY_DELAYS_MS as Jt, selectedOperationOf as K, buildStickyNode as Kn, revisionOf as Kt, useRunGuard as L, ExecutionDetailDocument as Ln, releasesOnClose as Lt, SENSITIVE_PARAM as M, TriggerWorkflowDocument as Mn, isLocked as Mt, buildOperationSeed as N, SaveWorkflowDraftDocument as Nn, leaseCallQueue as Nt, runStepQuestions as O, NodeEndpointConfigsDocument as On, workflowSaveQueue as Ot, createConfiguredNode as P, CreateWorkflowVersionDocument as Pn, leaseCallSequence as Pt, optionListValues as Q, inAppLeaveTarget as Qt, workflowParameterIssues as R, RunFromNodeDocument as Rn, shouldReleaseForIdle as Rt, fetchAllNodeEndpointConfigs as S, parseRawSignalPayload as Sn, builderPathOf as St, failureQuestions as T, signalPayloadCard as Tn, refusalOfQuota as Tt, nodeTitle as U, newConnectionProviderKey as Un, sessionBeforeReload as Ut, fixedParameterState as V, isOptionalAdapter as Vn, forgetSessionForReload as Vt, optionText as W, replaceAdapterConnections as Wn, rememberOwnStatusChange as Wt, isStringOptionList as X, codeBuildIdOf as Xt, stripSubmitActions as Y, canAutosave as Yt, optionListText as Z, findSaveConflict as Zt, registerNodeManifests as _, loadDefinitionJson as _n, watchLeavingLosesChanges as _t, NODES_METADATA as a, runDurationMs as an, latestNodeLog as at, scheduleNodePaletteLoad as b, declaredSignals as bn, useSaveWorkflow as bt, ensureInstalledNodeTypesLoaded as c, structuredParameterType as cn, useGuardedNavigate as ct, ensureNodeTypesLoaded as d, isParamVisible as dn, departingSave as dt, saveFailureActionOf as en, ConditionTreeBuilder as et, ensureRegistryNodeTypesLoaded as f, useFluidGridsAnalytics as fn, editStateFor as ft, refetchStoreNodes as g, clearCodeWorkflowDefinitionCache as gn, touchesSavedFields as gt, prefetchNodeType as h, useNodeRegistryRevision as hn, savedEverythingBeforeLeaving as ht, AVAILABLE_NODES as i, nodeStateDurationMs as in, parseMappingValue as it, describeRunStep as j, BuilderRunNodeDetailsDocument as jn, bannerOf as jt, describeRun as k, EventRegistrationsDocument as kn, useEditLeaseLocked as kt, ensureNodeConfigsLoaded as l, fieldsFromValue as ln, useManualSave as lt, onNodeTypesUpdate as m, useCanvasEdges as mn, leavingLosesChanges as mt, FluidGridsProvider as n, useNodeExecution as nn, casesFromRules as nt, NODE_CONFIGS as o, formatParameterValue as on, boundFieldsOf as ot, isNodeConfigsInitialized as p, openRunQuotaUpgradePrompt as pn, editingLeaseLocked as pt, useNodeConfig as q, loadMarkdown as qn, AUTOSAVE_DEBOUNCE_MS as qt, useFluidGridsContext as r, formatElapsedMs as rn, FieldTree as rt, NODE_TYPES as s, parseParameterValue as sn, missingRequiredParameters as st, FluidGridsContext as t, workflowFingerprint as tn, SwitchRulesEditor as tt, ensureNodeTypeReady as u, resolveNodeOperation as un, autosaveAllowedFor as ut, registerWorkflowNodeTypes as v, useCodeWorkflowInterface as vn, isFlowComplete as vt, useLatestFailedRun as w, runSignalTargets as wn, createThenOpen as wt, GetMyNodeInstallationsDocument as x, durableInterfaceOf as xn, blankWorkflowCreateInput as xt, registryNodeData as y, canSignalRun as yn, useFlowValidator as yt, asRecord as z, ExecuteStepDocument as zn, tickAction as zt };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
3
|
-
import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-
|
|
3
|
+
import { d as useRestoreWorkflowVersion, h as useWorkflowDefinitions } from "./useWorkflows-Dg7q_Tzf.js";
|
|
4
4
|
import { t as VersionDiffDialog } from "./VersionDiffDialog-D9W5Fm56.js";
|
|
5
5
|
import { c as versionsOfWorkflow } from "./VersionLifecycleBar-DuphLOT0.js";
|
|
6
6
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
@@ -3,7 +3,7 @@ import { t as __exportAll } from "./rolldown-runtime-hDbaFkMy.js";
|
|
|
3
3
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
4
4
|
import { n as useNavigationV2 } from "./useNavigationV2-C2WeqN7d.js";
|
|
5
5
|
import { t as TechnicalDetails } from "./TechnicalDetails-r5JXr1jZ.js";
|
|
6
|
-
import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-
|
|
6
|
+
import { o as useRunReplayActions, r as useInsightsData } from "./useObservability-mXM7lCop.js";
|
|
7
7
|
import { a as getTopFailingNodes, i as getFailureBreakdown, l as rankedFailingWorkflows, n as formatDuration, o as getTopFailingWorkflows, s as percentage, u as summarySuccessRate } from "./utils-C0dtnN4R.js";
|
|
8
8
|
import { n as FailureTriagePanel } from "./FailureTriagePanel-Ddua9uxn.js";
|
|
9
9
|
import { c as useContinuousOptimisationEnabled } from "./feature-flags-B_b8PJ6Z.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { r as useTr } from "./TranslationBridge-Da-TPgQm.js";
|
|
3
|
-
import { n as formatTemplatePrice } from "./TemplateCard-
|
|
3
|
+
import { n as formatTemplatePrice } from "./TemplateCard-BsrXJ1Su.js";
|
|
4
4
|
import { t as ConfirmActionDialog } from "./ConfirmActionDialog-D9Pir3bc.js";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
|
|
@@ -12,10 +12,10 @@ import { $I as WorkflowSecuritySeverity, QI as WorkflowSecurityCheck, ZI as Work
|
|
|
12
12
|
import { M as saveCodecServerSettings, _ as fetchPauseRules, a as createPauseRule, c as deletePauseRule, f as fetchArchiveSettings, g as fetchCodecServerSettings, j as saveArchiveSettings, l as deleteSearchAttribute, o as createSearchAttribute, r as clearArchiveSettings, x as fetchSearchAttributes } from "./api-o5UUDbr8.js";
|
|
13
13
|
import { i as NativeSelect, o as StatusPill, t as FieldError, u as useResource } from "./shared-mbyvDPde.js";
|
|
14
14
|
import { A as useFlowStore } from "./node-operation-selection-DHbtGNrG.js";
|
|
15
|
-
import {
|
|
16
|
-
import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-
|
|
15
|
+
import { Dt as useSaveStatusStore, Zt as findSaveConflict } from "./FluidGridsProvider-CDjkq3Zj.js";
|
|
16
|
+
import { a as useLogStreamDestinations, i as useLogStreamDestinationActions } from "./useObservability-mXM7lCop.js";
|
|
17
17
|
import { r as useConnections } from "./useConnections-CmnwGk09.js";
|
|
18
|
-
import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-
|
|
18
|
+
import { Nt as useUpdateWorkflowDefinitionMutation, Rt as useWorkflowDefinitionQuery, Vt as useWorkflowDefinitionsQuery, n as useAgentDefinitions } from "./useAgentDefinitions-YUDx_OW2.js";
|
|
19
19
|
import { a as formToInput$2, i as emptyAgentForm, n as agentToForm, o as grantDays, r as describeRule, t as AgentFormError } from "./agent-form-D0uLvzx4.js";
|
|
20
20
|
import { r as getFluidGridsConfig } from "./config-X97zrIvn.js";
|
|
21
21
|
import { n as getGlobalStoreClient } from "./global-client-DP_Wxe5t.js";
|