@bian-womp/spark-graph 0.2.14 → 0.2.16
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 +121 -75
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/core/types.d.ts +13 -0
- package/lib/cjs/src/core/types.d.ts.map +1 -1
- package/lib/cjs/src/misc/base.d.ts.map +1 -1
- package/lib/cjs/src/runtime/GraphRuntime.d.ts +5 -1
- package/lib/cjs/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/lib/esm/index.js +121 -75
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/core/types.d.ts +13 -0
- package/lib/esm/src/core/types.d.ts.map +1 -1
- package/lib/esm/src/misc/base.d.ts.map +1 -1
- package/lib/esm/src/runtime/GraphRuntime.d.ts +5 -1
- package/lib/esm/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -69,6 +69,14 @@ export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescript
|
|
|
69
69
|
inputs: I;
|
|
70
70
|
outputs: O;
|
|
71
71
|
impl: Impl;
|
|
72
|
+
resolveHandles?: (ctx: {
|
|
73
|
+
environment: Record<string, unknown>;
|
|
74
|
+
params?: Record<string, unknown>;
|
|
75
|
+
inputs?: Record<string, unknown>;
|
|
76
|
+
}) => {
|
|
77
|
+
inputs?: Record<string, InputHandleDescriptor>;
|
|
78
|
+
outputs?: Record<string, DataTypeId | DataTypeId[]>;
|
|
79
|
+
};
|
|
72
80
|
inputDefaults?: Record<string, unknown> | ((ctx: {
|
|
73
81
|
params?: Record<string, unknown>;
|
|
74
82
|
environment: Record<string, unknown>;
|
|
@@ -78,11 +86,16 @@ export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescript
|
|
|
78
86
|
dispose?: (ctx: NodeContext<State>) => void;
|
|
79
87
|
};
|
|
80
88
|
}
|
|
89
|
+
export type ResolvedHandles = {
|
|
90
|
+
inputs: Record<string, InputHandleDescriptor>;
|
|
91
|
+
outputs: Record<string, DataTypeId | DataTypeId[]>;
|
|
92
|
+
};
|
|
81
93
|
export interface GraphNodeDefinition {
|
|
82
94
|
nodeId: NodeInstanceId;
|
|
83
95
|
typeId: NodeTypeId;
|
|
84
96
|
params?: Record<string, unknown>;
|
|
85
97
|
initialInputs?: Record<string, unknown>;
|
|
98
|
+
resolvedHandles?: Partial<ResolvedHandles>;
|
|
86
99
|
}
|
|
87
100
|
export interface GraphEdgeDefinition {
|
|
88
101
|
id: EdgeInstanceId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/misc/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,eAAe,CAAC;AA+IvB,wBAAgB,uBAAuB,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/misc/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,eAAe,CAAC;AA+IvB,wBAAgB,uBAAuB,IAAI,QAAQ,CA86BlD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,QA+BnD;AAqBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,QA6BvD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,6BAUrE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RuntimeValue, RuntimeInvalidate, RuntimeError, RuntimeStats } from "@bian-womp/spark-protocol";
|
|
2
|
-
import type { GraphDefinition, RuntimeNodeStats } from "../core/types";
|
|
2
|
+
import type { GraphDefinition, RuntimeNodeStats, ResolvedHandles } from "../core/types";
|
|
3
3
|
import { Registry } from "../builder/Registry";
|
|
4
4
|
export type RuntimeEventListener<K extends RuntimeEventName> = (e: RuntimeEventMap[K]) => void;
|
|
5
5
|
export type RuntimeEventName = "value" | "invalidate" | "error" | "stats";
|
|
@@ -12,6 +12,7 @@ export interface RuntimeEventMap {
|
|
|
12
12
|
export declare class GraphRuntime {
|
|
13
13
|
private nodes;
|
|
14
14
|
private edges;
|
|
15
|
+
private resolvedByNode;
|
|
15
16
|
private listeners;
|
|
16
17
|
private environment;
|
|
17
18
|
private paused;
|
|
@@ -30,7 +31,10 @@ export declare class GraphRuntime {
|
|
|
30
31
|
private allInboundHaveValue;
|
|
31
32
|
private invalidateDownstream;
|
|
32
33
|
private propagate;
|
|
34
|
+
private static computeResolvedHandleMap;
|
|
35
|
+
private static buildEdges;
|
|
33
36
|
private reemitNodeOutputs;
|
|
37
|
+
updateNodeHandles(nodeId: string, handles: ResolvedHandles, registry: Registry): void;
|
|
34
38
|
launch(): void;
|
|
35
39
|
triggerExternal(nodeId: string, event: unknown): void;
|
|
36
40
|
dispose(): void;
|
|
@@ -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,EACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,eAAe,EAIf,gBAAgB,
|
|
1
|
+
{"version":3,"file":"GraphRuntime.d.ts","sourceRoot":"","sources":["../../../../src/runtime/GraphRuntime.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
CHANGED
|
@@ -404,6 +404,8 @@ class GraphRuntime {
|
|
|
404
404
|
constructor() {
|
|
405
405
|
this.nodes = new Map();
|
|
406
406
|
this.edges = [];
|
|
407
|
+
// Current resolved handles per node (registry statics merged with per-node overrides)
|
|
408
|
+
this.resolvedByNode = new Map();
|
|
407
409
|
this.listeners = new Map();
|
|
408
410
|
this.environment = {};
|
|
409
411
|
this.paused = false;
|
|
@@ -431,6 +433,8 @@ class GraphRuntime {
|
|
|
431
433
|
static create(def, registry, opts) {
|
|
432
434
|
const gr = new GraphRuntime();
|
|
433
435
|
gr.environment = opts?.environment ?? {};
|
|
436
|
+
// Precompute per-node resolved handles (use def-provided overrides; do not compute dynamically here)
|
|
437
|
+
gr.resolvedByNode = GraphRuntime.computeResolvedHandleMap(def, registry);
|
|
434
438
|
// Instantiate nodes
|
|
435
439
|
for (const n of def.nodes) {
|
|
436
440
|
const desc = registry.nodes.get(n.typeId);
|
|
@@ -470,46 +474,7 @@ class GraphRuntime {
|
|
|
470
474
|
gr.nodes.set(n.nodeId, rn);
|
|
471
475
|
}
|
|
472
476
|
// Instantiate edges
|
|
473
|
-
gr.edges =
|
|
474
|
-
// infer type from source output if missing
|
|
475
|
-
const srcNode = def.nodes.find((n) => n.nodeId === e.source.nodeId);
|
|
476
|
-
const dstNode = def.nodes.find((n) => n.nodeId === e.target.nodeId);
|
|
477
|
-
let effectiveTypeId = e.typeId;
|
|
478
|
-
let srcDeclared;
|
|
479
|
-
let dstDeclared;
|
|
480
|
-
if (srcNode) {
|
|
481
|
-
const srcDesc = registry.nodes.get(srcNode.typeId);
|
|
482
|
-
if (srcDesc) {
|
|
483
|
-
srcDeclared = srcDesc.outputs[e.source.handle];
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
if (!effectiveTypeId) {
|
|
487
|
-
effectiveTypeId = Array.isArray(srcDeclared)
|
|
488
|
-
? srcDeclared[0]
|
|
489
|
-
: srcDeclared;
|
|
490
|
-
}
|
|
491
|
-
if (dstNode) {
|
|
492
|
-
const dstDesc = registry.nodes.get(dstNode.typeId);
|
|
493
|
-
if (dstDesc) {
|
|
494
|
-
dstDeclared = getInputTypeId(dstDesc.inputs, e.target.handle);
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
// Attach dynamic convert/convertAsync aware of union sources and typed outputs
|
|
498
|
-
const { convert, convertAsync } = GraphRuntime.buildEdgeConverters(srcDeclared, dstDeclared, registry);
|
|
499
|
-
return {
|
|
500
|
-
id: e.id,
|
|
501
|
-
source: { ...e.source },
|
|
502
|
-
target: { ...e.target },
|
|
503
|
-
typeId: effectiveTypeId ?? "untyped",
|
|
504
|
-
convert,
|
|
505
|
-
convertAsync,
|
|
506
|
-
srcUnionTypes: Array.isArray(srcDeclared)
|
|
507
|
-
? [...srcDeclared]
|
|
508
|
-
: undefined,
|
|
509
|
-
dstDeclared,
|
|
510
|
-
stats: { runs: 0, inFlight: false, progress: 0 },
|
|
511
|
-
};
|
|
512
|
-
});
|
|
477
|
+
gr.edges = GraphRuntime.buildEdges(def, registry, gr.resolvedByNode);
|
|
513
478
|
// After nodes and edges exist, seed registry- and graph-level defaults
|
|
514
479
|
for (const n of def.nodes) {
|
|
515
480
|
const node = gr.nodes.get(n.nodeId);
|
|
@@ -939,6 +904,61 @@ class GraphRuntime {
|
|
|
939
904
|
}
|
|
940
905
|
}
|
|
941
906
|
}
|
|
907
|
+
// Helper: build map of resolved handles per node from def (prefer def.resolvedHandles, otherwise registry statics)
|
|
908
|
+
static computeResolvedHandleMap(def, registry) {
|
|
909
|
+
const out = new Map();
|
|
910
|
+
for (const n of def.nodes) {
|
|
911
|
+
const desc = registry.nodes.get(n.typeId);
|
|
912
|
+
if (!desc)
|
|
913
|
+
continue;
|
|
914
|
+
const overrideInputs = n.resolvedHandles?.inputs;
|
|
915
|
+
const overrideOutputs = n.resolvedHandles?.outputs;
|
|
916
|
+
// Merge base with overrides (allow partial resolvedHandles)
|
|
917
|
+
const inputs = { ...desc.inputs, ...overrideInputs };
|
|
918
|
+
const outputs = { ...desc.outputs, ...overrideOutputs };
|
|
919
|
+
out.set(n.nodeId, { inputs, outputs });
|
|
920
|
+
}
|
|
921
|
+
return out;
|
|
922
|
+
}
|
|
923
|
+
// Helper: build runtime edges with coercions using resolved handles
|
|
924
|
+
static buildEdges(def, registry, resolvedByNode) {
|
|
925
|
+
return def.edges.map((e) => {
|
|
926
|
+
const srcNode = def.nodes.find((n) => n.nodeId === e.source.nodeId);
|
|
927
|
+
const dstNode = def.nodes.find((n) => n.nodeId === e.target.nodeId);
|
|
928
|
+
let effectiveTypeId = e.typeId;
|
|
929
|
+
let srcDeclared;
|
|
930
|
+
let dstDeclared;
|
|
931
|
+
if (srcNode) {
|
|
932
|
+
const resolved = resolvedByNode.get(srcNode.nodeId);
|
|
933
|
+
if (resolved)
|
|
934
|
+
srcDeclared = resolved.outputs[e.source.handle];
|
|
935
|
+
}
|
|
936
|
+
if (!effectiveTypeId) {
|
|
937
|
+
effectiveTypeId = Array.isArray(srcDeclared)
|
|
938
|
+
? srcDeclared[0]
|
|
939
|
+
: srcDeclared;
|
|
940
|
+
}
|
|
941
|
+
if (dstNode) {
|
|
942
|
+
const resolved = resolvedByNode.get(dstNode.nodeId);
|
|
943
|
+
if (resolved)
|
|
944
|
+
dstDeclared = getInputTypeId(resolved.inputs, e.target.handle);
|
|
945
|
+
}
|
|
946
|
+
const { convert, convertAsync } = GraphRuntime.buildEdgeConverters(srcDeclared, dstDeclared, registry);
|
|
947
|
+
return {
|
|
948
|
+
id: e.id,
|
|
949
|
+
source: { ...e.source },
|
|
950
|
+
target: { ...e.target },
|
|
951
|
+
typeId: effectiveTypeId ?? "untyped",
|
|
952
|
+
convert,
|
|
953
|
+
convertAsync,
|
|
954
|
+
srcUnionTypes: Array.isArray(srcDeclared)
|
|
955
|
+
? [...srcDeclared]
|
|
956
|
+
: undefined,
|
|
957
|
+
dstDeclared,
|
|
958
|
+
stats: { runs: 0, inFlight: false, progress: 0 },
|
|
959
|
+
};
|
|
960
|
+
});
|
|
961
|
+
}
|
|
942
962
|
reemitNodeOutputs(nodeId) {
|
|
943
963
|
const node = this.nodes.get(nodeId);
|
|
944
964
|
if (!node)
|
|
@@ -947,6 +967,39 @@ class GraphRuntime {
|
|
|
947
967
|
this.propagate(nodeId, handle, value);
|
|
948
968
|
}
|
|
949
969
|
}
|
|
970
|
+
// Update resolved handles for a single node and refresh edge converters/types that touch it
|
|
971
|
+
updateNodeHandles(nodeId, handles, registry) {
|
|
972
|
+
this.resolvedByNode.set(nodeId, handles);
|
|
973
|
+
// Recompute edge converter/type for edges where this node is source or target
|
|
974
|
+
for (const e of this.edges) {
|
|
975
|
+
let srcDeclared = e.typeId;
|
|
976
|
+
let dstDeclared = e.dstDeclared;
|
|
977
|
+
if (e.source.nodeId === nodeId) {
|
|
978
|
+
const resolved = this.resolvedByNode.get(nodeId);
|
|
979
|
+
srcDeclared = resolved
|
|
980
|
+
? resolved.outputs[e.source.handle]
|
|
981
|
+
: srcDeclared;
|
|
982
|
+
// If edge had no explicit typeId, infer from updated src
|
|
983
|
+
if (!e.typeId) {
|
|
984
|
+
e.typeId = Array.isArray(srcDeclared)
|
|
985
|
+
? srcDeclared?.[0]
|
|
986
|
+
: srcDeclared;
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
if (e.target.nodeId === nodeId) {
|
|
990
|
+
const resolved = this.resolvedByNode.get(nodeId);
|
|
991
|
+
if (resolved) {
|
|
992
|
+
dstDeclared = getInputTypeId(resolved.inputs, e.target.handle);
|
|
993
|
+
e.dstDeclared = dstDeclared;
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
const conv = GraphRuntime.buildEdgeConverters(srcDeclared, dstDeclared, registry);
|
|
997
|
+
e.convert = conv.convert;
|
|
998
|
+
e.convertAsync = conv.convertAsync;
|
|
999
|
+
}
|
|
1000
|
+
// Invalidate downstream for this node so UI refreshes
|
|
1001
|
+
this.invalidateDownstream(nodeId);
|
|
1002
|
+
}
|
|
950
1003
|
launch() {
|
|
951
1004
|
// call onActivated for nodes that implement it
|
|
952
1005
|
for (const node of this.nodes.values()) {
|
|
@@ -1239,42 +1292,10 @@ class GraphRuntime {
|
|
|
1239
1292
|
tmap.set(e.source.handle, tset);
|
|
1240
1293
|
prevOutTargets.set(e.source.nodeId, tmap);
|
|
1241
1294
|
}
|
|
1295
|
+
// Precompute per-node resolved handles for updated graph
|
|
1296
|
+
this.resolvedByNode = GraphRuntime.computeResolvedHandleMap(def, registry);
|
|
1242
1297
|
// Rebuild edges mapping with coercions
|
|
1243
|
-
this.edges =
|
|
1244
|
-
const srcNode = def.nodes.find((nn) => nn.nodeId === e.source.nodeId);
|
|
1245
|
-
const dstNode = def.nodes.find((nn) => nn.nodeId === e.target.nodeId);
|
|
1246
|
-
let effectiveTypeId = e.typeId;
|
|
1247
|
-
let srcDeclared;
|
|
1248
|
-
let dstDeclared;
|
|
1249
|
-
if (srcNode) {
|
|
1250
|
-
const srcDesc = registry.nodes.get(srcNode.typeId);
|
|
1251
|
-
if (srcDesc) {
|
|
1252
|
-
srcDeclared = srcDesc.outputs[e.source.handle];
|
|
1253
|
-
}
|
|
1254
|
-
}
|
|
1255
|
-
if (!effectiveTypeId) {
|
|
1256
|
-
effectiveTypeId = Array.isArray(srcDeclared)
|
|
1257
|
-
? srcDeclared[0]
|
|
1258
|
-
: srcDeclared;
|
|
1259
|
-
}
|
|
1260
|
-
if (dstNode) {
|
|
1261
|
-
const dstDesc = registry.nodes.get(dstNode.typeId);
|
|
1262
|
-
if (dstDesc) {
|
|
1263
|
-
dstDeclared = getInputTypeId(dstDesc.inputs, e.target.handle);
|
|
1264
|
-
}
|
|
1265
|
-
}
|
|
1266
|
-
const { convert, convertAsync } = GraphRuntime.buildEdgeConverters(srcDeclared, dstDeclared, registry);
|
|
1267
|
-
return {
|
|
1268
|
-
id: e.id,
|
|
1269
|
-
source: { ...e.source },
|
|
1270
|
-
target: { ...e.target },
|
|
1271
|
-
typeId: effectiveTypeId ?? "untyped",
|
|
1272
|
-
convert,
|
|
1273
|
-
convertAsync,
|
|
1274
|
-
dstDeclared,
|
|
1275
|
-
stats: { runs: 0, inFlight: false, progress: 0 },
|
|
1276
|
-
};
|
|
1277
|
-
});
|
|
1298
|
+
this.edges = GraphRuntime.buildEdges(def, registry, this.resolvedByNode);
|
|
1278
1299
|
// Build new inbound map
|
|
1279
1300
|
const nextInbound = new Map();
|
|
1280
1301
|
for (const e of this.edges) {
|
|
@@ -2641,6 +2662,31 @@ function setupBasicGraphRegistry() {
|
|
|
2641
2662
|
return { Result: arr.slice(s, e) };
|
|
2642
2663
|
},
|
|
2643
2664
|
});
|
|
2665
|
+
// Compose array from dynamic item inputs
|
|
2666
|
+
registry.registerNode({
|
|
2667
|
+
id: "base.array.compose",
|
|
2668
|
+
categoryId: "compute",
|
|
2669
|
+
inputs: { Length: "base.float" },
|
|
2670
|
+
outputs: { Items: "base.object" },
|
|
2671
|
+
resolveHandles: ({ inputs }) => {
|
|
2672
|
+
const maxLen = 64;
|
|
2673
|
+
const raw = inputs?.Length ?? 0;
|
|
2674
|
+
const n = Math.max(0, Math.min(maxLen, Math.trunc(Number(raw ?? 0))));
|
|
2675
|
+
if (!Number.isFinite(n))
|
|
2676
|
+
return { inputs: {} };
|
|
2677
|
+
const dyn = {};
|
|
2678
|
+
for (let i = 0; i < n; i++)
|
|
2679
|
+
dyn[`Item${i}`] = { typeId: "base.object" };
|
|
2680
|
+
return { inputs: dyn };
|
|
2681
|
+
},
|
|
2682
|
+
inputDefaults: { Length: 0 },
|
|
2683
|
+
impl: (ins) => {
|
|
2684
|
+
const length = Math.max(0, Math.trunc(Number(ins.Length ?? 0)));
|
|
2685
|
+
if (!Number.isFinite(length))
|
|
2686
|
+
return { Items: [] };
|
|
2687
|
+
return { Items: Array.from({ length }, (_, i) => ins[`Item${i}`]) };
|
|
2688
|
+
},
|
|
2689
|
+
});
|
|
2644
2690
|
// Select
|
|
2645
2691
|
registry.registerNode({
|
|
2646
2692
|
id: "base.select",
|