@bian-womp/spark-workbench 0.2.43 → 0.2.45

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.
@@ -1 +1 @@
1
- {"version":3,"file":"NodeContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/misc/NodeContextMenu.tsx"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,kDA2RA"}
1
+ {"version":3,"file":"NodeContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/misc/NodeContextMenu.tsx"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,kDAuRA"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkbenchContext.provider.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AASf,OAAO,EAAE,KAAK,QAAQ,EAAwB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAmB,MAAM,4BAA4B,CAAC;AAa3E,OAAO,EAGL,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAI5B,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CA+uBA"}
1
+ {"version":3,"file":"WorkbenchContext.provider.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AASf,OAAO,EAAE,KAAK,QAAQ,EAAwB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAmB,MAAM,4BAA4B,CAAC;AAa3E,OAAO,EAGL,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAI5B,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAouBA"}
@@ -7,7 +7,6 @@ export declare class RemoteGraphRunner extends AbstractGraphRunner {
7
7
  protected lastDef?: GraphDefinition;
8
8
  protected client?: RuntimeApiClient;
9
9
  private clientPromise?;
10
- private customEventUnsubscribe?;
11
10
  private transportStatusUnsubscribe?;
12
11
  private disposed;
13
12
  private valueCache;
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/RemoteGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAU,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EAEtB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,aAAa,CAAC,CAA4B;IAClD,OAAO,CAAC,sBAAsB,CAAC,CAAa;IAC5C,OAAO,CAAC,0BAA0B,CAAC,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,UAAU,CAGd;IACJ,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAK;IACjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAE/C;;;OAGG;YACW,aAAa;IA4H3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;cA2BhB,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;gBAkD7C,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB;IA8D/D,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAEjC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAWlC,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAyDvD;;;;;;OAMG;IACH,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAoCzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAErB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhD,KAAK,IAAI,IAAI;IAEb,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IASlE,YAAY;IASZ,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;IASpD;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAuBxD,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAcvE,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IASrD,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoBzE,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA6BxE,gBAAgB,CACd,GAAG,EAAE,eAAe,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAW1C,OAAO,IAAI,IAAI;CAqChB"}
1
+ {"version":3,"file":"RemoteGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/RemoteGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAU,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EAEtB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,aAAa,CAAC,CAA4B;IAClD,OAAO,CAAC,0BAA0B,CAAC,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,UAAU,CAGd;IACJ,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAK;IACjD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAE/C;;;OAGG;YACW,aAAa;IA4H3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;cAiBhB,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;gBAkD7C,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB;IA8D/D,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAEjC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAWlC,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAyDvD;;;;;;OAMG;IACH,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAoCzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAErB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhD,KAAK,IAAI,IAAI;IAEb,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IASlE,YAAY;IASZ,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;IASpD;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAuBxD,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAcvE,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IASrD,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoBzE,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA6BxE,gBAAgB,CACd,GAAG,EAAE,eAAe,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAW1C,OAAO,IAAI,IAAI;CAkChB"}
package/lib/esm/index.js CHANGED
@@ -734,11 +734,7 @@ class RemoteGraphRunner extends AbstractGraphRunner {
734
734
  /**
735
735
  * Setup event subscriptions for the client.
736
736
  */
737
- setupClientSubscriptions(client, backend) {
738
- // Subscribe to custom events (for additional listeners if needed)
739
- if (backend.onCustomEvent) {
740
- this.customEventUnsubscribe = client.subscribeCustomEvents(backend.onCustomEvent);
741
- }
737
+ setupClientSubscriptions(client) {
742
738
  // Subscribe to transport status changes
743
739
  // Convert RuntimeApiClient.TransportStatus to IGraphRunner.TransportStatus
744
740
  this.transportStatusUnsubscribe = client.onTransportStatus((status) => {
@@ -770,7 +766,7 @@ class RemoteGraphRunner extends AbstractGraphRunner {
770
766
  onCustomEvent: backend.onCustomEvent,
771
767
  });
772
768
  // Setup event subscriptions
773
- this.setupClientSubscriptions(client, backend);
769
+ this.setupClientSubscriptions(client);
774
770
  // Connect the client (this will create and connect transport)
775
771
  await client.connect();
776
772
  this.client = client;
@@ -1124,11 +1120,8 @@ class RemoteGraphRunner extends AbstractGraphRunner {
1124
1120
  super.dispose();
1125
1121
  // Clear client promise if any
1126
1122
  this.clientPromise = undefined;
1127
- // Unsubscribe from custom events and transport status
1128
- if (this.customEventUnsubscribe) {
1129
- this.customEventUnsubscribe();
1130
- this.customEventUnsubscribe = undefined;
1131
- }
1123
+ // Unsubscribe from transport status
1124
+ // Note: Custom events are cleaned up automatically when client is disposed
1132
1125
  if (this.transportStatusUnsubscribe) {
1133
1126
  this.transportStatusUnsubscribe();
1134
1127
  this.transportStatusUnsubscribe = undefined;
@@ -2055,35 +2048,23 @@ function WorkbenchProvider({ wb, runner, registry, setRegistry, overrides, uiVer
2055
2048
  ];
2056
2049
  return next.length > 200 ? next.slice(0, 200) : next;
2057
2050
  });
2058
- // Helper to refresh resolved handles from remote and merge into workbench
2059
- const refreshResolvedHandles = async () => {
2060
- try {
2061
- const snap = await runner.snapshotFull();
2062
- const remoteDef = snap?.def;
2063
- if (remoteDef && Array.isArray(remoteDef.nodes)) {
2064
- // Mutate current def in-place to avoid emitting graphChanged and causing update loop
2065
- const cur = wb.export();
2066
- const byId = new Map((remoteDef.nodes || []).map((n) => [
2067
- n.nodeId,
2068
- n,
2069
- ]));
2070
- let changed = false;
2071
- for (const n of cur.nodes) {
2072
- const rn = byId.get(n.nodeId);
2073
- if (rn && rn.resolvedHandles) {
2074
- const before = JSON.stringify(n.resolvedHandles || {});
2075
- const after = JSON.stringify(rn.resolvedHandles || {});
2076
- if (before !== after) {
2077
- n.resolvedHandles = rn.resolvedHandles;
2078
- changed = true;
2079
- }
2080
- }
2051
+ // Helper to apply resolved handles from event payload to workbench
2052
+ const applyResolvedHandles = (resolvedHandles) => {
2053
+ const cur = wb.export();
2054
+ let changed = false;
2055
+ for (const n of cur.nodes) {
2056
+ const updated = resolvedHandles[n.nodeId];
2057
+ if (updated) {
2058
+ const before = JSON.stringify(n.resolvedHandles || {});
2059
+ const after = JSON.stringify(updated);
2060
+ if (before !== after) {
2061
+ n.resolvedHandles = updated;
2062
+ changed = true;
2081
2063
  }
2082
- if (changed)
2083
- wb.refreshValidation();
2084
2064
  }
2085
2065
  }
2086
- catch { }
2066
+ if (changed)
2067
+ wb.refreshValidation();
2087
2068
  };
2088
2069
  const offRunnerValue = runner.on("value", (e) => {
2089
2070
  if (e?.io === "input") {
@@ -2165,9 +2146,9 @@ function WorkbenchProvider({ wb, runner, registry, setRegistry, overrides, uiVer
2165
2146
  return add("runner", "error")(e);
2166
2147
  });
2167
2148
  const offRunnerInvalidate = runner.on("invalidate", (e) => {
2168
- // After build/update, pull resolved handles and merge in-place (no graphChanged)
2169
- if (e?.reason === "graph-updated" || e?.reason === "graph-built") {
2170
- refreshResolvedHandles();
2149
+ // If resolvedHandles are included in the event, use them directly (more efficient)
2150
+ if (e?.resolvedHandles && Object.keys(e.resolvedHandles).length > 0) {
2151
+ applyResolvedHandles(e.resolvedHandles);
2171
2152
  }
2172
2153
  return add("runner", "invalidate")(e);
2173
2154
  });
@@ -3145,9 +3126,6 @@ function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
3145
3126
  if (!typeId || raw === undefined)
3146
3127
  return;
3147
3128
  const unwrap = (v) => isTypedOutput(v) ? getTypedOutputValue(v) : v;
3148
- const clone = (v) => typeof structuredClone === "function"
3149
- ? structuredClone(v)
3150
- : JSON.parse(JSON.stringify(v));
3151
3129
  const coerceIfNeeded = async (fromType, toType, value) => {
3152
3130
  if (!toType || toType === fromType || !runner?.coerce)
3153
3131
  return value;
@@ -3213,7 +3191,7 @@ function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
3213
3191
  typeId: elemTarget.nodeTypeId,
3214
3192
  position: { x: pos.x + (col + 1) * DX, y: pos.y + row * DY },
3215
3193
  params: {},
3216
- initialInputs: { [elemTarget.inputHandle]: clone(cv) },
3194
+ initialInputs: { [elemTarget.inputHandle]: structuredClone(cv) },
3217
3195
  });
3218
3196
  runner.update(wb.export());
3219
3197
  await runner.whenIdle();