@bian-womp/spark-workbench 0.3.87 → 0.3.89

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.
Files changed (175) hide show
  1. package/lib/cjs/index.cjs +72 -103
  2. package/lib/cjs/index.cjs.map +1 -1
  3. package/lib/cjs/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -1
  4. package/lib/esm/index.js +72 -103
  5. package/lib/esm/index.js.map +1 -1
  6. package/lib/esm/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -1
  7. package/lib/src/adapters/cli/index.d.ts +22 -0
  8. package/lib/src/adapters/cli/index.d.ts.map +1 -0
  9. package/lib/src/adapters/cli/index.js +50 -0
  10. package/lib/src/adapters/cli/index.js.map +1 -0
  11. package/lib/src/core/AbstractWorkbench.d.ts +40 -0
  12. package/lib/src/core/AbstractWorkbench.d.ts.map +1 -0
  13. package/lib/src/core/AbstractWorkbench.js +15 -0
  14. package/lib/src/core/AbstractWorkbench.js.map +1 -0
  15. package/lib/src/core/InMemoryWorkbench.d.ts +304 -0
  16. package/lib/src/core/InMemoryWorkbench.d.ts.map +1 -0
  17. package/lib/src/core/InMemoryWorkbench.js +1016 -0
  18. package/lib/src/core/InMemoryWorkbench.js.map +1 -0
  19. package/lib/src/core/contracts.d.ts +172 -0
  20. package/lib/src/core/contracts.d.ts.map +1 -0
  21. package/lib/src/core/contracts.js +2 -0
  22. package/lib/src/core/contracts.js.map +1 -0
  23. package/lib/src/core/ui-extensions.d.ts +85 -0
  24. package/lib/src/core/ui-extensions.d.ts.map +1 -0
  25. package/lib/src/core/ui-extensions.js +111 -0
  26. package/lib/src/core/ui-extensions.js.map +1 -0
  27. package/lib/src/examples/cli.d.ts +2 -0
  28. package/lib/src/examples/cli.d.ts.map +1 -0
  29. package/lib/src/examples/cli.js +244 -0
  30. package/lib/src/examples/cli.js.map +1 -0
  31. package/lib/src/examples/reactflow/App.d.ts +2 -0
  32. package/lib/src/examples/reactflow/App.d.ts.map +1 -0
  33. package/lib/src/examples/reactflow/App.js +20 -0
  34. package/lib/src/examples/reactflow/App.js.map +1 -0
  35. package/lib/src/index.d.ts +30 -0
  36. package/lib/src/index.d.ts.map +1 -0
  37. package/lib/src/index.js +30 -0
  38. package/lib/src/index.js.map +1 -0
  39. package/lib/src/misc/DebugEvents.d.ts +7 -0
  40. package/lib/src/misc/DebugEvents.d.ts.map +1 -0
  41. package/lib/src/misc/DebugEvents.js +51 -0
  42. package/lib/src/misc/DebugEvents.js.map +1 -0
  43. package/lib/src/misc/DefaultEdge.d.ts +5 -0
  44. package/lib/src/misc/DefaultEdge.d.ts.map +1 -0
  45. package/lib/src/misc/DefaultEdge.js +15 -0
  46. package/lib/src/misc/DefaultEdge.js.map +1 -0
  47. package/lib/src/misc/DefaultNode.d.ts +5 -0
  48. package/lib/src/misc/DefaultNode.d.ts.map +1 -0
  49. package/lib/src/misc/DefaultNode.js +25 -0
  50. package/lib/src/misc/DefaultNode.js.map +1 -0
  51. package/lib/src/misc/DefaultNodeContent.d.ts +4 -0
  52. package/lib/src/misc/DefaultNodeContent.d.ts.map +1 -0
  53. package/lib/src/misc/DefaultNodeContent.js +58 -0
  54. package/lib/src/misc/DefaultNodeContent.js.map +1 -0
  55. package/lib/src/misc/DefaultNodeHeader.d.ts +13 -0
  56. package/lib/src/misc/DefaultNodeHeader.d.ts.map +1 -0
  57. package/lib/src/misc/DefaultNodeHeader.js +78 -0
  58. package/lib/src/misc/DefaultNodeHeader.js.map +1 -0
  59. package/lib/src/misc/Inspector.d.ts +12 -0
  60. package/lib/src/misc/Inspector.d.ts.map +1 -0
  61. package/lib/src/misc/Inspector.js +253 -0
  62. package/lib/src/misc/Inspector.js.map +1 -0
  63. package/lib/src/misc/IssueBadge.d.ts +7 -0
  64. package/lib/src/misc/IssueBadge.d.ts.map +1 -0
  65. package/lib/src/misc/IssueBadge.js +7 -0
  66. package/lib/src/misc/IssueBadge.js.map +1 -0
  67. package/lib/src/misc/KeyboardShortcutToast.d.ts +16 -0
  68. package/lib/src/misc/KeyboardShortcutToast.d.ts.map +1 -0
  69. package/lib/src/misc/KeyboardShortcutToast.js +40 -0
  70. package/lib/src/misc/KeyboardShortcutToast.js.map +1 -0
  71. package/lib/src/misc/NodeHandles.d.ts +18 -0
  72. package/lib/src/misc/NodeHandles.d.ts.map +1 -0
  73. package/lib/src/misc/NodeHandles.js +67 -0
  74. package/lib/src/misc/NodeHandles.js.map +1 -0
  75. package/lib/src/misc/SelectionActiveSync.d.ts +10 -0
  76. package/lib/src/misc/SelectionActiveSync.d.ts.map +1 -0
  77. package/lib/src/misc/SelectionActiveSync.js +21 -0
  78. package/lib/src/misc/SelectionActiveSync.js.map +1 -0
  79. package/lib/src/misc/WorkbenchCanvas.d.ts +23 -0
  80. package/lib/src/misc/WorkbenchCanvas.d.ts.map +1 -0
  81. package/lib/src/misc/WorkbenchCanvas.js +669 -0
  82. package/lib/src/misc/WorkbenchCanvas.js.map +1 -0
  83. package/lib/src/misc/WorkbenchStudio.d.ts +43 -0
  84. package/lib/src/misc/WorkbenchStudio.d.ts.map +1 -0
  85. package/lib/src/misc/WorkbenchStudio.js +463 -0
  86. package/lib/src/misc/WorkbenchStudio.js.map +1 -0
  87. package/lib/src/misc/constants.d.ts +4 -0
  88. package/lib/src/misc/constants.d.ts.map +1 -0
  89. package/lib/src/misc/constants.js +5 -0
  90. package/lib/src/misc/constants.js.map +1 -0
  91. package/lib/src/misc/context/WorkbenchContext.d.ts +133 -0
  92. package/lib/src/misc/context/WorkbenchContext.d.ts.map +1 -0
  93. package/lib/src/misc/context/WorkbenchContext.js +9 -0
  94. package/lib/src/misc/context/WorkbenchContext.js.map +1 -0
  95. package/lib/src/misc/context/WorkbenchContext.provider.d.ts +12 -0
  96. package/lib/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -0
  97. package/lib/src/misc/context/WorkbenchContext.provider.js +995 -0
  98. package/lib/src/misc/context/WorkbenchContext.provider.js.map +1 -0
  99. package/lib/src/misc/context-menu/ContextMenuButton.d.ts +8 -0
  100. package/lib/src/misc/context-menu/ContextMenuButton.d.ts.map +1 -0
  101. package/lib/src/misc/context-menu/ContextMenuButton.js +10 -0
  102. package/lib/src/misc/context-menu/ContextMenuButton.js.map +1 -0
  103. package/lib/src/misc/context-menu/ContextMenuHandlers.d.ts +85 -0
  104. package/lib/src/misc/context-menu/ContextMenuHandlers.d.ts.map +1 -0
  105. package/lib/src/misc/context-menu/ContextMenuHandlers.js +2 -0
  106. package/lib/src/misc/context-menu/ContextMenuHandlers.js.map +1 -0
  107. package/lib/src/misc/context-menu/ContextMenuHelpers.d.ts +45 -0
  108. package/lib/src/misc/context-menu/ContextMenuHelpers.d.ts.map +1 -0
  109. package/lib/src/misc/context-menu/ContextMenuHelpers.js +182 -0
  110. package/lib/src/misc/context-menu/ContextMenuHelpers.js.map +1 -0
  111. package/lib/src/misc/context-menu/DefaultContextMenu.d.ts +3 -0
  112. package/lib/src/misc/context-menu/DefaultContextMenu.d.ts.map +1 -0
  113. package/lib/src/misc/context-menu/DefaultContextMenu.js +111 -0
  114. package/lib/src/misc/context-menu/DefaultContextMenu.js.map +1 -0
  115. package/lib/src/misc/context-menu/NodeContextMenu.d.ts +3 -0
  116. package/lib/src/misc/context-menu/NodeContextMenu.d.ts.map +1 -0
  117. package/lib/src/misc/context-menu/NodeContextMenu.js +51 -0
  118. package/lib/src/misc/context-menu/NodeContextMenu.js.map +1 -0
  119. package/lib/src/misc/context-menu/SelectionContextMenu.d.ts +3 -0
  120. package/lib/src/misc/context-menu/SelectionContextMenu.d.ts.map +1 -0
  121. package/lib/src/misc/context-menu/SelectionContextMenu.js +47 -0
  122. package/lib/src/misc/context-menu/SelectionContextMenu.js.map +1 -0
  123. package/lib/src/misc/hooks.d.ts +18 -0
  124. package/lib/src/misc/hooks.d.ts.map +1 -0
  125. package/lib/src/misc/hooks.js +275 -0
  126. package/lib/src/misc/hooks.js.map +1 -0
  127. package/lib/src/misc/layout.d.ts +117 -0
  128. package/lib/src/misc/layout.d.ts.map +1 -0
  129. package/lib/src/misc/layout.js +205 -0
  130. package/lib/src/misc/layout.js.map +1 -0
  131. package/lib/src/misc/load.d.ts +5 -0
  132. package/lib/src/misc/load.d.ts.map +1 -0
  133. package/lib/src/misc/load.js +106 -0
  134. package/lib/src/misc/load.js.map +1 -0
  135. package/lib/src/misc/mapping.d.ts +128 -0
  136. package/lib/src/misc/mapping.d.ts.map +1 -0
  137. package/lib/src/misc/mapping.js +270 -0
  138. package/lib/src/misc/mapping.js.map +1 -0
  139. package/lib/src/misc/merge-utils.d.ts +12 -0
  140. package/lib/src/misc/merge-utils.d.ts.map +1 -0
  141. package/lib/src/misc/merge-utils.js +51 -0
  142. package/lib/src/misc/merge-utils.js.map +1 -0
  143. package/lib/src/misc/thumbnail-utils.d.ts +53 -0
  144. package/lib/src/misc/thumbnail-utils.d.ts.map +1 -0
  145. package/lib/src/misc/thumbnail-utils.js +629 -0
  146. package/lib/src/misc/thumbnail-utils.js.map +1 -0
  147. package/lib/src/misc/types.d.ts +18 -0
  148. package/lib/src/misc/types.d.ts.map +1 -0
  149. package/lib/src/misc/types.js +2 -0
  150. package/lib/src/misc/types.js.map +1 -0
  151. package/lib/src/misc/value.d.ts +16 -0
  152. package/lib/src/misc/value.d.ts.map +1 -0
  153. package/lib/src/misc/value.js +114 -0
  154. package/lib/src/misc/value.js.map +1 -0
  155. package/lib/src/misc/viewport-utils.d.ts +6 -0
  156. package/lib/src/misc/viewport-utils.d.ts.map +1 -0
  157. package/lib/src/misc/viewport-utils.js +18 -0
  158. package/lib/src/misc/viewport-utils.js.map +1 -0
  159. package/lib/src/runtime/AbstractGraphRunner.d.ts +61 -0
  160. package/lib/src/runtime/AbstractGraphRunner.d.ts.map +1 -0
  161. package/lib/src/runtime/AbstractGraphRunner.js +63 -0
  162. package/lib/src/runtime/AbstractGraphRunner.js.map +1 -0
  163. package/lib/src/runtime/IGraphRunner.d.ts +100 -0
  164. package/lib/src/runtime/IGraphRunner.d.ts.map +1 -0
  165. package/lib/src/runtime/IGraphRunner.js +2 -0
  166. package/lib/src/runtime/IGraphRunner.js.map +1 -0
  167. package/lib/src/runtime/LocalGraphRunner.d.ts +60 -0
  168. package/lib/src/runtime/LocalGraphRunner.d.ts.map +1 -0
  169. package/lib/src/runtime/LocalGraphRunner.js +294 -0
  170. package/lib/src/runtime/LocalGraphRunner.js.map +1 -0
  171. package/lib/src/runtime/RemoteGraphRunner.d.ts +109 -0
  172. package/lib/src/runtime/RemoteGraphRunner.d.ts.map +1 -0
  173. package/lib/src/runtime/RemoteGraphRunner.js +696 -0
  174. package/lib/src/runtime/RemoteGraphRunner.js.map +1 -0
  175. package/package.json +4 -4
