@bian-womp/spark-graph 0.3.36 → 0.3.37
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 +96 -24
- package/lib/cjs/index.cjs.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 +96 -24
- package/lib/esm/index.js.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,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
|
/**
|