@bian-womp/spark-remote 0.2.59 → 0.2.61

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 CHANGED
@@ -425,11 +425,19 @@ async function createRuntimeAdapter(createRegistry, send, extensions) {
425
425
  extData,
426
426
  };
427
427
  },
428
- applySnapshotFull: async (payload) => {
428
+ applySnapshotFull: async (payload, options) => {
429
429
  const def = payload.def;
430
430
  if (!def)
431
431
  return;
432
- await originalApi.build(def, payload.environment);
432
+ // Only build if skipBuild is not true
433
+ if (options?.skipBuild !== true) {
434
+ await originalApi.build(def, payload.environment);
435
+ }
436
+ else if (!graphRuntime) {
437
+ // If skipping build but no runtime exists, we still need to build
438
+ console.info("Skipping build is set but no runtime exists, building anyway");
439
+ await originalApi.build(def, payload.environment);
440
+ }
433
441
  // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs
434
442
  graphRuntime?.hydrate({
435
443
  inputs: payload.inputs,
@@ -982,10 +990,14 @@ class RuntimeApiClient {
982
990
  outputs: {},
983
991
  });
984
992
  }
985
- async applySnapshotFull(payload) {
993
+ async applySnapshotFull(payload, options) {
986
994
  const transport = await this.ensureConnected();
987
995
  await transport.request({
988
- message: { type: "ApplySnapshotFull", payload },
996
+ message: {
997
+ type: "ApplySnapshotFull",
998
+ payload,
999
+ skipBuild: options?.skipBuild,
1000
+ },
989
1001
  });
990
1002
  }
991
1003
  async setEnvironment(environment, opts) {
@@ -1248,8 +1260,9 @@ class RuntimeApiServer {
1248
1260
  break;
1249
1261
  }
1250
1262
  case "ApplySnapshotFull": {
1251
- this.logCommand("ApplySnapshotFull", env);
1252
- await this.runtimeApi.applySnapshotFull(msg.payload);
1263
+ const skipBuild = msg.skipBuild;
1264
+ this.logCommand("ApplySnapshotFull", env, skipBuild ? { skipBuild: true } : undefined);
1265
+ await this.runtimeApi.applySnapshotFull(msg.payload, { skipBuild });
1253
1266
  ack();
1254
1267
  break;
1255
1268
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/transport/Seq.ts","../../src/transport/WebSocketTransport.ts","../../src/transport/HttpPollingTransport.ts","../../src/server/errors.ts","../../src/server/runtime.ts","../../src/RemoteEngine.ts","../../src/transport/UnixSocketTransport.ts","../../src/RuntimeApiClient.ts","../../src/server/RuntimeApiServer.ts"],"sourcesContent":["export class SeqGenerator {\n private lastMs = 0;\n private seqInMs = 0;\n\n next(): number {\n const now = Date.now();\n if (now === this.lastMs) {\n this.seqInMs = (this.seqInMs + 1) % 1000;\n } else {\n this.lastMs = now;\n this.seqInMs = 0;\n }\n return now * 1000 + this.seqInMs;\n }\n}\n\n","import { WebSocket } from \"ws\";\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport, TransportConnectOptions } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nexport class WebSocketTransport implements Transport {\n private ws?: WebSocket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private baseUrl: string;\n private seq = new SeqGenerator();\n\n private pingInterval?: NodeJS.Timeout;\n private pongTimeout?: NodeJS.Timeout;\n private isAlive = false;\n private readonly PING_INTERVAL_MS = 30000;\n private readonly PONG_TIMEOUT_MS = 10000;\n private onConnectionLost?: () => void;\n private pongHandler?: () => void;\n\n constructor(url: string, options?: { onConnectionLost?: () => void }) {\n this.baseUrl = url;\n this.onConnectionLost = options?.onConnectionLost;\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n\n let url: URL;\n if (this.baseUrl.startsWith(\"ws://\") || this.baseUrl.startsWith(\"wss://\")) {\n url = new URL(this.baseUrl);\n } else {\n const wsBaseUrl = this.baseUrl.replace(/^http/, \"ws\");\n url = new URL(wsBaseUrl);\n }\n\n if (options?.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const wsUrl = url.toString();\n this.ws = window\n ? new (window as any).WebSocket(wsUrl)\n : new WebSocket(wsUrl);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n\n this.ws.onopen = () => {\n this.startHeartbeat();\n resolve();\n };\n\n this.ws.onerror = (e) => reject(e);\n\n this.ws.onmessage = (ev) => {\n try {\n const env = JSON.parse(String(ev.data)) as Envelope<any>;\n for (const l of Array.from(this.listeners)) l(env);\n } catch {}\n };\n\n this.ws.onclose = () => {\n this.stopHeartbeat();\n };\n });\n }\n\n private startHeartbeat(): void {\n this.stopHeartbeat();\n this.isAlive = true;\n\n if (typeof window !== \"undefined\" || !this.ws) return;\n\n this.pongHandler = () => {\n this.isAlive = true;\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n };\n this.ws.on(\"pong\", this.pongHandler);\n\n this.pingInterval = setInterval(() => {\n if (!this.ws || this.ws.readyState !== OPEN) {\n this.stopHeartbeat();\n return;\n }\n\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n this.ws.terminate();\n return;\n }\n\n this.isAlive = false;\n\n try {\n (this.ws as any).ping();\n } catch (err) {\n console.warn(\"[WebSocketTransport] Failed to send ping:\", err);\n this.onConnectionLost?.();\n this.stopHeartbeat();\n return;\n }\n\n this.pongTimeout = setTimeout(() => {\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n if (this.ws) {\n this.ws.terminate();\n }\n }\n }, this.PONG_TIMEOUT_MS);\n }, this.PING_INTERVAL_MS);\n }\n\n private stopHeartbeat(): void {\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = undefined;\n }\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n if (this.ws && this.pongHandler) {\n this.ws.off(\"pong\", this.pongHandler);\n this.pongHandler = undefined;\n }\n this.isAlive = false;\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n const off = this.subscribe((incoming) => {\n if (incoming.seq === seq) {\n off();\n resolve(incoming);\n }\n });\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n if (!this.ws || this.ws.readyState !== OPEN) return;\n this.ws.send(JSON.stringify(msg));\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n this.stopHeartbeat();\n if (!this.ws) return;\n const ws = this.ws;\n this.ws = undefined;\n await new Promise<void>((resolve) => {\n ws.onclose = () => resolve();\n try {\n ws.close();\n } catch {\n resolve();\n }\n });\n }\n}\n","import type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type {\n Transport,\n TransportConnectOptions,\n TransportConnectParams,\n} from \"./Transport\";\n\nexport class HttpPollingTransport implements Transport {\n private baseUrl: string;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private polling?: NodeJS.Timeout;\n private cursor?: string;\n private connectParams?: TransportConnectParams;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n // Store connection params for use in requests\n this.connectParams = options?.params;\n\n // Start polling loop\n if (this.polling) return;\n const tick = async () => {\n try {\n const url = new URL(this.baseUrl + \"/events\");\n if (this.cursor) url.searchParams.set(\"cursor\", this.cursor);\n // Add connection params to all requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString());\n if (!res.ok) return;\n const batch = (await res.json()) as Envelope<any>[];\n for (const env of batch) {\n this.cursor = String(env.seq ?? Date.now());\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {}\n };\n this.polling = setInterval(tick, 200);\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to command requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n const data = (await res.json()) as Envelope<TRes>;\n return data;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to send requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n if (this.polling) clearInterval(this.polling);\n this.polling = undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function summarize(value: unknown, maxLen = 120): string {\n try {\n const s = typeof value === \"string\" ? value : JSON.stringify(value);\n return s.length > maxLen ? s.slice(0, maxLen) + \"…\" : s;\n } catch {\n return String(value);\n }\n}\n\nexport function serializeError(err: unknown): any {\n try {\n if (!err) return { message: String(err) };\n const errAny = err as any;\n if (err instanceof Error) {\n const base: any = {\n name: err.name,\n message: err.message,\n stack: err.stack,\n };\n for (const k of Object.keys(errAny)) base[k] = errAny[k];\n return base;\n }\n if (typeof err === \"object\") {\n const maybeMsg = errAny?.message;\n const maybeName = errAny?.name;\n const maybeStack = errAny?.stack;\n const out = { ...errAny };\n if (maybeMsg && !out.message) out.message = String(maybeMsg);\n if (maybeName && !out.name) out.name = String(maybeName);\n if (maybeStack && !out.stack) out.stack = String(maybeStack);\n return out;\n }\n return { message: String(err) };\n } catch {\n return { message: String(err) };\n }\n}\n","import type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegistryDescriptor,\n RegistryDelta,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Json,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport {\n GraphBuilder,\n Registry,\n GraphRuntime,\n Engine,\n createEngine,\n} from \"@bian-womp/spark-graph\";\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: RegistryDelta[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setExtData: (data: Record<string, unknown>) => void;\n getExtData: () => Record<string, unknown>;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: (opts?: RunnerOptions) => void;\n step?: () => Promise<void>;\n computeNode?: (nodeId: string) => Promise<void>;\n flush?: () => Promise<void>;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegistryDescriptor;\n snapshot: () => RuntimeSnapshot;\n coerce: (from: string, to: string, value: unknown) => Promise<unknown>;\n snapshotFull: () => RuntimeSnapshotFull;\n applySnapshotFull: (payload: RuntimeSnapshotFull) => Promise<void>;\n}\n\nexport interface RuntimeApiContext {\n registry: Registry;\n builder: GraphBuilder;\n graphRuntime: GraphRuntime | undefined;\n engine: Engine | undefined;\n extData: Record<string, unknown>;\n}\n\nexport type RuntimeApiExtension = {\n [K in keyof RuntimeApi]?: RuntimeApi[K] extends (...args: any[]) => any\n ? (\n original: RuntimeApi[K],\n context: RuntimeApiContext,\n ...args: Parameters<RuntimeApi[K]>\n ) => ReturnType<RuntimeApi[K]>\n : never;\n};\n\nexport async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void,\n extensions?: RuntimeApiExtension\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n let engine: Engine | undefined;\n let extData: Record<string, unknown> = {};\n\n // Helper to get current context\n const getContext = (): RuntimeApiContext => ({\n registry,\n builder,\n graphRuntime,\n engine,\n extData,\n });\n\n // Original implementations - define as separate functions first to allow cross-references\n const originalApi: RuntimeApi = {\n coerce: async (from, to, value) => {\n const resolved = registry.resolveCoercion(from, to);\n if (!resolved) return value;\n if (resolved.kind === \"sync\") return resolved.convert(value);\n const ac = new AbortController();\n return await resolved.convertAsync(value, ac.signal);\n },\n getEnvironment: () => {\n return graphRuntime?.getEnvironment?.() ?? {};\n },\n applyRegistry: async (deltas) => {\n // Pause runtime if exists\n // Apply each delta to the live registry\n for (const d of deltas || []) {\n if (!d || typeof d !== \"object\") continue;\n if (d.kind === \"register-enum\") {\n registry.registerEnum({\n id: d.id,\n displayName: d.displayName,\n options: d.options || [],\n bakeTarget: d.bakeTarget,\n opts: d.opts,\n });\n } else if (d.kind === \"register-type\") {\n registry.registerType({\n id: d.id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n validate: (_v) => true,\n });\n } else if (d.kind === \"register-node\") {\n const desc = d.desc || {};\n registry.registerNode({\n id: String(desc.id || \"\"),\n categoryId: String(desc.categoryId || \"compute\"),\n displayName: desc.displayName,\n inputs: desc.inputs || {},\n outputs: desc.outputs || {},\n // impl must be empty per frontend registration contract\n impl: () => {},\n });\n }\n }\n // Notify clients (include deltas in invalidate payload)\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"registry-changed\", deltas },\n },\n });\n },\n build: async (def, opts) => {\n const env = opts || {};\n graphRuntime = builder.build(def, { environment: env });\n graphRuntime.on(\"value\", (p) =>\n send({ message: { type: \"value\", payload: p } })\n );\n graphRuntime.on(\"invalidate\", (p) =>\n send({ message: { type: \"invalidate\", payload: p } })\n );\n graphRuntime.on(\"error\", (p) =>\n send({ message: { type: \"error\", payload: p } })\n );\n graphRuntime.on(\"stats\", (p) =>\n send({ message: { type: \"stats\", payload: p } })\n );\n },\n setExtData: (data) => {\n if (!data || typeof data !== \"object\") {\n extData = {};\n return;\n }\n // Replace to keep semantics deterministic\n extData = { ...data };\n },\n getExtData: () => {\n return extData;\n },\n snapshot: (): RuntimeSnapshot => {\n const inputs: RuntimeSnapshot[\"inputs\"] = {};\n const outputs: RuntimeSnapshot[\"outputs\"] = {};\n if (!graphRuntime) return { inputs, outputs };\n const nodes = graphRuntime.getNodeIds();\n for (const nodeId of nodes) {\n const data = graphRuntime.getNodeData(nodeId);\n if (data?.inputs && Object.keys(data.inputs).length > 0) {\n inputs[nodeId] = { ...data.inputs };\n }\n if (data?.outputs && Object.keys(data.outputs).length > 0) {\n outputs[nodeId] = { ...data.outputs };\n }\n }\n return { inputs, outputs };\n },\n snapshotFull: () => {\n const snap = originalApi.snapshot();\n const extData = originalApi.getExtData();\n const env = graphRuntime?.getEnvironment?.() ?? {};\n const def = graphRuntime?.getGraphDef();\n return {\n def,\n environment: env,\n inputs: snap.inputs,\n outputs: snap.outputs,\n extData,\n };\n },\n applySnapshotFull: async (payload) => {\n const def = payload.def;\n if (!def) return;\n await originalApi.build(def, payload.environment);\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate({\n inputs: payload.inputs,\n outputs: payload.outputs,\n });\n originalApi.setExtData(payload.extData || {});\n },\n describeRegistry: () => {\n // types (include enum options when available)\n const types = Array.from(registry.types.entries()).map(([id, d]) => {\n const en = registry.enums.get(id);\n return {\n id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n ...(en ? { options: en.options } : {}),\n };\n });\n // categories: not directly enumerable; derive from node descriptors\n const nodeDescs = Array.from(registry.nodes.values());\n const catIds = new Set(nodeDescs.map((n) => n.categoryId));\n const categories = Array.from(catIds).map((id) => {\n const cat = registry.categories.get?.(id);\n return { id, displayName: cat?.displayName };\n });\n const nodes = nodeDescs.map((n) => ({\n id: n.id,\n categoryId: n.categoryId,\n displayName: n.displayName,\n inputs: n.inputs || {},\n outputs: n.outputs || {},\n inputDefaults: n.inputDefaults || {},\n }));\n const coercions = registry.listCoercions();\n return { types, categories, nodes, coercions, schemaVersion: 4 };\n },\n update: async (def) => {\n if (!graphRuntime) return;\n graphRuntime.update(def, registry);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n },\n setEnvironment: (env, opts) => {\n if (!graphRuntime) return;\n if (opts?.merge) {\n const current = graphRuntime.getEnvironment();\n const next = { ...(current || {}), ...(env || {}) };\n graphRuntime.setEnvironment(next);\n return;\n }\n graphRuntime.setEnvironment(env);\n },\n setInputs: (nodeId, inputs) => {\n if (engine) {\n engine.setInputs(nodeId, inputs);\n } else {\n graphRuntime?.setInputs(nodeId, inputs);\n }\n },\n triggerExternal: (nodeId, event) => {\n if (engine) {\n engine.triggerExternal(nodeId, event);\n } else {\n graphRuntime?.triggerExternal(nodeId, event);\n }\n },\n launch: (opts) => {\n if (!graphRuntime) {\n throw new Error(\"Cannot launch: graph runtime not built\");\n }\n\n // Dispose existing engine if any\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n\n // Create new engine using shared factory\n engine = createEngine(graphRuntime, opts);\n\n // Launch the engine\n if (engine) {\n engine.launch(opts?.invalidate);\n }\n },\n step: async () => {\n if (!engine) return;\n // Type guard for StepEngine\n if (\"step\" in engine && typeof engine.step === \"function\") {\n await (engine as any).step();\n }\n },\n computeNode: async (nodeId: string) => {\n if (!engine) return;\n // Type guard for PullEngine\n if (\"computeNode\" in engine && typeof engine.computeNode === \"function\") {\n await (engine as any).computeNode(nodeId);\n }\n },\n flush: async () => {\n if (!engine) return;\n // Type guard for BatchedEngine\n if (\"flush\" in engine && typeof engine.flush === \"function\") {\n await (engine as any).flush();\n }\n },\n whenIdle: () => {\n if (engine) {\n return engine.whenIdle();\n }\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose: () => {\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n\n // Helper to wrap a method with extension support\n const wrapMethod = <K extends keyof RuntimeApi>(\n key: K,\n original: RuntimeApi[K]\n ): RuntimeApi[K] => {\n const extension = extensions?.[key];\n if (!extension) {\n return original;\n }\n // Handle optional methods that might be undefined\n if (!original) {\n return original;\n }\n return ((...args: Parameters<NonNullable<RuntimeApi[K]>>) => {\n return extension(original as any, getContext(), ...args);\n }) as unknown as RuntimeApi[K];\n };\n\n // Create API with extensions applied\n const extendedApi: RuntimeApi = {\n coerce: wrapMethod(\"coerce\", originalApi.coerce),\n getEnvironment: wrapMethod(\"getEnvironment\", originalApi.getEnvironment),\n applyRegistry: wrapMethod(\"applyRegistry\", originalApi.applyRegistry),\n build: wrapMethod(\"build\", originalApi.build),\n setExtData: wrapMethod(\"setExtData\", originalApi.setExtData),\n getExtData: wrapMethod(\"getExtData\", originalApi.getExtData),\n snapshot: wrapMethod(\"snapshot\", originalApi.snapshot),\n snapshotFull: wrapMethod(\"snapshotFull\", originalApi.snapshotFull),\n applySnapshotFull: wrapMethod(\n \"applySnapshotFull\",\n originalApi.applySnapshotFull\n ),\n describeRegistry: wrapMethod(\n \"describeRegistry\",\n originalApi.describeRegistry\n ),\n update: wrapMethod(\"update\", originalApi.update),\n setEnvironment: wrapMethod(\"setEnvironment\", originalApi.setEnvironment),\n setInputs: wrapMethod(\"setInputs\", originalApi.setInputs),\n triggerExternal: wrapMethod(\"triggerExternal\", originalApi.triggerExternal),\n step: wrapMethod(\"step\", originalApi.step),\n computeNode: wrapMethod(\"computeNode\", originalApi.computeNode),\n flush: wrapMethod(\"flush\", originalApi.flush),\n launch: wrapMethod(\"launch\", originalApi.launch),\n whenIdle: wrapMethod(\"whenIdle\", originalApi.whenIdle),\n dispose: wrapMethod(\"dispose\", originalApi.dispose),\n };\n\n return extendedApi;\n}\n","import type {\n Envelope,\n RunnerOptions,\n RuntimeEvent,\n} from \"@bian-womp/spark-protocol\";\nimport type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\n\nexport class RemoteEngine implements Engine {\n private listeners = new Map<\n EngineEventName,\n Set<EngineEventListener<EngineEventName>>\n >();\n private cache = new Map<string, { value: unknown; runtimeTypeId?: string }>();\n\n constructor(private transport: Transport) {\n this.transport.subscribe((env) => this.onEnvelope(env));\n }\n\n private onEnvelope(env: Envelope<RuntimeEvent>): void {\n const msg = env.message;\n if (!msg) return;\n if (msg.type === \"value\") {\n const key = `${msg.payload.nodeId}.${msg.payload.handle}`;\n this.cache.set(key, {\n value: msg.payload.value,\n runtimeTypeId: msg.payload.runtimeTypeId,\n });\n this.emit(\"value\", msg.payload);\n } else if (msg.type === \"error\") {\n this.emit(\"error\", msg.payload);\n } else if (msg.type === \"invalidate\") {\n this.emit(\"invalidate\", msg.payload);\n } else if (msg.type === \"stats\") {\n this.emit(\"stats\", msg.payload);\n }\n }\n\n launch(\n invalidate?: boolean,\n engineConfig?: Omit<RunnerOptions, \"invalidate\">\n ): void {\n this.transport.send({\n message: {\n type: \"Launch\",\n payload: { invalidate, ...engineConfig },\n },\n });\n }\n\n // Batch inputs for a single network round-trip\n setInputs(nodeId: string, inputs: Record<string, unknown>): void {\n this.transport.send({\n message: { type: \"SetInputs\", payload: { nodeId, inputs } },\n });\n }\n\n triggerExternal(nodeId: string, event: unknown): void {\n this.transport.send({\n message: { type: \"TriggerExternal\", payload: { nodeId, event } },\n });\n }\n\n on<K extends EngineEventName>(\n event: K,\n handler: EngineEventListener<K>\n ): () => void {\n if (!this.listeners.has(event)) this.listeners.set(event, new Set());\n const set = this.listeners.get(event)! as Set<EngineEventListener<K>>;\n set.add(handler);\n return () => set.delete(handler);\n }\n\n private emit<K extends EngineEventName>(\n event: K,\n payload: EngineEventMap[K]\n ): void {\n const set = this.listeners.get(event);\n if (set) for (const h of Array.from(set)) h(payload);\n }\n\n getOutput(nodeId: string, output: string): unknown {\n return this.cache.get(`${nodeId}.${output}`)?.value;\n }\n\n async whenIdle(): Promise<void> {\n await this.transport.request({ message: { type: \"WhenIdle\" } });\n }\n\n dispose(): void {\n this.transport.send({ message: { type: \"Dispose\" } });\n }\n}\n","// Node-only transport using a UNIX domain socket.\n// Import directly from path: \"@bian-womp/spark-remote/transport/UnixSocketTransport\" in Node/Electron code.\n// Do not re-export from the browser index to avoid bundling in web builds.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\n// Use node:net for ESM compatibility in Node 18+\n// We avoid type imports here to keep this file isolated from browser builds.\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { Socket } from \"node:net\";\n\nexport class UnixSocketTransport implements Transport {\n private socket?: Socket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private buffer = \"\";\n private waiters = new Map<number, (env: Envelope<any>) => void>();\n private seq = new SeqGenerator();\n\n constructor(private socketPath: string) {}\n\n async connect(): Promise<void> {\n if (typeof process === \"undefined\") {\n throw new Error(\"UnixSocketTransport requires a Node environment\");\n }\n if (this.socket) return;\n const { createConnection } = await import(\"node:net\");\n const sock = createConnection(this.socketPath);\n this.socket = sock;\n await new Promise<void>((resolve, reject) => {\n sock.once(\"connect\", () => resolve());\n sock.once(\"error\", (e) => reject(e));\n });\n sock.on(\"data\", (chunk: Buffer) => this.onData(chunk));\n sock.on(\"error\", () => {\n /* noop, surface via request waiters if needed */\n });\n }\n\n private onData(chunk: Buffer): void {\n this.buffer += chunk.toString(\"utf8\");\n let idx = this.buffer.indexOf(\"\\n\");\n while (idx >= 0) {\n const raw = this.buffer.slice(0, idx);\n this.buffer = this.buffer.slice(idx + 1);\n idx = this.buffer.indexOf(\"\\n\");\n if (!raw.trim()) continue;\n try {\n const env = JSON.parse(raw) as Envelope<any>;\n if (env && typeof env.seq === \"number\" && this.waiters.has(env.seq)) {\n const fn = this.waiters.get(env.seq)!;\n this.waiters.delete(env.seq);\n fn(env);\n } else {\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {\n // ignore malformed frames\n }\n }\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = typeof msg.seq === \"number\" ? msg.seq : this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n this.waiters.set(seq, (incoming) => resolve(incoming));\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const s = this.socket;\n if (!s) return;\n try {\n s.write(JSON.stringify(msg) + \"\\n\");\n } catch {\n // ignore\n }\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n const s = this.socket;\n this.socket = undefined;\n if (!s) return;\n await new Promise<void>((resolve) => {\n try {\n s.end(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n}\n","import type {\n GraphDefinition,\n RegistryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Envelope,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport type { Engine } from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport, TransportConnectOptions } from \"./transport/Transport\";\nimport { HttpPollingTransport } from \"./transport/HttpPollingTransport\";\nimport { WebSocketTransport } from \"./transport/WebSocketTransport\";\nimport { UnixSocketTransport } from \"./transport/UnixSocketTransport\";\n\nexport type RemoteClientConfig =\n | {\n kind: \"remote-http\";\n baseUrl: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-ws\";\n url: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-unix\";\n socketPath: string;\n connectOptions?: TransportConnectOptions;\n };\n\nexport type RemoteTransportStatus = {\n state: \"connecting\" | \"connected\" | \"disconnected\";\n kind: \"remote-http\" | \"remote-ws\" | \"remote-unix\";\n runnerId?: string;\n};\n\nexport type TransportEventListener = (status: RemoteTransportStatus) => void;\nexport type CustomEventListener = (event: Envelope<any>) => void;\n\nexport class RuntimeApiClient {\n private engine?: RemoteEngine;\n private transport?: Transport;\n private customEventListeners = new Set<CustomEventListener>();\n private transportEventListeners = new Set<TransportEventListener>();\n private transportUnsubscribe?: () => void;\n private disposed = false;\n private config: RemoteClientConfig;\n private connectingPromise?: Promise<void>;\n private runnerId?: string;\n\n constructor(\n config: RemoteClientConfig,\n options?: { onCustomEvent?: CustomEventListener; runnerId?: string }\n ) {\n this.config = config;\n this.runnerId = options?.runnerId;\n if (options?.onCustomEvent) {\n this.customEventListeners.add(options.onCustomEvent);\n }\n // Engine will be created after transport is connected\n }\n\n /**\n * Create transport instance based on config.\n * Extracted to a separate method for better testability and clarity.\n */\n private async createTransport(): Promise<Transport> {\n const kind = this.config.kind;\n if (kind === \"remote-http\") {\n if (!HttpPollingTransport) {\n throw new Error(\"HttpPollingTransport not available\");\n }\n return new HttpPollingTransport(this.config.baseUrl);\n } else if (kind === \"remote-ws\") {\n if (!WebSocketTransport) {\n throw new Error(\"WebSocketTransport not available\");\n }\n return new WebSocketTransport(this.config.url, {\n onConnectionLost: () => {\n this.dispose().catch((err) => {\n console.warn(\n \"[RuntimeApiClient] Error disposing on connection loss:\",\n err\n );\n });\n },\n });\n } else if (kind === \"remote-unix\") {\n // Dynamic import to avoid bundling in browser builds\n return new UnixSocketTransport(this.config.socketPath);\n } else {\n throw new Error(`Invalid transport kind: ${kind}`);\n }\n }\n\n /**\n * Connect to the remote runtime API.\n * Creates and connects the transport, then initializes the engine.\n * Safe to call multiple times - concurrent calls will wait for the same connection.\n */\n async connect(): Promise<void> {\n if (this.disposed) {\n throw new Error(\"Cannot connect: RuntimeApiClient has been disposed\");\n }\n if (this.transport) {\n // Already connected\n return;\n }\n // If already connecting, wait for that connection to complete\n if (this.connectingPromise) {\n return this.connectingPromise;\n }\n\n this.emitTransportStatus({\n state: \"connecting\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n\n // Create connection promise to prevent concurrent connections\n this.connectingPromise = (async () => {\n try {\n const transport = await this.createTransport();\n await transport.connect(this.config.connectOptions);\n this.transport = transport;\n\n // Subscribe to all transport events\n this.transportUnsubscribe = transport.subscribe((event) => {\n this.handleTransportEvent(event);\n });\n\n // Create engine with connected transport\n this.engine = new RemoteEngine(transport);\n\n this.emitTransportStatus({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n } catch (error) {\n // Clear connecting promise on error so retry is possible\n this.connectingPromise = undefined;\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n throw error;\n } finally {\n // Clear connecting promise on success\n this.connectingPromise = undefined;\n }\n })();\n\n return this.connectingPromise;\n }\n\n /**\n * Handle events from transport.\n * Routes standard runtime events to engine, custom events to custom handlers.\n */\n private handleTransportEvent(event: Envelope<any>): void {\n const msg = event.message;\n if (!msg || typeof msg !== \"object\" || !(\"type\" in msg)) return;\n\n const type = msg.type;\n // Standard runtime events: stats, value, error, invalidate\n // These are handled by RemoteEngine via transport subscription\n // Custom events are anything else\n if (![\"stats\", \"value\", \"error\", \"invalidate\"].includes(type)) {\n // Emit to custom event listeners (constructor callback is auto-subscribed)\n for (const listener of this.customEventListeners) {\n listener(event);\n }\n }\n }\n\n /**\n * Subscribe to transport status changes.\n * Returns an unsubscribe function.\n */\n onTransportStatus(listener: TransportEventListener): () => void {\n this.transportEventListeners.add(listener);\n // Immediately emit current status if connected\n if (this.transport) {\n listener({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n return () => {\n this.transportEventListeners.delete(listener);\n };\n }\n\n private emitTransportStatus(status: RemoteTransportStatus): void {\n for (const listener of this.transportEventListeners) {\n listener(status);\n }\n }\n\n /**\n * Ensure transport is connected. Called automatically by API methods.\n * Returns the transport instance, throwing if connection fails or client is disposed.\n */\n private async ensureConnected(): Promise<Transport> {\n if (this.disposed) {\n throw new Error(\n \"Cannot ensure connection: RuntimeApiClient has been disposed\"\n );\n }\n if (!this.transport) {\n await this.connect();\n }\n // After connect(), transport is guaranteed to be set\n if (!this.transport) {\n throw new Error(\"Failed to establish transport connection\");\n }\n return this.transport;\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Build\",\n payload: { def, environment: opts?.environment },\n },\n });\n }\n\n async update(def: GraphDefinition): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegistryDescriptor> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegistryDescriptor }) || {};\n return (\n payload.registry || {\n types: [],\n categories: [],\n nodes: [],\n coercions: [],\n schemaVersion: 4,\n }\n );\n }\n\n async applyRegistry(deltas: Array<any>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Snapshot\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"SnapshotFull\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshotFull }) || {};\n return (\n payload.snapshot || {\n def: undefined,\n environment: {},\n inputs: {},\n outputs: {},\n }\n );\n }\n\n async applySnapshotFull(payload: RuntimeSnapshotFull): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"ApplySnapshotFull\", payload },\n });\n }\n\n async setEnvironment(\n environment: Record<string, unknown>,\n opts?: { merge?: boolean }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"SetEnvironment\",\n payload: { environment, merge: opts?.merge },\n },\n });\n }\n\n async getEnvironment(): Promise<Record<string, unknown>> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"GetEnvironment\" },\n });\n const payload =\n (res?.message as { environment?: Record<string, unknown> }) || {};\n return payload.environment || {};\n }\n\n async coerce(from: string, to: string, value: unknown): Promise<unknown> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Coerce\", payload: { from, to, value } },\n });\n const payload = (res?.message as { ok?: boolean; value?: unknown }) || {};\n return payload.value;\n }\n\n getEngine(): Engine {\n if (!this.engine) {\n throw new Error(\"Engine not available: call connect() first\");\n }\n return this.engine;\n }\n\n async launch(opts?: RunnerOptions): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Launch\",\n payload: opts,\n },\n });\n }\n\n async step(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Step\" },\n });\n }\n\n async computeNode(nodeId: string): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"ComputeNode\", payload: { nodeId } },\n });\n }\n\n async flush(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Flush\" },\n });\n }\n\n async setExtData(data: Record<string, unknown>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"SetExtData\", payload: data },\n });\n }\n\n /**\n * Dispose the client and close the transport connection.\n * Idempotent: safe to call multiple times.\n */\n async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n\n // Clear connecting promise if any\n this.connectingPromise = undefined;\n\n // Unsubscribe from transport events\n if (this.transportUnsubscribe) {\n this.transportUnsubscribe();\n this.transportUnsubscribe = undefined;\n }\n\n // Close transport connection\n if (this.transport) {\n const transportToClose = this.transport;\n this.transport = undefined;\n this.engine = undefined as any; // Clear engine reference\n await transportToClose.close().catch((err) => {\n console.warn(\"[RuntimeApiClient] Error closing transport:\", err);\n });\n }\n\n // Clear listeners\n this.customEventListeners.clear();\n this.transportEventListeners.clear();\n\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n}\n","import type {\n Envelope,\n Command,\n Json,\n SystemError,\n LogHandler,\n} from \"@bian-womp/spark-protocol\";\nimport type { RuntimeApi } from \"./runtime\";\nimport { summarize, serializeError } from \"./errors\";\n\n/**\n * Middleware function that can preprocess commands before they reach the handler.\n * Call `next()` to continue to the next middleware or handler.\n */\nexport type CommandMiddleware = (\n env: Envelope<Command>,\n next: () => Promise<void>\n) => Promise<void>;\n\n/**\n * Error handler callback for command processing errors.\n */\nexport type ErrorHandler = (\n errorEnv: Envelope<{ type: \"error\"; payload: SystemError }>\n) => void;\n\nexport class RuntimeApiServer {\n private middlewares: CommandMiddleware[] = [];\n\n constructor(\n private runtimeApi: RuntimeApi,\n private options?: {\n errorHandler?: ErrorHandler;\n logHandler?: LogHandler;\n }\n ) {}\n\n /**\n * Register middleware to preprocess commands before handling.\n * Middlewares are executed in registration order.\n */\n use(middleware: CommandMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * Handle command with error handling and middleware support.\n */\n async handleCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n try {\n // Execute middlewares in sequence, then process command\n await this.executeMiddlewares(env, async () => {\n await this.processCommand(env, ack);\n });\n } catch (err: unknown) {\n this.handleError(env, err);\n }\n }\n\n /**\n * Execute middlewares in sequence, then call the final handler.\n */\n private async executeMiddlewares(\n env: Envelope<Command>,\n finalHandler: () => Promise<void>\n ): Promise<void> {\n let index = 0;\n const next = async (): Promise<void> => {\n if (index >= this.middlewares.length) {\n await finalHandler();\n return;\n }\n const middleware = this.middlewares[index++];\n await middleware(env, next);\n };\n await next();\n }\n\n /**\n * Process the command by routing to the appropriate handler.\n */\n private async processCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n this.logCommand(\"Build\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n envKeys: Object.keys(msg.payload.environment ?? {}).join(\",\"),\n });\n await this.runtimeApi.build(\n msg.payload.def,\n msg.payload.environment as Json\n );\n ack();\n break;\n }\n case \"Update\": {\n this.logCommand(\"Update\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n });\n await this.runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n this.logCommand(\"SetEnvironment\", env);\n this.runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInputs\": {\n this.logCommand(\"SetInputs\", env, {\n nodeId: msg.payload.nodeId,\n keys: Object.keys(msg.payload.inputs || {}).join(\",\"),\n });\n const nodeId = msg.payload.nodeId;\n const inputs = msg.payload.inputs;\n this.runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n this.logCommand(\"TriggerExternal\", env, {\n nodeId: msg.payload.nodeId,\n event: summarize(msg.payload.event),\n });\n this.runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n const launchPayload = msg.payload;\n this.logCommand(\"Launch\", env, {\n engine: launchPayload.engine,\n invalidate: launchPayload.invalidate,\n });\n this.runtimeApi.launch({\n invalidate: launchPayload.invalidate,\n engine: launchPayload.engine,\n batched: launchPayload.batched,\n hybrid: launchPayload.hybrid,\n });\n ack();\n break;\n }\n case \"Step\": {\n this.logCommand(\"Step\", env);\n if (this.runtimeApi.step) {\n await this.runtimeApi.step();\n }\n ack();\n break;\n }\n case \"ComputeNode\": {\n this.logCommand(\"ComputeNode\", env, {\n nodeId: msg.payload.nodeId,\n });\n if (this.runtimeApi.computeNode) {\n await this.runtimeApi.computeNode(msg.payload.nodeId);\n }\n ack();\n break;\n }\n case \"Flush\": {\n this.logCommand(\"Flush\", env);\n if (this.runtimeApi.flush) {\n await this.runtimeApi.flush();\n }\n ack();\n break;\n }\n case \"WhenIdle\": {\n this.logCommand(\"WhenIdle\", env);\n await this.runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n this.logCommand(\"Snapshot\", env);\n const snap = this.runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n this.logCommand(\"SnapshotFull\", env);\n const snap = this.runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n this.logCommand(\"GetEnvironment\", env);\n const environment = this.runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n this.logCommand(\"ApplySnapshotFull\", env);\n await this.runtimeApi.applySnapshotFull(msg.payload);\n ack();\n break;\n }\n case \"Coerce\": {\n this.logCommand(\"Coerce\", env, {\n from: msg.payload.from,\n to: msg.payload.to,\n });\n const value = await this.runtimeApi.coerce(\n msg.payload?.from,\n msg.payload?.to,\n msg.payload?.value\n );\n ack({ value });\n break;\n }\n case \"DescribeRegistry\": {\n this.logCommand(\"DescribeRegistry\", env);\n const desc = this.runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n this.logCommand(\"RegistryApply\", env);\n await this.runtimeApi.applyRegistry(msg.payload.deltas || []);\n ack();\n break;\n }\n case \"SetExtData\": {\n this.runtimeApi.setExtData(msg.payload);\n ack();\n break;\n }\n case \"Dispose\": {\n this.logCommand(\"Dispose\", env);\n this.runtimeApi.dispose();\n ack();\n break;\n }\n default: {\n this.logCommand(\"Unknown type\", env);\n ack();\n }\n }\n }\n\n /**\n * Helper method to log commands with consistent format.\n */\n private logCommand(\n type: string,\n env: Envelope<Command>,\n extra?: Record<string, unknown>\n ): void {\n const extraStr = extra\n ? ` ${Object.entries(extra)\n .map(([k, v]) => `${k}=${v}`)\n .join(\" \")}`\n : \"\";\n const message = `rx ${type} seq=${env.seq}${extraStr}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"debug\", message, {\n seq: env.seq,\n ...extra,\n });\n } else {\n // Fallback to console.debug for backward compatibility\n console.debug(message);\n }\n }\n\n /**\n * Handle errors and notify error handler if provided.\n * Formats errors as SystemError since these are infrastructure/command processing errors,\n * not node execution errors.\n */\n private handleError(env: Envelope<Command>, err: unknown): void {\n const errorMessage = `error handling command: ${String(err)}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"error\", errorMessage, {\n seq: env.seq,\n err,\n });\n } else {\n // Fallback to console.error for backward compatibility\n console.error(`${errorMessage}:`, err);\n }\n\n const serialized = serializeError(err);\n const systemError: SystemError = {\n kind: \"system\",\n message: serialized?.message || String(err) || \"Unknown error\",\n code: serialized?.code || serialized?.statusCode || 500,\n err: serialized,\n };\n const errorEnv: Envelope<{ type: \"error\"; payload: SystemError }> = {\n seq: env.seq ?? Date.now(),\n ts: Date.now(),\n message: { type: \"error\", payload: systemError },\n };\n if (this.options?.errorHandler) {\n this.options.errorHandler(errorEnv);\n }\n }\n}\n"],"names":["WebSocket","GraphBuilder","createEngine"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/transport/Seq.ts","../../src/transport/WebSocketTransport.ts","../../src/transport/HttpPollingTransport.ts","../../src/server/errors.ts","../../src/server/runtime.ts","../../src/RemoteEngine.ts","../../src/transport/UnixSocketTransport.ts","../../src/RuntimeApiClient.ts","../../src/server/RuntimeApiServer.ts"],"sourcesContent":["export class SeqGenerator {\n private lastMs = 0;\n private seqInMs = 0;\n\n next(): number {\n const now = Date.now();\n if (now === this.lastMs) {\n this.seqInMs = (this.seqInMs + 1) % 1000;\n } else {\n this.lastMs = now;\n this.seqInMs = 0;\n }\n return now * 1000 + this.seqInMs;\n }\n}\n\n","import { WebSocket } from \"ws\";\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport, TransportConnectOptions } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nexport class WebSocketTransport implements Transport {\n private ws?: WebSocket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private baseUrl: string;\n private seq = new SeqGenerator();\n\n private pingInterval?: NodeJS.Timeout;\n private pongTimeout?: NodeJS.Timeout;\n private isAlive = false;\n private readonly PING_INTERVAL_MS = 30000;\n private readonly PONG_TIMEOUT_MS = 10000;\n private onConnectionLost?: () => void;\n private pongHandler?: () => void;\n\n constructor(url: string, options?: { onConnectionLost?: () => void }) {\n this.baseUrl = url;\n this.onConnectionLost = options?.onConnectionLost;\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n\n let url: URL;\n if (this.baseUrl.startsWith(\"ws://\") || this.baseUrl.startsWith(\"wss://\")) {\n url = new URL(this.baseUrl);\n } else {\n const wsBaseUrl = this.baseUrl.replace(/^http/, \"ws\");\n url = new URL(wsBaseUrl);\n }\n\n if (options?.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const wsUrl = url.toString();\n this.ws = window\n ? new (window as any).WebSocket(wsUrl)\n : new WebSocket(wsUrl);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n\n this.ws.onopen = () => {\n this.startHeartbeat();\n resolve();\n };\n\n this.ws.onerror = (e) => reject(e);\n\n this.ws.onmessage = (ev) => {\n try {\n const env = JSON.parse(String(ev.data)) as Envelope<any>;\n for (const l of Array.from(this.listeners)) l(env);\n } catch {}\n };\n\n this.ws.onclose = () => {\n this.stopHeartbeat();\n };\n });\n }\n\n private startHeartbeat(): void {\n this.stopHeartbeat();\n this.isAlive = true;\n\n if (typeof window !== \"undefined\" || !this.ws) return;\n\n this.pongHandler = () => {\n this.isAlive = true;\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n };\n this.ws.on(\"pong\", this.pongHandler);\n\n this.pingInterval = setInterval(() => {\n if (!this.ws || this.ws.readyState !== OPEN) {\n this.stopHeartbeat();\n return;\n }\n\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n this.ws.terminate();\n return;\n }\n\n this.isAlive = false;\n\n try {\n (this.ws as any).ping();\n } catch (err) {\n console.warn(\"[WebSocketTransport] Failed to send ping:\", err);\n this.onConnectionLost?.();\n this.stopHeartbeat();\n return;\n }\n\n this.pongTimeout = setTimeout(() => {\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n if (this.ws) {\n this.ws.terminate();\n }\n }\n }, this.PONG_TIMEOUT_MS);\n }, this.PING_INTERVAL_MS);\n }\n\n private stopHeartbeat(): void {\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = undefined;\n }\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n if (this.ws && this.pongHandler) {\n this.ws.off(\"pong\", this.pongHandler);\n this.pongHandler = undefined;\n }\n this.isAlive = false;\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n const off = this.subscribe((incoming) => {\n if (incoming.seq === seq) {\n off();\n resolve(incoming);\n }\n });\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n if (!this.ws || this.ws.readyState !== OPEN) return;\n this.ws.send(JSON.stringify(msg));\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n this.stopHeartbeat();\n if (!this.ws) return;\n const ws = this.ws;\n this.ws = undefined;\n await new Promise<void>((resolve) => {\n ws.onclose = () => resolve();\n try {\n ws.close();\n } catch {\n resolve();\n }\n });\n }\n}\n","import type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type {\n Transport,\n TransportConnectOptions,\n TransportConnectParams,\n} from \"./Transport\";\n\nexport class HttpPollingTransport implements Transport {\n private baseUrl: string;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private polling?: NodeJS.Timeout;\n private cursor?: string;\n private connectParams?: TransportConnectParams;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n // Store connection params for use in requests\n this.connectParams = options?.params;\n\n // Start polling loop\n if (this.polling) return;\n const tick = async () => {\n try {\n const url = new URL(this.baseUrl + \"/events\");\n if (this.cursor) url.searchParams.set(\"cursor\", this.cursor);\n // Add connection params to all requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString());\n if (!res.ok) return;\n const batch = (await res.json()) as Envelope<any>[];\n for (const env of batch) {\n this.cursor = String(env.seq ?? Date.now());\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {}\n };\n this.polling = setInterval(tick, 200);\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to command requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n const data = (await res.json()) as Envelope<TRes>;\n return data;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to send requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n if (this.polling) clearInterval(this.polling);\n this.polling = undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function summarize(value: unknown, maxLen = 120): string {\n try {\n const s = typeof value === \"string\" ? value : JSON.stringify(value);\n return s.length > maxLen ? s.slice(0, maxLen) + \"…\" : s;\n } catch {\n return String(value);\n }\n}\n\nexport function serializeError(err: unknown): any {\n try {\n if (!err) return { message: String(err) };\n const errAny = err as any;\n if (err instanceof Error) {\n const base: any = {\n name: err.name,\n message: err.message,\n stack: err.stack,\n };\n for (const k of Object.keys(errAny)) base[k] = errAny[k];\n return base;\n }\n if (typeof err === \"object\") {\n const maybeMsg = errAny?.message;\n const maybeName = errAny?.name;\n const maybeStack = errAny?.stack;\n const out = { ...errAny };\n if (maybeMsg && !out.message) out.message = String(maybeMsg);\n if (maybeName && !out.name) out.name = String(maybeName);\n if (maybeStack && !out.stack) out.stack = String(maybeStack);\n return out;\n }\n return { message: String(err) };\n } catch {\n return { message: String(err) };\n }\n}\n","import type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegistryDescriptor,\n RegistryDelta,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Json,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport {\n GraphBuilder,\n Registry,\n GraphRuntime,\n Engine,\n createEngine,\n} from \"@bian-womp/spark-graph\";\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: RegistryDelta[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setExtData: (data: Record<string, unknown>) => void;\n getExtData: () => Record<string, unknown>;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: (opts?: RunnerOptions) => void;\n step?: () => Promise<void>;\n computeNode?: (nodeId: string) => Promise<void>;\n flush?: () => Promise<void>;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegistryDescriptor;\n snapshot: () => RuntimeSnapshot;\n coerce: (from: string, to: string, value: unknown) => Promise<unknown>;\n snapshotFull: () => RuntimeSnapshotFull;\n applySnapshotFull: (\n payload: RuntimeSnapshotFull,\n options?: { skipBuild?: boolean }\n ) => Promise<void>;\n}\n\nexport interface RuntimeApiContext {\n registry: Registry;\n builder: GraphBuilder;\n graphRuntime: GraphRuntime | undefined;\n engine: Engine | undefined;\n extData: Record<string, unknown>;\n}\n\nexport type RuntimeApiExtension = {\n [K in keyof RuntimeApi]?: RuntimeApi[K] extends (...args: any[]) => any\n ? (\n original: RuntimeApi[K],\n context: RuntimeApiContext,\n ...args: Parameters<RuntimeApi[K]>\n ) => ReturnType<RuntimeApi[K]>\n : never;\n};\n\nexport async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void,\n extensions?: RuntimeApiExtension\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n let engine: Engine | undefined;\n let extData: Record<string, unknown> = {};\n\n // Helper to get current context\n const getContext = (): RuntimeApiContext => ({\n registry,\n builder,\n graphRuntime,\n engine,\n extData,\n });\n\n // Original implementations - define as separate functions first to allow cross-references\n const originalApi: RuntimeApi = {\n coerce: async (from, to, value) => {\n const resolved = registry.resolveCoercion(from, to);\n if (!resolved) return value;\n if (resolved.kind === \"sync\") return resolved.convert(value);\n const ac = new AbortController();\n return await resolved.convertAsync(value, ac.signal);\n },\n getEnvironment: () => {\n return graphRuntime?.getEnvironment?.() ?? {};\n },\n applyRegistry: async (deltas) => {\n // Pause runtime if exists\n // Apply each delta to the live registry\n for (const d of deltas || []) {\n if (!d || typeof d !== \"object\") continue;\n if (d.kind === \"register-enum\") {\n registry.registerEnum({\n id: d.id,\n displayName: d.displayName,\n options: d.options || [],\n bakeTarget: d.bakeTarget,\n opts: d.opts,\n });\n } else if (d.kind === \"register-type\") {\n registry.registerType({\n id: d.id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n validate: (_v) => true,\n });\n } else if (d.kind === \"register-node\") {\n const desc = d.desc || {};\n registry.registerNode({\n id: String(desc.id || \"\"),\n categoryId: String(desc.categoryId || \"compute\"),\n displayName: desc.displayName,\n inputs: desc.inputs || {},\n outputs: desc.outputs || {},\n // impl must be empty per frontend registration contract\n impl: () => {},\n });\n }\n }\n // Notify clients (include deltas in invalidate payload)\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"registry-changed\", deltas },\n },\n });\n },\n build: async (def, opts) => {\n const env = opts || {};\n graphRuntime = builder.build(def, { environment: env });\n graphRuntime.on(\"value\", (p) =>\n send({ message: { type: \"value\", payload: p } })\n );\n graphRuntime.on(\"invalidate\", (p) =>\n send({ message: { type: \"invalidate\", payload: p } })\n );\n graphRuntime.on(\"error\", (p) =>\n send({ message: { type: \"error\", payload: p } })\n );\n graphRuntime.on(\"stats\", (p) =>\n send({ message: { type: \"stats\", payload: p } })\n );\n },\n setExtData: (data) => {\n if (!data || typeof data !== \"object\") {\n extData = {};\n return;\n }\n // Replace to keep semantics deterministic\n extData = { ...data };\n },\n getExtData: () => {\n return extData;\n },\n snapshot: (): RuntimeSnapshot => {\n const inputs: RuntimeSnapshot[\"inputs\"] = {};\n const outputs: RuntimeSnapshot[\"outputs\"] = {};\n if (!graphRuntime) return { inputs, outputs };\n const nodes = graphRuntime.getNodeIds();\n for (const nodeId of nodes) {\n const data = graphRuntime.getNodeData(nodeId);\n if (data?.inputs && Object.keys(data.inputs).length > 0) {\n inputs[nodeId] = { ...data.inputs };\n }\n if (data?.outputs && Object.keys(data.outputs).length > 0) {\n outputs[nodeId] = { ...data.outputs };\n }\n }\n return { inputs, outputs };\n },\n snapshotFull: () => {\n const snap = originalApi.snapshot();\n const extData = originalApi.getExtData();\n const env = graphRuntime?.getEnvironment?.() ?? {};\n const def = graphRuntime?.getGraphDef();\n return {\n def,\n environment: env,\n inputs: snap.inputs,\n outputs: snap.outputs,\n extData,\n };\n },\n applySnapshotFull: async (payload, options) => {\n const def = payload.def;\n if (!def) return;\n\n // Only build if skipBuild is not true\n if (options?.skipBuild !== true) {\n await originalApi.build(def, payload.environment);\n } else if (!graphRuntime) {\n // If skipping build but no runtime exists, we still need to build\n console.info(\n \"Skipping build is set but no runtime exists, building anyway\"\n );\n await originalApi.build(def, payload.environment);\n }\n\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate({\n inputs: payload.inputs,\n outputs: payload.outputs,\n });\n originalApi.setExtData(payload.extData || {});\n },\n describeRegistry: () => {\n // types (include enum options when available)\n const types = Array.from(registry.types.entries()).map(([id, d]) => {\n const en = registry.enums.get(id);\n return {\n id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n ...(en ? { options: en.options } : {}),\n };\n });\n // categories: not directly enumerable; derive from node descriptors\n const nodeDescs = Array.from(registry.nodes.values());\n const catIds = new Set(nodeDescs.map((n) => n.categoryId));\n const categories = Array.from(catIds).map((id) => {\n const cat = registry.categories.get?.(id);\n return { id, displayName: cat?.displayName };\n });\n const nodes = nodeDescs.map((n) => ({\n id: n.id,\n categoryId: n.categoryId,\n displayName: n.displayName,\n inputs: n.inputs || {},\n outputs: n.outputs || {},\n inputDefaults: n.inputDefaults || {},\n }));\n const coercions = registry.listCoercions();\n return { types, categories, nodes, coercions, schemaVersion: 4 };\n },\n update: async (def) => {\n if (!graphRuntime) return;\n graphRuntime.update(def, registry);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n },\n setEnvironment: (env, opts) => {\n if (!graphRuntime) return;\n if (opts?.merge) {\n const current = graphRuntime.getEnvironment();\n const next = { ...(current || {}), ...(env || {}) };\n graphRuntime.setEnvironment(next);\n return;\n }\n graphRuntime.setEnvironment(env);\n },\n setInputs: (nodeId, inputs) => {\n if (engine) {\n engine.setInputs(nodeId, inputs);\n } else {\n graphRuntime?.setInputs(nodeId, inputs);\n }\n },\n triggerExternal: (nodeId, event) => {\n if (engine) {\n engine.triggerExternal(nodeId, event);\n } else {\n graphRuntime?.triggerExternal(nodeId, event);\n }\n },\n launch: (opts) => {\n if (!graphRuntime) {\n throw new Error(\"Cannot launch: graph runtime not built\");\n }\n\n // Dispose existing engine if any\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n\n // Create new engine using shared factory\n engine = createEngine(graphRuntime, opts);\n\n // Launch the engine\n if (engine) {\n engine.launch(opts?.invalidate);\n }\n },\n step: async () => {\n if (!engine) return;\n // Type guard for StepEngine\n if (\"step\" in engine && typeof engine.step === \"function\") {\n await (engine as any).step();\n }\n },\n computeNode: async (nodeId: string) => {\n if (!engine) return;\n // Type guard for PullEngine\n if (\"computeNode\" in engine && typeof engine.computeNode === \"function\") {\n await (engine as any).computeNode(nodeId);\n }\n },\n flush: async () => {\n if (!engine) return;\n // Type guard for BatchedEngine\n if (\"flush\" in engine && typeof engine.flush === \"function\") {\n await (engine as any).flush();\n }\n },\n whenIdle: () => {\n if (engine) {\n return engine.whenIdle();\n }\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose: () => {\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n\n // Helper to wrap a method with extension support\n const wrapMethod = <K extends keyof RuntimeApi>(\n key: K,\n original: RuntimeApi[K]\n ): RuntimeApi[K] => {\n const extension = extensions?.[key];\n if (!extension) {\n return original;\n }\n // Handle optional methods that might be undefined\n if (!original) {\n return original;\n }\n return ((...args: Parameters<NonNullable<RuntimeApi[K]>>) => {\n return extension(original as any, getContext(), ...args);\n }) as unknown as RuntimeApi[K];\n };\n\n // Create API with extensions applied\n const extendedApi: RuntimeApi = {\n coerce: wrapMethod(\"coerce\", originalApi.coerce),\n getEnvironment: wrapMethod(\"getEnvironment\", originalApi.getEnvironment),\n applyRegistry: wrapMethod(\"applyRegistry\", originalApi.applyRegistry),\n build: wrapMethod(\"build\", originalApi.build),\n setExtData: wrapMethod(\"setExtData\", originalApi.setExtData),\n getExtData: wrapMethod(\"getExtData\", originalApi.getExtData),\n snapshot: wrapMethod(\"snapshot\", originalApi.snapshot),\n snapshotFull: wrapMethod(\"snapshotFull\", originalApi.snapshotFull),\n applySnapshotFull: wrapMethod(\n \"applySnapshotFull\",\n originalApi.applySnapshotFull\n ),\n describeRegistry: wrapMethod(\n \"describeRegistry\",\n originalApi.describeRegistry\n ),\n update: wrapMethod(\"update\", originalApi.update),\n setEnvironment: wrapMethod(\"setEnvironment\", originalApi.setEnvironment),\n setInputs: wrapMethod(\"setInputs\", originalApi.setInputs),\n triggerExternal: wrapMethod(\"triggerExternal\", originalApi.triggerExternal),\n step: wrapMethod(\"step\", originalApi.step),\n computeNode: wrapMethod(\"computeNode\", originalApi.computeNode),\n flush: wrapMethod(\"flush\", originalApi.flush),\n launch: wrapMethod(\"launch\", originalApi.launch),\n whenIdle: wrapMethod(\"whenIdle\", originalApi.whenIdle),\n dispose: wrapMethod(\"dispose\", originalApi.dispose),\n };\n\n return extendedApi;\n}\n","import type {\n Envelope,\n RunnerOptions,\n RuntimeEvent,\n} from \"@bian-womp/spark-protocol\";\nimport type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\n\nexport class RemoteEngine implements Engine {\n private listeners = new Map<\n EngineEventName,\n Set<EngineEventListener<EngineEventName>>\n >();\n private cache = new Map<string, { value: unknown; runtimeTypeId?: string }>();\n\n constructor(private transport: Transport) {\n this.transport.subscribe((env) => this.onEnvelope(env));\n }\n\n private onEnvelope(env: Envelope<RuntimeEvent>): void {\n const msg = env.message;\n if (!msg) return;\n if (msg.type === \"value\") {\n const key = `${msg.payload.nodeId}.${msg.payload.handle}`;\n this.cache.set(key, {\n value: msg.payload.value,\n runtimeTypeId: msg.payload.runtimeTypeId,\n });\n this.emit(\"value\", msg.payload);\n } else if (msg.type === \"error\") {\n this.emit(\"error\", msg.payload);\n } else if (msg.type === \"invalidate\") {\n this.emit(\"invalidate\", msg.payload);\n } else if (msg.type === \"stats\") {\n this.emit(\"stats\", msg.payload);\n }\n }\n\n launch(\n invalidate?: boolean,\n engineConfig?: Omit<RunnerOptions, \"invalidate\">\n ): void {\n this.transport.send({\n message: {\n type: \"Launch\",\n payload: { invalidate, ...engineConfig },\n },\n });\n }\n\n // Batch inputs for a single network round-trip\n setInputs(nodeId: string, inputs: Record<string, unknown>): void {\n this.transport.send({\n message: { type: \"SetInputs\", payload: { nodeId, inputs } },\n });\n }\n\n triggerExternal(nodeId: string, event: unknown): void {\n this.transport.send({\n message: { type: \"TriggerExternal\", payload: { nodeId, event } },\n });\n }\n\n on<K extends EngineEventName>(\n event: K,\n handler: EngineEventListener<K>\n ): () => void {\n if (!this.listeners.has(event)) this.listeners.set(event, new Set());\n const set = this.listeners.get(event)! as Set<EngineEventListener<K>>;\n set.add(handler);\n return () => set.delete(handler);\n }\n\n private emit<K extends EngineEventName>(\n event: K,\n payload: EngineEventMap[K]\n ): void {\n const set = this.listeners.get(event);\n if (set) for (const h of Array.from(set)) h(payload);\n }\n\n getOutput(nodeId: string, output: string): unknown {\n return this.cache.get(`${nodeId}.${output}`)?.value;\n }\n\n async whenIdle(): Promise<void> {\n await this.transport.request({ message: { type: \"WhenIdle\" } });\n }\n\n dispose(): void {\n this.transport.send({ message: { type: \"Dispose\" } });\n }\n}\n","// Node-only transport using a UNIX domain socket.\n// Import directly from path: \"@bian-womp/spark-remote/transport/UnixSocketTransport\" in Node/Electron code.\n// Do not re-export from the browser index to avoid bundling in web builds.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\n// Use node:net for ESM compatibility in Node 18+\n// We avoid type imports here to keep this file isolated from browser builds.\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { Socket } from \"node:net\";\n\nexport class UnixSocketTransport implements Transport {\n private socket?: Socket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private buffer = \"\";\n private waiters = new Map<number, (env: Envelope<any>) => void>();\n private seq = new SeqGenerator();\n\n constructor(private socketPath: string) {}\n\n async connect(): Promise<void> {\n if (typeof process === \"undefined\") {\n throw new Error(\"UnixSocketTransport requires a Node environment\");\n }\n if (this.socket) return;\n const { createConnection } = await import(\"node:net\");\n const sock = createConnection(this.socketPath);\n this.socket = sock;\n await new Promise<void>((resolve, reject) => {\n sock.once(\"connect\", () => resolve());\n sock.once(\"error\", (e) => reject(e));\n });\n sock.on(\"data\", (chunk: Buffer) => this.onData(chunk));\n sock.on(\"error\", () => {\n /* noop, surface via request waiters if needed */\n });\n }\n\n private onData(chunk: Buffer): void {\n this.buffer += chunk.toString(\"utf8\");\n let idx = this.buffer.indexOf(\"\\n\");\n while (idx >= 0) {\n const raw = this.buffer.slice(0, idx);\n this.buffer = this.buffer.slice(idx + 1);\n idx = this.buffer.indexOf(\"\\n\");\n if (!raw.trim()) continue;\n try {\n const env = JSON.parse(raw) as Envelope<any>;\n if (env && typeof env.seq === \"number\" && this.waiters.has(env.seq)) {\n const fn = this.waiters.get(env.seq)!;\n this.waiters.delete(env.seq);\n fn(env);\n } else {\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {\n // ignore malformed frames\n }\n }\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = typeof msg.seq === \"number\" ? msg.seq : this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n this.waiters.set(seq, (incoming) => resolve(incoming));\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const s = this.socket;\n if (!s) return;\n try {\n s.write(JSON.stringify(msg) + \"\\n\");\n } catch {\n // ignore\n }\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n const s = this.socket;\n this.socket = undefined;\n if (!s) return;\n await new Promise<void>((resolve) => {\n try {\n s.end(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n}\n","import type {\n GraphDefinition,\n RegistryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Envelope,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport type { Engine } from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport, TransportConnectOptions } from \"./transport/Transport\";\nimport { HttpPollingTransport } from \"./transport/HttpPollingTransport\";\nimport { WebSocketTransport } from \"./transport/WebSocketTransport\";\nimport { UnixSocketTransport } from \"./transport/UnixSocketTransport\";\n\nexport type RemoteClientConfig =\n | {\n kind: \"remote-http\";\n baseUrl: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-ws\";\n url: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-unix\";\n socketPath: string;\n connectOptions?: TransportConnectOptions;\n };\n\nexport type RemoteTransportStatus = {\n state: \"connecting\" | \"connected\" | \"disconnected\";\n kind: \"remote-http\" | \"remote-ws\" | \"remote-unix\";\n runnerId?: string;\n};\n\nexport type TransportEventListener = (status: RemoteTransportStatus) => void;\nexport type CustomEventListener = (event: Envelope<any>) => void;\n\nexport class RuntimeApiClient {\n private engine?: RemoteEngine;\n private transport?: Transport;\n private customEventListeners = new Set<CustomEventListener>();\n private transportEventListeners = new Set<TransportEventListener>();\n private transportUnsubscribe?: () => void;\n private disposed = false;\n private config: RemoteClientConfig;\n private connectingPromise?: Promise<void>;\n private runnerId?: string;\n\n constructor(\n config: RemoteClientConfig,\n options?: { onCustomEvent?: CustomEventListener; runnerId?: string }\n ) {\n this.config = config;\n this.runnerId = options?.runnerId;\n if (options?.onCustomEvent) {\n this.customEventListeners.add(options.onCustomEvent);\n }\n // Engine will be created after transport is connected\n }\n\n /**\n * Create transport instance based on config.\n * Extracted to a separate method for better testability and clarity.\n */\n private async createTransport(): Promise<Transport> {\n const kind = this.config.kind;\n if (kind === \"remote-http\") {\n if (!HttpPollingTransport) {\n throw new Error(\"HttpPollingTransport not available\");\n }\n return new HttpPollingTransport(this.config.baseUrl);\n } else if (kind === \"remote-ws\") {\n if (!WebSocketTransport) {\n throw new Error(\"WebSocketTransport not available\");\n }\n return new WebSocketTransport(this.config.url, {\n onConnectionLost: () => {\n this.dispose().catch((err) => {\n console.warn(\n \"[RuntimeApiClient] Error disposing on connection loss:\",\n err\n );\n });\n },\n });\n } else if (kind === \"remote-unix\") {\n // Dynamic import to avoid bundling in browser builds\n return new UnixSocketTransport(this.config.socketPath);\n } else {\n throw new Error(`Invalid transport kind: ${kind}`);\n }\n }\n\n /**\n * Connect to the remote runtime API.\n * Creates and connects the transport, then initializes the engine.\n * Safe to call multiple times - concurrent calls will wait for the same connection.\n */\n async connect(): Promise<void> {\n if (this.disposed) {\n throw new Error(\"Cannot connect: RuntimeApiClient has been disposed\");\n }\n if (this.transport) {\n // Already connected\n return;\n }\n // If already connecting, wait for that connection to complete\n if (this.connectingPromise) {\n return this.connectingPromise;\n }\n\n this.emitTransportStatus({\n state: \"connecting\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n\n // Create connection promise to prevent concurrent connections\n this.connectingPromise = (async () => {\n try {\n const transport = await this.createTransport();\n await transport.connect(this.config.connectOptions);\n this.transport = transport;\n\n // Subscribe to all transport events\n this.transportUnsubscribe = transport.subscribe((event) => {\n this.handleTransportEvent(event);\n });\n\n // Create engine with connected transport\n this.engine = new RemoteEngine(transport);\n\n this.emitTransportStatus({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n } catch (error) {\n // Clear connecting promise on error so retry is possible\n this.connectingPromise = undefined;\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n throw error;\n } finally {\n // Clear connecting promise on success\n this.connectingPromise = undefined;\n }\n })();\n\n return this.connectingPromise;\n }\n\n /**\n * Handle events from transport.\n * Routes standard runtime events to engine, custom events to custom handlers.\n */\n private handleTransportEvent(event: Envelope<any>): void {\n const msg = event.message;\n if (!msg || typeof msg !== \"object\" || !(\"type\" in msg)) return;\n\n const type = msg.type;\n // Standard runtime events: stats, value, error, invalidate\n // These are handled by RemoteEngine via transport subscription\n // Custom events are anything else\n if (![\"stats\", \"value\", \"error\", \"invalidate\"].includes(type)) {\n // Emit to custom event listeners (constructor callback is auto-subscribed)\n for (const listener of this.customEventListeners) {\n listener(event);\n }\n }\n }\n\n /**\n * Subscribe to transport status changes.\n * Returns an unsubscribe function.\n */\n onTransportStatus(listener: TransportEventListener): () => void {\n this.transportEventListeners.add(listener);\n // Immediately emit current status if connected\n if (this.transport) {\n listener({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n return () => {\n this.transportEventListeners.delete(listener);\n };\n }\n\n private emitTransportStatus(status: RemoteTransportStatus): void {\n for (const listener of this.transportEventListeners) {\n listener(status);\n }\n }\n\n /**\n * Ensure transport is connected. Called automatically by API methods.\n * Returns the transport instance, throwing if connection fails or client is disposed.\n */\n private async ensureConnected(): Promise<Transport> {\n if (this.disposed) {\n throw new Error(\n \"Cannot ensure connection: RuntimeApiClient has been disposed\"\n );\n }\n if (!this.transport) {\n await this.connect();\n }\n // After connect(), transport is guaranteed to be set\n if (!this.transport) {\n throw new Error(\"Failed to establish transport connection\");\n }\n return this.transport;\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Build\",\n payload: { def, environment: opts?.environment },\n },\n });\n }\n\n async update(def: GraphDefinition): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegistryDescriptor> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegistryDescriptor }) || {};\n return (\n payload.registry || {\n types: [],\n categories: [],\n nodes: [],\n coercions: [],\n schemaVersion: 4,\n }\n );\n }\n\n async applyRegistry(deltas: Array<any>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Snapshot\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"SnapshotFull\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshotFull }) || {};\n return (\n payload.snapshot || {\n def: undefined,\n environment: {},\n inputs: {},\n outputs: {},\n }\n );\n }\n\n async applySnapshotFull(\n payload: RuntimeSnapshotFull,\n options?: { skipBuild?: boolean }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"ApplySnapshotFull\",\n payload,\n skipBuild: options?.skipBuild,\n },\n });\n }\n\n async setEnvironment(\n environment: Record<string, unknown>,\n opts?: { merge?: boolean }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"SetEnvironment\",\n payload: { environment, merge: opts?.merge },\n },\n });\n }\n\n async getEnvironment(): Promise<Record<string, unknown>> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"GetEnvironment\" },\n });\n const payload =\n (res?.message as { environment?: Record<string, unknown> }) || {};\n return payload.environment || {};\n }\n\n async coerce(from: string, to: string, value: unknown): Promise<unknown> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Coerce\", payload: { from, to, value } },\n });\n const payload = (res?.message as { ok?: boolean; value?: unknown }) || {};\n return payload.value;\n }\n\n getEngine(): Engine {\n if (!this.engine) {\n throw new Error(\"Engine not available: call connect() first\");\n }\n return this.engine;\n }\n\n async launch(opts?: RunnerOptions): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Launch\",\n payload: opts,\n },\n });\n }\n\n async step(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Step\" },\n });\n }\n\n async computeNode(nodeId: string): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"ComputeNode\", payload: { nodeId } },\n });\n }\n\n async flush(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Flush\" },\n });\n }\n\n async setExtData(data: Record<string, unknown>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"SetExtData\", payload: data },\n });\n }\n\n /**\n * Dispose the client and close the transport connection.\n * Idempotent: safe to call multiple times.\n */\n async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n\n // Clear connecting promise if any\n this.connectingPromise = undefined;\n\n // Unsubscribe from transport events\n if (this.transportUnsubscribe) {\n this.transportUnsubscribe();\n this.transportUnsubscribe = undefined;\n }\n\n // Close transport connection\n if (this.transport) {\n const transportToClose = this.transport;\n this.transport = undefined;\n this.engine = undefined as any; // Clear engine reference\n await transportToClose.close().catch((err) => {\n console.warn(\"[RuntimeApiClient] Error closing transport:\", err);\n });\n }\n\n // Clear listeners\n this.customEventListeners.clear();\n this.transportEventListeners.clear();\n\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n}\n","import type {\n Envelope,\n Command,\n Json,\n SystemError,\n LogHandler,\n} from \"@bian-womp/spark-protocol\";\nimport type { RuntimeApi } from \"./runtime\";\nimport { summarize, serializeError } from \"./errors\";\n\n/**\n * Middleware function that can preprocess commands before they reach the handler.\n * Call `next()` to continue to the next middleware or handler.\n */\nexport type CommandMiddleware = (\n env: Envelope<Command>,\n next: () => Promise<void>\n) => Promise<void>;\n\n/**\n * Error handler callback for command processing errors.\n */\nexport type ErrorHandler = (\n errorEnv: Envelope<{ type: \"error\"; payload: SystemError }>\n) => void;\n\nexport class RuntimeApiServer {\n private middlewares: CommandMiddleware[] = [];\n\n constructor(\n private runtimeApi: RuntimeApi,\n private options?: {\n errorHandler?: ErrorHandler;\n logHandler?: LogHandler;\n }\n ) {}\n\n /**\n * Register middleware to preprocess commands before handling.\n * Middlewares are executed in registration order.\n */\n use(middleware: CommandMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * Handle command with error handling and middleware support.\n */\n async handleCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n try {\n // Execute middlewares in sequence, then process command\n await this.executeMiddlewares(env, async () => {\n await this.processCommand(env, ack);\n });\n } catch (err: unknown) {\n this.handleError(env, err);\n }\n }\n\n /**\n * Execute middlewares in sequence, then call the final handler.\n */\n private async executeMiddlewares(\n env: Envelope<Command>,\n finalHandler: () => Promise<void>\n ): Promise<void> {\n let index = 0;\n const next = async (): Promise<void> => {\n if (index >= this.middlewares.length) {\n await finalHandler();\n return;\n }\n const middleware = this.middlewares[index++];\n await middleware(env, next);\n };\n await next();\n }\n\n /**\n * Process the command by routing to the appropriate handler.\n */\n private async processCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n this.logCommand(\"Build\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n envKeys: Object.keys(msg.payload.environment ?? {}).join(\",\"),\n });\n await this.runtimeApi.build(\n msg.payload.def,\n msg.payload.environment as Json\n );\n ack();\n break;\n }\n case \"Update\": {\n this.logCommand(\"Update\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n });\n await this.runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n this.logCommand(\"SetEnvironment\", env);\n this.runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInputs\": {\n this.logCommand(\"SetInputs\", env, {\n nodeId: msg.payload.nodeId,\n keys: Object.keys(msg.payload.inputs || {}).join(\",\"),\n });\n const nodeId = msg.payload.nodeId;\n const inputs = msg.payload.inputs;\n this.runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n this.logCommand(\"TriggerExternal\", env, {\n nodeId: msg.payload.nodeId,\n event: summarize(msg.payload.event),\n });\n this.runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n const launchPayload = msg.payload;\n this.logCommand(\"Launch\", env, {\n engine: launchPayload.engine,\n invalidate: launchPayload.invalidate,\n });\n this.runtimeApi.launch({\n invalidate: launchPayload.invalidate,\n engine: launchPayload.engine,\n batched: launchPayload.batched,\n hybrid: launchPayload.hybrid,\n });\n ack();\n break;\n }\n case \"Step\": {\n this.logCommand(\"Step\", env);\n if (this.runtimeApi.step) {\n await this.runtimeApi.step();\n }\n ack();\n break;\n }\n case \"ComputeNode\": {\n this.logCommand(\"ComputeNode\", env, {\n nodeId: msg.payload.nodeId,\n });\n if (this.runtimeApi.computeNode) {\n await this.runtimeApi.computeNode(msg.payload.nodeId);\n }\n ack();\n break;\n }\n case \"Flush\": {\n this.logCommand(\"Flush\", env);\n if (this.runtimeApi.flush) {\n await this.runtimeApi.flush();\n }\n ack();\n break;\n }\n case \"WhenIdle\": {\n this.logCommand(\"WhenIdle\", env);\n await this.runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n this.logCommand(\"Snapshot\", env);\n const snap = this.runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n this.logCommand(\"SnapshotFull\", env);\n const snap = this.runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n this.logCommand(\"GetEnvironment\", env);\n const environment = this.runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n const skipBuild = (msg as { skipBuild?: boolean }).skipBuild;\n this.logCommand(\n \"ApplySnapshotFull\",\n env,\n skipBuild ? { skipBuild: true } : undefined\n );\n await this.runtimeApi.applySnapshotFull(msg.payload, { skipBuild });\n ack();\n break;\n }\n case \"Coerce\": {\n this.logCommand(\"Coerce\", env, {\n from: msg.payload.from,\n to: msg.payload.to,\n });\n const value = await this.runtimeApi.coerce(\n msg.payload?.from,\n msg.payload?.to,\n msg.payload?.value\n );\n ack({ value });\n break;\n }\n case \"DescribeRegistry\": {\n this.logCommand(\"DescribeRegistry\", env);\n const desc = this.runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n this.logCommand(\"RegistryApply\", env);\n await this.runtimeApi.applyRegistry(msg.payload.deltas || []);\n ack();\n break;\n }\n case \"SetExtData\": {\n this.runtimeApi.setExtData(msg.payload);\n ack();\n break;\n }\n case \"Dispose\": {\n this.logCommand(\"Dispose\", env);\n this.runtimeApi.dispose();\n ack();\n break;\n }\n default: {\n this.logCommand(\"Unknown type\", env);\n ack();\n }\n }\n }\n\n /**\n * Helper method to log commands with consistent format.\n */\n private logCommand(\n type: string,\n env: Envelope<Command>,\n extra?: Record<string, unknown>\n ): void {\n const extraStr = extra\n ? ` ${Object.entries(extra)\n .map(([k, v]) => `${k}=${v}`)\n .join(\" \")}`\n : \"\";\n const message = `rx ${type} seq=${env.seq}${extraStr}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"debug\", message, {\n seq: env.seq,\n ...extra,\n });\n } else {\n // Fallback to console.debug for backward compatibility\n console.debug(message);\n }\n }\n\n /**\n * Handle errors and notify error handler if provided.\n * Formats errors as SystemError since these are infrastructure/command processing errors,\n * not node execution errors.\n */\n private handleError(env: Envelope<Command>, err: unknown): void {\n const errorMessage = `error handling command: ${String(err)}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"error\", errorMessage, {\n seq: env.seq,\n err,\n });\n } else {\n // Fallback to console.error for backward compatibility\n console.error(`${errorMessage}:`, err);\n }\n\n const serialized = serializeError(err);\n const systemError: SystemError = {\n kind: \"system\",\n message: serialized?.message || String(err) || \"Unknown error\",\n code: serialized?.code || serialized?.statusCode || 500,\n err: serialized,\n };\n const errorEnv: Envelope<{ type: \"error\"; payload: SystemError }> = {\n seq: env.seq ?? Date.now(),\n ts: Date.now(),\n message: { type: \"error\", payload: systemError },\n };\n if (this.options?.errorHandler) {\n this.options.errorHandler(errorEnv);\n }\n }\n}\n"],"names":["WebSocket","GraphBuilder","createEngine"],"mappings":"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"}
@@ -70,7 +70,9 @@ export declare class RuntimeApiClient {
70
70
  applyRegistry(deltas: Array<any>): Promise<void>;
71
71
  snapshot(): Promise<RuntimeSnapshot>;
72
72
  snapshotFull(): Promise<RuntimeSnapshotFull>;
73
- applySnapshotFull(payload: RuntimeSnapshotFull): Promise<void>;
73
+ applySnapshotFull(payload: RuntimeSnapshotFull, options?: {
74
+ skipBuild?: boolean;
75
+ }): Promise<void>;
74
76
  setEnvironment(environment: Record<string, unknown>, opts?: {
75
77
  merge?: boolean;
76
78
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeApiClient.d.ts","sourceRoot":"","sources":["../../../src/RuntimeApiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RuntimeApiClient.d.ts","sourceRoot":"","sources":["../../../src/RuntimeApiClient.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeApiServer.d.ts","sourceRoot":"","sources":["../../../../src/server/RuntimeApiServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,QAAQ,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,KACxD,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,WAAW,CAA2B;gBAGpC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;QAChB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,YAAA;IAGH;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;OAEG;IACG,aAAa,CACjB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;YACW,kBAAkB;IAgBhC;;OAEG;YACW,cAAc;IA0K5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAuBlB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CA6BpB"}
1
+ {"version":3,"file":"RuntimeApiServer.d.ts","sourceRoot":"","sources":["../../../../src/server/RuntimeApiServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,QAAQ,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,KACxD,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,WAAW,CAA2B;gBAGpC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;QAChB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,YAAA;IAGH;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;OAEG;IACG,aAAa,CACjB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;YACW,kBAAkB;IAgBhC;;OAEG;YACW,cAAc;IA+K5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAuBlB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CA6BpB"}
@@ -22,7 +22,9 @@ export interface RuntimeApi {
22
22
  snapshot: () => RuntimeSnapshot;
23
23
  coerce: (from: string, to: string, value: unknown) => Promise<unknown>;
24
24
  snapshotFull: () => RuntimeSnapshotFull;
25
- applySnapshotFull: (payload: RuntimeSnapshotFull) => Promise<void>;
25
+ applySnapshotFull: (payload: RuntimeSnapshotFull, options?: {
26
+ skipBuild?: boolean;
27
+ }) => Promise<void>;
26
28
  }
27
29
  export interface RuntimeApiContext {
28
30
  registry: Registry;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"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"}
package/lib/esm/index.js CHANGED
@@ -423,11 +423,19 @@ async function createRuntimeAdapter(createRegistry, send, extensions) {
423
423
  extData,
424
424
  };
425
425
  },
426
- applySnapshotFull: async (payload) => {
426
+ applySnapshotFull: async (payload, options) => {
427
427
  const def = payload.def;
428
428
  if (!def)
429
429
  return;
430
- await originalApi.build(def, payload.environment);
430
+ // Only build if skipBuild is not true
431
+ if (options?.skipBuild !== true) {
432
+ await originalApi.build(def, payload.environment);
433
+ }
434
+ else if (!graphRuntime) {
435
+ // If skipping build but no runtime exists, we still need to build
436
+ console.info("Skipping build is set but no runtime exists, building anyway");
437
+ await originalApi.build(def, payload.environment);
438
+ }
431
439
  // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs
432
440
  graphRuntime?.hydrate({
433
441
  inputs: payload.inputs,
@@ -980,10 +988,14 @@ class RuntimeApiClient {
980
988
  outputs: {},
981
989
  });
982
990
  }
983
- async applySnapshotFull(payload) {
991
+ async applySnapshotFull(payload, options) {
984
992
  const transport = await this.ensureConnected();
985
993
  await transport.request({
986
- message: { type: "ApplySnapshotFull", payload },
994
+ message: {
995
+ type: "ApplySnapshotFull",
996
+ payload,
997
+ skipBuild: options?.skipBuild,
998
+ },
987
999
  });
988
1000
  }
989
1001
  async setEnvironment(environment, opts) {
@@ -1246,8 +1258,9 @@ class RuntimeApiServer {
1246
1258
  break;
1247
1259
  }
1248
1260
  case "ApplySnapshotFull": {
1249
- this.logCommand("ApplySnapshotFull", env);
1250
- await this.runtimeApi.applySnapshotFull(msg.payload);
1261
+ const skipBuild = msg.skipBuild;
1262
+ this.logCommand("ApplySnapshotFull", env, skipBuild ? { skipBuild: true } : undefined);
1263
+ await this.runtimeApi.applySnapshotFull(msg.payload, { skipBuild });
1251
1264
  ack();
1252
1265
  break;
1253
1266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/transport/Seq.ts","../../src/transport/WebSocketTransport.ts","../../src/transport/HttpPollingTransport.ts","../../src/server/errors.ts","../../src/server/runtime.ts","../../src/RemoteEngine.ts","../../src/transport/UnixSocketTransport.ts","../../src/RuntimeApiClient.ts","../../src/server/RuntimeApiServer.ts"],"sourcesContent":["export class SeqGenerator {\n private lastMs = 0;\n private seqInMs = 0;\n\n next(): number {\n const now = Date.now();\n if (now === this.lastMs) {\n this.seqInMs = (this.seqInMs + 1) % 1000;\n } else {\n this.lastMs = now;\n this.seqInMs = 0;\n }\n return now * 1000 + this.seqInMs;\n }\n}\n\n","import { WebSocket } from \"ws\";\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport, TransportConnectOptions } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nexport class WebSocketTransport implements Transport {\n private ws?: WebSocket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private baseUrl: string;\n private seq = new SeqGenerator();\n\n private pingInterval?: NodeJS.Timeout;\n private pongTimeout?: NodeJS.Timeout;\n private isAlive = false;\n private readonly PING_INTERVAL_MS = 30000;\n private readonly PONG_TIMEOUT_MS = 10000;\n private onConnectionLost?: () => void;\n private pongHandler?: () => void;\n\n constructor(url: string, options?: { onConnectionLost?: () => void }) {\n this.baseUrl = url;\n this.onConnectionLost = options?.onConnectionLost;\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n\n let url: URL;\n if (this.baseUrl.startsWith(\"ws://\") || this.baseUrl.startsWith(\"wss://\")) {\n url = new URL(this.baseUrl);\n } else {\n const wsBaseUrl = this.baseUrl.replace(/^http/, \"ws\");\n url = new URL(wsBaseUrl);\n }\n\n if (options?.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const wsUrl = url.toString();\n this.ws = window\n ? new (window as any).WebSocket(wsUrl)\n : new WebSocket(wsUrl);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n\n this.ws.onopen = () => {\n this.startHeartbeat();\n resolve();\n };\n\n this.ws.onerror = (e) => reject(e);\n\n this.ws.onmessage = (ev) => {\n try {\n const env = JSON.parse(String(ev.data)) as Envelope<any>;\n for (const l of Array.from(this.listeners)) l(env);\n } catch {}\n };\n\n this.ws.onclose = () => {\n this.stopHeartbeat();\n };\n });\n }\n\n private startHeartbeat(): void {\n this.stopHeartbeat();\n this.isAlive = true;\n\n if (typeof window !== \"undefined\" || !this.ws) return;\n\n this.pongHandler = () => {\n this.isAlive = true;\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n };\n this.ws.on(\"pong\", this.pongHandler);\n\n this.pingInterval = setInterval(() => {\n if (!this.ws || this.ws.readyState !== OPEN) {\n this.stopHeartbeat();\n return;\n }\n\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n this.ws.terminate();\n return;\n }\n\n this.isAlive = false;\n\n try {\n (this.ws as any).ping();\n } catch (err) {\n console.warn(\"[WebSocketTransport] Failed to send ping:\", err);\n this.onConnectionLost?.();\n this.stopHeartbeat();\n return;\n }\n\n this.pongTimeout = setTimeout(() => {\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n if (this.ws) {\n this.ws.terminate();\n }\n }\n }, this.PONG_TIMEOUT_MS);\n }, this.PING_INTERVAL_MS);\n }\n\n private stopHeartbeat(): void {\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = undefined;\n }\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n if (this.ws && this.pongHandler) {\n this.ws.off(\"pong\", this.pongHandler);\n this.pongHandler = undefined;\n }\n this.isAlive = false;\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n const off = this.subscribe((incoming) => {\n if (incoming.seq === seq) {\n off();\n resolve(incoming);\n }\n });\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n if (!this.ws || this.ws.readyState !== OPEN) return;\n this.ws.send(JSON.stringify(msg));\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n this.stopHeartbeat();\n if (!this.ws) return;\n const ws = this.ws;\n this.ws = undefined;\n await new Promise<void>((resolve) => {\n ws.onclose = () => resolve();\n try {\n ws.close();\n } catch {\n resolve();\n }\n });\n }\n}\n","import type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type {\n Transport,\n TransportConnectOptions,\n TransportConnectParams,\n} from \"./Transport\";\n\nexport class HttpPollingTransport implements Transport {\n private baseUrl: string;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private polling?: NodeJS.Timeout;\n private cursor?: string;\n private connectParams?: TransportConnectParams;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n // Store connection params for use in requests\n this.connectParams = options?.params;\n\n // Start polling loop\n if (this.polling) return;\n const tick = async () => {\n try {\n const url = new URL(this.baseUrl + \"/events\");\n if (this.cursor) url.searchParams.set(\"cursor\", this.cursor);\n // Add connection params to all requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString());\n if (!res.ok) return;\n const batch = (await res.json()) as Envelope<any>[];\n for (const env of batch) {\n this.cursor = String(env.seq ?? Date.now());\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {}\n };\n this.polling = setInterval(tick, 200);\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to command requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n const data = (await res.json()) as Envelope<TRes>;\n return data;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to send requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n if (this.polling) clearInterval(this.polling);\n this.polling = undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function summarize(value: unknown, maxLen = 120): string {\n try {\n const s = typeof value === \"string\" ? value : JSON.stringify(value);\n return s.length > maxLen ? s.slice(0, maxLen) + \"…\" : s;\n } catch {\n return String(value);\n }\n}\n\nexport function serializeError(err: unknown): any {\n try {\n if (!err) return { message: String(err) };\n const errAny = err as any;\n if (err instanceof Error) {\n const base: any = {\n name: err.name,\n message: err.message,\n stack: err.stack,\n };\n for (const k of Object.keys(errAny)) base[k] = errAny[k];\n return base;\n }\n if (typeof err === \"object\") {\n const maybeMsg = errAny?.message;\n const maybeName = errAny?.name;\n const maybeStack = errAny?.stack;\n const out = { ...errAny };\n if (maybeMsg && !out.message) out.message = String(maybeMsg);\n if (maybeName && !out.name) out.name = String(maybeName);\n if (maybeStack && !out.stack) out.stack = String(maybeStack);\n return out;\n }\n return { message: String(err) };\n } catch {\n return { message: String(err) };\n }\n}\n","import type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegistryDescriptor,\n RegistryDelta,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Json,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport {\n GraphBuilder,\n Registry,\n GraphRuntime,\n Engine,\n createEngine,\n} from \"@bian-womp/spark-graph\";\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: RegistryDelta[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setExtData: (data: Record<string, unknown>) => void;\n getExtData: () => Record<string, unknown>;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: (opts?: RunnerOptions) => void;\n step?: () => Promise<void>;\n computeNode?: (nodeId: string) => Promise<void>;\n flush?: () => Promise<void>;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegistryDescriptor;\n snapshot: () => RuntimeSnapshot;\n coerce: (from: string, to: string, value: unknown) => Promise<unknown>;\n snapshotFull: () => RuntimeSnapshotFull;\n applySnapshotFull: (payload: RuntimeSnapshotFull) => Promise<void>;\n}\n\nexport interface RuntimeApiContext {\n registry: Registry;\n builder: GraphBuilder;\n graphRuntime: GraphRuntime | undefined;\n engine: Engine | undefined;\n extData: Record<string, unknown>;\n}\n\nexport type RuntimeApiExtension = {\n [K in keyof RuntimeApi]?: RuntimeApi[K] extends (...args: any[]) => any\n ? (\n original: RuntimeApi[K],\n context: RuntimeApiContext,\n ...args: Parameters<RuntimeApi[K]>\n ) => ReturnType<RuntimeApi[K]>\n : never;\n};\n\nexport async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void,\n extensions?: RuntimeApiExtension\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n let engine: Engine | undefined;\n let extData: Record<string, unknown> = {};\n\n // Helper to get current context\n const getContext = (): RuntimeApiContext => ({\n registry,\n builder,\n graphRuntime,\n engine,\n extData,\n });\n\n // Original implementations - define as separate functions first to allow cross-references\n const originalApi: RuntimeApi = {\n coerce: async (from, to, value) => {\n const resolved = registry.resolveCoercion(from, to);\n if (!resolved) return value;\n if (resolved.kind === \"sync\") return resolved.convert(value);\n const ac = new AbortController();\n return await resolved.convertAsync(value, ac.signal);\n },\n getEnvironment: () => {\n return graphRuntime?.getEnvironment?.() ?? {};\n },\n applyRegistry: async (deltas) => {\n // Pause runtime if exists\n // Apply each delta to the live registry\n for (const d of deltas || []) {\n if (!d || typeof d !== \"object\") continue;\n if (d.kind === \"register-enum\") {\n registry.registerEnum({\n id: d.id,\n displayName: d.displayName,\n options: d.options || [],\n bakeTarget: d.bakeTarget,\n opts: d.opts,\n });\n } else if (d.kind === \"register-type\") {\n registry.registerType({\n id: d.id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n validate: (_v) => true,\n });\n } else if (d.kind === \"register-node\") {\n const desc = d.desc || {};\n registry.registerNode({\n id: String(desc.id || \"\"),\n categoryId: String(desc.categoryId || \"compute\"),\n displayName: desc.displayName,\n inputs: desc.inputs || {},\n outputs: desc.outputs || {},\n // impl must be empty per frontend registration contract\n impl: () => {},\n });\n }\n }\n // Notify clients (include deltas in invalidate payload)\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"registry-changed\", deltas },\n },\n });\n },\n build: async (def, opts) => {\n const env = opts || {};\n graphRuntime = builder.build(def, { environment: env });\n graphRuntime.on(\"value\", (p) =>\n send({ message: { type: \"value\", payload: p } })\n );\n graphRuntime.on(\"invalidate\", (p) =>\n send({ message: { type: \"invalidate\", payload: p } })\n );\n graphRuntime.on(\"error\", (p) =>\n send({ message: { type: \"error\", payload: p } })\n );\n graphRuntime.on(\"stats\", (p) =>\n send({ message: { type: \"stats\", payload: p } })\n );\n },\n setExtData: (data) => {\n if (!data || typeof data !== \"object\") {\n extData = {};\n return;\n }\n // Replace to keep semantics deterministic\n extData = { ...data };\n },\n getExtData: () => {\n return extData;\n },\n snapshot: (): RuntimeSnapshot => {\n const inputs: RuntimeSnapshot[\"inputs\"] = {};\n const outputs: RuntimeSnapshot[\"outputs\"] = {};\n if (!graphRuntime) return { inputs, outputs };\n const nodes = graphRuntime.getNodeIds();\n for (const nodeId of nodes) {\n const data = graphRuntime.getNodeData(nodeId);\n if (data?.inputs && Object.keys(data.inputs).length > 0) {\n inputs[nodeId] = { ...data.inputs };\n }\n if (data?.outputs && Object.keys(data.outputs).length > 0) {\n outputs[nodeId] = { ...data.outputs };\n }\n }\n return { inputs, outputs };\n },\n snapshotFull: () => {\n const snap = originalApi.snapshot();\n const extData = originalApi.getExtData();\n const env = graphRuntime?.getEnvironment?.() ?? {};\n const def = graphRuntime?.getGraphDef();\n return {\n def,\n environment: env,\n inputs: snap.inputs,\n outputs: snap.outputs,\n extData,\n };\n },\n applySnapshotFull: async (payload) => {\n const def = payload.def;\n if (!def) return;\n await originalApi.build(def, payload.environment);\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate({\n inputs: payload.inputs,\n outputs: payload.outputs,\n });\n originalApi.setExtData(payload.extData || {});\n },\n describeRegistry: () => {\n // types (include enum options when available)\n const types = Array.from(registry.types.entries()).map(([id, d]) => {\n const en = registry.enums.get(id);\n return {\n id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n ...(en ? { options: en.options } : {}),\n };\n });\n // categories: not directly enumerable; derive from node descriptors\n const nodeDescs = Array.from(registry.nodes.values());\n const catIds = new Set(nodeDescs.map((n) => n.categoryId));\n const categories = Array.from(catIds).map((id) => {\n const cat = registry.categories.get?.(id);\n return { id, displayName: cat?.displayName };\n });\n const nodes = nodeDescs.map((n) => ({\n id: n.id,\n categoryId: n.categoryId,\n displayName: n.displayName,\n inputs: n.inputs || {},\n outputs: n.outputs || {},\n inputDefaults: n.inputDefaults || {},\n }));\n const coercions = registry.listCoercions();\n return { types, categories, nodes, coercions, schemaVersion: 4 };\n },\n update: async (def) => {\n if (!graphRuntime) return;\n graphRuntime.update(def, registry);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n },\n setEnvironment: (env, opts) => {\n if (!graphRuntime) return;\n if (opts?.merge) {\n const current = graphRuntime.getEnvironment();\n const next = { ...(current || {}), ...(env || {}) };\n graphRuntime.setEnvironment(next);\n return;\n }\n graphRuntime.setEnvironment(env);\n },\n setInputs: (nodeId, inputs) => {\n if (engine) {\n engine.setInputs(nodeId, inputs);\n } else {\n graphRuntime?.setInputs(nodeId, inputs);\n }\n },\n triggerExternal: (nodeId, event) => {\n if (engine) {\n engine.triggerExternal(nodeId, event);\n } else {\n graphRuntime?.triggerExternal(nodeId, event);\n }\n },\n launch: (opts) => {\n if (!graphRuntime) {\n throw new Error(\"Cannot launch: graph runtime not built\");\n }\n\n // Dispose existing engine if any\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n\n // Create new engine using shared factory\n engine = createEngine(graphRuntime, opts);\n\n // Launch the engine\n if (engine) {\n engine.launch(opts?.invalidate);\n }\n },\n step: async () => {\n if (!engine) return;\n // Type guard for StepEngine\n if (\"step\" in engine && typeof engine.step === \"function\") {\n await (engine as any).step();\n }\n },\n computeNode: async (nodeId: string) => {\n if (!engine) return;\n // Type guard for PullEngine\n if (\"computeNode\" in engine && typeof engine.computeNode === \"function\") {\n await (engine as any).computeNode(nodeId);\n }\n },\n flush: async () => {\n if (!engine) return;\n // Type guard for BatchedEngine\n if (\"flush\" in engine && typeof engine.flush === \"function\") {\n await (engine as any).flush();\n }\n },\n whenIdle: () => {\n if (engine) {\n return engine.whenIdle();\n }\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose: () => {\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n\n // Helper to wrap a method with extension support\n const wrapMethod = <K extends keyof RuntimeApi>(\n key: K,\n original: RuntimeApi[K]\n ): RuntimeApi[K] => {\n const extension = extensions?.[key];\n if (!extension) {\n return original;\n }\n // Handle optional methods that might be undefined\n if (!original) {\n return original;\n }\n return ((...args: Parameters<NonNullable<RuntimeApi[K]>>) => {\n return extension(original as any, getContext(), ...args);\n }) as unknown as RuntimeApi[K];\n };\n\n // Create API with extensions applied\n const extendedApi: RuntimeApi = {\n coerce: wrapMethod(\"coerce\", originalApi.coerce),\n getEnvironment: wrapMethod(\"getEnvironment\", originalApi.getEnvironment),\n applyRegistry: wrapMethod(\"applyRegistry\", originalApi.applyRegistry),\n build: wrapMethod(\"build\", originalApi.build),\n setExtData: wrapMethod(\"setExtData\", originalApi.setExtData),\n getExtData: wrapMethod(\"getExtData\", originalApi.getExtData),\n snapshot: wrapMethod(\"snapshot\", originalApi.snapshot),\n snapshotFull: wrapMethod(\"snapshotFull\", originalApi.snapshotFull),\n applySnapshotFull: wrapMethod(\n \"applySnapshotFull\",\n originalApi.applySnapshotFull\n ),\n describeRegistry: wrapMethod(\n \"describeRegistry\",\n originalApi.describeRegistry\n ),\n update: wrapMethod(\"update\", originalApi.update),\n setEnvironment: wrapMethod(\"setEnvironment\", originalApi.setEnvironment),\n setInputs: wrapMethod(\"setInputs\", originalApi.setInputs),\n triggerExternal: wrapMethod(\"triggerExternal\", originalApi.triggerExternal),\n step: wrapMethod(\"step\", originalApi.step),\n computeNode: wrapMethod(\"computeNode\", originalApi.computeNode),\n flush: wrapMethod(\"flush\", originalApi.flush),\n launch: wrapMethod(\"launch\", originalApi.launch),\n whenIdle: wrapMethod(\"whenIdle\", originalApi.whenIdle),\n dispose: wrapMethod(\"dispose\", originalApi.dispose),\n };\n\n return extendedApi;\n}\n","import type {\n Envelope,\n RunnerOptions,\n RuntimeEvent,\n} from \"@bian-womp/spark-protocol\";\nimport type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\n\nexport class RemoteEngine implements Engine {\n private listeners = new Map<\n EngineEventName,\n Set<EngineEventListener<EngineEventName>>\n >();\n private cache = new Map<string, { value: unknown; runtimeTypeId?: string }>();\n\n constructor(private transport: Transport) {\n this.transport.subscribe((env) => this.onEnvelope(env));\n }\n\n private onEnvelope(env: Envelope<RuntimeEvent>): void {\n const msg = env.message;\n if (!msg) return;\n if (msg.type === \"value\") {\n const key = `${msg.payload.nodeId}.${msg.payload.handle}`;\n this.cache.set(key, {\n value: msg.payload.value,\n runtimeTypeId: msg.payload.runtimeTypeId,\n });\n this.emit(\"value\", msg.payload);\n } else if (msg.type === \"error\") {\n this.emit(\"error\", msg.payload);\n } else if (msg.type === \"invalidate\") {\n this.emit(\"invalidate\", msg.payload);\n } else if (msg.type === \"stats\") {\n this.emit(\"stats\", msg.payload);\n }\n }\n\n launch(\n invalidate?: boolean,\n engineConfig?: Omit<RunnerOptions, \"invalidate\">\n ): void {\n this.transport.send({\n message: {\n type: \"Launch\",\n payload: { invalidate, ...engineConfig },\n },\n });\n }\n\n // Batch inputs for a single network round-trip\n setInputs(nodeId: string, inputs: Record<string, unknown>): void {\n this.transport.send({\n message: { type: \"SetInputs\", payload: { nodeId, inputs } },\n });\n }\n\n triggerExternal(nodeId: string, event: unknown): void {\n this.transport.send({\n message: { type: \"TriggerExternal\", payload: { nodeId, event } },\n });\n }\n\n on<K extends EngineEventName>(\n event: K,\n handler: EngineEventListener<K>\n ): () => void {\n if (!this.listeners.has(event)) this.listeners.set(event, new Set());\n const set = this.listeners.get(event)! as Set<EngineEventListener<K>>;\n set.add(handler);\n return () => set.delete(handler);\n }\n\n private emit<K extends EngineEventName>(\n event: K,\n payload: EngineEventMap[K]\n ): void {\n const set = this.listeners.get(event);\n if (set) for (const h of Array.from(set)) h(payload);\n }\n\n getOutput(nodeId: string, output: string): unknown {\n return this.cache.get(`${nodeId}.${output}`)?.value;\n }\n\n async whenIdle(): Promise<void> {\n await this.transport.request({ message: { type: \"WhenIdle\" } });\n }\n\n dispose(): void {\n this.transport.send({ message: { type: \"Dispose\" } });\n }\n}\n","// Node-only transport using a UNIX domain socket.\n// Import directly from path: \"@bian-womp/spark-remote/transport/UnixSocketTransport\" in Node/Electron code.\n// Do not re-export from the browser index to avoid bundling in web builds.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\n// Use node:net for ESM compatibility in Node 18+\n// We avoid type imports here to keep this file isolated from browser builds.\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { Socket } from \"node:net\";\n\nexport class UnixSocketTransport implements Transport {\n private socket?: Socket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private buffer = \"\";\n private waiters = new Map<number, (env: Envelope<any>) => void>();\n private seq = new SeqGenerator();\n\n constructor(private socketPath: string) {}\n\n async connect(): Promise<void> {\n if (typeof process === \"undefined\") {\n throw new Error(\"UnixSocketTransport requires a Node environment\");\n }\n if (this.socket) return;\n const { createConnection } = await import(\"node:net\");\n const sock = createConnection(this.socketPath);\n this.socket = sock;\n await new Promise<void>((resolve, reject) => {\n sock.once(\"connect\", () => resolve());\n sock.once(\"error\", (e) => reject(e));\n });\n sock.on(\"data\", (chunk: Buffer) => this.onData(chunk));\n sock.on(\"error\", () => {\n /* noop, surface via request waiters if needed */\n });\n }\n\n private onData(chunk: Buffer): void {\n this.buffer += chunk.toString(\"utf8\");\n let idx = this.buffer.indexOf(\"\\n\");\n while (idx >= 0) {\n const raw = this.buffer.slice(0, idx);\n this.buffer = this.buffer.slice(idx + 1);\n idx = this.buffer.indexOf(\"\\n\");\n if (!raw.trim()) continue;\n try {\n const env = JSON.parse(raw) as Envelope<any>;\n if (env && typeof env.seq === \"number\" && this.waiters.has(env.seq)) {\n const fn = this.waiters.get(env.seq)!;\n this.waiters.delete(env.seq);\n fn(env);\n } else {\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {\n // ignore malformed frames\n }\n }\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = typeof msg.seq === \"number\" ? msg.seq : this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n this.waiters.set(seq, (incoming) => resolve(incoming));\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const s = this.socket;\n if (!s) return;\n try {\n s.write(JSON.stringify(msg) + \"\\n\");\n } catch {\n // ignore\n }\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n const s = this.socket;\n this.socket = undefined;\n if (!s) return;\n await new Promise<void>((resolve) => {\n try {\n s.end(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n}\n","import type {\n GraphDefinition,\n RegistryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Envelope,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport type { Engine } from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport, TransportConnectOptions } from \"./transport/Transport\";\nimport { HttpPollingTransport } from \"./transport/HttpPollingTransport\";\nimport { WebSocketTransport } from \"./transport/WebSocketTransport\";\nimport { UnixSocketTransport } from \"./transport/UnixSocketTransport\";\n\nexport type RemoteClientConfig =\n | {\n kind: \"remote-http\";\n baseUrl: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-ws\";\n url: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-unix\";\n socketPath: string;\n connectOptions?: TransportConnectOptions;\n };\n\nexport type RemoteTransportStatus = {\n state: \"connecting\" | \"connected\" | \"disconnected\";\n kind: \"remote-http\" | \"remote-ws\" | \"remote-unix\";\n runnerId?: string;\n};\n\nexport type TransportEventListener = (status: RemoteTransportStatus) => void;\nexport type CustomEventListener = (event: Envelope<any>) => void;\n\nexport class RuntimeApiClient {\n private engine?: RemoteEngine;\n private transport?: Transport;\n private customEventListeners = new Set<CustomEventListener>();\n private transportEventListeners = new Set<TransportEventListener>();\n private transportUnsubscribe?: () => void;\n private disposed = false;\n private config: RemoteClientConfig;\n private connectingPromise?: Promise<void>;\n private runnerId?: string;\n\n constructor(\n config: RemoteClientConfig,\n options?: { onCustomEvent?: CustomEventListener; runnerId?: string }\n ) {\n this.config = config;\n this.runnerId = options?.runnerId;\n if (options?.onCustomEvent) {\n this.customEventListeners.add(options.onCustomEvent);\n }\n // Engine will be created after transport is connected\n }\n\n /**\n * Create transport instance based on config.\n * Extracted to a separate method for better testability and clarity.\n */\n private async createTransport(): Promise<Transport> {\n const kind = this.config.kind;\n if (kind === \"remote-http\") {\n if (!HttpPollingTransport) {\n throw new Error(\"HttpPollingTransport not available\");\n }\n return new HttpPollingTransport(this.config.baseUrl);\n } else if (kind === \"remote-ws\") {\n if (!WebSocketTransport) {\n throw new Error(\"WebSocketTransport not available\");\n }\n return new WebSocketTransport(this.config.url, {\n onConnectionLost: () => {\n this.dispose().catch((err) => {\n console.warn(\n \"[RuntimeApiClient] Error disposing on connection loss:\",\n err\n );\n });\n },\n });\n } else if (kind === \"remote-unix\") {\n // Dynamic import to avoid bundling in browser builds\n return new UnixSocketTransport(this.config.socketPath);\n } else {\n throw new Error(`Invalid transport kind: ${kind}`);\n }\n }\n\n /**\n * Connect to the remote runtime API.\n * Creates and connects the transport, then initializes the engine.\n * Safe to call multiple times - concurrent calls will wait for the same connection.\n */\n async connect(): Promise<void> {\n if (this.disposed) {\n throw new Error(\"Cannot connect: RuntimeApiClient has been disposed\");\n }\n if (this.transport) {\n // Already connected\n return;\n }\n // If already connecting, wait for that connection to complete\n if (this.connectingPromise) {\n return this.connectingPromise;\n }\n\n this.emitTransportStatus({\n state: \"connecting\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n\n // Create connection promise to prevent concurrent connections\n this.connectingPromise = (async () => {\n try {\n const transport = await this.createTransport();\n await transport.connect(this.config.connectOptions);\n this.transport = transport;\n\n // Subscribe to all transport events\n this.transportUnsubscribe = transport.subscribe((event) => {\n this.handleTransportEvent(event);\n });\n\n // Create engine with connected transport\n this.engine = new RemoteEngine(transport);\n\n this.emitTransportStatus({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n } catch (error) {\n // Clear connecting promise on error so retry is possible\n this.connectingPromise = undefined;\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n throw error;\n } finally {\n // Clear connecting promise on success\n this.connectingPromise = undefined;\n }\n })();\n\n return this.connectingPromise;\n }\n\n /**\n * Handle events from transport.\n * Routes standard runtime events to engine, custom events to custom handlers.\n */\n private handleTransportEvent(event: Envelope<any>): void {\n const msg = event.message;\n if (!msg || typeof msg !== \"object\" || !(\"type\" in msg)) return;\n\n const type = msg.type;\n // Standard runtime events: stats, value, error, invalidate\n // These are handled by RemoteEngine via transport subscription\n // Custom events are anything else\n if (![\"stats\", \"value\", \"error\", \"invalidate\"].includes(type)) {\n // Emit to custom event listeners (constructor callback is auto-subscribed)\n for (const listener of this.customEventListeners) {\n listener(event);\n }\n }\n }\n\n /**\n * Subscribe to transport status changes.\n * Returns an unsubscribe function.\n */\n onTransportStatus(listener: TransportEventListener): () => void {\n this.transportEventListeners.add(listener);\n // Immediately emit current status if connected\n if (this.transport) {\n listener({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n return () => {\n this.transportEventListeners.delete(listener);\n };\n }\n\n private emitTransportStatus(status: RemoteTransportStatus): void {\n for (const listener of this.transportEventListeners) {\n listener(status);\n }\n }\n\n /**\n * Ensure transport is connected. Called automatically by API methods.\n * Returns the transport instance, throwing if connection fails or client is disposed.\n */\n private async ensureConnected(): Promise<Transport> {\n if (this.disposed) {\n throw new Error(\n \"Cannot ensure connection: RuntimeApiClient has been disposed\"\n );\n }\n if (!this.transport) {\n await this.connect();\n }\n // After connect(), transport is guaranteed to be set\n if (!this.transport) {\n throw new Error(\"Failed to establish transport connection\");\n }\n return this.transport;\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Build\",\n payload: { def, environment: opts?.environment },\n },\n });\n }\n\n async update(def: GraphDefinition): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegistryDescriptor> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegistryDescriptor }) || {};\n return (\n payload.registry || {\n types: [],\n categories: [],\n nodes: [],\n coercions: [],\n schemaVersion: 4,\n }\n );\n }\n\n async applyRegistry(deltas: Array<any>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Snapshot\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"SnapshotFull\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshotFull }) || {};\n return (\n payload.snapshot || {\n def: undefined,\n environment: {},\n inputs: {},\n outputs: {},\n }\n );\n }\n\n async applySnapshotFull(payload: RuntimeSnapshotFull): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"ApplySnapshotFull\", payload },\n });\n }\n\n async setEnvironment(\n environment: Record<string, unknown>,\n opts?: { merge?: boolean }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"SetEnvironment\",\n payload: { environment, merge: opts?.merge },\n },\n });\n }\n\n async getEnvironment(): Promise<Record<string, unknown>> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"GetEnvironment\" },\n });\n const payload =\n (res?.message as { environment?: Record<string, unknown> }) || {};\n return payload.environment || {};\n }\n\n async coerce(from: string, to: string, value: unknown): Promise<unknown> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Coerce\", payload: { from, to, value } },\n });\n const payload = (res?.message as { ok?: boolean; value?: unknown }) || {};\n return payload.value;\n }\n\n getEngine(): Engine {\n if (!this.engine) {\n throw new Error(\"Engine not available: call connect() first\");\n }\n return this.engine;\n }\n\n async launch(opts?: RunnerOptions): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Launch\",\n payload: opts,\n },\n });\n }\n\n async step(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Step\" },\n });\n }\n\n async computeNode(nodeId: string): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"ComputeNode\", payload: { nodeId } },\n });\n }\n\n async flush(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Flush\" },\n });\n }\n\n async setExtData(data: Record<string, unknown>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"SetExtData\", payload: data },\n });\n }\n\n /**\n * Dispose the client and close the transport connection.\n * Idempotent: safe to call multiple times.\n */\n async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n\n // Clear connecting promise if any\n this.connectingPromise = undefined;\n\n // Unsubscribe from transport events\n if (this.transportUnsubscribe) {\n this.transportUnsubscribe();\n this.transportUnsubscribe = undefined;\n }\n\n // Close transport connection\n if (this.transport) {\n const transportToClose = this.transport;\n this.transport = undefined;\n this.engine = undefined as any; // Clear engine reference\n await transportToClose.close().catch((err) => {\n console.warn(\"[RuntimeApiClient] Error closing transport:\", err);\n });\n }\n\n // Clear listeners\n this.customEventListeners.clear();\n this.transportEventListeners.clear();\n\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n}\n","import type {\n Envelope,\n Command,\n Json,\n SystemError,\n LogHandler,\n} from \"@bian-womp/spark-protocol\";\nimport type { RuntimeApi } from \"./runtime\";\nimport { summarize, serializeError } from \"./errors\";\n\n/**\n * Middleware function that can preprocess commands before they reach the handler.\n * Call `next()` to continue to the next middleware or handler.\n */\nexport type CommandMiddleware = (\n env: Envelope<Command>,\n next: () => Promise<void>\n) => Promise<void>;\n\n/**\n * Error handler callback for command processing errors.\n */\nexport type ErrorHandler = (\n errorEnv: Envelope<{ type: \"error\"; payload: SystemError }>\n) => void;\n\nexport class RuntimeApiServer {\n private middlewares: CommandMiddleware[] = [];\n\n constructor(\n private runtimeApi: RuntimeApi,\n private options?: {\n errorHandler?: ErrorHandler;\n logHandler?: LogHandler;\n }\n ) {}\n\n /**\n * Register middleware to preprocess commands before handling.\n * Middlewares are executed in registration order.\n */\n use(middleware: CommandMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * Handle command with error handling and middleware support.\n */\n async handleCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n try {\n // Execute middlewares in sequence, then process command\n await this.executeMiddlewares(env, async () => {\n await this.processCommand(env, ack);\n });\n } catch (err: unknown) {\n this.handleError(env, err);\n }\n }\n\n /**\n * Execute middlewares in sequence, then call the final handler.\n */\n private async executeMiddlewares(\n env: Envelope<Command>,\n finalHandler: () => Promise<void>\n ): Promise<void> {\n let index = 0;\n const next = async (): Promise<void> => {\n if (index >= this.middlewares.length) {\n await finalHandler();\n return;\n }\n const middleware = this.middlewares[index++];\n await middleware(env, next);\n };\n await next();\n }\n\n /**\n * Process the command by routing to the appropriate handler.\n */\n private async processCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n this.logCommand(\"Build\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n envKeys: Object.keys(msg.payload.environment ?? {}).join(\",\"),\n });\n await this.runtimeApi.build(\n msg.payload.def,\n msg.payload.environment as Json\n );\n ack();\n break;\n }\n case \"Update\": {\n this.logCommand(\"Update\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n });\n await this.runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n this.logCommand(\"SetEnvironment\", env);\n this.runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInputs\": {\n this.logCommand(\"SetInputs\", env, {\n nodeId: msg.payload.nodeId,\n keys: Object.keys(msg.payload.inputs || {}).join(\",\"),\n });\n const nodeId = msg.payload.nodeId;\n const inputs = msg.payload.inputs;\n this.runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n this.logCommand(\"TriggerExternal\", env, {\n nodeId: msg.payload.nodeId,\n event: summarize(msg.payload.event),\n });\n this.runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n const launchPayload = msg.payload;\n this.logCommand(\"Launch\", env, {\n engine: launchPayload.engine,\n invalidate: launchPayload.invalidate,\n });\n this.runtimeApi.launch({\n invalidate: launchPayload.invalidate,\n engine: launchPayload.engine,\n batched: launchPayload.batched,\n hybrid: launchPayload.hybrid,\n });\n ack();\n break;\n }\n case \"Step\": {\n this.logCommand(\"Step\", env);\n if (this.runtimeApi.step) {\n await this.runtimeApi.step();\n }\n ack();\n break;\n }\n case \"ComputeNode\": {\n this.logCommand(\"ComputeNode\", env, {\n nodeId: msg.payload.nodeId,\n });\n if (this.runtimeApi.computeNode) {\n await this.runtimeApi.computeNode(msg.payload.nodeId);\n }\n ack();\n break;\n }\n case \"Flush\": {\n this.logCommand(\"Flush\", env);\n if (this.runtimeApi.flush) {\n await this.runtimeApi.flush();\n }\n ack();\n break;\n }\n case \"WhenIdle\": {\n this.logCommand(\"WhenIdle\", env);\n await this.runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n this.logCommand(\"Snapshot\", env);\n const snap = this.runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n this.logCommand(\"SnapshotFull\", env);\n const snap = this.runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n this.logCommand(\"GetEnvironment\", env);\n const environment = this.runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n this.logCommand(\"ApplySnapshotFull\", env);\n await this.runtimeApi.applySnapshotFull(msg.payload);\n ack();\n break;\n }\n case \"Coerce\": {\n this.logCommand(\"Coerce\", env, {\n from: msg.payload.from,\n to: msg.payload.to,\n });\n const value = await this.runtimeApi.coerce(\n msg.payload?.from,\n msg.payload?.to,\n msg.payload?.value\n );\n ack({ value });\n break;\n }\n case \"DescribeRegistry\": {\n this.logCommand(\"DescribeRegistry\", env);\n const desc = this.runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n this.logCommand(\"RegistryApply\", env);\n await this.runtimeApi.applyRegistry(msg.payload.deltas || []);\n ack();\n break;\n }\n case \"SetExtData\": {\n this.runtimeApi.setExtData(msg.payload);\n ack();\n break;\n }\n case \"Dispose\": {\n this.logCommand(\"Dispose\", env);\n this.runtimeApi.dispose();\n ack();\n break;\n }\n default: {\n this.logCommand(\"Unknown type\", env);\n ack();\n }\n }\n }\n\n /**\n * Helper method to log commands with consistent format.\n */\n private logCommand(\n type: string,\n env: Envelope<Command>,\n extra?: Record<string, unknown>\n ): void {\n const extraStr = extra\n ? ` ${Object.entries(extra)\n .map(([k, v]) => `${k}=${v}`)\n .join(\" \")}`\n : \"\";\n const message = `rx ${type} seq=${env.seq}${extraStr}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"debug\", message, {\n seq: env.seq,\n ...extra,\n });\n } else {\n // Fallback to console.debug for backward compatibility\n console.debug(message);\n }\n }\n\n /**\n * Handle errors and notify error handler if provided.\n * Formats errors as SystemError since these are infrastructure/command processing errors,\n * not node execution errors.\n */\n private handleError(env: Envelope<Command>, err: unknown): void {\n const errorMessage = `error handling command: ${String(err)}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"error\", errorMessage, {\n seq: env.seq,\n err,\n });\n } else {\n // Fallback to console.error for backward compatibility\n console.error(`${errorMessage}:`, err);\n }\n\n const serialized = serializeError(err);\n const systemError: SystemError = {\n kind: \"system\",\n message: serialized?.message || String(err) || \"Unknown error\",\n code: serialized?.code || serialized?.statusCode || 500,\n err: serialized,\n };\n const errorEnv: Envelope<{ type: \"error\"; payload: SystemError }> = {\n seq: env.seq ?? Date.now(),\n ts: Date.now(),\n message: { type: \"error\", payload: systemError },\n };\n if (this.options?.errorHandler) {\n this.options.errorHandler(errorEnv);\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/transport/Seq.ts","../../src/transport/WebSocketTransport.ts","../../src/transport/HttpPollingTransport.ts","../../src/server/errors.ts","../../src/server/runtime.ts","../../src/RemoteEngine.ts","../../src/transport/UnixSocketTransport.ts","../../src/RuntimeApiClient.ts","../../src/server/RuntimeApiServer.ts"],"sourcesContent":["export class SeqGenerator {\n private lastMs = 0;\n private seqInMs = 0;\n\n next(): number {\n const now = Date.now();\n if (now === this.lastMs) {\n this.seqInMs = (this.seqInMs + 1) % 1000;\n } else {\n this.lastMs = now;\n this.seqInMs = 0;\n }\n return now * 1000 + this.seqInMs;\n }\n}\n\n","import { WebSocket } from \"ws\";\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport, TransportConnectOptions } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\nconst CONNECTING = 0;\nconst OPEN = 1;\nconst CLOSING = 2;\nconst CLOSED = 3;\n\nexport class WebSocketTransport implements Transport {\n private ws?: WebSocket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private baseUrl: string;\n private seq = new SeqGenerator();\n\n private pingInterval?: NodeJS.Timeout;\n private pongTimeout?: NodeJS.Timeout;\n private isAlive = false;\n private readonly PING_INTERVAL_MS = 30000;\n private readonly PONG_TIMEOUT_MS = 10000;\n private onConnectionLost?: () => void;\n private pongHandler?: () => void;\n\n constructor(url: string, options?: { onConnectionLost?: () => void }) {\n this.baseUrl = url;\n this.onConnectionLost = options?.onConnectionLost;\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n\n let url: URL;\n if (this.baseUrl.startsWith(\"ws://\") || this.baseUrl.startsWith(\"wss://\")) {\n url = new URL(this.baseUrl);\n } else {\n const wsBaseUrl = this.baseUrl.replace(/^http/, \"ws\");\n url = new URL(wsBaseUrl);\n }\n\n if (options?.params) {\n for (const [key, value] of Object.entries(options.params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const wsUrl = url.toString();\n this.ws = window\n ? new (window as any).WebSocket(wsUrl)\n : new WebSocket(wsUrl);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n\n this.ws.onopen = () => {\n this.startHeartbeat();\n resolve();\n };\n\n this.ws.onerror = (e) => reject(e);\n\n this.ws.onmessage = (ev) => {\n try {\n const env = JSON.parse(String(ev.data)) as Envelope<any>;\n for (const l of Array.from(this.listeners)) l(env);\n } catch {}\n };\n\n this.ws.onclose = () => {\n this.stopHeartbeat();\n };\n });\n }\n\n private startHeartbeat(): void {\n this.stopHeartbeat();\n this.isAlive = true;\n\n if (typeof window !== \"undefined\" || !this.ws) return;\n\n this.pongHandler = () => {\n this.isAlive = true;\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n };\n this.ws.on(\"pong\", this.pongHandler);\n\n this.pingInterval = setInterval(() => {\n if (!this.ws || this.ws.readyState !== OPEN) {\n this.stopHeartbeat();\n return;\n }\n\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n this.ws.terminate();\n return;\n }\n\n this.isAlive = false;\n\n try {\n (this.ws as any).ping();\n } catch (err) {\n console.warn(\"[WebSocketTransport] Failed to send ping:\", err);\n this.onConnectionLost?.();\n this.stopHeartbeat();\n return;\n }\n\n this.pongTimeout = setTimeout(() => {\n if (!this.isAlive) {\n this.onConnectionLost?.();\n this.stopHeartbeat();\n if (this.ws) {\n this.ws.terminate();\n }\n }\n }, this.PONG_TIMEOUT_MS);\n }, this.PING_INTERVAL_MS);\n }\n\n private stopHeartbeat(): void {\n if (this.pingInterval) {\n clearInterval(this.pingInterval);\n this.pingInterval = undefined;\n }\n if (this.pongTimeout) {\n clearTimeout(this.pongTimeout);\n this.pongTimeout = undefined;\n }\n if (this.ws && this.pongHandler) {\n this.ws.off(\"pong\", this.pongHandler);\n this.pongHandler = undefined;\n }\n this.isAlive = false;\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n const off = this.subscribe((incoming) => {\n if (incoming.seq === seq) {\n off();\n resolve(incoming);\n }\n });\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n if (!this.ws || this.ws.readyState !== OPEN) return;\n this.ws.send(JSON.stringify(msg));\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n this.stopHeartbeat();\n if (!this.ws) return;\n const ws = this.ws;\n this.ws = undefined;\n await new Promise<void>((resolve) => {\n ws.onclose = () => resolve();\n try {\n ws.close();\n } catch {\n resolve();\n }\n });\n }\n}\n","import type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type {\n Transport,\n TransportConnectOptions,\n TransportConnectParams,\n} from \"./Transport\";\n\nexport class HttpPollingTransport implements Transport {\n private baseUrl: string;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private polling?: NodeJS.Timeout;\n private cursor?: string;\n private connectParams?: TransportConnectParams;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(options?: TransportConnectOptions): Promise<void> {\n // Store connection params for use in requests\n this.connectParams = options?.params;\n\n // Start polling loop\n if (this.polling) return;\n const tick = async () => {\n try {\n const url = new URL(this.baseUrl + \"/events\");\n if (this.cursor) url.searchParams.set(\"cursor\", this.cursor);\n // Add connection params to all requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString());\n if (!res.ok) return;\n const batch = (await res.json()) as Envelope<any>[];\n for (const env of batch) {\n this.cursor = String(env.seq ?? Date.now());\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {}\n };\n this.polling = setInterval(tick, 200);\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to command requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n const res = await fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n const data = (await res.json()) as Envelope<TRes>;\n return data;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const url = new URL(this.baseUrl + \"/command\");\n // Add connection params to send requests\n if (this.connectParams) {\n for (const [key, value] of Object.entries(this.connectParams)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n fetch(url.toString(), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(msg),\n });\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n if (this.polling) clearInterval(this.polling);\n this.polling = undefined;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function summarize(value: unknown, maxLen = 120): string {\n try {\n const s = typeof value === \"string\" ? value : JSON.stringify(value);\n return s.length > maxLen ? s.slice(0, maxLen) + \"…\" : s;\n } catch {\n return String(value);\n }\n}\n\nexport function serializeError(err: unknown): any {\n try {\n if (!err) return { message: String(err) };\n const errAny = err as any;\n if (err instanceof Error) {\n const base: any = {\n name: err.name,\n message: err.message,\n stack: err.stack,\n };\n for (const k of Object.keys(errAny)) base[k] = errAny[k];\n return base;\n }\n if (typeof err === \"object\") {\n const maybeMsg = errAny?.message;\n const maybeName = errAny?.name;\n const maybeStack = errAny?.stack;\n const out = { ...errAny };\n if (maybeMsg && !out.message) out.message = String(maybeMsg);\n if (maybeName && !out.name) out.name = String(maybeName);\n if (maybeStack && !out.stack) out.stack = String(maybeStack);\n return out;\n }\n return { message: String(err) };\n } catch {\n return { message: String(err) };\n }\n}\n","import type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegistryDescriptor,\n RegistryDelta,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Json,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport {\n GraphBuilder,\n Registry,\n GraphRuntime,\n Engine,\n createEngine,\n} from \"@bian-womp/spark-graph\";\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: RegistryDelta[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setExtData: (data: Record<string, unknown>) => void;\n getExtData: () => Record<string, unknown>;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: (opts?: RunnerOptions) => void;\n step?: () => Promise<void>;\n computeNode?: (nodeId: string) => Promise<void>;\n flush?: () => Promise<void>;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegistryDescriptor;\n snapshot: () => RuntimeSnapshot;\n coerce: (from: string, to: string, value: unknown) => Promise<unknown>;\n snapshotFull: () => RuntimeSnapshotFull;\n applySnapshotFull: (\n payload: RuntimeSnapshotFull,\n options?: { skipBuild?: boolean }\n ) => Promise<void>;\n}\n\nexport interface RuntimeApiContext {\n registry: Registry;\n builder: GraphBuilder;\n graphRuntime: GraphRuntime | undefined;\n engine: Engine | undefined;\n extData: Record<string, unknown>;\n}\n\nexport type RuntimeApiExtension = {\n [K in keyof RuntimeApi]?: RuntimeApi[K] extends (...args: any[]) => any\n ? (\n original: RuntimeApi[K],\n context: RuntimeApiContext,\n ...args: Parameters<RuntimeApi[K]>\n ) => ReturnType<RuntimeApi[K]>\n : never;\n};\n\nexport async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void,\n extensions?: RuntimeApiExtension\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n let engine: Engine | undefined;\n let extData: Record<string, unknown> = {};\n\n // Helper to get current context\n const getContext = (): RuntimeApiContext => ({\n registry,\n builder,\n graphRuntime,\n engine,\n extData,\n });\n\n // Original implementations - define as separate functions first to allow cross-references\n const originalApi: RuntimeApi = {\n coerce: async (from, to, value) => {\n const resolved = registry.resolveCoercion(from, to);\n if (!resolved) return value;\n if (resolved.kind === \"sync\") return resolved.convert(value);\n const ac = new AbortController();\n return await resolved.convertAsync(value, ac.signal);\n },\n getEnvironment: () => {\n return graphRuntime?.getEnvironment?.() ?? {};\n },\n applyRegistry: async (deltas) => {\n // Pause runtime if exists\n // Apply each delta to the live registry\n for (const d of deltas || []) {\n if (!d || typeof d !== \"object\") continue;\n if (d.kind === \"register-enum\") {\n registry.registerEnum({\n id: d.id,\n displayName: d.displayName,\n options: d.options || [],\n bakeTarget: d.bakeTarget,\n opts: d.opts,\n });\n } else if (d.kind === \"register-type\") {\n registry.registerType({\n id: d.id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n validate: (_v) => true,\n });\n } else if (d.kind === \"register-node\") {\n const desc = d.desc || {};\n registry.registerNode({\n id: String(desc.id || \"\"),\n categoryId: String(desc.categoryId || \"compute\"),\n displayName: desc.displayName,\n inputs: desc.inputs || {},\n outputs: desc.outputs || {},\n // impl must be empty per frontend registration contract\n impl: () => {},\n });\n }\n }\n // Notify clients (include deltas in invalidate payload)\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"registry-changed\", deltas },\n },\n });\n },\n build: async (def, opts) => {\n const env = opts || {};\n graphRuntime = builder.build(def, { environment: env });\n graphRuntime.on(\"value\", (p) =>\n send({ message: { type: \"value\", payload: p } })\n );\n graphRuntime.on(\"invalidate\", (p) =>\n send({ message: { type: \"invalidate\", payload: p } })\n );\n graphRuntime.on(\"error\", (p) =>\n send({ message: { type: \"error\", payload: p } })\n );\n graphRuntime.on(\"stats\", (p) =>\n send({ message: { type: \"stats\", payload: p } })\n );\n },\n setExtData: (data) => {\n if (!data || typeof data !== \"object\") {\n extData = {};\n return;\n }\n // Replace to keep semantics deterministic\n extData = { ...data };\n },\n getExtData: () => {\n return extData;\n },\n snapshot: (): RuntimeSnapshot => {\n const inputs: RuntimeSnapshot[\"inputs\"] = {};\n const outputs: RuntimeSnapshot[\"outputs\"] = {};\n if (!graphRuntime) return { inputs, outputs };\n const nodes = graphRuntime.getNodeIds();\n for (const nodeId of nodes) {\n const data = graphRuntime.getNodeData(nodeId);\n if (data?.inputs && Object.keys(data.inputs).length > 0) {\n inputs[nodeId] = { ...data.inputs };\n }\n if (data?.outputs && Object.keys(data.outputs).length > 0) {\n outputs[nodeId] = { ...data.outputs };\n }\n }\n return { inputs, outputs };\n },\n snapshotFull: () => {\n const snap = originalApi.snapshot();\n const extData = originalApi.getExtData();\n const env = graphRuntime?.getEnvironment?.() ?? {};\n const def = graphRuntime?.getGraphDef();\n return {\n def,\n environment: env,\n inputs: snap.inputs,\n outputs: snap.outputs,\n extData,\n };\n },\n applySnapshotFull: async (payload, options) => {\n const def = payload.def;\n if (!def) return;\n\n // Only build if skipBuild is not true\n if (options?.skipBuild !== true) {\n await originalApi.build(def, payload.environment);\n } else if (!graphRuntime) {\n // If skipping build but no runtime exists, we still need to build\n console.info(\n \"Skipping build is set but no runtime exists, building anyway\"\n );\n await originalApi.build(def, payload.environment);\n }\n\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate({\n inputs: payload.inputs,\n outputs: payload.outputs,\n });\n originalApi.setExtData(payload.extData || {});\n },\n describeRegistry: () => {\n // types (include enum options when available)\n const types = Array.from(registry.types.entries()).map(([id, d]) => {\n const en = registry.enums.get(id);\n return {\n id,\n displayName: d.displayName,\n bakeTarget: d.bakeTarget,\n ...(en ? { options: en.options } : {}),\n };\n });\n // categories: not directly enumerable; derive from node descriptors\n const nodeDescs = Array.from(registry.nodes.values());\n const catIds = new Set(nodeDescs.map((n) => n.categoryId));\n const categories = Array.from(catIds).map((id) => {\n const cat = registry.categories.get?.(id);\n return { id, displayName: cat?.displayName };\n });\n const nodes = nodeDescs.map((n) => ({\n id: n.id,\n categoryId: n.categoryId,\n displayName: n.displayName,\n inputs: n.inputs || {},\n outputs: n.outputs || {},\n inputDefaults: n.inputDefaults || {},\n }));\n const coercions = registry.listCoercions();\n return { types, categories, nodes, coercions, schemaVersion: 4 };\n },\n update: async (def) => {\n if (!graphRuntime) return;\n graphRuntime.update(def, registry);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n },\n setEnvironment: (env, opts) => {\n if (!graphRuntime) return;\n if (opts?.merge) {\n const current = graphRuntime.getEnvironment();\n const next = { ...(current || {}), ...(env || {}) };\n graphRuntime.setEnvironment(next);\n return;\n }\n graphRuntime.setEnvironment(env);\n },\n setInputs: (nodeId, inputs) => {\n if (engine) {\n engine.setInputs(nodeId, inputs);\n } else {\n graphRuntime?.setInputs(nodeId, inputs);\n }\n },\n triggerExternal: (nodeId, event) => {\n if (engine) {\n engine.triggerExternal(nodeId, event);\n } else {\n graphRuntime?.triggerExternal(nodeId, event);\n }\n },\n launch: (opts) => {\n if (!graphRuntime) {\n throw new Error(\"Cannot launch: graph runtime not built\");\n }\n\n // Dispose existing engine if any\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n\n // Create new engine using shared factory\n engine = createEngine(graphRuntime, opts);\n\n // Launch the engine\n if (engine) {\n engine.launch(opts?.invalidate);\n }\n },\n step: async () => {\n if (!engine) return;\n // Type guard for StepEngine\n if (\"step\" in engine && typeof engine.step === \"function\") {\n await (engine as any).step();\n }\n },\n computeNode: async (nodeId: string) => {\n if (!engine) return;\n // Type guard for PullEngine\n if (\"computeNode\" in engine && typeof engine.computeNode === \"function\") {\n await (engine as any).computeNode(nodeId);\n }\n },\n flush: async () => {\n if (!engine) return;\n // Type guard for BatchedEngine\n if (\"flush\" in engine && typeof engine.flush === \"function\") {\n await (engine as any).flush();\n }\n },\n whenIdle: () => {\n if (engine) {\n return engine.whenIdle();\n }\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose: () => {\n if (engine) {\n engine.dispose();\n engine = undefined;\n }\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n\n // Helper to wrap a method with extension support\n const wrapMethod = <K extends keyof RuntimeApi>(\n key: K,\n original: RuntimeApi[K]\n ): RuntimeApi[K] => {\n const extension = extensions?.[key];\n if (!extension) {\n return original;\n }\n // Handle optional methods that might be undefined\n if (!original) {\n return original;\n }\n return ((...args: Parameters<NonNullable<RuntimeApi[K]>>) => {\n return extension(original as any, getContext(), ...args);\n }) as unknown as RuntimeApi[K];\n };\n\n // Create API with extensions applied\n const extendedApi: RuntimeApi = {\n coerce: wrapMethod(\"coerce\", originalApi.coerce),\n getEnvironment: wrapMethod(\"getEnvironment\", originalApi.getEnvironment),\n applyRegistry: wrapMethod(\"applyRegistry\", originalApi.applyRegistry),\n build: wrapMethod(\"build\", originalApi.build),\n setExtData: wrapMethod(\"setExtData\", originalApi.setExtData),\n getExtData: wrapMethod(\"getExtData\", originalApi.getExtData),\n snapshot: wrapMethod(\"snapshot\", originalApi.snapshot),\n snapshotFull: wrapMethod(\"snapshotFull\", originalApi.snapshotFull),\n applySnapshotFull: wrapMethod(\n \"applySnapshotFull\",\n originalApi.applySnapshotFull\n ),\n describeRegistry: wrapMethod(\n \"describeRegistry\",\n originalApi.describeRegistry\n ),\n update: wrapMethod(\"update\", originalApi.update),\n setEnvironment: wrapMethod(\"setEnvironment\", originalApi.setEnvironment),\n setInputs: wrapMethod(\"setInputs\", originalApi.setInputs),\n triggerExternal: wrapMethod(\"triggerExternal\", originalApi.triggerExternal),\n step: wrapMethod(\"step\", originalApi.step),\n computeNode: wrapMethod(\"computeNode\", originalApi.computeNode),\n flush: wrapMethod(\"flush\", originalApi.flush),\n launch: wrapMethod(\"launch\", originalApi.launch),\n whenIdle: wrapMethod(\"whenIdle\", originalApi.whenIdle),\n dispose: wrapMethod(\"dispose\", originalApi.dispose),\n };\n\n return extendedApi;\n}\n","import type {\n Envelope,\n RunnerOptions,\n RuntimeEvent,\n} from \"@bian-womp/spark-protocol\";\nimport type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\n\nexport class RemoteEngine implements Engine {\n private listeners = new Map<\n EngineEventName,\n Set<EngineEventListener<EngineEventName>>\n >();\n private cache = new Map<string, { value: unknown; runtimeTypeId?: string }>();\n\n constructor(private transport: Transport) {\n this.transport.subscribe((env) => this.onEnvelope(env));\n }\n\n private onEnvelope(env: Envelope<RuntimeEvent>): void {\n const msg = env.message;\n if (!msg) return;\n if (msg.type === \"value\") {\n const key = `${msg.payload.nodeId}.${msg.payload.handle}`;\n this.cache.set(key, {\n value: msg.payload.value,\n runtimeTypeId: msg.payload.runtimeTypeId,\n });\n this.emit(\"value\", msg.payload);\n } else if (msg.type === \"error\") {\n this.emit(\"error\", msg.payload);\n } else if (msg.type === \"invalidate\") {\n this.emit(\"invalidate\", msg.payload);\n } else if (msg.type === \"stats\") {\n this.emit(\"stats\", msg.payload);\n }\n }\n\n launch(\n invalidate?: boolean,\n engineConfig?: Omit<RunnerOptions, \"invalidate\">\n ): void {\n this.transport.send({\n message: {\n type: \"Launch\",\n payload: { invalidate, ...engineConfig },\n },\n });\n }\n\n // Batch inputs for a single network round-trip\n setInputs(nodeId: string, inputs: Record<string, unknown>): void {\n this.transport.send({\n message: { type: \"SetInputs\", payload: { nodeId, inputs } },\n });\n }\n\n triggerExternal(nodeId: string, event: unknown): void {\n this.transport.send({\n message: { type: \"TriggerExternal\", payload: { nodeId, event } },\n });\n }\n\n on<K extends EngineEventName>(\n event: K,\n handler: EngineEventListener<K>\n ): () => void {\n if (!this.listeners.has(event)) this.listeners.set(event, new Set());\n const set = this.listeners.get(event)! as Set<EngineEventListener<K>>;\n set.add(handler);\n return () => set.delete(handler);\n }\n\n private emit<K extends EngineEventName>(\n event: K,\n payload: EngineEventMap[K]\n ): void {\n const set = this.listeners.get(event);\n if (set) for (const h of Array.from(set)) h(payload);\n }\n\n getOutput(nodeId: string, output: string): unknown {\n return this.cache.get(`${nodeId}.${output}`)?.value;\n }\n\n async whenIdle(): Promise<void> {\n await this.transport.request({ message: { type: \"WhenIdle\" } });\n }\n\n dispose(): void {\n this.transport.send({ message: { type: \"Dispose\" } });\n }\n}\n","// Node-only transport using a UNIX domain socket.\n// Import directly from path: \"@bian-womp/spark-remote/transport/UnixSocketTransport\" in Node/Electron code.\n// Do not re-export from the browser index to avoid bundling in web builds.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Envelope } from \"@bian-womp/spark-protocol\";\nimport type { Transport } from \"./Transport\";\nimport { SeqGenerator } from \"./Seq\";\n\n// Use node:net for ESM compatibility in Node 18+\n// We avoid type imports here to keep this file isolated from browser builds.\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { Socket } from \"node:net\";\n\nexport class UnixSocketTransport implements Transport {\n private socket?: Socket;\n private listeners = new Set<(event: Envelope<any>) => void>();\n private buffer = \"\";\n private waiters = new Map<number, (env: Envelope<any>) => void>();\n private seq = new SeqGenerator();\n\n constructor(private socketPath: string) {}\n\n async connect(): Promise<void> {\n if (typeof process === \"undefined\") {\n throw new Error(\"UnixSocketTransport requires a Node environment\");\n }\n if (this.socket) return;\n const { createConnection } = await import(\"node:net\");\n const sock = createConnection(this.socketPath);\n this.socket = sock;\n await new Promise<void>((resolve, reject) => {\n sock.once(\"connect\", () => resolve());\n sock.once(\"error\", (e) => reject(e));\n });\n sock.on(\"data\", (chunk: Buffer) => this.onData(chunk));\n sock.on(\"error\", () => {\n /* noop, surface via request waiters if needed */\n });\n }\n\n private onData(chunk: Buffer): void {\n this.buffer += chunk.toString(\"utf8\");\n let idx = this.buffer.indexOf(\"\\n\");\n while (idx >= 0) {\n const raw = this.buffer.slice(0, idx);\n this.buffer = this.buffer.slice(idx + 1);\n idx = this.buffer.indexOf(\"\\n\");\n if (!raw.trim()) continue;\n try {\n const env = JSON.parse(raw) as Envelope<any>;\n if (env && typeof env.seq === \"number\" && this.waiters.has(env.seq)) {\n const fn = this.waiters.get(env.seq)!;\n this.waiters.delete(env.seq);\n fn(env);\n } else {\n for (const l of Array.from(this.listeners)) l(env);\n }\n } catch {\n // ignore malformed frames\n }\n }\n }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n const seq = typeof msg.seq === \"number\" ? msg.seq : this.seq.next();\n const env = { ...msg, seq };\n const p = new Promise<Envelope<TRes>>((resolve) => {\n this.waiters.set(seq, (incoming) => resolve(incoming));\n });\n this.send(env);\n return p;\n }\n\n send<TReq = unknown>(msg: Envelope<TReq>): void {\n const s = this.socket;\n if (!s) return;\n try {\n s.write(JSON.stringify(msg) + \"\\n\");\n } catch {\n // ignore\n }\n }\n\n subscribe(cb: (event: Envelope<any>) => void): () => void {\n this.listeners.add(cb);\n return () => this.listeners.delete(cb);\n }\n\n async close(): Promise<void> {\n const s = this.socket;\n this.socket = undefined;\n if (!s) return;\n await new Promise<void>((resolve) => {\n try {\n s.end(() => resolve());\n } catch {\n resolve();\n }\n });\n }\n}\n","import type {\n GraphDefinition,\n RegistryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n Envelope,\n RunnerOptions,\n} from \"@bian-womp/spark-protocol\";\nimport type { Engine } from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport, TransportConnectOptions } from \"./transport/Transport\";\nimport { HttpPollingTransport } from \"./transport/HttpPollingTransport\";\nimport { WebSocketTransport } from \"./transport/WebSocketTransport\";\nimport { UnixSocketTransport } from \"./transport/UnixSocketTransport\";\n\nexport type RemoteClientConfig =\n | {\n kind: \"remote-http\";\n baseUrl: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-ws\";\n url: string;\n connectOptions?: TransportConnectOptions;\n }\n | {\n kind: \"remote-unix\";\n socketPath: string;\n connectOptions?: TransportConnectOptions;\n };\n\nexport type RemoteTransportStatus = {\n state: \"connecting\" | \"connected\" | \"disconnected\";\n kind: \"remote-http\" | \"remote-ws\" | \"remote-unix\";\n runnerId?: string;\n};\n\nexport type TransportEventListener = (status: RemoteTransportStatus) => void;\nexport type CustomEventListener = (event: Envelope<any>) => void;\n\nexport class RuntimeApiClient {\n private engine?: RemoteEngine;\n private transport?: Transport;\n private customEventListeners = new Set<CustomEventListener>();\n private transportEventListeners = new Set<TransportEventListener>();\n private transportUnsubscribe?: () => void;\n private disposed = false;\n private config: RemoteClientConfig;\n private connectingPromise?: Promise<void>;\n private runnerId?: string;\n\n constructor(\n config: RemoteClientConfig,\n options?: { onCustomEvent?: CustomEventListener; runnerId?: string }\n ) {\n this.config = config;\n this.runnerId = options?.runnerId;\n if (options?.onCustomEvent) {\n this.customEventListeners.add(options.onCustomEvent);\n }\n // Engine will be created after transport is connected\n }\n\n /**\n * Create transport instance based on config.\n * Extracted to a separate method for better testability and clarity.\n */\n private async createTransport(): Promise<Transport> {\n const kind = this.config.kind;\n if (kind === \"remote-http\") {\n if (!HttpPollingTransport) {\n throw new Error(\"HttpPollingTransport not available\");\n }\n return new HttpPollingTransport(this.config.baseUrl);\n } else if (kind === \"remote-ws\") {\n if (!WebSocketTransport) {\n throw new Error(\"WebSocketTransport not available\");\n }\n return new WebSocketTransport(this.config.url, {\n onConnectionLost: () => {\n this.dispose().catch((err) => {\n console.warn(\n \"[RuntimeApiClient] Error disposing on connection loss:\",\n err\n );\n });\n },\n });\n } else if (kind === \"remote-unix\") {\n // Dynamic import to avoid bundling in browser builds\n return new UnixSocketTransport(this.config.socketPath);\n } else {\n throw new Error(`Invalid transport kind: ${kind}`);\n }\n }\n\n /**\n * Connect to the remote runtime API.\n * Creates and connects the transport, then initializes the engine.\n * Safe to call multiple times - concurrent calls will wait for the same connection.\n */\n async connect(): Promise<void> {\n if (this.disposed) {\n throw new Error(\"Cannot connect: RuntimeApiClient has been disposed\");\n }\n if (this.transport) {\n // Already connected\n return;\n }\n // If already connecting, wait for that connection to complete\n if (this.connectingPromise) {\n return this.connectingPromise;\n }\n\n this.emitTransportStatus({\n state: \"connecting\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n\n // Create connection promise to prevent concurrent connections\n this.connectingPromise = (async () => {\n try {\n const transport = await this.createTransport();\n await transport.connect(this.config.connectOptions);\n this.transport = transport;\n\n // Subscribe to all transport events\n this.transportUnsubscribe = transport.subscribe((event) => {\n this.handleTransportEvent(event);\n });\n\n // Create engine with connected transport\n this.engine = new RemoteEngine(transport);\n\n this.emitTransportStatus({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n } catch (error) {\n // Clear connecting promise on error so retry is possible\n this.connectingPromise = undefined;\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n throw error;\n } finally {\n // Clear connecting promise on success\n this.connectingPromise = undefined;\n }\n })();\n\n return this.connectingPromise;\n }\n\n /**\n * Handle events from transport.\n * Routes standard runtime events to engine, custom events to custom handlers.\n */\n private handleTransportEvent(event: Envelope<any>): void {\n const msg = event.message;\n if (!msg || typeof msg !== \"object\" || !(\"type\" in msg)) return;\n\n const type = msg.type;\n // Standard runtime events: stats, value, error, invalidate\n // These are handled by RemoteEngine via transport subscription\n // Custom events are anything else\n if (![\"stats\", \"value\", \"error\", \"invalidate\"].includes(type)) {\n // Emit to custom event listeners (constructor callback is auto-subscribed)\n for (const listener of this.customEventListeners) {\n listener(event);\n }\n }\n }\n\n /**\n * Subscribe to transport status changes.\n * Returns an unsubscribe function.\n */\n onTransportStatus(listener: TransportEventListener): () => void {\n this.transportEventListeners.add(listener);\n // Immediately emit current status if connected\n if (this.transport) {\n listener({\n state: \"connected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n return () => {\n this.transportEventListeners.delete(listener);\n };\n }\n\n private emitTransportStatus(status: RemoteTransportStatus): void {\n for (const listener of this.transportEventListeners) {\n listener(status);\n }\n }\n\n /**\n * Ensure transport is connected. Called automatically by API methods.\n * Returns the transport instance, throwing if connection fails or client is disposed.\n */\n private async ensureConnected(): Promise<Transport> {\n if (this.disposed) {\n throw new Error(\n \"Cannot ensure connection: RuntimeApiClient has been disposed\"\n );\n }\n if (!this.transport) {\n await this.connect();\n }\n // After connect(), transport is guaranteed to be set\n if (!this.transport) {\n throw new Error(\"Failed to establish transport connection\");\n }\n return this.transport;\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Build\",\n payload: { def, environment: opts?.environment },\n },\n });\n }\n\n async update(def: GraphDefinition): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegistryDescriptor> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegistryDescriptor }) || {};\n return (\n payload.registry || {\n types: [],\n categories: [],\n nodes: [],\n coercions: [],\n schemaVersion: 4,\n }\n );\n }\n\n async applyRegistry(deltas: Array<any>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Snapshot\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"SnapshotFull\" },\n });\n const payload = (res?.message as { snapshot: RuntimeSnapshotFull }) || {};\n return (\n payload.snapshot || {\n def: undefined,\n environment: {},\n inputs: {},\n outputs: {},\n }\n );\n }\n\n async applySnapshotFull(\n payload: RuntimeSnapshotFull,\n options?: { skipBuild?: boolean }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"ApplySnapshotFull\",\n payload,\n skipBuild: options?.skipBuild,\n },\n });\n }\n\n async setEnvironment(\n environment: Record<string, unknown>,\n opts?: { merge?: boolean }\n ): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"SetEnvironment\",\n payload: { environment, merge: opts?.merge },\n },\n });\n }\n\n async getEnvironment(): Promise<Record<string, unknown>> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"GetEnvironment\" },\n });\n const payload =\n (res?.message as { environment?: Record<string, unknown> }) || {};\n return payload.environment || {};\n }\n\n async coerce(from: string, to: string, value: unknown): Promise<unknown> {\n const transport = await this.ensureConnected();\n const res = await transport.request({\n message: { type: \"Coerce\", payload: { from, to, value } },\n });\n const payload = (res?.message as { ok?: boolean; value?: unknown }) || {};\n return payload.value;\n }\n\n getEngine(): Engine {\n if (!this.engine) {\n throw new Error(\"Engine not available: call connect() first\");\n }\n return this.engine;\n }\n\n async launch(opts?: RunnerOptions): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: {\n type: \"Launch\",\n payload: opts,\n },\n });\n }\n\n async step(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Step\" },\n });\n }\n\n async computeNode(nodeId: string): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"ComputeNode\", payload: { nodeId } },\n });\n }\n\n async flush(): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"Flush\" },\n });\n }\n\n async setExtData(data: Record<string, unknown>): Promise<void> {\n const transport = await this.ensureConnected();\n await transport.request({\n message: { type: \"SetExtData\", payload: data },\n });\n }\n\n /**\n * Dispose the client and close the transport connection.\n * Idempotent: safe to call multiple times.\n */\n async dispose(): Promise<void> {\n if (this.disposed) return;\n this.disposed = true;\n\n // Clear connecting promise if any\n this.connectingPromise = undefined;\n\n // Unsubscribe from transport events\n if (this.transportUnsubscribe) {\n this.transportUnsubscribe();\n this.transportUnsubscribe = undefined;\n }\n\n // Close transport connection\n if (this.transport) {\n const transportToClose = this.transport;\n this.transport = undefined;\n this.engine = undefined as any; // Clear engine reference\n await transportToClose.close().catch((err) => {\n console.warn(\"[RuntimeApiClient] Error closing transport:\", err);\n });\n }\n\n // Clear listeners\n this.customEventListeners.clear();\n this.transportEventListeners.clear();\n\n this.emitTransportStatus({\n state: \"disconnected\",\n kind: this.config.kind,\n runnerId: this.runnerId,\n });\n }\n}\n","import type {\n Envelope,\n Command,\n Json,\n SystemError,\n LogHandler,\n} from \"@bian-womp/spark-protocol\";\nimport type { RuntimeApi } from \"./runtime\";\nimport { summarize, serializeError } from \"./errors\";\n\n/**\n * Middleware function that can preprocess commands before they reach the handler.\n * Call `next()` to continue to the next middleware or handler.\n */\nexport type CommandMiddleware = (\n env: Envelope<Command>,\n next: () => Promise<void>\n) => Promise<void>;\n\n/**\n * Error handler callback for command processing errors.\n */\nexport type ErrorHandler = (\n errorEnv: Envelope<{ type: \"error\"; payload: SystemError }>\n) => void;\n\nexport class RuntimeApiServer {\n private middlewares: CommandMiddleware[] = [];\n\n constructor(\n private runtimeApi: RuntimeApi,\n private options?: {\n errorHandler?: ErrorHandler;\n logHandler?: LogHandler;\n }\n ) {}\n\n /**\n * Register middleware to preprocess commands before handling.\n * Middlewares are executed in registration order.\n */\n use(middleware: CommandMiddleware): void {\n this.middlewares.push(middleware);\n }\n\n /**\n * Handle command with error handling and middleware support.\n */\n async handleCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n try {\n // Execute middlewares in sequence, then process command\n await this.executeMiddlewares(env, async () => {\n await this.processCommand(env, ack);\n });\n } catch (err: unknown) {\n this.handleError(env, err);\n }\n }\n\n /**\n * Execute middlewares in sequence, then call the final handler.\n */\n private async executeMiddlewares(\n env: Envelope<Command>,\n finalHandler: () => Promise<void>\n ): Promise<void> {\n let index = 0;\n const next = async (): Promise<void> => {\n if (index >= this.middlewares.length) {\n await finalHandler();\n return;\n }\n const middleware = this.middlewares[index++];\n await middleware(env, next);\n };\n await next();\n }\n\n /**\n * Process the command by routing to the appropriate handler.\n */\n private async processCommand(\n env: Envelope<Command>,\n ack: (payload?: Json) => void\n ): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n this.logCommand(\"Build\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n envKeys: Object.keys(msg.payload.environment ?? {}).join(\",\"),\n });\n await this.runtimeApi.build(\n msg.payload.def,\n msg.payload.environment as Json\n );\n ack();\n break;\n }\n case \"Update\": {\n this.logCommand(\"Update\", env, {\n nodes: msg.payload.def.nodes?.length ?? 0,\n edges: msg.payload.def.edges?.length ?? 0,\n });\n await this.runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n this.logCommand(\"SetEnvironment\", env);\n this.runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInputs\": {\n this.logCommand(\"SetInputs\", env, {\n nodeId: msg.payload.nodeId,\n keys: Object.keys(msg.payload.inputs || {}).join(\",\"),\n });\n const nodeId = msg.payload.nodeId;\n const inputs = msg.payload.inputs;\n this.runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n this.logCommand(\"TriggerExternal\", env, {\n nodeId: msg.payload.nodeId,\n event: summarize(msg.payload.event),\n });\n this.runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n const launchPayload = msg.payload;\n this.logCommand(\"Launch\", env, {\n engine: launchPayload.engine,\n invalidate: launchPayload.invalidate,\n });\n this.runtimeApi.launch({\n invalidate: launchPayload.invalidate,\n engine: launchPayload.engine,\n batched: launchPayload.batched,\n hybrid: launchPayload.hybrid,\n });\n ack();\n break;\n }\n case \"Step\": {\n this.logCommand(\"Step\", env);\n if (this.runtimeApi.step) {\n await this.runtimeApi.step();\n }\n ack();\n break;\n }\n case \"ComputeNode\": {\n this.logCommand(\"ComputeNode\", env, {\n nodeId: msg.payload.nodeId,\n });\n if (this.runtimeApi.computeNode) {\n await this.runtimeApi.computeNode(msg.payload.nodeId);\n }\n ack();\n break;\n }\n case \"Flush\": {\n this.logCommand(\"Flush\", env);\n if (this.runtimeApi.flush) {\n await this.runtimeApi.flush();\n }\n ack();\n break;\n }\n case \"WhenIdle\": {\n this.logCommand(\"WhenIdle\", env);\n await this.runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n this.logCommand(\"Snapshot\", env);\n const snap = this.runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n this.logCommand(\"SnapshotFull\", env);\n const snap = this.runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n this.logCommand(\"GetEnvironment\", env);\n const environment = this.runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n const skipBuild = (msg as { skipBuild?: boolean }).skipBuild;\n this.logCommand(\n \"ApplySnapshotFull\",\n env,\n skipBuild ? { skipBuild: true } : undefined\n );\n await this.runtimeApi.applySnapshotFull(msg.payload, { skipBuild });\n ack();\n break;\n }\n case \"Coerce\": {\n this.logCommand(\"Coerce\", env, {\n from: msg.payload.from,\n to: msg.payload.to,\n });\n const value = await this.runtimeApi.coerce(\n msg.payload?.from,\n msg.payload?.to,\n msg.payload?.value\n );\n ack({ value });\n break;\n }\n case \"DescribeRegistry\": {\n this.logCommand(\"DescribeRegistry\", env);\n const desc = this.runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n this.logCommand(\"RegistryApply\", env);\n await this.runtimeApi.applyRegistry(msg.payload.deltas || []);\n ack();\n break;\n }\n case \"SetExtData\": {\n this.runtimeApi.setExtData(msg.payload);\n ack();\n break;\n }\n case \"Dispose\": {\n this.logCommand(\"Dispose\", env);\n this.runtimeApi.dispose();\n ack();\n break;\n }\n default: {\n this.logCommand(\"Unknown type\", env);\n ack();\n }\n }\n }\n\n /**\n * Helper method to log commands with consistent format.\n */\n private logCommand(\n type: string,\n env: Envelope<Command>,\n extra?: Record<string, unknown>\n ): void {\n const extraStr = extra\n ? ` ${Object.entries(extra)\n .map(([k, v]) => `${k}=${v}`)\n .join(\" \")}`\n : \"\";\n const message = `rx ${type} seq=${env.seq}${extraStr}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"debug\", message, {\n seq: env.seq,\n ...extra,\n });\n } else {\n // Fallback to console.debug for backward compatibility\n console.debug(message);\n }\n }\n\n /**\n * Handle errors and notify error handler if provided.\n * Formats errors as SystemError since these are infrastructure/command processing errors,\n * not node execution errors.\n */\n private handleError(env: Envelope<Command>, err: unknown): void {\n const errorMessage = `error handling command: ${String(err)}`;\n\n if (this.options?.logHandler) {\n this.options.logHandler(\"error\", errorMessage, {\n seq: env.seq,\n err,\n });\n } else {\n // Fallback to console.error for backward compatibility\n console.error(`${errorMessage}:`, err);\n }\n\n const serialized = serializeError(err);\n const systemError: SystemError = {\n kind: \"system\",\n message: serialized?.message || String(err) || \"Unknown error\",\n code: serialized?.code || serialized?.statusCode || 500,\n err: serialized,\n };\n const errorEnv: Envelope<{ type: \"error\"; payload: SystemError }> = {\n seq: env.seq ?? Date.now(),\n ts: Date.now(),\n message: { type: \"error\", payload: systemError },\n };\n if (this.options?.errorHandler) {\n this.options.errorHandler(errorEnv);\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -70,7 +70,9 @@ export declare class RuntimeApiClient {
70
70
  applyRegistry(deltas: Array<any>): Promise<void>;
71
71
  snapshot(): Promise<RuntimeSnapshot>;
72
72
  snapshotFull(): Promise<RuntimeSnapshotFull>;
73
- applySnapshotFull(payload: RuntimeSnapshotFull): Promise<void>;
73
+ applySnapshotFull(payload: RuntimeSnapshotFull, options?: {
74
+ skipBuild?: boolean;
75
+ }): Promise<void>;
74
76
  setEnvironment(environment: Record<string, unknown>, opts?: {
75
77
  merge?: boolean;
76
78
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeApiClient.d.ts","sourceRoot":"","sources":["../../../src/RuntimeApiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RuntimeApiClient.d.ts","sourceRoot":"","sources":["../../../src/RuntimeApiClient.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeApiServer.d.ts","sourceRoot":"","sources":["../../../../src/server/RuntimeApiServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,QAAQ,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,KACxD,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,WAAW,CAA2B;gBAGpC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;QAChB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,YAAA;IAGH;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;OAEG;IACG,aAAa,CACjB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;YACW,kBAAkB;IAgBhC;;OAEG;YACW,cAAc;IA0K5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAuBlB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CA6BpB"}
1
+ {"version":3,"file":"RuntimeApiServer.d.ts","sourceRoot":"","sources":["../../../../src/server/RuntimeApiServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,QAAQ,EAAE,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,KACxD,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,WAAW,CAA2B;gBAGpC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;QAChB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,YAAA;IAGH;;;OAGG;IACH,GAAG,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;OAEG;IACG,aAAa,CACjB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EACtB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;YACW,kBAAkB;IAgBhC;;OAEG;YACW,cAAc;IA+K5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAuBlB;;;;OAIG;IACH,OAAO,CAAC,WAAW;CA6BpB"}
@@ -22,7 +22,9 @@ export interface RuntimeApi {
22
22
  snapshot: () => RuntimeSnapshot;
23
23
  coerce: (from: string, to: string, value: unknown) => Promise<unknown>;
24
24
  snapshotFull: () => RuntimeSnapshotFull;
25
- applySnapshotFull: (payload: RuntimeSnapshotFull) => Promise<void>;
25
+ applySnapshotFull: (payload: RuntimeSnapshotFull, options?: {
26
+ skipBuild?: boolean;
27
+ }) => Promise<void>;
26
28
  }
27
29
  export interface RuntimeApiContext {
28
30
  registry: Registry;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,MAAM,EAEP,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,aAAa,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,cAAc,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACrE,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;IAC3C,QAAQ,EAAE,MAAM,eAAe,CAAC;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,YAAY,EAAE,MAAM,mBAAmB,CAAC;IACxC,iBAAiB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,MAAM,mBAAmB,GAAG;KAC/B,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GACnE,CACE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,iBAAiB,EAC1B,GAAG,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAC/B,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAC9B,KAAK;CACV,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EACzC,UAAU,CAAC,EAAE,mBAAmB,GAC/B,OAAO,CAAC,UAAU,CAAC,CAgTrB"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bian-womp/spark-remote",
3
- "version": "0.2.59",
3
+ "version": "0.2.61",
4
4
  "description": "Spark Remote - Remote execution engine for distributed graph processing",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -48,8 +48,8 @@
48
48
  "typescript": "5.6.3"
49
49
  },
50
50
  "dependencies": {
51
- "@bian-womp/spark-graph": "^0.2.59",
52
- "@bian-womp/spark-protocol": "^0.2.59",
51
+ "@bian-womp/spark-graph": "^0.2.61",
52
+ "@bian-womp/spark-protocol": "^0.2.61",
53
53
  "ws": "^8.18.3"
54
54
  }
55
55
  }