@bian-womp/spark-remote 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 (79) hide show
  1. package/lib/cjs/index.cjs +13 -3
  2. package/lib/cjs/index.cjs.map +1 -1
  3. package/lib/cjs/src/server/ServerRuntimeAdapter.d.ts.map +1 -1
  4. package/lib/esm/index.js +13 -3
  5. package/lib/esm/index.js.map +1 -1
  6. package/lib/esm/src/server/ServerRuntimeAdapter.d.ts.map +1 -1
  7. package/lib/src/RemoteEngine.d.ts +35 -0
  8. package/lib/src/RemoteEngine.d.ts.map +1 -0
  9. package/lib/src/RemoteEngine.js +115 -0
  10. package/lib/src/RemoteEngine.js.map +1 -0
  11. package/lib/src/RemoteGraphLifecycleApi.d.ts +47 -0
  12. package/lib/src/RemoteGraphLifecycleApi.d.ts.map +1 -0
  13. package/lib/src/RemoteGraphLifecycleApi.js +190 -0
  14. package/lib/src/RemoteGraphLifecycleApi.js.map +1 -0
  15. package/lib/src/RemoteRuntimeClient.d.ts +85 -0
  16. package/lib/src/RemoteRuntimeClient.d.ts.map +1 -0
  17. package/lib/src/RemoteRuntimeClient.js +212 -0
  18. package/lib/src/RemoteRuntimeClient.js.map +1 -0
  19. package/lib/src/examples/http-polling.d.ts +2 -0
  20. package/lib/src/examples/http-polling.d.ts.map +1 -0
  21. package/lib/src/examples/http-polling.js +67 -0
  22. package/lib/src/examples/http-polling.js.map +1 -0
  23. package/lib/src/examples/shared.d.ts +6 -0
  24. package/lib/src/examples/shared.d.ts.map +1 -0
  25. package/lib/src/examples/shared.js +71 -0
  26. package/lib/src/examples/shared.js.map +1 -0
  27. package/lib/src/examples/unix-socket.d.ts +2 -0
  28. package/lib/src/examples/unix-socket.d.ts.map +1 -0
  29. package/lib/src/examples/unix-socket.js +67 -0
  30. package/lib/src/examples/unix-socket.js.map +1 -0
  31. package/lib/src/examples/websocket.d.ts +2 -0
  32. package/lib/src/examples/websocket.d.ts.map +1 -0
  33. package/lib/src/examples/websocket.js +67 -0
  34. package/lib/src/examples/websocket.js.map +1 -0
  35. package/lib/src/index.d.ts +13 -0
  36. package/lib/src/index.d.ts.map +1 -0
  37. package/lib/src/index.js +12 -0
  38. package/lib/src/index.js.map +1 -0
  39. package/lib/src/server/ServerCommandHandler.d.ts +51 -0
  40. package/lib/src/server/ServerCommandHandler.d.ts.map +1 -0
  41. package/lib/src/server/ServerCommandHandler.js +325 -0
  42. package/lib/src/server/ServerCommandHandler.js.map +1 -0
  43. package/lib/src/server/ServerRuntimeAdapter.d.ts +27 -0
  44. package/lib/src/server/ServerRuntimeAdapter.d.ts.map +1 -0
  45. package/lib/src/server/ServerRuntimeAdapter.js +446 -0
  46. package/lib/src/server/ServerRuntimeAdapter.js.map +1 -0
  47. package/lib/src/server/errors.d.ts +3 -0
  48. package/lib/src/server/errors.d.ts.map +1 -0
  49. package/lib/src/server/errors.js +44 -0
  50. package/lib/src/server/errors.js.map +1 -0
  51. package/lib/src/transport/HttpPollingTransport.d.ts +16 -0
  52. package/lib/src/transport/HttpPollingTransport.d.ts.map +1 -0
  53. package/lib/src/transport/HttpPollingTransport.js +83 -0
  54. package/lib/src/transport/HttpPollingTransport.js.map +1 -0
  55. package/lib/src/transport/Seq.d.ts +6 -0
  56. package/lib/src/transport/Seq.d.ts.map +1 -0
  57. package/lib/src/transport/Seq.js +18 -0
  58. package/lib/src/transport/Seq.js.map +1 -0
  59. package/lib/src/transport/Transport.d.ts +26 -0
  60. package/lib/src/transport/Transport.d.ts.map +1 -0
  61. package/lib/src/transport/Transport.js +2 -0
  62. package/lib/src/transport/Transport.js.map +1 -0
  63. package/lib/src/transport/UnixSocketTransport.d.ts +18 -0
  64. package/lib/src/transport/UnixSocketTransport.d.ts.map +1 -0
  65. package/lib/src/transport/UnixSocketTransport.js +96 -0
  66. package/lib/src/transport/UnixSocketTransport.js.map +1 -0
  67. package/lib/src/transport/WebSocketConnector.d.ts +63 -0
  68. package/lib/src/transport/WebSocketConnector.d.ts.map +1 -0
  69. package/lib/src/transport/WebSocketConnector.js +2 -0
  70. package/lib/src/transport/WebSocketConnector.js.map +1 -0
  71. package/lib/src/transport/WebSocketTransport.d.ts +44 -0
  72. package/lib/src/transport/WebSocketTransport.d.ts.map +1 -0
  73. package/lib/src/transport/WebSocketTransport.js +226 -0
  74. package/lib/src/transport/WebSocketTransport.js.map +1 -0
  75. package/lib/src/utils/inputEncoding.d.ts +7 -0
  76. package/lib/src/utils/inputEncoding.d.ts.map +1 -0
  77. package/lib/src/utils/inputEncoding.js +19 -0
  78. package/lib/src/utils/inputEncoding.js.map +1 -0
  79. package/package.json +3 -3
