@particle-academy/fancy-flow 0.48.1 → 0.50.0
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/{ConfigFieldRenderer-NuDjtun1.d.cts → ConfigFieldRenderer-CrXFq6Eb.d.cts} +2 -2
- package/dist/{ConfigFieldRenderer-DrD2-Qml.d.ts → ConfigFieldRenderer-u3nYHovX.d.ts} +2 -2
- package/dist/{FlowViewer-CY3_vHSg.d.cts → FlowViewer-CFSMlCqi.d.cts} +1 -1
- package/dist/{FlowViewer-DGW6t-80.d.ts → FlowViewer-DRgjeWJ7.d.ts} +1 -1
- package/dist/{capabilities-DMUhnyZD.d.ts → capabilities-B00VXLUp.d.ts} +1 -1
- package/dist/{capabilities-Dmd26aAs.d.cts → capabilities-VzgDApur.d.cts} +1 -1
- package/dist/{chunk-ACGCHWCM.js → chunk-3W26FA7Q.js} +7 -3
- package/dist/chunk-3W26FA7Q.js.map +1 -0
- package/dist/{chunk-6HGXAU5L.js → chunk-BAHJVX3S.js} +9 -4
- package/dist/chunk-BAHJVX3S.js.map +1 -0
- package/dist/{chunk-54SN6LML.js → chunk-DQJIU55F.js} +3 -3
- package/dist/{chunk-54SN6LML.js.map → chunk-DQJIU55F.js.map} +1 -1
- package/dist/{chunk-HHGU7JXJ.js → chunk-I4F6GI3A.js} +3 -3
- package/dist/{chunk-HHGU7JXJ.js.map → chunk-I4F6GI3A.js.map} +1 -1
- package/dist/{chunk-FCCGV52I.js → chunk-OWDSPRAF.js} +4 -4
- package/dist/{chunk-FCCGV52I.js.map → chunk-OWDSPRAF.js.map} +1 -1
- package/dist/{chunk-M7H3ASBI.js → chunk-XJMWMU4J.js} +20 -3
- package/dist/chunk-XJMWMU4J.js.map +1 -0
- package/dist/connectors.d.cts +2 -2
- package/dist/connectors.d.ts +2 -2
- package/dist/durable/index.d.cts +2 -2
- package/dist/durable/index.d.ts +2 -2
- package/dist/durable.cjs +18 -1
- package/dist/durable.cjs.map +1 -1
- package/dist/durable.js +1 -1
- package/dist/engine.cjs +18 -1
- package/dist/engine.cjs.map +1 -1
- package/dist/engine.d.cts +7 -7
- package/dist/engine.d.ts +7 -7
- package/dist/engine.js +3 -3
- package/dist/fields/react-fancy.d.cts +3 -3
- package/dist/fields/react-fancy.d.ts +3 -3
- package/dist/index.cjs +59 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +42 -11
- package/dist/index.js.map +1 -1
- package/dist/layout/index.d.cts +1 -1
- package/dist/layout/index.d.ts +1 -1
- package/dist/llm/prism.d.cts +2 -2
- package/dist/llm/prism.d.ts +2 -2
- package/dist/llm/vercel-ai.d.cts +2 -2
- package/dist/llm/vercel-ai.d.ts +2 -2
- package/dist/registry/index.d.cts +6 -6
- package/dist/registry/index.d.ts +6 -6
- package/dist/{registry-DpARG95T.d.ts → registry-6cB5wCv6.d.ts} +1 -1
- package/dist/{registry-BnnifM-t.d.cts → registry-DQh7ZmnM.d.cts} +1 -1
- package/dist/registry.cjs +18 -1
- package/dist/registry.cjs.map +1 -1
- package/dist/registry.js +2 -2
- package/dist/{run-cohort-DdPPowJ3.d.cts → run-cohort-DYCL8Qv6.d.cts} +2 -2
- package/dist/{run-cohort-Cyeny2Uu.d.ts → run-cohort-VX4JG21l.d.ts} +2 -2
- package/dist/{run-flow-1KiXhy59.d.cts → run-flow-B24QUO1H.d.cts} +1 -1
- package/dist/{run-flow-CQvTDBYk.d.ts → run-flow-DPUPAWk6.d.ts} +1 -1
- package/dist/runtime/index.d.cts +18 -6
- package/dist/runtime/index.d.ts +18 -6
- package/dist/runtime.cjs +24 -2
- package/dist/runtime.cjs.map +1 -1
- package/dist/runtime.js +3 -3
- package/dist/schema/index.d.cts +9 -1
- package/dist/schema/index.d.ts +9 -1
- package/dist/schema.cjs +22 -1
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.js +2 -2
- package/dist/screens.cjs +18 -1
- package/dist/screens.cjs.map +1 -1
- package/dist/screens.d.cts +2 -2
- package/dist/screens.d.ts +2 -2
- package/dist/screens.js +4 -4
- package/dist/{types-Jx1TwehV.d.cts → types-7cXcSQlx.d.cts} +50 -0
- package/dist/{types-Jx1TwehV.d.ts → types-7cXcSQlx.d.ts} +50 -0
- package/dist/{types-BO8TgI2M.d.cts → types-BtMOnb9I.d.cts} +1 -1
- package/dist/{types-DJAmfiJC.d.ts → types-CDgIIj4c.d.ts} +1 -1
- package/dist/ux.cjs +18 -1
- package/dist/ux.cjs.map +1 -1
- package/dist/ux.d.cts +2 -2
- package/dist/ux.d.ts +2 -2
- package/dist/ux.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-6HGXAU5L.js.map +0 -1
- package/dist/chunk-ACGCHWCM.js.map +0 -1
- package/dist/chunk-M7H3ASBI.js.map +0 -1
package/dist/engine.d.cts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { R as RunOptions, a as RunResult, r as runFlow } from './run-flow-
|
|
2
|
-
import { F as FlowGraph, R as RunEvent, N as NodeExecutor } from './types-
|
|
3
|
-
export { A as ActionNodeData, B as BaseNodeData, D as DecisionNodeData, E as ExecutorRegistry, d as FlowEdge, a as FlowNode, e as FlowNodeData, f as FlowNodeKind, g as NodeRunStatus, h as NoteNodeData, O as OutputNodeData, P as PortDescriptor, b as RunIdentity, c as RunIdentityJson, S as SubgraphNodeData, T as TriggerNodeData, i as escapeSegment } from './types-
|
|
4
|
-
export { C as CohortGuard, a as CohortOptions, b as CohortPolicy, c as CohortResult, r as runCohort } from './run-cohort-
|
|
5
|
-
export { d as defaultConfigFor, g as getNodeKind, k as kindIds, l as listNodeKinds, r as registerNodeKind, a as resolveKindId, v as validateConfig } from './registry-
|
|
6
|
-
export { b as CapabilityRequirement, C as ConfigField, M as ManifestProblem, c as ManifestValidation, d as NODE_MANIFEST_SCHEMA_VERSION, a as NodeCategory, N as NodeKindDefinition, e as NodePackageManifest, f as NodeRuntimeId, g as NodeRuntimeSpec, O as OutputField, h as OutputShape, P as PortSpec, S as SideEffects, i as checkCapabilities, j as checkRuntimeSupport, s as satisfiesRange, v as validateNodeManifest } from './types-
|
|
1
|
+
export { R as RunOptions, a as RunResult, r as runFlow } from './run-flow-B24QUO1H.cjs';
|
|
2
|
+
import { F as FlowGraph, R as RunEvent, N as NodeExecutor } from './types-7cXcSQlx.cjs';
|
|
3
|
+
export { A as ActionNodeData, B as BaseNodeData, D as DecisionNodeData, E as ExecutorRegistry, d as FlowEdge, a as FlowNode, e as FlowNodeData, f as FlowNodeKind, g as NodeRunStatus, h as NoteNodeData, O as OutputNodeData, P as PortDescriptor, b as RunIdentity, c as RunIdentityJson, S as SubgraphNodeData, T as TriggerNodeData, i as escapeSegment } from './types-7cXcSQlx.cjs';
|
|
4
|
+
export { C as CohortGuard, a as CohortOptions, b as CohortPolicy, c as CohortResult, r as runCohort } from './run-cohort-DYCL8Qv6.cjs';
|
|
5
|
+
export { d as defaultConfigFor, g as getNodeKind, k as kindIds, l as listNodeKinds, r as registerNodeKind, a as resolveKindId, v as validateConfig } from './registry-DQh7ZmnM.cjs';
|
|
6
|
+
export { b as CapabilityRequirement, C as ConfigField, M as ManifestProblem, c as ManifestValidation, d as NODE_MANIFEST_SCHEMA_VERSION, a as NodeCategory, N as NodeKindDefinition, e as NodePackageManifest, f as NodeRuntimeId, g as NodeRuntimeSpec, O as OutputField, h as OutputShape, P as PortSpec, S as SideEffects, i as checkCapabilities, j as checkRuntimeSupport, s as satisfiesRange, v as validateNodeManifest } from './types-BtMOnb9I.cjs';
|
|
7
7
|
import { P as PauseAwaiting } from './pause-9iT4tCEV.cjs';
|
|
8
8
|
export { L as LEGACY_PAUSE_PREFIXES, a as PAUSE_PREFIX, b as PauseSignal, d as decodePause, e as encodePause, i as isPause, p as pauseForHuman } from './pause-9iT4tCEV.cjs';
|
|
9
|
-
import { W as WorkflowResolver } from './capabilities-
|
|
9
|
+
import { W as WorkflowResolver } from './capabilities-VzgDApur.cjs';
|
|
10
10
|
import '@xyflow/react';
|
|
11
11
|
import 'react';
|
|
12
12
|
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { R as RunOptions, a as RunResult, r as runFlow } from './run-flow-
|
|
2
|
-
import { F as FlowGraph, R as RunEvent, N as NodeExecutor } from './types-
|
|
3
|
-
export { A as ActionNodeData, B as BaseNodeData, D as DecisionNodeData, E as ExecutorRegistry, d as FlowEdge, a as FlowNode, e as FlowNodeData, f as FlowNodeKind, g as NodeRunStatus, h as NoteNodeData, O as OutputNodeData, P as PortDescriptor, b as RunIdentity, c as RunIdentityJson, S as SubgraphNodeData, T as TriggerNodeData, i as escapeSegment } from './types-
|
|
4
|
-
export { C as CohortGuard, a as CohortOptions, b as CohortPolicy, c as CohortResult, r as runCohort } from './run-cohort-
|
|
5
|
-
export { d as defaultConfigFor, g as getNodeKind, k as kindIds, l as listNodeKinds, r as registerNodeKind, a as resolveKindId, v as validateConfig } from './registry-
|
|
6
|
-
export { b as CapabilityRequirement, C as ConfigField, M as ManifestProblem, c as ManifestValidation, d as NODE_MANIFEST_SCHEMA_VERSION, a as NodeCategory, N as NodeKindDefinition, e as NodePackageManifest, f as NodeRuntimeId, g as NodeRuntimeSpec, O as OutputField, h as OutputShape, P as PortSpec, S as SideEffects, i as checkCapabilities, j as checkRuntimeSupport, s as satisfiesRange, v as validateNodeManifest } from './types-
|
|
1
|
+
export { R as RunOptions, a as RunResult, r as runFlow } from './run-flow-DPUPAWk6.js';
|
|
2
|
+
import { F as FlowGraph, R as RunEvent, N as NodeExecutor } from './types-7cXcSQlx.js';
|
|
3
|
+
export { A as ActionNodeData, B as BaseNodeData, D as DecisionNodeData, E as ExecutorRegistry, d as FlowEdge, a as FlowNode, e as FlowNodeData, f as FlowNodeKind, g as NodeRunStatus, h as NoteNodeData, O as OutputNodeData, P as PortDescriptor, b as RunIdentity, c as RunIdentityJson, S as SubgraphNodeData, T as TriggerNodeData, i as escapeSegment } from './types-7cXcSQlx.js';
|
|
4
|
+
export { C as CohortGuard, a as CohortOptions, b as CohortPolicy, c as CohortResult, r as runCohort } from './run-cohort-VX4JG21l.js';
|
|
5
|
+
export { d as defaultConfigFor, g as getNodeKind, k as kindIds, l as listNodeKinds, r as registerNodeKind, a as resolveKindId, v as validateConfig } from './registry-6cB5wCv6.js';
|
|
6
|
+
export { b as CapabilityRequirement, C as ConfigField, M as ManifestProblem, c as ManifestValidation, d as NODE_MANIFEST_SCHEMA_VERSION, a as NodeCategory, N as NodeKindDefinition, e as NodePackageManifest, f as NodeRuntimeId, g as NodeRuntimeSpec, O as OutputField, h as OutputShape, P as PortSpec, S as SideEffects, i as checkCapabilities, j as checkRuntimeSupport, s as satisfiesRange, v as validateNodeManifest } from './types-CDgIIj4c.js';
|
|
7
7
|
import { P as PauseAwaiting } from './pause-9iT4tCEV.js';
|
|
8
8
|
export { L as LEGACY_PAUSE_PREFIXES, a as PAUSE_PREFIX, b as PauseSignal, d as decodePause, e as encodePause, i as isPause, p as pauseForHuman } from './pause-9iT4tCEV.js';
|
|
9
|
-
import { W as WorkflowResolver } from './capabilities-
|
|
9
|
+
import { W as WorkflowResolver } from './capabilities-B00VXLUp.js';
|
|
10
10
|
import '@xyflow/react';
|
|
11
11
|
import 'react';
|
|
12
12
|
|
package/dist/engine.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { runCohort } from './chunk-
|
|
1
|
+
export { runCohort } from './chunk-DQJIU55F.js';
|
|
2
2
|
import { decodePause } from './chunk-UEOE6B52.js';
|
|
3
3
|
export { LEGACY_PAUSE_PREFIXES, PAUSE_PREFIX, decodePause, encodePause, isPause, pauseForHuman } from './chunk-UEOE6B52.js';
|
|
4
|
-
import { runFlow, getNodeKind, resolveNodePorts } from './chunk-
|
|
5
|
-
export { RunIdentity, defaultConfigFor, escapeSegment, getNodeKind, kindIds, listNodeKinds, registerNodeKind, resolveKindId, runFlow, validateConfig } from './chunk-
|
|
4
|
+
import { runFlow, getNodeKind, resolveNodePorts } from './chunk-XJMWMU4J.js';
|
|
5
|
+
export { RunIdentity, defaultConfigFor, escapeSegment, getNodeKind, kindIds, listNodeKinds, registerNodeKind, resolveKindId, runFlow, validateConfig } from './chunk-XJMWMU4J.js';
|
|
6
6
|
import './chunk-F5RPRB7A.js';
|
|
7
7
|
import { isResolutionFailure, registerLlmClient, registerWorkflowResolver } from './chunk-USL4FMFU.js';
|
|
8
8
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as ConfigFieldRenderFn } from '../ConfigFieldRenderer-
|
|
1
|
+
import { C as ConfigFieldRenderFn } from '../ConfigFieldRenderer-CrXFq6Eb.cjs';
|
|
2
2
|
import 'react';
|
|
3
|
-
import '../types-
|
|
3
|
+
import '../types-7cXcSQlx.cjs';
|
|
4
4
|
import '@xyflow/react';
|
|
5
|
-
import '../types-
|
|
5
|
+
import '../types-BtMOnb9I.cjs';
|
|
6
6
|
import '../pause-9iT4tCEV.cjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { C as ConfigFieldRenderFn } from '../ConfigFieldRenderer-
|
|
1
|
+
import { C as ConfigFieldRenderFn } from '../ConfigFieldRenderer-u3nYHovX.js';
|
|
2
2
|
import 'react';
|
|
3
|
-
import '../types-
|
|
3
|
+
import '../types-7cXcSQlx.js';
|
|
4
4
|
import '@xyflow/react';
|
|
5
|
-
import '../types-
|
|
5
|
+
import '../types-CDgIIj4c.js';
|
|
6
6
|
import '../pause-9iT4tCEV.js';
|
|
7
7
|
|
|
8
8
|
/**
|
package/dist/index.cjs
CHANGED
|
@@ -11153,6 +11153,7 @@ async function runFlow(graph, executors, onEvent = () => {
|
|
|
11153
11153
|
continue;
|
|
11154
11154
|
}
|
|
11155
11155
|
onEvent({ type: "node-status", nodeId: node.id, status: "running" });
|
|
11156
|
+
announce(onEvent, node, "start");
|
|
11156
11157
|
const inputs = collectInputs(node, incoming, portValues, initialInputs);
|
|
11157
11158
|
const exec = pickExecutor(executors, node);
|
|
11158
11159
|
if (!exec) {
|
|
@@ -11171,6 +11172,7 @@ async function runFlow(graph, executors, onEvent = () => {
|
|
|
11171
11172
|
throw new Error(reason ?? "aborted");
|
|
11172
11173
|
},
|
|
11173
11174
|
emit: onEvent,
|
|
11175
|
+
executors,
|
|
11174
11176
|
depth,
|
|
11175
11177
|
run
|
|
11176
11178
|
})
|
|
@@ -11183,6 +11185,7 @@ async function runFlow(graph, executors, onEvent = () => {
|
|
|
11183
11185
|
}
|
|
11184
11186
|
completed.add(node.id);
|
|
11185
11187
|
onEvent({ type: "node-status", nodeId: node.id, status: "done" });
|
|
11188
|
+
announce(onEvent, node, "end");
|
|
11186
11189
|
} catch (e) {
|
|
11187
11190
|
const msg = e instanceof Error ? e.message : String(e);
|
|
11188
11191
|
errors.push(msg);
|
|
@@ -11235,6 +11238,9 @@ function collectInputs(node, incoming, portValues, initial) {
|
|
|
11235
11238
|
const key = `${e.source}:${e.sourceHandle ?? "out"}`;
|
|
11236
11239
|
if (!portValues.has(key)) continue;
|
|
11237
11240
|
inputs[portId] = portValues.get(key);
|
|
11241
|
+
if (e.targetHandle == null && !(e.source in inputs)) {
|
|
11242
|
+
inputs[e.source] = portValues.get(key);
|
|
11243
|
+
}
|
|
11238
11244
|
}
|
|
11239
11245
|
return inputs;
|
|
11240
11246
|
}
|
|
@@ -11266,6 +11272,14 @@ function activatedPorts(node, result) {
|
|
|
11266
11272
|
const declared = resolveNodePorts(node, kind).outputs?.map((p2) => p2.id);
|
|
11267
11273
|
return { ports: declared?.length ? declared : ["out"], value: result };
|
|
11268
11274
|
}
|
|
11275
|
+
function announce(onEvent, node, phase) {
|
|
11276
|
+
const data = node.data;
|
|
11277
|
+
const raw = phase === "start" ? data?.startingMsg : data?.stoppingMsg;
|
|
11278
|
+
if (typeof raw !== "string") return;
|
|
11279
|
+
const message = raw.trim();
|
|
11280
|
+
if (message === "") return;
|
|
11281
|
+
onEvent({ type: "node-message", nodeId: node.id, phase, message });
|
|
11282
|
+
}
|
|
11269
11283
|
|
|
11270
11284
|
// src/registry/subflow.ts
|
|
11271
11285
|
var DEFAULT_MAX_DEPTH = 8;
|
|
@@ -11319,7 +11333,10 @@ var subflowExecutor = async (ctx) => {
|
|
|
11319
11333
|
};
|
|
11320
11334
|
const result = await runFlow(
|
|
11321
11335
|
child,
|
|
11322
|
-
|
|
11336
|
+
// Inherit the parent's registry, then let the graph layer its own on top.
|
|
11337
|
+
// The inherited half is the fix; the layered half keeps a graph that
|
|
11338
|
+
// deliberately hands its child extra or different executors working.
|
|
11339
|
+
{ ...ctx.executors ?? {}, ...config.executors ?? {} },
|
|
11323
11340
|
forward,
|
|
11324
11341
|
{
|
|
11325
11342
|
initialInputs: config.inputs ?? {
|
|
@@ -13704,6 +13721,7 @@ function NodeConfigPanel({
|
|
|
13704
13721
|
}
|
|
13705
13722
|
const setLabel = (label) => onChange({ ...node, data: { ...node.data, label } });
|
|
13706
13723
|
const setDescription = (description) => onChange({ ...node, data: { ...node.data, description } });
|
|
13724
|
+
const setStatusMsg = (key, value) => onChange({ ...node, data: { ...node.data, [key]: value } });
|
|
13707
13725
|
const setConfigValue = (key, value) => onChange({ ...node, data: { ...node.data, config: { ...config, [key]: value } } });
|
|
13708
13726
|
const issues = validateConfig(kind, config);
|
|
13709
13727
|
const adapter2 = getRichInputAdapter();
|
|
@@ -13746,6 +13764,36 @@ function NodeConfigPanel({
|
|
|
13746
13764
|
}
|
|
13747
13765
|
)
|
|
13748
13766
|
] }),
|
|
13767
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ff-panel__field", children: [
|
|
13768
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "ff-panel__label", htmlFor: fieldId("startingMsg"), children: "Message when it starts" }),
|
|
13769
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13770
|
+
"input",
|
|
13771
|
+
{
|
|
13772
|
+
id: fieldId("startingMsg"),
|
|
13773
|
+
"data-ff-field": "startingMsg",
|
|
13774
|
+
className: "ff-panel__input",
|
|
13775
|
+
value: node.data.startingMsg ?? "",
|
|
13776
|
+
onChange: (e) => setStatusMsg("startingMsg", e.target.value),
|
|
13777
|
+
placeholder: "e.g. Starting the deep analysis"
|
|
13778
|
+
}
|
|
13779
|
+
),
|
|
13780
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "ff-panel__hint", children: "Announced just before this node runs. Leave blank to say nothing." })
|
|
13781
|
+
] }),
|
|
13782
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ff-panel__field", children: [
|
|
13783
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", { className: "ff-panel__label", htmlFor: fieldId("stoppingMsg"), children: "Message when it finishes" }),
|
|
13784
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
13785
|
+
"input",
|
|
13786
|
+
{
|
|
13787
|
+
id: fieldId("stoppingMsg"),
|
|
13788
|
+
"data-ff-field": "stoppingMsg",
|
|
13789
|
+
className: "ff-panel__input",
|
|
13790
|
+
value: node.data.stoppingMsg ?? "",
|
|
13791
|
+
onChange: (e) => setStatusMsg("stoppingMsg", e.target.value),
|
|
13792
|
+
placeholder: "e.g. Analysis complete"
|
|
13793
|
+
}
|
|
13794
|
+
),
|
|
13795
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "ff-panel__hint", children: "Announced only if the node succeeds \u2014 never after a failure." })
|
|
13796
|
+
] }),
|
|
13749
13797
|
kind.renderPanel ? kind.renderPanel({
|
|
13750
13798
|
config,
|
|
13751
13799
|
onChange: (next) => onChange({ ...node, data: { ...node.data, config: next } }),
|
|
@@ -13955,6 +14003,7 @@ function useFlowHistory(flow) {
|
|
|
13955
14003
|
function useFlowRun({ maxFeed = 200 } = {}) {
|
|
13956
14004
|
const [statuses, setStatuses] = ReactExports.useState({});
|
|
13957
14005
|
const [statusText, setStatusText] = ReactExports.useState({});
|
|
14006
|
+
const [nodeMessages, setNodeMessages] = ReactExports.useState({});
|
|
13958
14007
|
const [outputs, setOutputs] = ReactExports.useState({});
|
|
13959
14008
|
const [feed, setFeed] = ReactExports.useState([]);
|
|
13960
14009
|
const [running, setRunning] = ReactExports.useState(false);
|
|
@@ -13968,6 +14017,10 @@ function useFlowRun({ maxFeed = 200 } = {}) {
|
|
|
13968
14017
|
setStatusText((t) => ({ ...t, [e.nodeId]: e.text }));
|
|
13969
14018
|
appendFeed({ level: "status", text: `${e.nodeId} \u2192 ${e.status}${e.text ? ` (${e.text})` : ""}`, nodeId: e.nodeId });
|
|
13970
14019
|
break;
|
|
14020
|
+
case "node-message":
|
|
14021
|
+
setNodeMessages((m) => ({ ...m, [e.nodeId]: e.message }));
|
|
14022
|
+
appendFeed({ level: "message", text: e.message, nodeId: e.nodeId });
|
|
14023
|
+
break;
|
|
13971
14024
|
case "node-output":
|
|
13972
14025
|
setOutputs((o) => ({ ...o, [e.nodeId]: e.value }));
|
|
13973
14026
|
appendFeed({ level: "info", text: `${e.nodeId}.${e.portId} = ${preview(e.value)}`, nodeId: e.nodeId, detail: e.value });
|
|
@@ -14027,7 +14080,7 @@ function useFlowRun({ maxFeed = 200 } = {}) {
|
|
|
14027
14080
|
setFeed([]);
|
|
14028
14081
|
setLastResult(null);
|
|
14029
14082
|
}, []);
|
|
14030
|
-
return { statuses, statusText, outputs, feed, running, lastResult, run, cancel, reset };
|
|
14083
|
+
return { statuses, statusText, nodeMessages, outputs, feed, running, lastResult, run, cancel, reset };
|
|
14031
14084
|
}
|
|
14032
14085
|
function applyOutputsToNodes(nodes, outputs) {
|
|
14033
14086
|
return nodes.map((n) => {
|
|
@@ -14081,6 +14134,8 @@ function toSchemaNode(n) {
|
|
|
14081
14134
|
position: { x: n.position.x, y: n.position.y },
|
|
14082
14135
|
label: data.label,
|
|
14083
14136
|
description: data.description,
|
|
14137
|
+
...typeof data.startingMsg === "string" && data.startingMsg !== "" ? { startingMsg: data.startingMsg } : {},
|
|
14138
|
+
...typeof data.stoppingMsg === "string" && data.stoppingMsg !== "" ? { stoppingMsg: data.stoppingMsg } : {},
|
|
14084
14139
|
config: data.config,
|
|
14085
14140
|
inputs: ports.inputs,
|
|
14086
14141
|
outputs: ports.outputs,
|
|
@@ -14153,6 +14208,8 @@ function importWorkflow(schema, options = {}) {
|
|
|
14153
14208
|
kind: kindId,
|
|
14154
14209
|
label: n.label ?? kind?.label ?? n.kind,
|
|
14155
14210
|
description: n.description,
|
|
14211
|
+
...n.startingMsg ? { startingMsg: n.startingMsg } : {},
|
|
14212
|
+
...n.stoppingMsg ? { stoppingMsg: n.stoppingMsg } : {},
|
|
14156
14213
|
config,
|
|
14157
14214
|
// Carry serialized ports back onto the node so a round-trip is stable
|
|
14158
14215
|
// and an unknown kind still routes the way the document described.
|