@burdenoff/fluidgrids-fe-sdk 2026.925.1 → 2026.929.1
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/README.md +14 -0
- package/dist/ExecutionDetailPage-F5XOP3JQ.js +12 -0
- package/dist/{ExecutionDetailPage-3ZJMNWBY.js.map → ExecutionDetailPage-F5XOP3JQ.js.map} +1 -1
- package/dist/ExecutionsListPage-KQZK2T4O.js +11 -0
- package/dist/{ExecutionsListPage-FPNETFQX.js.map → ExecutionsListPage-KQZK2T4O.js.map} +1 -1
- package/dist/{WorkflowBuilder-DMOOLJBN.js → WorkflowBuilder-TJFZ2TA3.js} +7 -7
- package/dist/{WorkflowBuilder-DMOOLJBN.js.map → WorkflowBuilder-TJFZ2TA3.js.map} +1 -1
- package/dist/WorkflowsList-72U6TS4Y.js +13 -0
- package/dist/{WorkflowsList-GEPG3OZ6.js.map → WorkflowsList-72U6TS4Y.js.map} +1 -1
- package/dist/{chunk-QLWHIBQJ.js → chunk-5FFVT22V.js} +5 -5
- package/dist/{chunk-QLWHIBQJ.js.map → chunk-5FFVT22V.js.map} +1 -1
- package/dist/{chunk-WVKQZOWG.js → chunk-C44DTSC6.js} +244 -51
- package/dist/chunk-C44DTSC6.js.map +1 -0
- package/dist/chunk-EXJYUEXA.js +9834 -0
- package/dist/chunk-EXJYUEXA.js.map +1 -0
- package/dist/{chunk-O4UTOCZJ.js → chunk-EXNXJ7VL.js} +3 -3
- package/dist/{chunk-O4UTOCZJ.js.map → chunk-EXNXJ7VL.js.map} +1 -1
- package/dist/{chunk-UBKJDGYS.js → chunk-FJC2RJ4Y.js} +27 -3
- package/dist/chunk-FJC2RJ4Y.js.map +1 -0
- package/dist/{chunk-A6PDDUMN.js → chunk-GZCHKR3C.js} +4 -4
- package/dist/{chunk-A6PDDUMN.js.map → chunk-GZCHKR3C.js.map} +1 -1
- package/dist/{chunk-VC4L742J.js → chunk-IFQXZBKJ.js} +34 -31
- package/dist/chunk-IFQXZBKJ.js.map +1 -0
- package/dist/{chunk-ZZ3SFJXV.js → chunk-OCE32VUK.js} +4 -4
- package/dist/{chunk-ZZ3SFJXV.js.map → chunk-OCE32VUK.js.map} +1 -1
- package/dist/{chunk-IOP2IBDV.js → chunk-PTHYN6HY.js} +4 -4
- package/dist/{chunk-IOP2IBDV.js.map → chunk-PTHYN6HY.js.map} +1 -1
- package/dist/{chunk-QV6T4R4T.js → chunk-TPDO2EIC.js} +3 -3
- package/dist/{chunk-QV6T4R4T.js.map → chunk-TPDO2EIC.js.map} +1 -1
- package/dist/{chunk-YMD3T6J2.js → chunk-ULNNTBJO.js} +12 -2
- package/dist/chunk-ULNNTBJO.js.map +1 -0
- package/dist/{chunk-T7FJ2TBD.js → chunk-XBQBM3SE.js} +4 -4
- package/dist/{chunk-T7FJ2TBD.js.map → chunk-XBQBM3SE.js.map} +1 -1
- package/dist/{chunk-YQ4GDK4I.js → chunk-YBX7EDDR.js} +3 -3
- package/dist/{chunk-YQ4GDK4I.js.map → chunk-YBX7EDDR.js.map} +1 -1
- package/dist/{chunk-H5LGKSBM.js → chunk-ZTLWHD2V.js} +3 -3
- package/dist/{chunk-H5LGKSBM.js.map → chunk-ZTLWHD2V.js.map} +1 -1
- package/dist/executions.js +5 -5
- package/dist/history.js +3 -3
- package/dist/index.d.ts +81332 -35216
- package/dist/index.js +41 -43
- package/dist/index.js.map +1 -1
- package/dist/nodes.js +2 -2
- package/dist/settings.js +3 -3
- package/dist/templates.js +5 -5
- package/dist/{workflow-builder-Y7PcoT2O.d.ts → workflow-builder-DIjITfNE.d.ts} +17 -0
- package/dist/workflow-builder.d.ts +1 -1
- package/dist/workflow-builder.js +6 -6
- package/dist/workflows-list.js +4 -4
- package/package.json +1 -1
- package/dist/ExecutionDetailPage-3ZJMNWBY.js +0 -12
- package/dist/ExecutionsListPage-FPNETFQX.js +0 -11
- package/dist/WorkflowsList-GEPG3OZ6.js +0 -13
- package/dist/chunk-RGLDGMAB.js +0 -4940
- package/dist/chunk-RGLDGMAB.js.map +0 -1
- package/dist/chunk-UBKJDGYS.js.map +0 -1
- package/dist/chunk-VC4L742J.js.map +0 -1
- package/dist/chunk-WVKQZOWG.js.map +0 -1
- package/dist/chunk-YMD3T6J2.js.map +0 -1
|
@@ -7,10 +7,10 @@ import { GetMyNodeInstallationsDocument, BrowseWorkflowTemplatesDocument, Instal
|
|
|
7
7
|
import { QuotaExhaustedDialog } from './chunk-AANIWER2.js';
|
|
8
8
|
import { SdkPermissionGate, FLUIDGRIDS_PERMISSIONS, SdkPermissionButton } from './chunk-W23ZXNKU.js';
|
|
9
9
|
import { cn as cn$1 } from './chunk-3ZYUGTIT.js';
|
|
10
|
-
import { useWorkflowVersions, useRestoreWorkflowVersion, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-
|
|
10
|
+
import { useWorkflowVersions, useRestoreWorkflowVersion, useActivateWorkflow, useDeleteWorkflow, useLazyWorkflowDefinition, useDeactivateWorkflow } from './chunk-ZTLWHD2V.js';
|
|
11
11
|
import { config, getFluidGridsConfig, validateTrustedOrigin, setFluidGridsConfig, resetFluidGridsConfig } from './chunk-U4AJLVHA.js';
|
|
12
|
-
import { useFlowStore } from './chunk-
|
|
13
|
-
import { NodeEndpointConfigsDocument, NodeManifestDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, TriggerWorkflowDocument, RunFromNodeDocument, ExecutionDetailDocument, WorkflowRunDocument, FluidgridsEntityTagsDocument, AvailableFluidgridsTagsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, UntagFluidgridsEntityDocument, ReplaceFluidgridsEntityTagsDocument, CreateFluidgridsTagDocument, NodeSchemaIntrospectionDocument, useWorkflowPinnedDataQuery, usePinNodeDataMutation, useUnpinNodeDataMutation, EventRegistrationsDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-
|
|
12
|
+
import { useFlowStore } from './chunk-ULNNTBJO.js';
|
|
13
|
+
import { NodeEndpointConfigsDocument, NodeManifestDocument, UpdateWorkflowDefinitionDocument, CreateWorkflowDefinitionDocument, CreateWorkflowVersionDocument, ExecuteStepDocument, TriggerWorkflowDocument, RunFromNodeDocument, ExecutionDetailDocument, WorkflowRunDocument, FluidgridsEntityTagsDocument, AvailableFluidgridsTagsDocument, SearchFluidgridsTagsDocument, TagFluidgridsEntityDocument, UntagFluidgridsEntityDocument, ReplaceFluidgridsEntityTagsDocument, CreateFluidgridsTagDocument, NodeSchemaIntrospectionDocument, useWorkflowPinnedDataQuery, usePinNodeDataMutation, useUnpinNodeDataMutation, EventRegistrationsDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-FJC2RJ4Y.js';
|
|
14
14
|
import { throwIfResultError, describeOperationError } from './chunk-LMO5ASOE.js';
|
|
15
15
|
import { useTr, FluidGridsTranslationProvider, ENGLISH_FALLBACK_TRANSLATOR } from './chunk-7YWBH2A5.js';
|
|
16
16
|
import { waitForFluidGridsClient, getFluidGridsClient, getFluidGridsClientSafe, createFluidGridsClient, setFluidGridsClient, resetFluidGridsClient } from './chunk-5BDQNSP3.js';
|
|
@@ -3601,6 +3601,7 @@ function ConnectionSelector({
|
|
|
3601
3601
|
] });
|
|
3602
3602
|
}
|
|
3603
3603
|
var TRIGGER_WORKFLOW = TriggerWorkflowDocument;
|
|
3604
|
+
var EXECUTE_STEP = ExecuteStepDocument;
|
|
3604
3605
|
var WORKFLOW_RUN = WorkflowRunDocument;
|
|
3605
3606
|
var RUN_FROM_NODE = RunFromNodeDocument;
|
|
3606
3607
|
var EXECUTION_DETAIL = ExecutionDetailDocument;
|
|
@@ -3640,6 +3641,7 @@ function useNodeExecution() {
|
|
|
3640
3641
|
const startExecution = useFlowStore(
|
|
3641
3642
|
(s) => s.actions.execution.startExecution
|
|
3642
3643
|
);
|
|
3644
|
+
const setStepPlan = useFlowStore((s) => s.actions.execution.setStepPlan);
|
|
3643
3645
|
const addLog = useFlowStore((s) => s.actions.execution.addLog);
|
|
3644
3646
|
const updateLog = useFlowStore((s) => s.actions.execution.updateLog);
|
|
3645
3647
|
const setNodeStatus = useFlowStore((s) => s.actions.execution.setNodeStatus);
|
|
@@ -3824,58 +3826,51 @@ function useNodeExecution() {
|
|
|
3824
3826
|
},
|
|
3825
3827
|
[processNodeStates, completeExecution, cleanup]
|
|
3826
3828
|
);
|
|
3827
|
-
const
|
|
3828
|
-
async (
|
|
3829
|
-
const triggerNode = findTriggerNode();
|
|
3830
|
-
if (!triggerNode) {
|
|
3831
|
-
console.error("[useNodeExecution] No trigger node found in workflow");
|
|
3832
|
-
return { success: false, error: "No trigger node found" };
|
|
3833
|
-
}
|
|
3829
|
+
const executeStep = useCallback(
|
|
3830
|
+
async (nodeId) => {
|
|
3834
3831
|
cleanup();
|
|
3835
3832
|
clearLogs();
|
|
3836
3833
|
const workflowKey = workflow.workflowKey || workflow.id;
|
|
3837
3834
|
const version = workflow.version || "1.0.0";
|
|
3838
3835
|
if (!workflowKey) {
|
|
3839
3836
|
console.error(
|
|
3840
|
-
"[useNodeExecution] Workflow must be saved before execution. No workflowKey found."
|
|
3837
|
+
"[useNodeExecution] Workflow must be saved before step execution. No workflowKey found."
|
|
3841
3838
|
);
|
|
3842
3839
|
return {
|
|
3843
3840
|
success: false,
|
|
3844
3841
|
error: "Workflow must be saved before execution"
|
|
3845
3842
|
};
|
|
3846
3843
|
}
|
|
3847
|
-
setNodeStatus(
|
|
3844
|
+
setNodeStatus(nodeId, "running");
|
|
3848
3845
|
try {
|
|
3849
3846
|
const client = getFluidGridsClient();
|
|
3850
3847
|
const result = throwIfResultError(
|
|
3851
3848
|
await client.mutate({
|
|
3852
|
-
mutation:
|
|
3849
|
+
mutation: EXECUTE_STEP,
|
|
3853
3850
|
variables: {
|
|
3854
3851
|
input: {
|
|
3855
3852
|
workflowKey,
|
|
3856
3853
|
version,
|
|
3857
|
-
|
|
3858
|
-
triggerData: {},
|
|
3859
|
-
context: {},
|
|
3860
|
-
stopAtNodeId,
|
|
3861
|
-
// Step execution from the builder is always a manual/debug
|
|
3862
|
-
// run (BOFF-7511) — pinned node data only ever applies here,
|
|
3863
|
-
// never on a PRODUCTION trigger (webhook, schedule, API).
|
|
3864
|
-
mode: "TEST"
|
|
3854
|
+
nodeId
|
|
3865
3855
|
}
|
|
3866
3856
|
}
|
|
3867
3857
|
})
|
|
3868
3858
|
);
|
|
3869
|
-
const
|
|
3870
|
-
if (
|
|
3871
|
-
const backendRunId =
|
|
3872
|
-
startExecution(
|
|
3859
|
+
const stepResult = result.data?.executeStep;
|
|
3860
|
+
if (stepResult) {
|
|
3861
|
+
const backendRunId = stepResult.runId;
|
|
3862
|
+
startExecution(nodeId, backendRunId);
|
|
3863
|
+
setStepPlan({
|
|
3864
|
+
runId: backendRunId,
|
|
3865
|
+
...stepResult.plan,
|
|
3866
|
+
sourceRunId: stepResult.plan.sourceRunId ?? null
|
|
3867
|
+
});
|
|
3873
3868
|
const initialLog = {
|
|
3874
|
-
id: `${backendRunId}-${
|
|
3869
|
+
id: `${backendRunId}-${nodeId}`,
|
|
3875
3870
|
runId: backendRunId,
|
|
3876
|
-
nodeId
|
|
3877
|
-
nodeType: workflow.nodes.find((
|
|
3878
|
-
nodeName: getNodeName(
|
|
3871
|
+
nodeId,
|
|
3872
|
+
nodeType: workflow.nodes.find((node) => node.id === nodeId)?.type || "unknown",
|
|
3873
|
+
nodeName: getNodeName(nodeId),
|
|
3879
3874
|
status: "running",
|
|
3880
3875
|
inputArgs: null,
|
|
3881
3876
|
output: null,
|
|
@@ -3886,21 +3881,21 @@ function useNodeExecution() {
|
|
|
3886
3881
|
};
|
|
3887
3882
|
addLog(initialLog);
|
|
3888
3883
|
pollRunUpdates(backendRunId);
|
|
3889
|
-
return { success: true, runId: backendRunId };
|
|
3884
|
+
return { success: true, runId: backendRunId, plan: stepResult.plan };
|
|
3890
3885
|
}
|
|
3891
|
-
console.error("[useNodeExecution] No result from
|
|
3892
|
-
setNodeStatus(
|
|
3893
|
-
return { success: false, error: "No result from
|
|
3886
|
+
console.error("[useNodeExecution] No result from executeStep");
|
|
3887
|
+
setNodeStatus(nodeId, "error");
|
|
3888
|
+
return { success: false, error: "No result from executeStep" };
|
|
3894
3889
|
} catch (error) {
|
|
3895
|
-
console.error("[useNodeExecution] Error
|
|
3890
|
+
console.error("[useNodeExecution] Error executing step:", error);
|
|
3896
3891
|
const errorMessage = describeOperationError(error);
|
|
3897
3892
|
const errorRunId = nanoid$1();
|
|
3898
3893
|
const errorLog = {
|
|
3899
|
-
id: `${errorRunId}-${
|
|
3894
|
+
id: `${errorRunId}-${nodeId}`,
|
|
3900
3895
|
runId: errorRunId,
|
|
3901
|
-
nodeId
|
|
3902
|
-
nodeType: workflow.nodes.find((
|
|
3903
|
-
nodeName: getNodeName(
|
|
3896
|
+
nodeId,
|
|
3897
|
+
nodeType: workflow.nodes.find((node) => node.id === nodeId)?.type || "unknown",
|
|
3898
|
+
nodeName: getNodeName(nodeId),
|
|
3904
3899
|
status: "failed",
|
|
3905
3900
|
inputArgs: null,
|
|
3906
3901
|
output: null,
|
|
@@ -3910,16 +3905,16 @@ function useNodeExecution() {
|
|
|
3910
3905
|
endTime: (/* @__PURE__ */ new Date()).toISOString()
|
|
3911
3906
|
};
|
|
3912
3907
|
addLog(errorLog);
|
|
3913
|
-
setNodeStatus(
|
|
3908
|
+
setNodeStatus(nodeId, "error");
|
|
3914
3909
|
completeExecution();
|
|
3915
3910
|
return { success: false, error: errorMessage };
|
|
3916
3911
|
}
|
|
3917
3912
|
},
|
|
3918
3913
|
[
|
|
3919
|
-
findTriggerNode,
|
|
3920
3914
|
cleanup,
|
|
3921
3915
|
clearLogs,
|
|
3922
3916
|
startExecution,
|
|
3917
|
+
setStepPlan,
|
|
3923
3918
|
workflow,
|
|
3924
3919
|
getNodeName,
|
|
3925
3920
|
addLog,
|
|
@@ -3961,8 +3956,9 @@ function useNodeExecution() {
|
|
|
3961
3956
|
triggerNodeId: triggerNode.id,
|
|
3962
3957
|
triggerData: customTriggerData || {},
|
|
3963
3958
|
context: {},
|
|
3964
|
-
// Builder "Test workflow" is always a manual/debug run
|
|
3965
|
-
//
|
|
3959
|
+
// Builder "Test workflow" is always a manual/debug run.
|
|
3960
|
+
// Pinned node data only applies to TEST executions, never a
|
|
3961
|
+
// production trigger (webhook, schedule, API).
|
|
3966
3962
|
mode: "TEST"
|
|
3967
3963
|
}
|
|
3968
3964
|
}
|
|
@@ -4030,7 +4026,7 @@ function useNodeExecution() {
|
|
|
4030
4026
|
sourceRunId,
|
|
4031
4027
|
nodeId,
|
|
4032
4028
|
// Run-from-node is a debug affordance — always TEST, same
|
|
4033
|
-
// rule as
|
|
4029
|
+
// rule as the other builder debug execution paths.
|
|
4034
4030
|
mode: "TEST"
|
|
4035
4031
|
}
|
|
4036
4032
|
}
|
|
@@ -4117,7 +4113,7 @@ function useNodeExecution() {
|
|
|
4117
4113
|
};
|
|
4118
4114
|
}, [cleanup, completeExecution]);
|
|
4119
4115
|
return {
|
|
4120
|
-
|
|
4116
|
+
executeStep,
|
|
4121
4117
|
executeFullWorkflow,
|
|
4122
4118
|
executeFromNode,
|
|
4123
4119
|
loadExecution,
|
|
@@ -6665,7 +6661,7 @@ var getNodeMetadata = (value) => {
|
|
|
6665
6661
|
return updated;
|
|
6666
6662
|
});
|
|
6667
6663
|
}, [nodeType, id, edges, data, setNodes, zustandSetNodes]);
|
|
6668
|
-
const {
|
|
6664
|
+
const { executeStep } = useNodeExecution();
|
|
6669
6665
|
const deleteNode = useDeleteNode();
|
|
6670
6666
|
const handleDeleteNode = () => {
|
|
6671
6667
|
deleteNode(id);
|
|
@@ -6723,11 +6719,11 @@ var getNodeMetadata = (value) => {
|
|
|
6723
6719
|
openNdv({ nodeId: id, type: value?.type });
|
|
6724
6720
|
}, [id, openNdv]);
|
|
6725
6721
|
const handleExecuteStep = useCallback(() => {
|
|
6726
|
-
|
|
6722
|
+
executeStep(id).then((_result) => {
|
|
6727
6723
|
}).catch((error) => {
|
|
6728
|
-
console.error("[NodeComponent] Execute error:", error);
|
|
6724
|
+
console.error("[NodeComponent] Execute step error:", error);
|
|
6729
6725
|
});
|
|
6730
|
-
}, [
|
|
6726
|
+
}, [executeStep, id]);
|
|
6731
6727
|
const missingCredentials = useMemo(() => {
|
|
6732
6728
|
const visibleAdapters = getVisibleConnectionAdapters(
|
|
6733
6729
|
String(value?.type ?? ""),
|
|
@@ -8916,6 +8912,53 @@ function buildNodeCheck(requiredNodeTypes, installedAppIds) {
|
|
|
8916
8912
|
canImport: missingPaid.length === 0
|
|
8917
8913
|
};
|
|
8918
8914
|
}
|
|
8915
|
+
var FLUIDGRIDS_BRAND = "FluidGrids";
|
|
8916
|
+
var FLUIDGRIDS_SITE_URL = "https://www.fluidgrids.ai";
|
|
8917
|
+
var ENGLISH_LABEL = `Powered by ${FLUIDGRIDS_BRAND}`;
|
|
8918
|
+
function resolveFluidGridsMarkLabel(tr) {
|
|
8919
|
+
const translated = tr(
|
|
8920
|
+
"fluidgrids.components.fluidGridsMark.poweredBy",
|
|
8921
|
+
"Powered by {{brand}}",
|
|
8922
|
+
{ brand: FLUIDGRIDS_BRAND }
|
|
8923
|
+
);
|
|
8924
|
+
return typeof translated === "string" && translated.includes(FLUIDGRIDS_BRAND) ? translated : ENGLISH_LABEL;
|
|
8925
|
+
}
|
|
8926
|
+
function FluidGridsMark() {
|
|
8927
|
+
const tr = useTr();
|
|
8928
|
+
const label = resolveFluidGridsMarkLabel(tr);
|
|
8929
|
+
return /* @__PURE__ */ jsxs(
|
|
8930
|
+
"a",
|
|
8931
|
+
{
|
|
8932
|
+
href: FLUIDGRIDS_SITE_URL,
|
|
8933
|
+
target: "_blank",
|
|
8934
|
+
rel: "noopener noreferrer",
|
|
8935
|
+
className: "absolute right-3 top-3 z-10 flex items-center gap-1.5 whitespace-nowrap rounded-full border border-card-foreground/10 bg-card/90 px-2.5 py-1 text-[11px] font-medium text-card-foreground shadow-sm backdrop-blur transition-opacity hover:opacity-90",
|
|
8936
|
+
children: [
|
|
8937
|
+
/* @__PURE__ */ jsx(FluidGridsGlyph, {}),
|
|
8938
|
+
label
|
|
8939
|
+
]
|
|
8940
|
+
}
|
|
8941
|
+
);
|
|
8942
|
+
}
|
|
8943
|
+
function FluidGridsGlyph() {
|
|
8944
|
+
return /* @__PURE__ */ jsx(
|
|
8945
|
+
"svg",
|
|
8946
|
+
{
|
|
8947
|
+
viewBox: "90 92 332 332",
|
|
8948
|
+
"aria-hidden": "true",
|
|
8949
|
+
focusable: "false",
|
|
8950
|
+
className: "size-3.5 shrink-0 text-primary",
|
|
8951
|
+
children: /* @__PURE__ */ jsx(
|
|
8952
|
+
"path",
|
|
8953
|
+
{
|
|
8954
|
+
fill: "currentColor",
|
|
8955
|
+
fillRule: "evenodd",
|
|
8956
|
+
d: "M256 96C256 96 372 232 372 312C372 376 320 420 256 420C192 420 140 376 140 312C140 232 256 96 256 96ZM256 176C238 210 210 244 210 296C210 332 234 356 268 360C236 348 230 322 244 296C258 270 270 230 256 176ZM278 268h40v40h-40ZM330 268h40v40h-40ZM278 320h40v40h-40ZM330 320h40v40h-40Z"
|
|
8957
|
+
}
|
|
8958
|
+
)
|
|
8959
|
+
}
|
|
8960
|
+
);
|
|
8961
|
+
}
|
|
8919
8962
|
function useNodeList(nodes) {
|
|
8920
8963
|
return useMemo(() => {
|
|
8921
8964
|
return nodes.slice().sort((a, b) => {
|
|
@@ -23809,11 +23852,13 @@ function NodeDetailView() {
|
|
|
23809
23852
|
const [inputView, setInputView] = useState("schema");
|
|
23810
23853
|
const executionLogs = useFlowStore((s) => s.execution.logs);
|
|
23811
23854
|
const currentRunId = useFlowStore((s) => s.execution.currentRunId);
|
|
23855
|
+
const stepPlan = useFlowStore((s) => s.execution.stepPlan);
|
|
23812
23856
|
const nodeLog = useMemo(() => {
|
|
23813
23857
|
if (!ndv?.nodeId) return null;
|
|
23814
23858
|
const matches = executionLogs.filter((l) => l.nodeId === ndv.nodeId);
|
|
23815
23859
|
return matches.length > 0 ? matches[matches.length - 1] : null;
|
|
23816
23860
|
}, [executionLogs, ndv?.nodeId]);
|
|
23861
|
+
const stepPlanForNode = stepPlan?.runId === currentRunId && stepPlan.targetNodeId === ndv?.nodeId ? stepPlan : null;
|
|
23817
23862
|
const hasRealOutput = !!nodeLog?.output && Object.keys(nodeLog.output).length > 0;
|
|
23818
23863
|
const hasRealInput = !!nodeLog?.inputArgs && Object.keys(nodeLog.inputArgs).length > 0;
|
|
23819
23864
|
const realOutputFields = useMemo(
|
|
@@ -23978,6 +24023,7 @@ function NodeDetailView() {
|
|
|
23978
24023
|
}
|
|
23979
24024
|
)
|
|
23980
24025
|
] }),
|
|
24026
|
+
stepPlanForNode && /* @__PURE__ */ jsx(StepExecutionPlanSummary, { plan: stepPlanForNode }),
|
|
23981
24027
|
!threePaneLayout && /* @__PURE__ */ jsxs(
|
|
23982
24028
|
"div",
|
|
23983
24029
|
{
|
|
@@ -24302,6 +24348,152 @@ function NodeDetailView() {
|
|
|
24302
24348
|
}
|
|
24303
24349
|
) });
|
|
24304
24350
|
}
|
|
24351
|
+
function StepExecutionPlanSummary({ plan }) {
|
|
24352
|
+
const tr = useTr();
|
|
24353
|
+
return /* @__PURE__ */ jsxs(
|
|
24354
|
+
"section",
|
|
24355
|
+
{
|
|
24356
|
+
className: "shrink-0 border-b border-border bg-muted/30 px-4 py-2.5",
|
|
24357
|
+
"data-testid": "ndv-step-execution-plan",
|
|
24358
|
+
"aria-live": "polite",
|
|
24359
|
+
children: [
|
|
24360
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
24361
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground", children: tr(
|
|
24362
|
+
"fluidgrids.builder.nodeDetailView.stepPlanTitle",
|
|
24363
|
+
"TEST execution plan"
|
|
24364
|
+
) }),
|
|
24365
|
+
/* @__PURE__ */ jsx(
|
|
24366
|
+
PlanMetric,
|
|
24367
|
+
{
|
|
24368
|
+
label: tr(
|
|
24369
|
+
"fluidgrids.builder.nodeDetailView.stepPlanExecute",
|
|
24370
|
+
"Execute"
|
|
24371
|
+
),
|
|
24372
|
+
count: plan.executeNodeIds.length
|
|
24373
|
+
}
|
|
24374
|
+
),
|
|
24375
|
+
/* @__PURE__ */ jsx(
|
|
24376
|
+
PlanMetric,
|
|
24377
|
+
{
|
|
24378
|
+
label: tr("fluidgrids.builder.nodeDetailView.stepPlanReuse", "Reuse"),
|
|
24379
|
+
count: plan.reusedNodeIds.length
|
|
24380
|
+
}
|
|
24381
|
+
),
|
|
24382
|
+
/* @__PURE__ */ jsx(
|
|
24383
|
+
PlanMetric,
|
|
24384
|
+
{
|
|
24385
|
+
label: tr(
|
|
24386
|
+
"fluidgrids.builder.nodeDetailView.stepPlanPinned",
|
|
24387
|
+
"Pinned"
|
|
24388
|
+
),
|
|
24389
|
+
count: plan.pinnedNodeIds.length
|
|
24390
|
+
}
|
|
24391
|
+
),
|
|
24392
|
+
/* @__PURE__ */ jsx(
|
|
24393
|
+
PlanMetric,
|
|
24394
|
+
{
|
|
24395
|
+
label: tr(
|
|
24396
|
+
"fluidgrids.builder.nodeDetailView.stepPlanBlockers",
|
|
24397
|
+
"Blockers"
|
|
24398
|
+
),
|
|
24399
|
+
count: plan.blockers.length
|
|
24400
|
+
}
|
|
24401
|
+
)
|
|
24402
|
+
] }),
|
|
24403
|
+
plan.sourceRunId && /* @__PURE__ */ jsxs("p", { className: "mt-1 text-[11px] text-muted-foreground", children: [
|
|
24404
|
+
tr(
|
|
24405
|
+
"fluidgrids.builder.nodeDetailView.stepPlanSource",
|
|
24406
|
+
"Using compatible TEST data from run"
|
|
24407
|
+
),
|
|
24408
|
+
" ",
|
|
24409
|
+
/* @__PURE__ */ jsx("code", { className: "font-mono text-foreground", children: plan.sourceRunId })
|
|
24410
|
+
] }),
|
|
24411
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-2 grid gap-2 sm:grid-cols-2", children: [
|
|
24412
|
+
/* @__PURE__ */ jsx(
|
|
24413
|
+
PlanNodeList,
|
|
24414
|
+
{
|
|
24415
|
+
label: tr(
|
|
24416
|
+
"fluidgrids.builder.nodeDetailView.stepPlanExecuteNodes",
|
|
24417
|
+
"Nodes to execute"
|
|
24418
|
+
),
|
|
24419
|
+
nodeIds: plan.executeNodeIds,
|
|
24420
|
+
emptyLabel: tr(
|
|
24421
|
+
"fluidgrids.builder.nodeDetailView.stepPlanExecuteNodesEmpty",
|
|
24422
|
+
"No nodes need execution."
|
|
24423
|
+
)
|
|
24424
|
+
}
|
|
24425
|
+
),
|
|
24426
|
+
/* @__PURE__ */ jsx(
|
|
24427
|
+
PlanNodeList,
|
|
24428
|
+
{
|
|
24429
|
+
label: tr(
|
|
24430
|
+
"fluidgrids.builder.nodeDetailView.stepPlanReusedNodes",
|
|
24431
|
+
"Reused nodes"
|
|
24432
|
+
),
|
|
24433
|
+
nodeIds: plan.reusedNodeIds,
|
|
24434
|
+
emptyLabel: tr(
|
|
24435
|
+
"fluidgrids.builder.nodeDetailView.stepPlanReusedNodesEmpty",
|
|
24436
|
+
"No prior node data reused."
|
|
24437
|
+
)
|
|
24438
|
+
}
|
|
24439
|
+
),
|
|
24440
|
+
/* @__PURE__ */ jsx(
|
|
24441
|
+
PlanNodeList,
|
|
24442
|
+
{
|
|
24443
|
+
label: tr(
|
|
24444
|
+
"fluidgrids.builder.nodeDetailView.stepPlanPinnedNodes",
|
|
24445
|
+
"Pinned nodes"
|
|
24446
|
+
),
|
|
24447
|
+
nodeIds: plan.pinnedNodeIds,
|
|
24448
|
+
emptyLabel: tr(
|
|
24449
|
+
"fluidgrids.builder.nodeDetailView.stepPlanPinnedNodesEmpty",
|
|
24450
|
+
"No pinned data used."
|
|
24451
|
+
)
|
|
24452
|
+
}
|
|
24453
|
+
),
|
|
24454
|
+
/* @__PURE__ */ jsx(
|
|
24455
|
+
PlanNodeList,
|
|
24456
|
+
{
|
|
24457
|
+
label: tr(
|
|
24458
|
+
"fluidgrids.builder.nodeDetailView.stepPlanBlockerNodes",
|
|
24459
|
+
"Blockers"
|
|
24460
|
+
),
|
|
24461
|
+
nodeIds: plan.blockers,
|
|
24462
|
+
emptyLabel: tr(
|
|
24463
|
+
"fluidgrids.builder.nodeDetailView.stepPlanBlockerNodesEmpty",
|
|
24464
|
+
"No blockers."
|
|
24465
|
+
)
|
|
24466
|
+
}
|
|
24467
|
+
)
|
|
24468
|
+
] })
|
|
24469
|
+
]
|
|
24470
|
+
}
|
|
24471
|
+
);
|
|
24472
|
+
}
|
|
24473
|
+
function PlanMetric({ label, count: count2 }) {
|
|
24474
|
+
return /* @__PURE__ */ jsxs("span", { className: "text-[11px] text-muted-foreground", children: [
|
|
24475
|
+
label,
|
|
24476
|
+
": ",
|
|
24477
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: count2 })
|
|
24478
|
+
] });
|
|
24479
|
+
}
|
|
24480
|
+
function PlanNodeList({
|
|
24481
|
+
label,
|
|
24482
|
+
nodeIds,
|
|
24483
|
+
emptyLabel
|
|
24484
|
+
}) {
|
|
24485
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-w-0 rounded-md border border-border bg-background/60 px-2 py-1.5", children: [
|
|
24486
|
+
/* @__PURE__ */ jsx("p", { className: "text-[10px] font-semibold uppercase tracking-wide text-muted-foreground", children: label }),
|
|
24487
|
+
nodeIds.length > 0 ? /* @__PURE__ */ jsx("div", { className: "mt-1 flex flex-wrap gap-1", children: nodeIds.map((nodeId) => /* @__PURE__ */ jsx(
|
|
24488
|
+
"code",
|
|
24489
|
+
{
|
|
24490
|
+
className: "max-w-full truncate rounded bg-muted px-1 py-0.5 font-mono text-[10px] text-foreground",
|
|
24491
|
+
children: nodeId
|
|
24492
|
+
},
|
|
24493
|
+
`${label}-${nodeId}`
|
|
24494
|
+
)) }) : /* @__PURE__ */ jsx("p", { className: "mt-1 text-[10px] text-muted-foreground", children: emptyLabel })
|
|
24495
|
+
] });
|
|
24496
|
+
}
|
|
24305
24497
|
function ResizeHandle({ onStart }) {
|
|
24306
24498
|
return /* @__PURE__ */ jsx(
|
|
24307
24499
|
"div",
|
|
@@ -25876,6 +26068,7 @@ var FlowBuilder = ({ readOnly = false }) => {
|
|
|
25876
26068
|
children: /* @__PURE__ */ jsx(Background, { gap: 24 })
|
|
25877
26069
|
}
|
|
25878
26070
|
),
|
|
26071
|
+
/* @__PURE__ */ jsx(FluidGridsMark, {}),
|
|
25879
26072
|
nodes.length === 0 && !isReadOnly && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 text-center", children: [
|
|
25880
26073
|
/* @__PURE__ */ jsx("div", { className: "size-16 flex items-center justify-center rounded-full bg-primary/10 border-2 border-dashed border-primary/30", children: /* @__PURE__ */ jsx(
|
|
25881
26074
|
Icon,
|
|
@@ -25991,6 +26184,6 @@ var FlowBuilderPage = ({
|
|
|
25991
26184
|
] });
|
|
25992
26185
|
};
|
|
25993
26186
|
|
|
25994
|
-
export { Card2 as Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConnectionFormDialog, ConnectionSelector, EntityTagPicker, FLUIDGRIDS_ENTITY_TYPES, FlowBuilderPage, FluidGridsProvider, ProviderPicker, SchemaConnectionForm, ScopePicker, TemplateCard, buildNodeCheck, buildRequiredNodeTypes, listCustomBlocks, mergeStickyNotes, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, tagLabel, useAvailableTags, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useCreateTag, useDraftEntityTags, useEntityTags, useFluidGridsContext, useImportWorkflowTemplate, useInitiateOAuth, useInstalledNodes, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity, useWorkflowTemplates };
|
|
25995
|
-
//# sourceMappingURL=chunk-
|
|
25996
|
-
//# sourceMappingURL=chunk-
|
|
26187
|
+
export { Card2 as Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ConnectionFormDialog, ConnectionSelector, EntityTagPicker, FLUIDGRIDS_ENTITY_TYPES, FlowBuilderPage, FluidGridsMark, FluidGridsProvider, ProviderPicker, SchemaConnectionForm, ScopePicker, TemplateCard, buildNodeCheck, buildRequiredNodeTypes, listCustomBlocks, mergeStickyNotes, refetchStoreNodes, registerCustomBlock, resolveUiSpec, stripSubmitActions, tagLabel, useAvailableTags, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useCreateTag, useDraftEntityTags, useEntityTags, useFluidGridsContext, useImportWorkflowTemplate, useInitiateOAuth, useInstalledNodes, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useReplaceEntityTags, useSearchTags, useTagEntity, useUntagEntity, useWorkflowTemplates };
|
|
26188
|
+
//# sourceMappingURL=chunk-C44DTSC6.js.map
|
|
26189
|
+
//# sourceMappingURL=chunk-C44DTSC6.js.map
|