@@ -0,0 +1,325 @@
1
+ import { summarize, serializeError } from "./errors";
2
+ import { decodeInputsFromTransport } from "../utils/inputEncoding";
3
+ export class ServerCommandHandler {
4
+ constructor(adapter, options) {
5
+ this.adapter = adapter;
6
+ this.options = options;
7
+ this.middlewares = [];
8
+ }
9
+ /**
10
+ * Register middleware to preprocess commands before handling.
11
+ * Middlewares are executed in registration order.
12
+ */
13
+ use(middleware) {
14
+ this.middlewares.push(middleware);
15
+ }
16
+ /**
17
+ * Handle command with error handling and middleware support.
18
+ */
19
+ async handleCommand(env, ack) {
20
+ try {
21
+ // Execute middlewares in sequence, then process command
22
+ await this.executeMiddlewares(env, async () => {
23
+ await this.processCommand(env, ack);
24
+ });
25
+ }
26
+ catch (err) {
27
+ this.handleError(env, err);
28
+ }
29
+ }
30
+ /**
31
+ * Execute middlewares in sequence, then call the final handler.
32
+ */
33
+ async executeMiddlewares(env, finalHandler) {
34
+ let index = 0;
35
+ const next = async () => {
36
+ if (index >= this.middlewares.length) {
37
+ await finalHandler();
38
+ return;
39
+ }
40
+ const middleware = this.middlewares[index++];
41
+ await middleware(env, next);
42
+ };
43
+ await next();
44
+ }
45
+ /**
46
+ * Process the command by routing to the appropriate handler.
47
+ */
48
+ async processCommand(env, ack) {
49
+ const msg = env.message;
50
+ switch (msg.type) {
51
+ case "Build": {
52
+ this.logCommand("Build", env, {
53
+ nodes: msg.payload.def.nodes?.length ?? 0,
54
+ edges: msg.payload.def.edges?.length ?? 0,
55
+ envKeys: Object.keys(msg.payload.environment ?? {}).join(","),
56
+ });
57
+ await this.adapter.build(msg.payload.def, msg.payload.environment);
58
+ ack();
59
+ break;
60
+ }
61
+ case "Update": {
62
+ const dry = msg.dry;
63
+ this.logCommand("Update", env, {
64
+ nodes: msg.payload.def.nodes?.length ?? 0,
65
+ edges: msg.payload.def.edges?.length ?? 0,
66
+ dry: !!dry,
67
+ });
68
+ await this.adapter.update(msg.payload.def, { dry });
69
+ ack();
70
+ break;
71
+ }
72
+ case "SetEnvironment": {
73
+ const dry = msg.dry;
74
+ this.logCommand("SetEnvironment", env, dry ? { dry: true } : undefined);
75
+ await this.adapter.setEnvironment(msg.payload.environment, {
76
+ merge: Boolean(msg.payload.merge),
77
+ dry,
78
+ });
79
+ ack();
80
+ break;
81
+ }
82
+ case "SetInputs": {
83
+ const dry = msg.dry;
84
+ this.logCommand("SetInputs", env, {
85
+ nodeId: msg.payload.nodeId,
86
+ keys: Object.keys(msg.payload.inputs || {}).join(","),
87
+ dry: !!dry,
88
+ });
89
+ const nodeId = msg.payload.nodeId;
90
+ const inputs = decodeInputsFromTransport(msg.payload.inputs);
91
+ await this.adapter.setInputs(nodeId, inputs, { dry });
92
+ ack();
93
+ break;
94
+ }
95
+ case "CopyOutputs": {
96
+ const dry = msg.dry;
97
+ this.logCommand("CopyOutputs", env, {
98
+ fromNodeId: msg.payload.fromNodeId,
99
+ toNodeId: msg.payload.toNodeId,
100
+ dry: !!dry,
101
+ });
102
+ await this.adapter.copyOutputs(msg.payload.fromNodeId, msg.payload.toNodeId, { dry });
103
+ ack();
104
+ break;
105
+ }
106
+ case "TriggerExternal": {
107
+ const dry = msg.dry;
108
+ this.logCommand("TriggerExternal", env, {
109
+ nodeId: msg.payload.nodeId,
110
+ event: summarize(msg.payload.event),
111
+ dry: !!dry,
112
+ });
113
+ await this.adapter.triggerExternal(msg.payload.nodeId, msg.payload.event, { dry });
114
+ ack();
115
+ break;
116
+ }
117
+ // SetViewport is handled by middleware before reaching here
118
+ // It's not a standard Command type, so we handle it in middleware
119
+ case "Launch": {
120
+ const launchPayload = msg.payload;
121
+ this.logCommand("Launch", env, {
122
+ runMode: launchPayload.runMode,
123
+ invalidate: launchPayload.invalidate,
124
+ });
125
+ await this.adapter.launch(launchPayload);
126
+ ack();
127
+ break;
128
+ }
129
+ case "SetRunMode": {
130
+ const setRunModePayload = msg.payload;
131
+ this.logCommand("SetRunMode", env, setRunModePayload);
132
+ await this.adapter.setRunMode(setRunModePayload.runMode);
133
+ ack();
134
+ break;
135
+ }
136
+ case "ComputeNode": {
137
+ const computeNodePayload = msg.payload;
138
+ this.logCommand("ComputeNode", env, computeNodePayload);
139
+ await this.adapter.computeNode(computeNodePayload.nodeId);
140
+ ack();
141
+ break;
142
+ }
143
+ case "RunFromHere": {
144
+ this.logCommand("RunFromHere", env, {
145
+ nodeId: msg.payload.nodeId,
146
+ });
147
+ await this.adapter.runFromHere(msg.payload.nodeId);
148
+ ack();
149
+ break;
150
+ }
151
+ case "CancelNodeRuns": {
152
+ const cancelPayload = msg.payload;
153
+ this.logCommand("CancelNodeRuns", env, cancelPayload);
154
+ await this.adapter.cancelNodeRuns(cancelPayload.nodeIds);
155
+ ack();
156
+ break;
157
+ }
158
+ case "WhenIdle": {
159
+ this.logCommand("WhenIdle", env);
160
+ await this.adapter.whenIdle();
161
+ ack();
162
+ break;
163
+ }
164
+ case "Snapshot": {
165
+ this.logCommand("Snapshot", env);
166
+ const snap = await this.adapter.snapshot();
167
+ ack({ snapshot: snap });
168
+ break;
169
+ }
170
+ case "SnapshotFull": {
171
+ this.logCommand("SnapshotFull", env);
172
+ const snap = await this.adapter.snapshotFull();
173
+ ack({ snapshot: snap });
174
+ break;
175
+ }
176
+ case "GetEnvironment": {
177
+ this.logCommand("GetEnvironment", env);
178
+ const environment = await this.adapter.getEnvironment();
179
+ ack({ environment });
180
+ break;
181
+ }
182
+ case "ApplySnapshotFull": {
183
+ const skipBuild = msg.skipBuild;
184
+ this.logCommand("ApplySnapshotFull", env, skipBuild ? { skipBuild: true } : undefined);
185
+ await this.adapter.applySnapshotFull(msg.payload, { skipBuild });
186
+ ack();
187
+ break;
188
+ }
189
+ case "ConvertSnapshot": {
190
+ const converterConfig = msg.payload.converterConfig;
191
+ const dry = msg.dry;
192
+ this.logCommand("ConvertSnapshot", env, { dry });
193
+ const converted = await this.adapter.convertSnapshot(converterConfig, { dry });
194
+ ack({ snapshot: converted });
195
+ break;
196
+ }
197
+ case "Coerce": {
198
+ this.logCommand("Coerce", env, {
199
+ from: msg.payload.from,
200
+ to: msg.payload.to,
201
+ });
202
+ const value = await this.adapter.coerce(msg.payload.from, msg.payload.to, msg.payload.value);
203
+ ack({ value });
204
+ break;
205
+ }
206
+ case "DescribeRegistry": {
207
+ this.logCommand("DescribeRegistry", env);
208
+ const desc = await this.adapter.describeRegistry();
209
+ ack({ registry: desc });
210
+ break;
211
+ }
212
+ case "RegistryApply": {
213
+ this.logCommand("RegistryApply", env);
214
+ await this.adapter.applyRegistry(msg.payload.deltas || []);
215
+ ack();
216
+ break;
217
+ }
218
+ case "SetExtData": {
219
+ await this.adapter.setExtData(msg.payload);
220
+ ack();
221
+ break;
222
+ }
223
+ case "UpdateExtData": {
224
+ const hasCustomUpdate = await this.adapter.updateExtData(msg.payload);
225
+ ack({ hasCustomUpdate });
226
+ break;
227
+ }
228
+ case "Dispose": {
229
+ this.logCommand("Dispose", env);
230
+ await this.adapter.dispose();
231
+ ack();
232
+ break;
233
+ }
234
+ case "Commit": {
235
+ this.logCommand("Commit", env);
236
+ const history = await this.adapter.commit(msg.payload.reason);
237
+ ack(history ? { history } : undefined);
238
+ break;
239
+ }
240
+ case "Undo": {
241
+ this.logCommand("Undo", env);
242
+ const success = await this.adapter.undo();
243
+ ack({ success });
244
+ break;
245
+ }
246
+ case "Redo": {
247
+ this.logCommand("Redo", env);
248
+ const success = await this.adapter.redo();
249
+ ack({ success });
250
+ break;
251
+ }
252
+ case "Pause": {
253
+ this.logCommand("Pause", env);
254
+ await this.adapter.pause();
255
+ ack();
256
+ break;
257
+ }
258
+ case "Resume": {
259
+ this.logCommand("Resume", env);
260
+ await this.adapter.resume();
261
+ ack();
262
+ break;
263
+ }
264
+ default: {
265
+ this.logCommand("Unknown type", env);
266
+ ack();
267
+ }
268
+ }
269
+ }
270
+ /**
271
+ * Helper method to log commands with consistent format.
272
+ */
273
+ logCommand(type, env, extra) {
274
+ const extraStr = extra
275
+ ? ` ${Object.entries(extra)
276
+ .map(([k, v]) => `${k}=${v}`)
277
+ .join(" ")}`
278
+ : "";
279
+ const message = `rx ${type} seq=${env.seq}${extraStr}`;
280
+ if (this.options?.logHandler) {
281
+ this.options.logHandler("debug", message, {
282
+ seq: env.seq,
283
+ ...extra,
284
+ });
285
+ }
286
+ else {
287
+ // Fallback to console.debug for backward compatibility
288
+ console.debug(message);
289
+ }
290
+ }
291
+ /**
292
+ * Handle errors and notify error handler if provided.
293
+ * Formats errors as SystemError since these are infrastructure/command processing errors,
294
+ * not node execution errors.
295
+ */
296
+ handleError(env, err) {
297
+ const errorMessage = `error handling command(${env.message.type}): ${String(err)}`;
298
+ if (this.options?.logHandler) {
299
+ this.options.logHandler("error", errorMessage, {
300
+ seq: env.seq,
301
+ err,
302
+ });
303
+ }
304
+ else {
305
+ // Fallback to console.error for backward compatibility
306
+ console.error(`${errorMessage}:`, err);
307
+ }
308
+ const serialized = serializeError(err);
309
+ const systemError = {
310
+ kind: "system",
311
+ message: serialized?.message || String(err) || "Unknown error",
312
+ code: serialized?.code || serialized?.statusCode || 500,
313
+ err: serialized,
314
+ };
315
+ const errorEnv = {
316
+ seq: env.seq ?? Date.now(),
317
+ ts: Date.now(),
318
+ message: { type: "error", payload: systemError },
319
+ };
320
+ if (this.options?.errorHandler) {
321
+ this.options.errorHandler(errorEnv);
322
+ }
323
+ }
324
+ }
325
+ //# sourceMappingURL=ServerCommandHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerCommandHandler.js","sourceRoot":"","sources":["../../../src/server/ServerCommandHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Envelope, RuntimeEvent, RuntimeMetadata } from "@bian-womp/spark-protocol";
2
+ import { GraphBuilder, Registry, GraphRuntime, LocalEngine, type GraphLifecycleApi, type Engine } from "@bian-womp/spark-graph";
3
+ /**
4
+ * ServerRuntimeAdapter extends GraphLifecycleApi and Engine to provide a unified interface
5
+ * for both lifecycle and execution operations on the server side.
6
+ *
7
+ * Note: All Engine methods (including setInputs, copyOutputs, triggerExternal) already include
8
+ * the `dry` option, so no overrides are needed. Some methods are sync in implementation but
9
+ * match async signatures via wrappers.
10
+ */
11
+ export interface ServerRuntimeAdapter extends GraphLifecycleApi, Omit<Engine, "launch"> {
12
+ orignalDispose?: () => void;
13
+ }
14
+ export interface ServerRuntimeAdapterContext {
15
+ registry: Registry;
16
+ builder: GraphBuilder;
17
+ graphRuntime: GraphRuntime | undefined;
18
+ engine: LocalEngine | undefined;
19
+ extData: {
20
+ runtime?: RuntimeMetadata;
21
+ } & Record<string, unknown>;
22
+ }
23
+ export type ServerRuntimeAdapterExtension = {
24
+ [K in Exclude<keyof ServerRuntimeAdapter, "originalAdapter">]?: ServerRuntimeAdapter[K] extends (...args: any[]) => any ? (original: ServerRuntimeAdapter[K], context: ServerRuntimeAdapterContext, ...args: Parameters<ServerRuntimeAdapter[K]>) => ReturnType<ServerRuntimeAdapter[K]> : never;
25
+ };
26
+ export declare function createServerRuntimeAdapter(id: string | undefined, createRegistry: (id?: string) => Promise<Registry>, send: (e: Envelope<RuntimeEvent>) => void, extensions?: ServerRuntimeAdapterExtension): Promise<ServerRuntimeAdapter>;
27
+ //# sourceMappingURL=ServerRuntimeAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerRuntimeAdapter.d.ts","sourceRoot":"","sources":["../../../src/server/ServerRuntimeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EAIZ,eAAe,EAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,WAAW,EAGX,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAKZ,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;IAErF,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,eAAe,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClE;AAED,MAAM,MAAM,6BAA6B,GAAG;KACzC,CAAC,IAAI,OAAO,CAAC,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAC9F,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,GAAG,GACJ,CACE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,EACjC,OAAO,EAAE,2BAA2B,EACpC,GAAG,IAAI,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KACzC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GACxC,KAAK;CACV,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,EAClD,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EACzC,UAAU,CAAC,EAAE,6BAA6B,GACzC,OAAO,CAAC,oBAAoB,CAAC,CA6a/B"}