@@ -0,0 +1,294 @@
1
+ import { GraphBuilder, LocalEngine, parseJsonPath, setValueAtPathWithCreation, buildValueConverter, convertSnapshot, } from "@bian-womp/spark-graph";
2
+ import { AbstractGraphRunner } from "./AbstractGraphRunner";
3
+ // Counter for generating readable runner IDs
4
+ let localRunnerCounter = 0;
5
+ export class LocalGraphRunner extends AbstractGraphRunner {
6
+ constructor(registry) {
7
+ super({ kind: "local" }, registry);
8
+ this.extData = {};
9
+ this.setEnvironment = (env, opts) => {
10
+ if (!this.runtime)
11
+ return;
12
+ // Use requestPause for dry mode to temporarily pause without affecting base run mode
13
+ const releasePause = opts?.dry ? this.runtime.requestPause() : null;
14
+ try {
15
+ if (opts?.merge) {
16
+ const current = this.runtime.getEnvironment();
17
+ const next = { ...(current || {}), ...(env || {}) };
18
+ this.runtime.setEnvironment(next);
19
+ }
20
+ else {
21
+ this.runtime.setEnvironment(env);
22
+ }
23
+ }
24
+ finally {
25
+ releasePause?.();
26
+ }
27
+ };
28
+ this.getEnvironment = () => {
29
+ return this.runtime?.getEnvironment?.();
30
+ };
31
+ // Generate readable ID for this runner instance (e.g., local-001, local-002)
32
+ localRunnerCounter++;
33
+ this.runnerId = `local-${String(localRunnerCounter).padStart(3, "0")}`;
34
+ console.info(`[LocalGraphRunner] Created runner with ID: ${this.runnerId}`);
35
+ this.emit("transport", { runnerId: this.runnerId, state: "local" });
36
+ }
37
+ build(def, opts) {
38
+ // Rebuilding should not leave the previous runtime alive.
39
+ // In practice, launch() calls build() and can be triggered multiple times for the same UI "flow".
40
+ // Disposing here avoids multiple GraphRuntime instances accumulating and emitting events.
41
+ if (this.runtime) {
42
+ console.info(`[LocalGraphRunner] Disposing previous runtime before building new one`);
43
+ this.runtime.dispose();
44
+ this.runtime = undefined;
45
+ }
46
+ const builder = new GraphBuilder(this.registry);
47
+ this.runtime = builder.build(def, opts);
48
+ // Signal UI that freshly built graph should be considered invalidated
49
+ this.emit("invalidate", { reason: "graph-built" });
50
+ }
51
+ update(def, options) {
52
+ if (!this.runtime)
53
+ return;
54
+ // Use requestPause for dry mode to temporarily pause without affecting base run mode
55
+ const releasePause = options?.dry ? this.runtime.requestPause() : null;
56
+ try {
57
+ this.runtime.update(def, this.registry);
58
+ this.emit("invalidate", { reason: "graph-updated" });
59
+ }
60
+ finally {
61
+ releasePause?.();
62
+ }
63
+ }
64
+ launch(def, opts) {
65
+ if (this.engine) {
66
+ this.engine.dispose();
67
+ this.engine = undefined;
68
+ }
69
+ this.build(def);
70
+ if (!this.runtime)
71
+ throw new Error("Runtime not built");
72
+ // Use the async method to create engine
73
+ this.createAndLaunchEngine(opts).catch((err) => {
74
+ console.error("Failed to launch engine:", err);
75
+ const errorMessage = err instanceof Error ? err.message : String(err);
76
+ this.emit("error", {
77
+ kind: "system",
78
+ message: errorMessage,
79
+ err: err instanceof Error ? err : new Error(errorMessage),
80
+ });
81
+ });
82
+ }
83
+ async createAndLaunchEngine(opts) {
84
+ if (!this.runtime)
85
+ throw new Error("Runtime not built");
86
+ // Use shared engine factory
87
+ this.engine = new LocalEngine(this.runtime, opts?.runMode);
88
+ if (!this.engine)
89
+ throw new Error("Failed to create engine");
90
+ this.engine.on("value", (e) => this.emit("value", e));
91
+ this.engine.on("error", (e) => this.emit("error", e));
92
+ this.engine.on("invalidate", (e) => this.emit("invalidate", e));
93
+ this.engine.on("stats", (e) => this.emit("stats", e));
94
+ this.engine.launch(opts?.invalidate, opts?.runMode, opts?.startPaused);
95
+ const runMode = opts?.runMode ?? "manual";
96
+ this.emit("status", { running: true, runMode });
97
+ for (const [nodeId, map] of Object.entries(this.stagedInputs)) {
98
+ this.engine.setInputs(nodeId, map);
99
+ }
100
+ }
101
+ async computeNode(nodeId) {
102
+ if (this.engine)
103
+ await this.engine.computeNode(nodeId);
104
+ }
105
+ async runFromHere(nodeId) {
106
+ if (this.engine)
107
+ await this.engine.runFromHere(nodeId);
108
+ }
109
+ cancelNodeRuns(nodeIds) {
110
+ if (this.engine) {
111
+ this.engine.cancelNodeRuns(nodeIds);
112
+ }
113
+ }
114
+ getOutputs(def) {
115
+ const out = {};
116
+ if (!this.engine)
117
+ return out;
118
+ for (const n of def.nodes) {
119
+ const desc = this.registry.nodes.get(n.typeId);
120
+ const handles = Object.keys(desc?.outputs ?? {});
121
+ for (const h of handles) {
122
+ const v = this.engine.getOutput(n.nodeId, h);
123
+ if (v !== undefined) {
124
+ if (!out[n.nodeId])
125
+ out[n.nodeId] = {};
126
+ out[n.nodeId][h] = v;
127
+ }
128
+ }
129
+ }
130
+ return out;
131
+ }
132
+ getInputs(def) {
133
+ const out = {};
134
+ for (const n of def.nodes) {
135
+ const staged = this.stagedInputs[n.nodeId] ?? {};
136
+ const runtimeInputs = this.runtime ? (this.runtime.getNodeData?.(n.nodeId)?.inputs ?? {}) : {};
137
+ // Build inbound handle set for this node from current def
138
+ const inbound = new Set(def.edges.filter((e) => e.target.nodeId === n.nodeId).map((e) => e.target.handle));
139
+ // Merge staged only for non-inbound handles so UI reflects runtime values for wired inputs
140
+ const merged = { ...runtimeInputs };
141
+ for (const [h, v] of Object.entries(staged)) {
142
+ if (!inbound.has(h))
143
+ merged[h] = v;
144
+ }
145
+ if (Object.keys(merged).length > 0)
146
+ out[n.nodeId] = merged;
147
+ }
148
+ return out;
149
+ }
150
+ triggerExternal(nodeId, event, options) {
151
+ // Engine handles dry option via AbstractEngine
152
+ this.engine?.triggerExternal(nodeId, event, options);
153
+ }
154
+ // Batch update multiple inputs on a node and trigger a single run
155
+ setInputs(nodeId, inputs, options) {
156
+ if (!inputs)
157
+ return;
158
+ if (!this.stagedInputs[nodeId])
159
+ this.stagedInputs[nodeId] = {};
160
+ for (const [handle, value] of Object.entries(inputs)) {
161
+ if (value === undefined) {
162
+ delete this.stagedInputs[nodeId][handle];
163
+ }
164
+ else {
165
+ this.stagedInputs[nodeId][handle] = value;
166
+ }
167
+ }
168
+ if (this.engine) {
169
+ // Engine handles dry option via AbstractEngine
170
+ this.engine.setInputs(nodeId, inputs, options);
171
+ }
172
+ else {
173
+ // Not running: emit a single synthetic value event per handle; UI will coalesce
174
+ // Note: dry option doesn't apply when engine doesn't exist (no execution to prevent)
175
+ console.warn("Engine does not exists");
176
+ for (const [handle, value] of Object.entries(inputs)) {
177
+ this.emit("value", { nodeId, handle, value, io: "input" });
178
+ }
179
+ }
180
+ }
181
+ copyOutputs(fromNodeId, toNodeId, options) {
182
+ if (this.engine) {
183
+ this.engine.copyOutputs(fromNodeId, toNodeId, options);
184
+ }
185
+ }
186
+ async setExtData(data) {
187
+ if (!data || typeof data !== "object") {
188
+ this.extData = {};
189
+ return;
190
+ }
191
+ this.extData = { ...this.extData, ...data };
192
+ }
193
+ async updateExtData(updates) {
194
+ if (!this.extData || typeof this.extData !== "object" || Array.isArray(this.extData)) {
195
+ this.extData = {};
196
+ }
197
+ let hasCustomUpdate = false;
198
+ for (const { path, value } of updates) {
199
+ const pathSegments = parseJsonPath(path);
200
+ const updated = setValueAtPathWithCreation(this.extData, pathSegments, value);
201
+ if (updated && pathSegments.length > 0 && pathSegments[0] === "custom") {
202
+ hasCustomUpdate = true;
203
+ }
204
+ }
205
+ return hasCustomUpdate;
206
+ }
207
+ async snapshotFull() {
208
+ const def = undefined; // UI will supply def/positions on download for local
209
+ const inputs = this.getInputs(this.runtime
210
+ ? {
211
+ nodes: Array.from(this.runtime.getNodeIds()).map((id) => ({
212
+ nodeId: id,
213
+ typeId: "",
214
+ })),
215
+ edges: [],
216
+ }
217
+ : { nodes: [], edges: [] });
218
+ const outputs = this.getOutputs(this.runtime
219
+ ? {
220
+ nodes: Array.from(this.runtime.getNodeIds()).map((id) => ({
221
+ nodeId: id,
222
+ typeId: "",
223
+ })),
224
+ edges: [],
225
+ }
226
+ : { nodes: [], edges: [] });
227
+ const environment = this.getEnvironment() || {};
228
+ const extData = this.extData;
229
+ return { def, environment, inputs, outputs, extData };
230
+ }
231
+ async applySnapshotFull(payload, options) {
232
+ if (payload.def && !options?.skipBuild) {
233
+ this.build(payload.def);
234
+ }
235
+ this.setEnvironment?.(payload.environment || {}, { merge: false });
236
+ this.hydrate(payload, { dry: options?.dry });
237
+ if (payload.extData) {
238
+ await this.setExtData(payload.extData);
239
+ }
240
+ }
241
+ async convertSnapshot(converterConfig, options) {
242
+ const snapshot = await this.snapshotFull();
243
+ const converter = buildValueConverter(converterConfig);
244
+ const converted = convertSnapshot(snapshot, converter);
245
+ await this.applySnapshotFull(converted, { skipBuild: true, dry: options?.dry });
246
+ return converted;
247
+ }
248
+ async pause() {
249
+ if (!this.runtime)
250
+ return;
251
+ this.runtime.pause();
252
+ }
253
+ async resume() {
254
+ if (!this.runtime)
255
+ return;
256
+ this.runtime.resume();
257
+ }
258
+ hydrate(snapshot, opts) {
259
+ // Hydrate via runtime for exact restore (this emits events on runtime emitter)
260
+ this.runtime?.hydrate({
261
+ inputs: snapshot.inputs || {},
262
+ outputs: snapshot.outputs || {},
263
+ });
264
+ // Also emit directly from runner to ensure UI gets events even if engine isn't running
265
+ for (const [nodeId, map] of Object.entries(snapshot.inputs || {})) {
266
+ for (const [handle, value] of Object.entries(map || {})) {
267
+ this.emit("value", {
268
+ nodeId,
269
+ handle,
270
+ value,
271
+ io: "input",
272
+ dry: opts?.dry,
273
+ });
274
+ }
275
+ }
276
+ for (const [nodeId, map] of Object.entries(snapshot.outputs || {})) {
277
+ for (const [handle, value] of Object.entries(map || {})) {
278
+ this.emit("value", {
279
+ nodeId,
280
+ handle,
281
+ value,
282
+ io: "output",
283
+ dry: opts?.dry,
284
+ });
285
+ }
286
+ }
287
+ }
288
+ dispose() {
289
+ super.dispose();
290
+ this.runtime = undefined;
291
+ this.emit("transport", { runnerId: this.runnerId, state: "local" });
292
+ }
293
+ }
294
+ //# sourceMappingURL=LocalGraphRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalGraphRunner.js","sourceRoot":"","sources":["../../../src/runtime/LocalGraphRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import type { RuntimeSnapshotFull, GraphDefinition, RunnerOptions, RuntimeHistoryInfo, Viewport, RuntimeSnapshot, RunMode, ConverterConfig } from "@bian-womp/spark-protocol";
2
+ import { RemoteEngine, RemoteRuntimeClient } from "@bian-womp/spark-remote";
3
+ import { RemoteExecutionBackend, RunnerEventName, RunnerEventListener } from "./IGraphRunner";
4
+ import { AbstractGraphRunner } from "./AbstractGraphRunner";
5
+ export declare class RemoteGraphRunner extends AbstractGraphRunner {
6
+ protected lastDef?: GraphDefinition;
7
+ protected client?: RemoteRuntimeClient;
8
+ protected engine?: RemoteEngine;
9
+ private clientPromise?;
10
+ private transportStatusUnsubscribe?;
11
+ private disposed;
12
+ private currentTransportStatus;
13
+ readonly runnerId: string;
14
+ private valueCache;
15
+ private listenersBound;
16
+ private registryFetched;
17
+ private registryBootstrapPromise?;
18
+ private registryBootstrapResolve?;
19
+ private registryBootstrapReject?;
20
+ private readonly REGISTRY_BOOTSTRAP_TIMEOUT_MS;
21
+ /**
22
+ * Generate cache key that includes io type to prevent collisions
23
+ * between input and output handles with the same name
24
+ */
25
+ private getCacheKey;
26
+ private applyRegistryDescriptor;
27
+ private isRecord;
28
+ private isRegistryEvent;
29
+ private waitForRegistryBootstrap;
30
+ /**
31
+ * Build RemoteRuntimeClient config from RemoteExecutionBackend config.
32
+ */
33
+ private buildClientConfig;
34
+ /**
35
+ * Setup event subscriptions for the client.
36
+ */
37
+ private setupClientSubscriptions;
38
+ protected ensureClient(): Promise<RemoteRuntimeClient>;
39
+ constructor(backend: RemoteExecutionBackend);
40
+ build(def: GraphDefinition): void;
41
+ update(def: GraphDefinition, options?: {
42
+ dry?: boolean;
43
+ }): Promise<void>;
44
+ launch(def: GraphDefinition, opts: RunnerOptions): void;
45
+ protected createAndLaunchEngine(opts?: RunnerOptions): Promise<void>;
46
+ /**
47
+ * Launch using an existing backend runtime that has already been built and hydrated.
48
+ * This is used when resuming from a snapshot where the backend has already applied
49
+ * ApplySnapshotFull (which builds the graph and hydrates inputs/outputs).
50
+ * Unlike launch(), this method does NOT call client.build() to avoid destroying
51
+ * the runtime state that was just restored.
52
+ */
53
+ launchExisting(def: GraphDefinition, opts: RunnerOptions): void;
54
+ setRunMode(runMode: RunMode): void;
55
+ computeNode(nodeId: string): Promise<void>;
56
+ runFromHere(nodeId: string): Promise<void>;
57
+ cancelNodeRuns(nodeIds: string[]): Promise<void>;
58
+ setInputs(nodeId: string, inputs: Record<string, unknown>, options?: {
59
+ dry?: boolean;
60
+ }): Promise<void>;
61
+ copyOutputs(fromNodeId: string, toNodeId: string, options?: {
62
+ dry?: boolean;
63
+ }): Promise<void>;
64
+ triggerExternal(nodeId: string, event: unknown, options?: {
65
+ dry?: boolean;
66
+ }): Promise<void>;
67
+ setViewport(viewport: Viewport): Promise<void>;
68
+ coerce(from: string, to: string, value: unknown): Promise<unknown>;
69
+ setExtData(data: Record<string, unknown>): Promise<void>;
70
+ updateExtData(updates: Array<{
71
+ path: string;
72
+ value: unknown;
73
+ }>): Promise<boolean>;
74
+ commit(reason?: string): Promise<RuntimeHistoryInfo | undefined>;
75
+ undo(): Promise<boolean>;
76
+ redo(): Promise<boolean>;
77
+ snapshotFull(): Promise<RuntimeSnapshotFull>;
78
+ applySnapshotFull(payload: RuntimeSnapshotFull, options?: {
79
+ skipBuild?: boolean;
80
+ dry?: boolean;
81
+ }): Promise<void>;
82
+ convertSnapshot(converterConfig: ConverterConfig, options?: {
83
+ dry?: boolean;
84
+ }): Promise<RuntimeSnapshotFull>;
85
+ pause(): Promise<void>;
86
+ resume(): Promise<void>;
87
+ /**
88
+ * Hydrates the local valueCache from a snapshot and emits value events.
89
+ * This ensures the UI can display inputs/outputs immediately without waiting
90
+ * for value events from the remote backend.
91
+ */
92
+ hydrateValueCache(snapshot: RuntimeSnapshot, opts?: {
93
+ dry?: boolean;
94
+ }): void;
95
+ setEnvironment(env: Record<string, unknown>, opts?: {
96
+ merge?: boolean;
97
+ dry?: boolean;
98
+ }): Promise<void>;
99
+ getEnvironment(): Record<string, unknown> | undefined;
100
+ getOutputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
101
+ getInputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
102
+ dispose(): Promise<void>;
103
+ /**
104
+ * Override on() to emit current transport status immediately when a new listener subscribes.
105
+ * This ensures listeners don't miss the current status when they attach after connection.
106
+ */
107
+ on<K extends RunnerEventName>(event: K, handler: RunnerEventListener<K>): () => void;
108
+ }
109
+ //# sourceMappingURL=RemoteGraphRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteGraphRunner.d.ts","sourceRoot":"","sources":["../../../src/runtime/RemoteGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,OAAO,EACP,eAAe,EAOhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,mBAAmB,EAGpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EAGtB,eAAe,EACf,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACvC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAChC,OAAO,CAAC,aAAa,CAAC,CAA+B;IACrD,OAAO,CAAC,0BAA0B,CAAC,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,sBAAsB,CAAkB;IAChD,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC,OAAO,CAAC,UAAU,CAAiE;IAEnF,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,wBAAwB,CAAC,CAAgB;IACjD,OAAO,CAAC,wBAAwB,CAAC,CAAa;IAC9C,OAAO,CAAC,uBAAuB,CAAC,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAS;IAEvD;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,uBAAuB;IAmE/B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,wBAAwB;IAwBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;cAsBhB,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;gBA8EhD,OAAO,EAAE,sBAAsB;IAuE3C,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAE3B,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9E,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;cAsCvC,qBAAqB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1E;;;;;;OAMG;IACH,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAiB/D,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO5B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7F,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3F,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IASlE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjF,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAWhE,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IASxB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IASxB,YAAY;IASZ,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE;IAShG,eAAe,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAU5G,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAiCtE,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5G,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;IA6BlE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC9B;;;OAGG;IACH,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;CAerF"}