@bian-womp/spark-graph 0.2.14 → 0.2.15
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 +86 -75
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/core/types.d.ts +12 -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 +2 -0
- package/lib/cjs/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/lib/esm/index.js +86 -75
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/core/types.d.ts +12 -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 +2 -0
- package/lib/esm/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -69,6 +69,13 @@ export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescript
|
|
|
69
69
|
inputs: I;
|
|
70
70
|
outputs: O;
|
|
71
71
|
impl: Impl;
|
|
72
|
+
resolveHandles?: (ctx: {
|
|
73
|
+
params?: Record<string, unknown>;
|
|
74
|
+
environment: Record<string, unknown>;
|
|
75
|
+
}) => {
|
|
76
|
+
inputs?: Record<string, InputHandleDescriptor>;
|
|
77
|
+
outputs?: Record<string, DataTypeId | DataTypeId[]>;
|
|
78
|
+
};
|
|
72
79
|
inputDefaults?: Record<string, unknown> | ((ctx: {
|
|
73
80
|
params?: Record<string, unknown>;
|
|
74
81
|
environment: Record<string, unknown>;
|
|
@@ -78,11 +85,16 @@ export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescript
|
|
|
78
85
|
dispose?: (ctx: NodeContext<State>) => void;
|
|
79
86
|
};
|
|
80
87
|
}
|
|
88
|
+
export type ResolvedHandles = {
|
|
89
|
+
inputs: Record<string, InputHandleDescriptor>;
|
|
90
|
+
outputs: Record<string, DataTypeId | DataTypeId[]>;
|
|
91
|
+
};
|
|
81
92
|
export interface GraphNodeDefinition {
|
|
82
93
|
nodeId: NodeInstanceId;
|
|
83
94
|
typeId: NodeTypeId;
|
|
84
95
|
params?: Record<string, unknown>;
|
|
85
96
|
initialInputs?: Record<string, unknown>;
|
|
97
|
+
resolvedHandles?: Partial<ResolvedHandles>;
|
|
86
98
|
}
|
|
87
99
|
export interface GraphEdgeDefinition {
|
|
88
100
|
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"}
|
|
@@ -30,6 +30,8 @@ export declare class GraphRuntime {
|
|
|
30
30
|
private allInboundHaveValue;
|
|
31
31
|
private invalidateDownstream;
|
|
32
32
|
private propagate;
|
|
33
|
+
private static computeResolvedHandleMap;
|
|
34
|
+
private static buildEdges;
|
|
33
35
|
private reemitNodeOutputs;
|
|
34
36
|
launch(): void;
|
|
35
37
|
triggerExternal(nodeId: string, event: unknown): 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
|
@@ -431,6 +431,8 @@ class GraphRuntime {
|
|
|
431
431
|
static create(def, registry, opts) {
|
|
432
432
|
const gr = new GraphRuntime();
|
|
433
433
|
gr.environment = opts?.environment ?? {};
|
|
434
|
+
// Precompute per-node resolved handles (use def-provided overrides; do not compute dynamically here)
|
|
435
|
+
const resolvedByNode = GraphRuntime.computeResolvedHandleMap(def, registry);
|
|
434
436
|
// Instantiate nodes
|
|
435
437
|
for (const n of def.nodes) {
|
|
436
438
|
const desc = registry.nodes.get(n.typeId);
|
|
@@ -470,46 +472,7 @@ class GraphRuntime {
|
|
|
470
472
|
gr.nodes.set(n.nodeId, rn);
|
|
471
473
|
}
|
|
472
474
|
// 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
|
-
});
|
|
475
|
+
gr.edges = GraphRuntime.buildEdges(def, registry, resolvedByNode);
|
|
513
476
|
// After nodes and edges exist, seed registry- and graph-level defaults
|
|
514
477
|
for (const n of def.nodes) {
|
|
515
478
|
const node = gr.nodes.get(n.nodeId);
|
|
@@ -939,6 +902,61 @@ class GraphRuntime {
|
|
|
939
902
|
}
|
|
940
903
|
}
|
|
941
904
|
}
|
|
905
|
+
// Helper: build map of resolved handles per node from def (prefer def.resolvedHandles, otherwise registry statics)
|
|
906
|
+
static computeResolvedHandleMap(def, registry) {
|
|
907
|
+
const out = new Map();
|
|
908
|
+
for (const n of def.nodes) {
|
|
909
|
+
const desc = registry.nodes.get(n.typeId);
|
|
910
|
+
if (!desc)
|
|
911
|
+
continue;
|
|
912
|
+
const overrideInputs = n.resolvedHandles?.inputs;
|
|
913
|
+
const overrideOutputs = n.resolvedHandles?.outputs;
|
|
914
|
+
// Merge base with overrides (allow partial resolvedHandles)
|
|
915
|
+
const inputs = { ...desc.inputs, ...overrideInputs };
|
|
916
|
+
const outputs = { ...desc.outputs, ...overrideOutputs };
|
|
917
|
+
out.set(n.nodeId, { inputs, outputs });
|
|
918
|
+
}
|
|
919
|
+
return out;
|
|
920
|
+
}
|
|
921
|
+
// Helper: build runtime edges with coercions using resolved handles
|
|
922
|
+
static buildEdges(def, registry, resolvedByNode) {
|
|
923
|
+
return def.edges.map((e) => {
|
|
924
|
+
const srcNode = def.nodes.find((n) => n.nodeId === e.source.nodeId);
|
|
925
|
+
const dstNode = def.nodes.find((n) => n.nodeId === e.target.nodeId);
|
|
926
|
+
let effectiveTypeId = e.typeId;
|
|
927
|
+
let srcDeclared;
|
|
928
|
+
let dstDeclared;
|
|
929
|
+
if (srcNode) {
|
|
930
|
+
const resolved = resolvedByNode.get(srcNode.nodeId);
|
|
931
|
+
if (resolved)
|
|
932
|
+
srcDeclared = resolved.outputs[e.source.handle];
|
|
933
|
+
}
|
|
934
|
+
if (!effectiveTypeId) {
|
|
935
|
+
effectiveTypeId = Array.isArray(srcDeclared)
|
|
936
|
+
? srcDeclared[0]
|
|
937
|
+
: srcDeclared;
|
|
938
|
+
}
|
|
939
|
+
if (dstNode) {
|
|
940
|
+
const resolved = resolvedByNode.get(dstNode.nodeId);
|
|
941
|
+
if (resolved)
|
|
942
|
+
dstDeclared = getInputTypeId(resolved.inputs, e.target.handle);
|
|
943
|
+
}
|
|
944
|
+
const { convert, convertAsync } = GraphRuntime.buildEdgeConverters(srcDeclared, dstDeclared, registry);
|
|
945
|
+
return {
|
|
946
|
+
id: e.id,
|
|
947
|
+
source: { ...e.source },
|
|
948
|
+
target: { ...e.target },
|
|
949
|
+
typeId: effectiveTypeId ?? "untyped",
|
|
950
|
+
convert,
|
|
951
|
+
convertAsync,
|
|
952
|
+
srcUnionTypes: Array.isArray(srcDeclared)
|
|
953
|
+
? [...srcDeclared]
|
|
954
|
+
: undefined,
|
|
955
|
+
dstDeclared,
|
|
956
|
+
stats: { runs: 0, inFlight: false, progress: 0 },
|
|
957
|
+
};
|
|
958
|
+
});
|
|
959
|
+
}
|
|
942
960
|
reemitNodeOutputs(nodeId) {
|
|
943
961
|
const node = this.nodes.get(nodeId);
|
|
944
962
|
if (!node)
|
|
@@ -1239,42 +1257,10 @@ class GraphRuntime {
|
|
|
1239
1257
|
tmap.set(e.source.handle, tset);
|
|
1240
1258
|
prevOutTargets.set(e.source.nodeId, tmap);
|
|
1241
1259
|
}
|
|
1260
|
+
// Precompute per-node resolved handles for updated graph
|
|
1261
|
+
const resolvedByNode = GraphRuntime.computeResolvedHandleMap(def, registry);
|
|
1242
1262
|
// 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
|
-
});
|
|
1263
|
+
this.edges = GraphRuntime.buildEdges(def, registry, resolvedByNode);
|
|
1278
1264
|
// Build new inbound map
|
|
1279
1265
|
const nextInbound = new Map();
|
|
1280
1266
|
for (const e of this.edges) {
|
|
@@ -2641,6 +2627,31 @@ function setupBasicGraphRegistry() {
|
|
|
2641
2627
|
return { Result: arr.slice(s, e) };
|
|
2642
2628
|
},
|
|
2643
2629
|
});
|
|
2630
|
+
// Compose array from dynamic item inputs
|
|
2631
|
+
registry.registerNode({
|
|
2632
|
+
id: "base.array.compose",
|
|
2633
|
+
categoryId: "compute",
|
|
2634
|
+
inputs: { Length: "base.float" },
|
|
2635
|
+
outputs: { Items: "base.object" },
|
|
2636
|
+
resolveHandles: ({ params }) => {
|
|
2637
|
+
const maxLen = 64;
|
|
2638
|
+
const raw = params?.Length;
|
|
2639
|
+
const n = Math.max(0, Math.min(maxLen, Math.trunc(Number(raw ?? 0))));
|
|
2640
|
+
if (!Number.isFinite(n))
|
|
2641
|
+
return { inputs: {} };
|
|
2642
|
+
const dyn = {};
|
|
2643
|
+
for (let i = 0; i < n; i++)
|
|
2644
|
+
dyn[`Item${i}`] = { typeId: "base.object" };
|
|
2645
|
+
return { inputs: dyn };
|
|
2646
|
+
},
|
|
2647
|
+
inputDefaults: { Length: 0 },
|
|
2648
|
+
impl: (ins) => {
|
|
2649
|
+
const length = Math.max(0, Math.trunc(Number(ins.Length ?? 0)));
|
|
2650
|
+
if (!Number.isFinite(length))
|
|
2651
|
+
return { Items: [] };
|
|
2652
|
+
return { Items: Array.from({ length }, (_, i) => ins[`Item${i}`]) };
|
|
2653
|
+
},
|
|
2654
|
+
});
|
|
2644
2655
|
// Select
|
|
2645
2656
|
registry.registerNode({
|
|
2646
2657
|
id: "base.select",
|