@bian-womp/spark-graph 0.2.13 → 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.
@@ -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,CAu5BlD;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
+ {"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":"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"}
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,EAIjB,MAAM,eAAe,CAAC;AAQvB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAC7D,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAClB,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB;AAmCD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,SAAS,CAGb;IACJ,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,MAAM,CAAS;IAIvB,OAAO,CAAC,iBAAiB,CAGrB;IAGJ,OAAO,CAAC,WAAW;IAanB,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAC/C,YAAY;IAqFf,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAC3B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,MAAM,IAAI;IAOb,OAAO,CAAC,IAAI;IAQZ,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0BhE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAqElC,OAAO,CAAC,qBAAqB;IAsJ7B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,SAAS;IAoJjB,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAmBvC,OAAO,CAAC,MAAM,CAAC,UAAU;IA8CzB,OAAO,CAAC,iBAAiB;IAQzB,MAAM,IAAI,IAAI;IA8Bd,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAgCrD,OAAO,IAAI,IAAI;IAef,UAAU,IAAI,MAAM,EAAE;IAKtB,WAAW,CAAC,MAAM,EAAE,MAAM,GACtB;QACE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,KAAK,CAAC,EAAE,gBAAgB,CAAC;KAC1B,GACD,SAAS;IAYb,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB/B,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;IAId,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAInD,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKpD,OAAO,CACL,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACnD,EACD,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1B,IAAI;IAmDP,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAiPvD"}
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 = def.edges.map((e) => {
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 = def.edges.map((e) => {
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",