@bian-womp/spark-graph 0.3.36 → 0.3.38
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/lib/cjs/index.cjs +171 -67
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/builder/GraphBuilder.d.ts.map +1 -1
- package/lib/cjs/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/lib/cjs/src/runtime/components/Graph.d.ts +4 -13
- package/lib/cjs/src/runtime/components/Graph.d.ts.map +1 -1
- package/lib/cjs/src/runtime/components/NodeExecutor.d.ts +5 -0
- package/lib/cjs/src/runtime/components/NodeExecutor.d.ts.map +1 -1
- package/lib/cjs/src/runtime/components/RunContextManager.d.ts +11 -0
- package/lib/cjs/src/runtime/components/RunContextManager.d.ts.map +1 -1
- package/lib/cjs/src/runtime/components/types.d.ts +13 -4
- package/lib/cjs/src/runtime/components/types.d.ts.map +1 -1
- package/lib/esm/index.js +171 -67
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/builder/GraphBuilder.d.ts.map +1 -1
- package/lib/esm/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/lib/esm/src/runtime/components/Graph.d.ts +4 -13
- package/lib/esm/src/runtime/components/Graph.d.ts.map +1 -1
- package/lib/esm/src/runtime/components/NodeExecutor.d.ts +5 -0
- package/lib/esm/src/runtime/components/NodeExecutor.d.ts.map +1 -1
- package/lib/esm/src/runtime/components/RunContextManager.d.ts +11 -0
- package/lib/esm/src/runtime/components/RunContextManager.d.ts.map +1 -1
- package/lib/esm/src/runtime/components/types.d.ts +13 -4
- package/lib/esm/src/runtime/components/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/builder/GraphBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAMxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAEtC,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/builder/GraphBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAMxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAEtC,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB;IA0XhD,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY;IAI9D,UAAU,CACR,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7D,EACD,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAmC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphRuntime.d.ts","sourceRoot":"","sources":["../../../../src/runtime/GraphRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,YAAY,EAEZ,eAAe,EAGf,OAAO,EACR,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"GraphRuntime.d.ts","sourceRoot":"","sources":["../../../../src/runtime/GraphRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ResolvedHandles } from "@bian-womp/spark-protocol";
|
|
2
2
|
import { Registry } from "../../builder/Registry";
|
|
3
|
-
import type { RuntimeNode, RuntimeEdge, ReadonlyRuntimeNode } from "./types";
|
|
3
|
+
import type { RuntimeNode, RuntimeEdge, ReadonlyRuntimeNode, ExecutionPlan } from "./types";
|
|
4
4
|
/**
|
|
5
5
|
* Graph component - manages nodes, edges, and handle resolution
|
|
6
6
|
* This is the ONLY place where nodes, edges, and resolvedByNode are directly updated.
|
|
@@ -91,17 +91,11 @@ export declare class Graph {
|
|
|
91
91
|
/**
|
|
92
92
|
* Add item to node queue
|
|
93
93
|
*/
|
|
94
|
-
addToNodeQueue(nodeId: string, item:
|
|
95
|
-
runId: string;
|
|
96
|
-
inputs: Record<string, unknown>;
|
|
97
|
-
}): void;
|
|
94
|
+
addToNodeQueue(nodeId: string, item: ExecutionPlan): void;
|
|
98
95
|
/**
|
|
99
96
|
* Remove first item from node queue
|
|
100
97
|
*/
|
|
101
|
-
shiftNodeQueue(nodeId: string):
|
|
102
|
-
runId: string;
|
|
103
|
-
inputs: Record<string, unknown>;
|
|
104
|
-
} | undefined;
|
|
98
|
+
shiftNodeQueue(nodeId: string): ExecutionPlan | undefined;
|
|
105
99
|
/**
|
|
106
100
|
* Clear node queue
|
|
107
101
|
*/
|
|
@@ -109,10 +103,7 @@ export declare class Graph {
|
|
|
109
103
|
/**
|
|
110
104
|
* Replace node queue
|
|
111
105
|
*/
|
|
112
|
-
replaceNodeQueue(nodeId: string, items:
|
|
113
|
-
runId: string;
|
|
114
|
-
inputs: Record<string, unknown>;
|
|
115
|
-
}>): void;
|
|
106
|
+
replaceNodeQueue(nodeId: string, items: ExecutionPlan[]): void;
|
|
116
107
|
/**
|
|
117
108
|
* Add controller to node
|
|
118
109
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/Graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/Graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,6 +68,11 @@ export declare class NodeExecutor implements INodeExecutor {
|
|
|
68
68
|
* Track run-context start for pending nodes
|
|
69
69
|
*/
|
|
70
70
|
private trackRunContextStart;
|
|
71
|
+
/**
|
|
72
|
+
* Decrement pendingQueued counters for plans' run-contexts.
|
|
73
|
+
* Used when queued work is being started, dropped, or cancelled.
|
|
74
|
+
*/
|
|
75
|
+
private decrementQueuedForPlans;
|
|
71
76
|
/**
|
|
72
77
|
* Create execution controller and update node stats
|
|
73
78
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/NodeExecutor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"NodeExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/NodeExecutor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAGb,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,aAAa,EACb,QAAQ,EACR,eAAe,EAChB,MAAM,cAAc,CAAC;AAItB;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IAI9C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,WAAW,CAA+B;gBAG/B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,eAAe,EAC/B,cAAc,EAAE,eAAe,EAC/B,OAAO,EAAE,QAAQ,EAClC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKvC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI1D;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAM3D;;OAEG;IACH,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,WAAW,EACxB,aAAa,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,EACjC,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;QACvD,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KACtC,GACA,gBAAgB,CAAC,GAAG,CAAC;IAyFxB;;OAEG;IACH,OAAO,CACL,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,EACjC,uBAAuB,CAAC,EAAE,OAAO,GAChC,IAAI;IA8GP;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAyChB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAiBjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAyCrC;;OAEG;IACH,OAAO,CAAC,WAAW;IAuEnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6ExB;;OAEG;IACH,oBAAoB,CAClB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,gBAAgB,GACrD,IAAI;IAsCP;;;OAGG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,GAAE,UAAU,GAAG,gBAAmC,GACvD,IAAI;CA8CR"}
|
|
@@ -8,6 +8,7 @@ export interface RunContext {
|
|
|
8
8
|
pendingNodes: number;
|
|
9
9
|
pendingEdges: number;
|
|
10
10
|
pendingResolvers: number;
|
|
11
|
+
pendingQueued: number;
|
|
11
12
|
skipPropagateValues: boolean;
|
|
12
13
|
propagate: boolean;
|
|
13
14
|
resolve?: () => void;
|
|
@@ -44,6 +45,16 @@ export declare class RunContextManager {
|
|
|
44
45
|
* Check if there are any active run-contexts
|
|
45
46
|
*/
|
|
46
47
|
hasActiveRunContexts(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Increment queued work count for a run-context.
|
|
50
|
+
* Used by asyncConcurrency: "queue" to keep contexts alive while work is queued.
|
|
51
|
+
*/
|
|
52
|
+
incrementQueued(id: RunContextId, nodeId: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Decrement queued work count for a run-context.
|
|
55
|
+
* Called when queued work is either started or dropped.
|
|
56
|
+
*/
|
|
57
|
+
decrementQueued(id: RunContextId, nodeId: string): void;
|
|
47
58
|
startNodeRun(id: RunContextId, nodeId: string): void;
|
|
48
59
|
finishNodeRun(id: RunContextId, nodeId: string): void;
|
|
49
60
|
startEdgeConversion(id: RunContextId, edgeId: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunContextManager.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/RunContextManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,YAAY,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAER,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAK9D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC;;OAEG;IACH,gBAAgB,CACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,OAAO,CAAC,EAAE;QACR,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GACA,YAAY;
|
|
1
|
+
{"version":3,"file":"RunContextManager.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/RunContextManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,YAAY,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAER,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAK9D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC;;OAEG;IACH,gBAAgB,CACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,OAAO,CAAC,EAAE;QACR,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GACA,YAAY;IAwBf;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS;IAIvD;;OAEG;IACH,iBAAiB,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;IAIlD;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAiBvD;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAkBvD,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAiBpD,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAkBrD,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAiB3D,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAkB5D,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAiB7D,sBAAsB,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAkB9D;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAgClC;;;;;;OAMG;IACH,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI;IA0CzE;;OAEG;IACH,UAAU,IAAI,IAAI;IAWlB;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd"}
|
|
@@ -14,10 +14,7 @@ export interface RuntimeNode<State = any> extends GraphNodeDefinition {
|
|
|
14
14
|
activeControllers: Set<AbortController>;
|
|
15
15
|
controllerRunIds: Map<AbortController, string>;
|
|
16
16
|
snapshotCancelledRunIds?: Set<string>;
|
|
17
|
-
queue:
|
|
18
|
-
runId: string;
|
|
19
|
-
inputs: Record<string, unknown>;
|
|
20
|
-
}>;
|
|
17
|
+
queue: ExecutionPlan[];
|
|
21
18
|
stats: RuntimeNodeStats;
|
|
22
19
|
activeRunContextIds: Set<string>;
|
|
23
20
|
lastScheduledAt?: number;
|
|
@@ -43,4 +40,16 @@ export interface RuntimeEdge extends GraphEdgeDefinition {
|
|
|
43
40
|
dstDeclared?: string | string[];
|
|
44
41
|
}
|
|
45
42
|
export type RunContextId = string;
|
|
43
|
+
/**
|
|
44
|
+
* Execution plan containing all information needed to start a node execution.
|
|
45
|
+
* Captures a snapshot of the node's policy at scheduling time so later
|
|
46
|
+
* mutations to `node.policy` don't affect an in-flight run.
|
|
47
|
+
*/
|
|
48
|
+
export interface ExecutionPlan {
|
|
49
|
+
runId: string;
|
|
50
|
+
effectiveInputs: Record<string, unknown>;
|
|
51
|
+
runContextIdsForRun?: Set<RunContextId>;
|
|
52
|
+
timestamp: number;
|
|
53
|
+
policy: RuntimeNode["policy"];
|
|
54
|
+
}
|
|
46
55
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACT,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,GAAG,CAAE,SAAQ,mBAAmB;IACnE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,SAAS,EAAE,kBAAkB,CAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtB,KAAK,EACL,GAAG,CACJ,CAAC,WAAW,CAAC,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IAGxC,gBAAgB,EAAE,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAK/C,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/components/types.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
CHANGED
|
@@ -1146,6 +1146,7 @@ class RunContextManager {
|
|
|
1146
1146
|
pendingNodes: 0,
|
|
1147
1147
|
pendingEdges: 0,
|
|
1148
1148
|
pendingResolvers: 0,
|
|
1149
|
+
pendingQueued: 0,
|
|
1149
1150
|
skipPropagateValues: options?.skipPropagateValues ?? false,
|
|
1150
1151
|
propagate: options?.propagate ?? true,
|
|
1151
1152
|
resolve,
|
|
@@ -1177,6 +1178,47 @@ class RunContextManager {
|
|
|
1177
1178
|
hasActiveRunContexts() {
|
|
1178
1179
|
return this.runContexts.size > 0;
|
|
1179
1180
|
}
|
|
1181
|
+
/**
|
|
1182
|
+
* Increment queued work count for a run-context.
|
|
1183
|
+
* Used by asyncConcurrency: "queue" to keep contexts alive while work is queued.
|
|
1184
|
+
*/
|
|
1185
|
+
incrementQueued(id, nodeId) {
|
|
1186
|
+
const ctx = this.runContexts.get(id);
|
|
1187
|
+
if (!ctx) {
|
|
1188
|
+
this.logger.debug("increment-queued-context-not-found", {
|
|
1189
|
+
runContextId: id,
|
|
1190
|
+
nodeId,
|
|
1191
|
+
});
|
|
1192
|
+
return;
|
|
1193
|
+
}
|
|
1194
|
+
ctx.pendingQueued++;
|
|
1195
|
+
this.logger.debug("increment-queued", {
|
|
1196
|
+
runContextId: id,
|
|
1197
|
+
nodeId,
|
|
1198
|
+
pendingQueued: ctx.pendingQueued,
|
|
1199
|
+
});
|
|
1200
|
+
}
|
|
1201
|
+
/**
|
|
1202
|
+
* Decrement queued work count for a run-context.
|
|
1203
|
+
* Called when queued work is either started or dropped.
|
|
1204
|
+
*/
|
|
1205
|
+
decrementQueued(id, nodeId) {
|
|
1206
|
+
const ctx = this.runContexts.get(id);
|
|
1207
|
+
if (!ctx) {
|
|
1208
|
+
this.logger.debug("decrement-queued-context-not-found", {
|
|
1209
|
+
runContextId: id,
|
|
1210
|
+
nodeId,
|
|
1211
|
+
});
|
|
1212
|
+
return;
|
|
1213
|
+
}
|
|
1214
|
+
ctx.pendingQueued--;
|
|
1215
|
+
this.logger.debug("decrement-queued", {
|
|
1216
|
+
runContextId: id,
|
|
1217
|
+
nodeId,
|
|
1218
|
+
pendingQueued: ctx.pendingQueued,
|
|
1219
|
+
});
|
|
1220
|
+
this.finishRunContextIfPossible(id);
|
|
1221
|
+
}
|
|
1180
1222
|
startNodeRun(id, nodeId) {
|
|
1181
1223
|
const ctx = this.runContexts.get(id);
|
|
1182
1224
|
if (!ctx) {
|
|
@@ -1289,7 +1331,8 @@ class RunContextManager {
|
|
|
1289
1331
|
}
|
|
1290
1332
|
if (ctx.pendingNodes > 0 ||
|
|
1291
1333
|
ctx.pendingEdges > 0 ||
|
|
1292
|
-
ctx.pendingResolvers > 0
|
|
1334
|
+
ctx.pendingResolvers > 0 ||
|
|
1335
|
+
ctx.pendingQueued > 0) {
|
|
1293
1336
|
return; // Still has pending work
|
|
1294
1337
|
}
|
|
1295
1338
|
this.logger.info("finish-run-context", {
|
|
@@ -2457,8 +2500,8 @@ class NodeExecutor {
|
|
|
2457
2500
|
}
|
|
2458
2501
|
// Handle debouncing
|
|
2459
2502
|
const now = Date.now();
|
|
2460
|
-
if (this.shouldDebounce(
|
|
2461
|
-
this.handleDebouncedSchedule(node, nodeId, now);
|
|
2503
|
+
if (this.shouldDebounce(node, now)) {
|
|
2504
|
+
this.handleDebouncedSchedule(node, nodeId, now, runContextIds);
|
|
2462
2505
|
return;
|
|
2463
2506
|
}
|
|
2464
2507
|
// Prepare execution plan
|
|
@@ -2469,7 +2512,7 @@ class NodeExecutor {
|
|
|
2469
2512
|
/**
|
|
2470
2513
|
* Check if execution should be debounced
|
|
2471
2514
|
*/
|
|
2472
|
-
shouldDebounce(
|
|
2515
|
+
shouldDebounce(node, now) {
|
|
2473
2516
|
const policy = node.policy ?? {};
|
|
2474
2517
|
const lastScheduledAt = node.lastScheduledAt;
|
|
2475
2518
|
return !!(policy.debounceMs &&
|
|
@@ -2479,13 +2522,23 @@ class NodeExecutor {
|
|
|
2479
2522
|
/**
|
|
2480
2523
|
* Handle debounced scheduling by replacing the latest queued item
|
|
2481
2524
|
*/
|
|
2482
|
-
handleDebouncedSchedule(node, nodeId, now) {
|
|
2525
|
+
handleDebouncedSchedule(node, nodeId, now, runContextIds) {
|
|
2526
|
+
// Decrement pendingQueued for any existing queued items before replacing
|
|
2527
|
+
if (node.queue.length > 0) {
|
|
2528
|
+
this.decrementQueuedForPlans(node.queue, nodeId);
|
|
2529
|
+
}
|
|
2483
2530
|
const effectiveInputs = this.getEffectiveInputs(nodeId);
|
|
2484
2531
|
const runSeq = this.graph.incrementNodeRunSeq(nodeId);
|
|
2485
|
-
const
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2532
|
+
const runId = `${nodeId}:${runSeq}:${now}`;
|
|
2533
|
+
const policySnapshot = node.policy ? { ...node.policy } : undefined;
|
|
2534
|
+
const plan = {
|
|
2535
|
+
runId,
|
|
2536
|
+
effectiveInputs,
|
|
2537
|
+
runContextIdsForRun: runContextIds,
|
|
2538
|
+
timestamp: now,
|
|
2539
|
+
policy: policySnapshot,
|
|
2540
|
+
};
|
|
2541
|
+
this.graph.replaceNodeQueue(nodeId, [plan]);
|
|
2489
2542
|
}
|
|
2490
2543
|
/**
|
|
2491
2544
|
* Prepare execution plan with all necessary information
|
|
@@ -2544,12 +2597,19 @@ class NodeExecutor {
|
|
|
2544
2597
|
const currentNode = this.graph.getNode(nodeId);
|
|
2545
2598
|
if (!currentNode)
|
|
2546
2599
|
return;
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2600
|
+
// Keep the originating run-context alive while work is queued by
|
|
2601
|
+
// incrementing queued counters for the plan's run-contexts.
|
|
2602
|
+
if (plan.runContextIdsForRun) {
|
|
2603
|
+
for (const rcId of plan.runContextIdsForRun) {
|
|
2604
|
+
this.runContextManager.incrementQueued(rcId, nodeId);
|
|
2605
|
+
}
|
|
2606
|
+
}
|
|
2607
|
+
this.graph.addToNodeQueue(nodeId, plan);
|
|
2551
2608
|
if (currentNode.queue.length > maxQ) {
|
|
2552
|
-
this.graph.shiftNodeQueue(nodeId);
|
|
2609
|
+
const dropped = this.graph.shiftNodeQueue(nodeId);
|
|
2610
|
+
if (dropped) {
|
|
2611
|
+
this.decrementQueuedForPlans(dropped, nodeId);
|
|
2612
|
+
}
|
|
2553
2613
|
}
|
|
2554
2614
|
this.processQueue(node, nodeId);
|
|
2555
2615
|
}
|
|
@@ -2567,18 +2627,12 @@ class NodeExecutor {
|
|
|
2567
2627
|
if (!next)
|
|
2568
2628
|
return;
|
|
2569
2629
|
this.graph.setNodeLatestRunId(nodeId, next.runId);
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
runId: next.runId,
|
|
2574
|
-
effectiveInputs: next.inputs,
|
|
2575
|
-
runContextIdsForRun: activeRunContextIds.size > 0 ? activeRunContextIds : undefined,
|
|
2576
|
-
timestamp: Date.now(),
|
|
2577
|
-
policy: policySnapshot,
|
|
2578
|
-
};
|
|
2579
|
-
this.startRun(node, nodeId, plan, () => {
|
|
2630
|
+
// Start the run first (which increments pendingNodes), then decrement
|
|
2631
|
+
// pendingQueued to ensure the run context stays alive.
|
|
2632
|
+
this.startRun(node, nodeId, next, () => {
|
|
2580
2633
|
setTimeout(processNext, 0);
|
|
2581
2634
|
});
|
|
2635
|
+
this.decrementQueuedForPlans(next, nodeId);
|
|
2582
2636
|
};
|
|
2583
2637
|
processNext();
|
|
2584
2638
|
}
|
|
@@ -2609,6 +2663,20 @@ class NodeExecutor {
|
|
|
2609
2663
|
}
|
|
2610
2664
|
}
|
|
2611
2665
|
}
|
|
2666
|
+
/**
|
|
2667
|
+
* Decrement pendingQueued counters for plans' run-contexts.
|
|
2668
|
+
* Used when queued work is being started, dropped, or cancelled.
|
|
2669
|
+
*/
|
|
2670
|
+
decrementQueuedForPlans(plans, nodeId) {
|
|
2671
|
+
const plansArray = Array.isArray(plans) ? plans : [plans];
|
|
2672
|
+
for (const plan of plansArray) {
|
|
2673
|
+
if (plan.runContextIdsForRun) {
|
|
2674
|
+
for (const rcId of plan.runContextIdsForRun) {
|
|
2675
|
+
this.runContextManager.decrementQueued(rcId, nodeId);
|
|
2676
|
+
}
|
|
2677
|
+
}
|
|
2678
|
+
}
|
|
2679
|
+
}
|
|
2612
2680
|
/**
|
|
2613
2681
|
* Create execution controller and update node stats
|
|
2614
2682
|
*/
|
|
@@ -2837,6 +2905,10 @@ class NodeExecutor {
|
|
|
2837
2905
|
}
|
|
2838
2906
|
this.graph.clearNodeControllers(nodeId);
|
|
2839
2907
|
this.graph.updateNodeStats(nodeId, { active: 0 });
|
|
2908
|
+
// Decrement pendingQueued for any queued items before clearing the queue
|
|
2909
|
+
if (node.queue.length > 0) {
|
|
2910
|
+
this.decrementQueuedForPlans(node.queue, nodeId);
|
|
2911
|
+
}
|
|
2840
2912
|
this.graph.clearNodeQueue(nodeId);
|
|
2841
2913
|
}
|
|
2842
2914
|
/**
|
|
@@ -3062,22 +3134,33 @@ class GraphRuntime {
|
|
|
3062
3134
|
if (value !== undefined && registry) {
|
|
3063
3135
|
const desc = registry.nodes.get(node.typeId);
|
|
3064
3136
|
const resolved = this.graph.getResolvedHandles(nodeId);
|
|
3065
|
-
// Get
|
|
3066
|
-
const
|
|
3067
|
-
?
|
|
3137
|
+
// Get declared types (may be union); prefer resolved handles over registry statics
|
|
3138
|
+
const declaredTypes = resolved
|
|
3139
|
+
? getInputDeclaredTypes(resolved.inputs, handle)
|
|
3068
3140
|
: desc
|
|
3069
|
-
?
|
|
3141
|
+
? getInputDeclaredTypes(desc.inputs, handle)
|
|
3070
3142
|
: undefined;
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3143
|
+
const typeIds = Array.isArray(declaredTypes)
|
|
3144
|
+
? declaredTypes
|
|
3145
|
+
: declaredTypes
|
|
3146
|
+
? [declaredTypes]
|
|
3147
|
+
: [];
|
|
3148
|
+
if (typeIds.length > 0) {
|
|
3149
|
+
const isValidForAny = typeIds.some((tId) => {
|
|
3150
|
+
const typeDesc = registry.types.get(tId);
|
|
3151
|
+
// If no validate function, consider it valid
|
|
3152
|
+
if (!typeDesc?.validate)
|
|
3153
|
+
return true;
|
|
3154
|
+
return typeDesc.validate(value);
|
|
3155
|
+
});
|
|
3156
|
+
if (!isValidForAny) {
|
|
3157
|
+
const typeLabel = typeIds.join("|");
|
|
3158
|
+
const errorMessage = `Invalid value for input ${nodeId}.${handle} (type ${typeLabel}): ${JSON.stringify(value)}`;
|
|
3076
3159
|
this.eventEmitter.emit("error", {
|
|
3077
3160
|
kind: "input-validation",
|
|
3078
3161
|
nodeId,
|
|
3079
3162
|
handle,
|
|
3080
|
-
typeId,
|
|
3163
|
+
typeId: typeLabel,
|
|
3081
3164
|
value,
|
|
3082
3165
|
message: errorMessage,
|
|
3083
3166
|
});
|
|
@@ -3667,11 +3750,30 @@ class GraphBuilder {
|
|
|
3667
3750
|
return { inputs: {}, outputs: {} };
|
|
3668
3751
|
const desc = this.registry.nodes.get(n.typeId);
|
|
3669
3752
|
const resolved = n.resolvedHandles || {};
|
|
3670
|
-
|
|
3753
|
+
// Merge inputs properly, handling union types and metadata
|
|
3754
|
+
const inputs = {};
|
|
3755
|
+
// First, add all static handles
|
|
3756
|
+
if (desc?.inputs) {
|
|
3757
|
+
for (const [handle, staticDesc] of Object.entries(desc.inputs)) {
|
|
3758
|
+
inputs[handle] = staticDesc;
|
|
3759
|
+
}
|
|
3760
|
+
}
|
|
3761
|
+
// Then, merge resolved handles (which may override/extend static handles)
|
|
3762
|
+
if (resolved.inputs) {
|
|
3763
|
+
for (const [handle, resolvedDesc] of Object.entries(resolved.inputs)) {
|
|
3764
|
+
const staticDesc = desc?.inputs?.[handle];
|
|
3765
|
+
const merged = mergeInputHandleDescriptors(staticDesc, resolvedDesc);
|
|
3766
|
+
if (merged) {
|
|
3767
|
+
inputs[handle] = merged;
|
|
3768
|
+
}
|
|
3769
|
+
}
|
|
3770
|
+
}
|
|
3671
3771
|
const outputs = { ...desc?.outputs, ...resolved.outputs };
|
|
3672
3772
|
return { inputs, outputs };
|
|
3673
3773
|
};
|
|
3674
3774
|
const normOut = (decl) => Array.isArray(decl) ? decl : decl ? [decl] : [];
|
|
3775
|
+
const getEnumTypes = (decl) => normOut(decl).filter((t) => t.startsWith("enum:"));
|
|
3776
|
+
const hasArrayType = (decl) => normOut(decl).some((t) => t.endsWith("[]"));
|
|
3675
3777
|
const canFlow = (from, to) => {
|
|
3676
3778
|
if (!to || !from)
|
|
3677
3779
|
return true;
|
|
@@ -3721,19 +3823,20 @@ class GraphBuilder {
|
|
|
3721
3823
|
if (paramKey === "policy")
|
|
3722
3824
|
continue;
|
|
3723
3825
|
// Check if this param corresponds to an input handle
|
|
3724
|
-
const
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
|
|
3732
|
-
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
|
|
3736
|
-
|
|
3826
|
+
const declaredTypes = getInputDeclaredTypes(effectiveHandles.inputs, paramKey);
|
|
3827
|
+
const enumTypes = getEnumTypes(declaredTypes);
|
|
3828
|
+
if (enumTypes.length > 0 &&
|
|
3829
|
+
typeof paramValue === "number" &&
|
|
3830
|
+
!enumTypes.some((et) => validateEnumValue(et, paramValue, n.nodeId))) {
|
|
3831
|
+
const enumDef = this.registry.enums.get(enumTypes[0]);
|
|
3832
|
+
const validValues = enumDef
|
|
3833
|
+
? Array.from(enumDef.valueToLabel.keys()).join(", ")
|
|
3834
|
+
: "unknown";
|
|
3835
|
+
pushIssue("error", "ENUM_VALUE_INVALID", `Node ${n.nodeId} param ${paramKey} has invalid enum value ${paramValue}. Valid values: ${validValues}`, {
|
|
3836
|
+
nodeId: n.nodeId,
|
|
3837
|
+
input: paramKey,
|
|
3838
|
+
typeId: enumTypes.join("|"),
|
|
3839
|
+
});
|
|
3737
3840
|
}
|
|
3738
3841
|
}
|
|
3739
3842
|
}
|
|
@@ -3742,19 +3845,20 @@ class GraphBuilder {
|
|
|
3742
3845
|
if (resolved?.inputDefaults) {
|
|
3743
3846
|
const effectiveHandles = getEffectiveHandles(n);
|
|
3744
3847
|
for (const [handle, defaultValue] of Object.entries(resolved.inputDefaults)) {
|
|
3745
|
-
const
|
|
3746
|
-
|
|
3747
|
-
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
3756
|
-
|
|
3757
|
-
|
|
3848
|
+
const declaredTypes = getInputDeclaredTypes(effectiveHandles.inputs, handle);
|
|
3849
|
+
const enumTypes = getEnumTypes(declaredTypes);
|
|
3850
|
+
if (enumTypes.length > 0 &&
|
|
3851
|
+
typeof defaultValue === "number" &&
|
|
3852
|
+
!enumTypes.some((et) => validateEnumValue(et, defaultValue, n.nodeId))) {
|
|
3853
|
+
const enumDef = this.registry.enums.get(enumTypes[0]);
|
|
3854
|
+
const validValues = enumDef
|
|
3855
|
+
? Array.from(enumDef.valueToLabel.keys()).join(", ")
|
|
3856
|
+
: "unknown";
|
|
3857
|
+
pushIssue("warning", "ENUM_DEFAULT_INVALID", `Node ${n.nodeId} input default ${handle} has invalid enum value ${defaultValue}. Valid values: ${validValues}`, {
|
|
3858
|
+
nodeId: n.nodeId,
|
|
3859
|
+
input: handle,
|
|
3860
|
+
typeId: enumTypes.join("|"),
|
|
3861
|
+
});
|
|
3758
3862
|
}
|
|
3759
3863
|
}
|
|
3760
3864
|
}
|
|
@@ -3854,8 +3958,8 @@ class GraphBuilder {
|
|
|
3854
3958
|
inboundCounts.set(inboundKey, (inboundCounts.get(inboundKey) ?? 0) + 1);
|
|
3855
3959
|
// If the target input is declared as an array type, allow multi-inbound (runtime will append)
|
|
3856
3960
|
if (dstNode) {
|
|
3857
|
-
const declaredIn =
|
|
3858
|
-
if (
|
|
3961
|
+
const declaredIn = getInputDeclaredTypes((effByNodeId.get(dstNode.nodeId) || { inputs: {} }).inputs, e.target.handle);
|
|
3962
|
+
if (hasArrayType(declaredIn)) {
|
|
3859
3963
|
inboundArrayOk.add(inboundKey);
|
|
3860
3964
|
}
|
|
3861
3965
|
}
|
|
@@ -3884,10 +3988,10 @@ class GraphBuilder {
|
|
|
3884
3988
|
const innerDesc = innerNode
|
|
3885
3989
|
? this.registry.nodes.get(innerNode.typeId)
|
|
3886
3990
|
: undefined;
|
|
3887
|
-
const
|
|
3888
|
-
?
|
|
3991
|
+
const typeIds = innerDesc
|
|
3992
|
+
? getInputDeclaredTypes(innerDesc.inputs, map.handle)
|
|
3889
3993
|
: undefined;
|
|
3890
|
-
inputTypes[outerIn] =
|
|
3994
|
+
inputTypes[outerIn] = typeIds ?? "unknown";
|
|
3891
3995
|
}
|
|
3892
3996
|
for (const [outerOut, map] of Object.entries(exposure.outputs)) {
|
|
3893
3997
|
const innerNode = def.nodes.find((n) => n.nodeId === map.nodeId);
|
|
@@ -3896,7 +4000,7 @@ class GraphBuilder {
|
|
|
3896
4000
|
: undefined;
|
|
3897
4001
|
const typeId = innerDesc ? innerDesc.outputs[map.handle] : undefined;
|
|
3898
4002
|
const single = Array.isArray(typeId) ? typeId[0] : typeId;
|
|
3899
|
-
outputTypes[outerOut] = single ?? "
|
|
4003
|
+
outputTypes[outerOut] = single ?? "unknown";
|
|
3900
4004
|
}
|
|
3901
4005
|
return {
|
|
3902
4006
|
id: nodeTypeId,
|