@bian-womp/spark-remote 0.2.19 → 0.2.21
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
|
@@ -467,7 +467,6 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
467
467
|
const registry = await createRegistry();
|
|
468
468
|
const builder = new sparkGraph.GraphBuilder(registry);
|
|
469
469
|
let graphRuntime;
|
|
470
|
-
let lastDef;
|
|
471
470
|
// Seed defaults for any missing inputs for a single node
|
|
472
471
|
function seedDefaultsForNode(nodeId, defaultValues) {
|
|
473
472
|
if (!graphRuntime || !defaultValues)
|
|
@@ -590,7 +589,6 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
590
589
|
const env = opts || {};
|
|
591
590
|
const enriched = computeResolvedHandles(def, {}, env);
|
|
592
591
|
graphRuntime = builder.build(enriched, { environment: env });
|
|
593
|
-
lastDef = enriched;
|
|
594
592
|
// Seed defaults for dynamic inputs on initial build
|
|
595
593
|
seedDefaultsFromDef(enriched);
|
|
596
594
|
graphRuntime.on("value", (p) => send({ message: { type: "value", payload: p } }));
|
|
@@ -610,7 +608,7 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
610
608
|
return;
|
|
611
609
|
// Recompute resolved handles for only this node using current inputs
|
|
612
610
|
const envNow = graphRuntime.getEnvironment?.() ?? env;
|
|
613
|
-
const curDef =
|
|
611
|
+
const curDef = graphRuntime.getGraphDef();
|
|
614
612
|
const target = (curDef.nodes || []).find((n) => n.nodeId === nodeId);
|
|
615
613
|
if (!target)
|
|
616
614
|
return;
|
|
@@ -630,7 +628,7 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
630
628
|
const before = target.resolvedHandles || {};
|
|
631
629
|
if (JSON.stringify(before) === JSON.stringify(nextHandles))
|
|
632
630
|
return;
|
|
633
|
-
// Apply per-node update
|
|
631
|
+
// Apply per-node update
|
|
634
632
|
graphRuntime.updateNodeHandles(nodeId, nextHandles, registry);
|
|
635
633
|
target.resolvedHandles = nextHandles;
|
|
636
634
|
// Seed newly added dynamic inputs with defaults if provided and not present
|
|
@@ -667,8 +665,9 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
667
665
|
snapshotFull() {
|
|
668
666
|
const snap = api.snapshot();
|
|
669
667
|
const env = graphRuntime?.getEnvironment?.() ?? {};
|
|
668
|
+
const def = graphRuntime?.getGraphDef();
|
|
670
669
|
return {
|
|
671
|
-
def
|
|
670
|
+
def,
|
|
672
671
|
environment: env,
|
|
673
672
|
inputs: snap.inputs,
|
|
674
673
|
outputs: snap.outputs,
|
|
@@ -726,7 +725,6 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
726
725
|
}
|
|
727
726
|
const enriched = computeResolvedHandles(def, inputsMap, env);
|
|
728
727
|
graphRuntime.update(enriched, registry);
|
|
729
|
-
lastDef = enriched;
|
|
730
728
|
// Seed defaults for newly added dynamic inputs on update
|
|
731
729
|
seedDefaultsFromDef(enriched);
|
|
732
730
|
send({
|
package/lib/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/transport/Seq.ts","../../src/transport/WebSocketTransport.ts","../../src/transport/HttpPollingTransport.ts","../../src/RemoteEngine.ts","../../src/RemoteRunner.ts","../../src/server/errors.ts","../../src/server/command.ts","../../src/server/runtime.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 } 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 url: string;\n private seq = new SeqGenerator();\n\n constructor(url: string) {\n this.url = url;\n }\n\n async connect(): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n this.ws = window\n ? new (window as any).WebSocket(this.url)\n : new WebSocket(this.url);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n this.ws.onopen = () => resolve();\n this.ws.onerror = (e) => reject(e);\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 }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n // For now, just send and wait for the next message with matching seq (simple demo)\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 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 { Transport } 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\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(): Promise<void> {\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 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 res = await fetch(this.baseUrl + \"/command\", {\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 fetch(this.baseUrl + \"/command\", {\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","import type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\nimport type { Envelope, RuntimeEvent } from \"@bian-womp/spark-protocol\";\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(): void {\n this.transport.send({ message: { type: \"Launch\" } });\n }\n\n setInput(nodeId: string, handle: string, value: unknown): void {\n this.transport.send({\n message: { type: \"SetInput\", payload: { nodeId, handle, value } },\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","import type {\n RunnerControl,\n GraphDefinition,\n Engine,\n} from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport } from \"./transport/Transport\";\nimport {\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport class RemoteRunner implements RunnerControl {\n private engine: RemoteEngine;\n constructor(private transport: Transport) {\n this.engine = new RemoteEngine(transport);\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n await this.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 await this.transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegisteryDescriptor> {\n const res = await this.transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegisteryDescriptor }) || {};\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 await this.transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const res = await this.transport.request({ message: { type: \"Snapshot\" } });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const res = await this.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 await this.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 await this.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 res = await this.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 res = await this.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 return this.engine;\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 { Envelope, Command } from \"@bian-womp/spark-protocol\";\nimport type { Json, RuntimeApi } from \"./runtime\";\nimport { summarize } from \"./errors\";\n\nexport async function handleCommand(\n label: string,\n env: Envelope<Command>,\n runtimeApi: RuntimeApi,\n ack: (payload?: Json) => void\n): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n console.debug(\n `[${label}] rx Build seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0} envKeys=${Object.keys(\n msg.payload.environment ?? {}\n ).join(\",\")}`\n );\n await runtimeApi.build(msg.payload.def, msg.payload.environment as Json);\n ack();\n break;\n }\n case \"Update\": {\n console.debug(\n `[${label}] rx Update seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0}`\n );\n await runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n console.debug(`[${label}] rx SetEnvironment seq=${env.seq}`);\n runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInput\": {\n console.debug(\n `[${label}] rx SetInput seq=${env.seq} ${msg.payload.nodeId}.${\n msg.payload.handle\n }=${summarize(msg.payload.value)}`\n );\n runtimeApi.setInput(\n msg.payload.nodeId,\n msg.payload.handle,\n msg.payload.value\n );\n ack();\n break;\n }\n case \"SetInputs\": {\n console.debug(\n `[${label}] rx SetInputs seq=${env.seq} ${\n 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 runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n console.debug(\n `[${label}] rx TriggerExternal seq=${env.seq} ${\n msg.payload.nodeId\n } event=${summarize(msg.payload.event)}`\n );\n runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n console.debug(`[${label}] rx Launch seq=${env.seq}`);\n runtimeApi.launch();\n ack();\n break;\n }\n case \"WhenIdle\": {\n console.debug(`[${label}] rx WhenIdle seq=${env.seq}`);\n await runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n console.debug(`[${label}] rx Snapshot seq=${env.seq}`);\n const snap = runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n console.debug(`[${label}] rx SnapshotFull seq=${env.seq}`);\n const snap = runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n console.debug(`[${label}] rx GetEnvironment seq=${env.seq}`);\n const environment = runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n console.debug(`[${label}] rx ApplySnapshotFull seq=${env.seq}`);\n await runtimeApi.applySnapshotFull(msg.payload);\n ack();\n break;\n }\n case \"Coerce\": {\n console.debug(\n `[${label}] rx Coerce seq=${env.seq} ${msg.payload.from} -> ${msg.payload.to}`\n );\n const value = await 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 console.debug(`[${label}] rx DescribeRegistry seq=${env.seq}`);\n const desc = runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n console.debug(`[${label}] rx RegistryApply seq=${env.seq}`);\n await runtimeApi.applyRegistry((msg as any).payload?.deltas || []);\n ack();\n break;\n }\n case \"Dispose\": {\n console.debug(`[${label}] rx Dispose seq=${env.seq}`);\n runtimeApi.dispose();\n ack();\n break;\n }\n case \"Pause\":\n case \"Resume\": {\n console.debug(`[${label}] rx ${msg.type} seq=${env.seq} (not-impl)`);\n ack();\n break;\n }\n default: {\n console.debug(`[${label}] rx Unknown type seq=${env.seq}`);\n ack();\n }\n }\n}\n","import { GraphBuilder, Registry, GraphRuntime } from \"@bian-womp/spark-graph\";\nimport type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport type Json = Record<string, unknown>;\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: any[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setInput: (nodeId: string, handle: string, value: unknown) => void;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: () => void;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegisteryDescriptor;\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 async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n let lastDef: GraphDefinition | undefined;\n\n // Seed defaults for any missing inputs for a single node\n function seedDefaultsForNode(\n nodeId: string,\n defaultValues?: Record<string, unknown>\n ): void {\n if (!graphRuntime || !defaultValues) return;\n try {\n const nd = graphRuntime.getNodeData(nodeId);\n const existing = nd?.inputs || {};\n const toSet: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(defaultValues)) {\n if (!(k in existing)) toSet[k] = v;\n }\n if (Object.keys(toSet).length > 0) {\n graphRuntime.setInputs(nodeId, toSet);\n }\n } catch {}\n }\n\n // Seed defaults for all nodes based on a graph definition with resolvedHandles\n function seedDefaultsFromDef(def: GraphDefinition): void {\n if (!graphRuntime) return;\n for (const n of def.nodes || []) {\n const defs = n.resolvedHandles?.inputDefaults;\n if (defs) seedDefaultsForNode(n.nodeId, defs);\n }\n }\n\n const computeResolvedHandles = (\n def: GraphDefinition,\n nodeInputs: Record<string, Record<string, unknown>>,\n env?: Record<string, unknown>\n ): GraphDefinition => {\n try {\n const enriched: GraphDefinition = {\n ...def,\n nodes: def.nodes.map((n) => {\n const desc = registry.nodes.get(n.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return n;\n try {\n const r =\n desc.resolveHandles({\n environment: env || {},\n params: n.params,\n inputs: nodeInputs?.[n.nodeId],\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n return {\n ...n,\n resolvedHandles: { inputs, outputs, inputDefaults },\n };\n } catch {\n return n;\n }\n }),\n };\n return enriched;\n } catch {\n return def;\n }\n };\n const api: RuntimeApi = {\n async coerce(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 async applyRegistry(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 async build(def, opts) {\n const env = opts || {};\n const enriched = computeResolvedHandles(def, {}, env);\n graphRuntime = builder.build(enriched, { environment: env });\n lastDef = enriched;\n // Seed defaults for dynamic inputs on initial build\n seedDefaultsFromDef(enriched);\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 // Listen for input changes to recompute dynamic handles per node (generalized)\n graphRuntime.on(\"value\", (e) => {\n try {\n if (!graphRuntime) return;\n if (!e || e.io !== \"input\") return;\n const nodeId = e.nodeId;\n const nd = graphRuntime.getNodeData(nodeId);\n if (!nd) return;\n // Recompute resolved handles for only this node using current inputs\n const envNow = graphRuntime.getEnvironment?.() ?? env;\n const curDef = lastDef || def;\n const target = (curDef.nodes || []).find((n) => n.nodeId === nodeId);\n if (!target) return;\n const desc = registry.nodes.get(target.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return;\n const r =\n desc.resolveHandles({\n params: target.params,\n environment: envNow || {},\n inputs: nd.inputs || {},\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n const nextHandles = { inputs, outputs, inputDefaults };\n // If nothing changed, skip\n const before = target.resolvedHandles || {};\n if (JSON.stringify(before) === JSON.stringify(nextHandles)) return;\n // Apply per-node update and keep lastDef in sync for this node only\n graphRuntime.updateNodeHandles(nodeId, nextHandles, registry);\n target.resolvedHandles = nextHandles;\n // Seed newly added dynamic inputs with defaults if provided and not present\n seedDefaultsForNode(nodeId, inputDefaults);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n } catch {\n // ignore\n }\n });\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 = api.snapshot();\n const env = graphRuntime?.getEnvironment?.() ?? {};\n return {\n def: lastDef,\n environment: env,\n inputs: snap.inputs,\n outputs: snap.outputs,\n };\n },\n async applySnapshotFull(payload) {\n const def = payload.def;\n if (!def) return;\n await api.build(def, payload.environment);\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate(\n { inputs: payload.inputs, outputs: payload.outputs },\n { reemit: true }\n );\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 async update(def) {\n if (!graphRuntime) return;\n const env = graphRuntime.getEnvironment?.() ?? {};\n // Build current inputs map from runtime so resolveHandles can depend on inputs\n const inputsMap: Record<string, Record<string, unknown>> = {};\n const ids = graphRuntime.getNodeIds();\n for (const id of ids) {\n const nd = graphRuntime.getNodeData(id);\n if (nd?.inputs && Object.keys(nd.inputs).length > 0) {\n inputsMap[id] = nd.inputs;\n }\n }\n const enriched = computeResolvedHandles(def, inputsMap, env);\n graphRuntime.update(enriched, registry);\n lastDef = enriched;\n // Seed defaults for newly added dynamic inputs on update\n seedDefaultsFromDef(enriched);\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 setInput(nodeId, handle, value) {\n graphRuntime?.setInput(nodeId, handle, value);\n },\n setInputs(nodeId, inputs) {\n graphRuntime?.setInputs(nodeId, inputs);\n },\n triggerExternal(nodeId, event) {\n graphRuntime?.triggerExternal(nodeId, event);\n },\n launch() {\n graphRuntime?.launch();\n },\n whenIdle() {\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose() {\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n return api;\n}\n"],"names":["WebSocket","GraphBuilder"],"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/RemoteEngine.ts","../../src/RemoteRunner.ts","../../src/server/errors.ts","../../src/server/command.ts","../../src/server/runtime.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 } 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 url: string;\n private seq = new SeqGenerator();\n\n constructor(url: string) {\n this.url = url;\n }\n\n async connect(): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n this.ws = window\n ? new (window as any).WebSocket(this.url)\n : new WebSocket(this.url);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n this.ws.onopen = () => resolve();\n this.ws.onerror = (e) => reject(e);\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 }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n // For now, just send and wait for the next message with matching seq (simple demo)\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 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 { Transport } 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\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(): Promise<void> {\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 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 res = await fetch(this.baseUrl + \"/command\", {\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 fetch(this.baseUrl + \"/command\", {\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","import type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\nimport type { Envelope, RuntimeEvent } from \"@bian-womp/spark-protocol\";\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(): void {\n this.transport.send({ message: { type: \"Launch\" } });\n }\n\n setInput(nodeId: string, handle: string, value: unknown): void {\n this.transport.send({\n message: { type: \"SetInput\", payload: { nodeId, handle, value } },\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","import type {\n RunnerControl,\n GraphDefinition,\n Engine,\n} from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport } from \"./transport/Transport\";\nimport {\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport class RemoteRunner implements RunnerControl {\n private engine: RemoteEngine;\n constructor(private transport: Transport) {\n this.engine = new RemoteEngine(transport);\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n await this.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 await this.transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegisteryDescriptor> {\n const res = await this.transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegisteryDescriptor }) || {};\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 await this.transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const res = await this.transport.request({ message: { type: \"Snapshot\" } });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const res = await this.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 await this.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 await this.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 res = await this.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 res = await this.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 return this.engine;\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 { Envelope, Command } from \"@bian-womp/spark-protocol\";\nimport type { Json, RuntimeApi } from \"./runtime\";\nimport { summarize } from \"./errors\";\n\nexport async function handleCommand(\n label: string,\n env: Envelope<Command>,\n runtimeApi: RuntimeApi,\n ack: (payload?: Json) => void\n): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n console.debug(\n `[${label}] rx Build seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0} envKeys=${Object.keys(\n msg.payload.environment ?? {}\n ).join(\",\")}`\n );\n await runtimeApi.build(msg.payload.def, msg.payload.environment as Json);\n ack();\n break;\n }\n case \"Update\": {\n console.debug(\n `[${label}] rx Update seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0}`\n );\n await runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n console.debug(`[${label}] rx SetEnvironment seq=${env.seq}`);\n runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInput\": {\n console.debug(\n `[${label}] rx SetInput seq=${env.seq} ${msg.payload.nodeId}.${\n msg.payload.handle\n }=${summarize(msg.payload.value)}`\n );\n runtimeApi.setInput(\n msg.payload.nodeId,\n msg.payload.handle,\n msg.payload.value\n );\n ack();\n break;\n }\n case \"SetInputs\": {\n console.debug(\n `[${label}] rx SetInputs seq=${env.seq} ${\n 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 runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n console.debug(\n `[${label}] rx TriggerExternal seq=${env.seq} ${\n msg.payload.nodeId\n } event=${summarize(msg.payload.event)}`\n );\n runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n console.debug(`[${label}] rx Launch seq=${env.seq}`);\n runtimeApi.launch();\n ack();\n break;\n }\n case \"WhenIdle\": {\n console.debug(`[${label}] rx WhenIdle seq=${env.seq}`);\n await runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n console.debug(`[${label}] rx Snapshot seq=${env.seq}`);\n const snap = runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n console.debug(`[${label}] rx SnapshotFull seq=${env.seq}`);\n const snap = runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n console.debug(`[${label}] rx GetEnvironment seq=${env.seq}`);\n const environment = runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n console.debug(`[${label}] rx ApplySnapshotFull seq=${env.seq}`);\n await runtimeApi.applySnapshotFull(msg.payload);\n ack();\n break;\n }\n case \"Coerce\": {\n console.debug(\n `[${label}] rx Coerce seq=${env.seq} ${msg.payload.from} -> ${msg.payload.to}`\n );\n const value = await 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 console.debug(`[${label}] rx DescribeRegistry seq=${env.seq}`);\n const desc = runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n console.debug(`[${label}] rx RegistryApply seq=${env.seq}`);\n await runtimeApi.applyRegistry((msg as any).payload?.deltas || []);\n ack();\n break;\n }\n case \"Dispose\": {\n console.debug(`[${label}] rx Dispose seq=${env.seq}`);\n runtimeApi.dispose();\n ack();\n break;\n }\n case \"Pause\":\n case \"Resume\": {\n console.debug(`[${label}] rx ${msg.type} seq=${env.seq} (not-impl)`);\n ack();\n break;\n }\n default: {\n console.debug(`[${label}] rx Unknown type seq=${env.seq}`);\n ack();\n }\n }\n}\n","import { GraphBuilder, Registry, GraphRuntime } from \"@bian-womp/spark-graph\";\nimport type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport type Json = Record<string, unknown>;\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: any[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setInput: (nodeId: string, handle: string, value: unknown) => void;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: () => void;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegisteryDescriptor;\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 async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n\n // Seed defaults for any missing inputs for a single node\n function seedDefaultsForNode(\n nodeId: string,\n defaultValues?: Record<string, unknown>\n ): void {\n if (!graphRuntime || !defaultValues) return;\n try {\n const nd = graphRuntime.getNodeData(nodeId);\n const existing = nd?.inputs || {};\n const toSet: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(defaultValues)) {\n if (!(k in existing)) toSet[k] = v;\n }\n if (Object.keys(toSet).length > 0) {\n graphRuntime.setInputs(nodeId, toSet);\n }\n } catch {}\n }\n\n // Seed defaults for all nodes based on a graph definition with resolvedHandles\n function seedDefaultsFromDef(def: GraphDefinition): void {\n if (!graphRuntime) return;\n for (const n of def.nodes || []) {\n const defs = n.resolvedHandles?.inputDefaults;\n if (defs) seedDefaultsForNode(n.nodeId, defs);\n }\n }\n\n const computeResolvedHandles = (\n def: GraphDefinition,\n nodeInputs: Record<string, Record<string, unknown>>,\n env?: Record<string, unknown>\n ): GraphDefinition => {\n try {\n const enriched: GraphDefinition = {\n ...def,\n nodes: def.nodes.map((n) => {\n const desc = registry.nodes.get(n.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return n;\n try {\n const r =\n desc.resolveHandles({\n environment: env || {},\n params: n.params,\n inputs: nodeInputs?.[n.nodeId],\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n return {\n ...n,\n resolvedHandles: { inputs, outputs, inputDefaults },\n };\n } catch {\n return n;\n }\n }),\n };\n return enriched;\n } catch {\n return def;\n }\n };\n const api: RuntimeApi = {\n async coerce(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 async applyRegistry(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 async build(def, opts) {\n const env = opts || {};\n const enriched = computeResolvedHandles(def, {}, env);\n graphRuntime = builder.build(enriched, { environment: env });\n // Seed defaults for dynamic inputs on initial build\n seedDefaultsFromDef(enriched);\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 // Listen for input changes to recompute dynamic handles per node (generalized)\n graphRuntime.on(\"value\", (e) => {\n try {\n if (!graphRuntime) return;\n if (!e || e.io !== \"input\") return;\n const nodeId = e.nodeId;\n const nd = graphRuntime.getNodeData(nodeId);\n if (!nd) return;\n // Recompute resolved handles for only this node using current inputs\n const envNow = graphRuntime.getEnvironment?.() ?? env;\n const curDef = graphRuntime.getGraphDef();\n const target = (curDef.nodes || []).find((n) => n.nodeId === nodeId);\n if (!target) return;\n const desc = registry.nodes.get(target.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return;\n const r =\n desc.resolveHandles({\n params: target.params,\n environment: envNow || {},\n inputs: nd.inputs || {},\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n const nextHandles = { inputs, outputs, inputDefaults };\n // If nothing changed, skip\n const before = target.resolvedHandles || {};\n if (JSON.stringify(before) === JSON.stringify(nextHandles)) return;\n // Apply per-node update\n graphRuntime.updateNodeHandles(nodeId, nextHandles, registry);\n target.resolvedHandles = nextHandles;\n // Seed newly added dynamic inputs with defaults if provided and not present\n seedDefaultsForNode(nodeId, inputDefaults);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n } catch {\n // ignore\n }\n });\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 = api.snapshot();\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 };\n },\n async applySnapshotFull(payload) {\n const def = payload.def;\n if (!def) return;\n await api.build(def, payload.environment);\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate(\n { inputs: payload.inputs, outputs: payload.outputs },\n { reemit: true }\n );\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 async update(def) {\n if (!graphRuntime) return;\n const env = graphRuntime.getEnvironment?.() ?? {};\n // Build current inputs map from runtime so resolveHandles can depend on inputs\n const inputsMap: Record<string, Record<string, unknown>> = {};\n const ids = graphRuntime.getNodeIds();\n for (const id of ids) {\n const nd = graphRuntime.getNodeData(id);\n if (nd?.inputs && Object.keys(nd.inputs).length > 0) {\n inputsMap[id] = nd.inputs;\n }\n }\n const enriched = computeResolvedHandles(def, inputsMap, env);\n graphRuntime.update(enriched, registry);\n // Seed defaults for newly added dynamic inputs on update\n seedDefaultsFromDef(enriched);\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 setInput(nodeId, handle, value) {\n graphRuntime?.setInput(nodeId, handle, value);\n },\n setInputs(nodeId, inputs) {\n graphRuntime?.setInputs(nodeId, inputs);\n },\n triggerExternal(nodeId, event) {\n graphRuntime?.triggerExternal(nodeId, event);\n },\n launch() {\n graphRuntime?.launch();\n },\n whenIdle() {\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose() {\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n return api;\n}\n"],"names":["WebSocket","GraphBuilder"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAgB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,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,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,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,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,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,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;IAC5C,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,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,GACxC,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAgB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,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,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,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,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,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,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;IAC5C,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,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,GACxC,OAAO,CAAC,UAAU,CAAC,CA8SrB"}
|
package/lib/esm/index.js
CHANGED
|
@@ -465,7 +465,6 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
465
465
|
const registry = await createRegistry();
|
|
466
466
|
const builder = new GraphBuilder(registry);
|
|
467
467
|
let graphRuntime;
|
|
468
|
-
let lastDef;
|
|
469
468
|
// Seed defaults for any missing inputs for a single node
|
|
470
469
|
function seedDefaultsForNode(nodeId, defaultValues) {
|
|
471
470
|
if (!graphRuntime || !defaultValues)
|
|
@@ -588,7 +587,6 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
588
587
|
const env = opts || {};
|
|
589
588
|
const enriched = computeResolvedHandles(def, {}, env);
|
|
590
589
|
graphRuntime = builder.build(enriched, { environment: env });
|
|
591
|
-
lastDef = enriched;
|
|
592
590
|
// Seed defaults for dynamic inputs on initial build
|
|
593
591
|
seedDefaultsFromDef(enriched);
|
|
594
592
|
graphRuntime.on("value", (p) => send({ message: { type: "value", payload: p } }));
|
|
@@ -608,7 +606,7 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
608
606
|
return;
|
|
609
607
|
// Recompute resolved handles for only this node using current inputs
|
|
610
608
|
const envNow = graphRuntime.getEnvironment?.() ?? env;
|
|
611
|
-
const curDef =
|
|
609
|
+
const curDef = graphRuntime.getGraphDef();
|
|
612
610
|
const target = (curDef.nodes || []).find((n) => n.nodeId === nodeId);
|
|
613
611
|
if (!target)
|
|
614
612
|
return;
|
|
@@ -628,7 +626,7 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
628
626
|
const before = target.resolvedHandles || {};
|
|
629
627
|
if (JSON.stringify(before) === JSON.stringify(nextHandles))
|
|
630
628
|
return;
|
|
631
|
-
// Apply per-node update
|
|
629
|
+
// Apply per-node update
|
|
632
630
|
graphRuntime.updateNodeHandles(nodeId, nextHandles, registry);
|
|
633
631
|
target.resolvedHandles = nextHandles;
|
|
634
632
|
// Seed newly added dynamic inputs with defaults if provided and not present
|
|
@@ -665,8 +663,9 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
665
663
|
snapshotFull() {
|
|
666
664
|
const snap = api.snapshot();
|
|
667
665
|
const env = graphRuntime?.getEnvironment?.() ?? {};
|
|
666
|
+
const def = graphRuntime?.getGraphDef();
|
|
668
667
|
return {
|
|
669
|
-
def
|
|
668
|
+
def,
|
|
670
669
|
environment: env,
|
|
671
670
|
inputs: snap.inputs,
|
|
672
671
|
outputs: snap.outputs,
|
|
@@ -724,7 +723,6 @@ async function createRuntimeAdapter(createRegistry, send) {
|
|
|
724
723
|
}
|
|
725
724
|
const enriched = computeResolvedHandles(def, inputsMap, env);
|
|
726
725
|
graphRuntime.update(enriched, registry);
|
|
727
|
-
lastDef = enriched;
|
|
728
726
|
// Seed defaults for newly added dynamic inputs on update
|
|
729
727
|
seedDefaultsFromDef(enriched);
|
|
730
728
|
send({
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/transport/Seq.ts","../../src/transport/WebSocketTransport.ts","../../src/transport/HttpPollingTransport.ts","../../src/RemoteEngine.ts","../../src/RemoteRunner.ts","../../src/server/errors.ts","../../src/server/command.ts","../../src/server/runtime.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 } 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 url: string;\n private seq = new SeqGenerator();\n\n constructor(url: string) {\n this.url = url;\n }\n\n async connect(): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n this.ws = window\n ? new (window as any).WebSocket(this.url)\n : new WebSocket(this.url);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n this.ws.onopen = () => resolve();\n this.ws.onerror = (e) => reject(e);\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 }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n // For now, just send and wait for the next message with matching seq (simple demo)\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 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 { Transport } 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\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(): Promise<void> {\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 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 res = await fetch(this.baseUrl + \"/command\", {\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 fetch(this.baseUrl + \"/command\", {\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","import type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\nimport type { Envelope, RuntimeEvent } from \"@bian-womp/spark-protocol\";\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(): void {\n this.transport.send({ message: { type: \"Launch\" } });\n }\n\n setInput(nodeId: string, handle: string, value: unknown): void {\n this.transport.send({\n message: { type: \"SetInput\", payload: { nodeId, handle, value } },\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","import type {\n RunnerControl,\n GraphDefinition,\n Engine,\n} from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport } from \"./transport/Transport\";\nimport {\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport class RemoteRunner implements RunnerControl {\n private engine: RemoteEngine;\n constructor(private transport: Transport) {\n this.engine = new RemoteEngine(transport);\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n await this.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 await this.transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegisteryDescriptor> {\n const res = await this.transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegisteryDescriptor }) || {};\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 await this.transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const res = await this.transport.request({ message: { type: \"Snapshot\" } });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const res = await this.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 await this.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 await this.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 res = await this.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 res = await this.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 return this.engine;\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 { Envelope, Command } from \"@bian-womp/spark-protocol\";\nimport type { Json, RuntimeApi } from \"./runtime\";\nimport { summarize } from \"./errors\";\n\nexport async function handleCommand(\n label: string,\n env: Envelope<Command>,\n runtimeApi: RuntimeApi,\n ack: (payload?: Json) => void\n): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n console.debug(\n `[${label}] rx Build seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0} envKeys=${Object.keys(\n msg.payload.environment ?? {}\n ).join(\",\")}`\n );\n await runtimeApi.build(msg.payload.def, msg.payload.environment as Json);\n ack();\n break;\n }\n case \"Update\": {\n console.debug(\n `[${label}] rx Update seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0}`\n );\n await runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n console.debug(`[${label}] rx SetEnvironment seq=${env.seq}`);\n runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInput\": {\n console.debug(\n `[${label}] rx SetInput seq=${env.seq} ${msg.payload.nodeId}.${\n msg.payload.handle\n }=${summarize(msg.payload.value)}`\n );\n runtimeApi.setInput(\n msg.payload.nodeId,\n msg.payload.handle,\n msg.payload.value\n );\n ack();\n break;\n }\n case \"SetInputs\": {\n console.debug(\n `[${label}] rx SetInputs seq=${env.seq} ${\n 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 runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n console.debug(\n `[${label}] rx TriggerExternal seq=${env.seq} ${\n msg.payload.nodeId\n } event=${summarize(msg.payload.event)}`\n );\n runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n console.debug(`[${label}] rx Launch seq=${env.seq}`);\n runtimeApi.launch();\n ack();\n break;\n }\n case \"WhenIdle\": {\n console.debug(`[${label}] rx WhenIdle seq=${env.seq}`);\n await runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n console.debug(`[${label}] rx Snapshot seq=${env.seq}`);\n const snap = runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n console.debug(`[${label}] rx SnapshotFull seq=${env.seq}`);\n const snap = runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n console.debug(`[${label}] rx GetEnvironment seq=${env.seq}`);\n const environment = runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n console.debug(`[${label}] rx ApplySnapshotFull seq=${env.seq}`);\n await runtimeApi.applySnapshotFull(msg.payload);\n ack();\n break;\n }\n case \"Coerce\": {\n console.debug(\n `[${label}] rx Coerce seq=${env.seq} ${msg.payload.from} -> ${msg.payload.to}`\n );\n const value = await 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 console.debug(`[${label}] rx DescribeRegistry seq=${env.seq}`);\n const desc = runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n console.debug(`[${label}] rx RegistryApply seq=${env.seq}`);\n await runtimeApi.applyRegistry((msg as any).payload?.deltas || []);\n ack();\n break;\n }\n case \"Dispose\": {\n console.debug(`[${label}] rx Dispose seq=${env.seq}`);\n runtimeApi.dispose();\n ack();\n break;\n }\n case \"Pause\":\n case \"Resume\": {\n console.debug(`[${label}] rx ${msg.type} seq=${env.seq} (not-impl)`);\n ack();\n break;\n }\n default: {\n console.debug(`[${label}] rx Unknown type seq=${env.seq}`);\n ack();\n }\n }\n}\n","import { GraphBuilder, Registry, GraphRuntime } from \"@bian-womp/spark-graph\";\nimport type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport type Json = Record<string, unknown>;\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: any[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setInput: (nodeId: string, handle: string, value: unknown) => void;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: () => void;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegisteryDescriptor;\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 async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n let lastDef: GraphDefinition | undefined;\n\n // Seed defaults for any missing inputs for a single node\n function seedDefaultsForNode(\n nodeId: string,\n defaultValues?: Record<string, unknown>\n ): void {\n if (!graphRuntime || !defaultValues) return;\n try {\n const nd = graphRuntime.getNodeData(nodeId);\n const existing = nd?.inputs || {};\n const toSet: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(defaultValues)) {\n if (!(k in existing)) toSet[k] = v;\n }\n if (Object.keys(toSet).length > 0) {\n graphRuntime.setInputs(nodeId, toSet);\n }\n } catch {}\n }\n\n // Seed defaults for all nodes based on a graph definition with resolvedHandles\n function seedDefaultsFromDef(def: GraphDefinition): void {\n if (!graphRuntime) return;\n for (const n of def.nodes || []) {\n const defs = n.resolvedHandles?.inputDefaults;\n if (defs) seedDefaultsForNode(n.nodeId, defs);\n }\n }\n\n const computeResolvedHandles = (\n def: GraphDefinition,\n nodeInputs: Record<string, Record<string, unknown>>,\n env?: Record<string, unknown>\n ): GraphDefinition => {\n try {\n const enriched: GraphDefinition = {\n ...def,\n nodes: def.nodes.map((n) => {\n const desc = registry.nodes.get(n.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return n;\n try {\n const r =\n desc.resolveHandles({\n environment: env || {},\n params: n.params,\n inputs: nodeInputs?.[n.nodeId],\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n return {\n ...n,\n resolvedHandles: { inputs, outputs, inputDefaults },\n };\n } catch {\n return n;\n }\n }),\n };\n return enriched;\n } catch {\n return def;\n }\n };\n const api: RuntimeApi = {\n async coerce(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 async applyRegistry(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 async build(def, opts) {\n const env = opts || {};\n const enriched = computeResolvedHandles(def, {}, env);\n graphRuntime = builder.build(enriched, { environment: env });\n lastDef = enriched;\n // Seed defaults for dynamic inputs on initial build\n seedDefaultsFromDef(enriched);\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 // Listen for input changes to recompute dynamic handles per node (generalized)\n graphRuntime.on(\"value\", (e) => {\n try {\n if (!graphRuntime) return;\n if (!e || e.io !== \"input\") return;\n const nodeId = e.nodeId;\n const nd = graphRuntime.getNodeData(nodeId);\n if (!nd) return;\n // Recompute resolved handles for only this node using current inputs\n const envNow = graphRuntime.getEnvironment?.() ?? env;\n const curDef = lastDef || def;\n const target = (curDef.nodes || []).find((n) => n.nodeId === nodeId);\n if (!target) return;\n const desc = registry.nodes.get(target.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return;\n const r =\n desc.resolveHandles({\n params: target.params,\n environment: envNow || {},\n inputs: nd.inputs || {},\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n const nextHandles = { inputs, outputs, inputDefaults };\n // If nothing changed, skip\n const before = target.resolvedHandles || {};\n if (JSON.stringify(before) === JSON.stringify(nextHandles)) return;\n // Apply per-node update and keep lastDef in sync for this node only\n graphRuntime.updateNodeHandles(nodeId, nextHandles, registry);\n target.resolvedHandles = nextHandles;\n // Seed newly added dynamic inputs with defaults if provided and not present\n seedDefaultsForNode(nodeId, inputDefaults);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n } catch {\n // ignore\n }\n });\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 = api.snapshot();\n const env = graphRuntime?.getEnvironment?.() ?? {};\n return {\n def: lastDef,\n environment: env,\n inputs: snap.inputs,\n outputs: snap.outputs,\n };\n },\n async applySnapshotFull(payload) {\n const def = payload.def;\n if (!def) return;\n await api.build(def, payload.environment);\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate(\n { inputs: payload.inputs, outputs: payload.outputs },\n { reemit: true }\n );\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 async update(def) {\n if (!graphRuntime) return;\n const env = graphRuntime.getEnvironment?.() ?? {};\n // Build current inputs map from runtime so resolveHandles can depend on inputs\n const inputsMap: Record<string, Record<string, unknown>> = {};\n const ids = graphRuntime.getNodeIds();\n for (const id of ids) {\n const nd = graphRuntime.getNodeData(id);\n if (nd?.inputs && Object.keys(nd.inputs).length > 0) {\n inputsMap[id] = nd.inputs;\n }\n }\n const enriched = computeResolvedHandles(def, inputsMap, env);\n graphRuntime.update(enriched, registry);\n lastDef = enriched;\n // Seed defaults for newly added dynamic inputs on update\n seedDefaultsFromDef(enriched);\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 setInput(nodeId, handle, value) {\n graphRuntime?.setInput(nodeId, handle, value);\n },\n setInputs(nodeId, inputs) {\n graphRuntime?.setInputs(nodeId, inputs);\n },\n triggerExternal(nodeId, event) {\n graphRuntime?.triggerExternal(nodeId, event);\n },\n launch() {\n graphRuntime?.launch();\n },\n whenIdle() {\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose() {\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n return api;\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/RemoteEngine.ts","../../src/RemoteRunner.ts","../../src/server/errors.ts","../../src/server/command.ts","../../src/server/runtime.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 } 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 url: string;\n private seq = new SeqGenerator();\n\n constructor(url: string) {\n this.url = url;\n }\n\n async connect(): Promise<void> {\n if (this.ws && this.ws.readyState === OPEN) return;\n this.ws = window\n ? new (window as any).WebSocket(this.url)\n : new WebSocket(this.url);\n await new Promise<void>((resolve, reject) => {\n if (!this.ws) return reject(new Error(\"ws init failed\"));\n this.ws.onopen = () => resolve();\n this.ws.onerror = (e) => reject(e);\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 }\n\n async request<TReq = unknown, TRes = unknown>(\n msg: Envelope<TReq>\n ): Promise<Envelope<TRes>> {\n // For now, just send and wait for the next message with matching seq (simple demo)\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 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 { Transport } 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\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async connect(): Promise<void> {\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 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 res = await fetch(this.baseUrl + \"/command\", {\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 fetch(this.baseUrl + \"/command\", {\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","import type {\n Engine,\n EngineEventListener,\n EngineEventName,\n EngineEventMap,\n} from \"@bian-womp/spark-graph\";\nimport type { Transport } from \"./transport/Transport\";\nimport type { Envelope, RuntimeEvent } from \"@bian-womp/spark-protocol\";\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(): void {\n this.transport.send({ message: { type: \"Launch\" } });\n }\n\n setInput(nodeId: string, handle: string, value: unknown): void {\n this.transport.send({\n message: { type: \"SetInput\", payload: { nodeId, handle, value } },\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","import type {\n RunnerControl,\n GraphDefinition,\n Engine,\n} from \"@bian-womp/spark-graph\";\nimport { RemoteEngine } from \"./RemoteEngine\";\nimport type { Transport } from \"./transport/Transport\";\nimport {\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport class RemoteRunner implements RunnerControl {\n private engine: RemoteEngine;\n constructor(private transport: Transport) {\n this.engine = new RemoteEngine(transport);\n }\n\n async build(\n def: GraphDefinition,\n opts?: { environment?: Record<string, unknown> }\n ): Promise<void> {\n await this.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 await this.transport.request({\n message: { type: \"Update\", payload: { def } },\n });\n }\n\n async describeRegistry(): Promise<RegisteryDescriptor> {\n const res = await this.transport.request({\n message: { type: \"DescribeRegistry\" },\n });\n const payload = (res?.message as { registry: RegisteryDescriptor }) || {};\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 await this.transport.request({\n message: { type: \"RegistryApply\", payload: { deltas } },\n });\n }\n\n async snapshot(): Promise<RuntimeSnapshot> {\n const res = await this.transport.request({ message: { type: \"Snapshot\" } });\n const payload = (res?.message as { snapshot: RuntimeSnapshot }) || {};\n return payload.snapshot || { inputs: {}, outputs: {} };\n }\n\n async snapshotFull(): Promise<RuntimeSnapshotFull> {\n const res = await this.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 await this.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 await this.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 res = await this.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 res = await this.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 return this.engine;\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 { Envelope, Command } from \"@bian-womp/spark-protocol\";\nimport type { Json, RuntimeApi } from \"./runtime\";\nimport { summarize } from \"./errors\";\n\nexport async function handleCommand(\n label: string,\n env: Envelope<Command>,\n runtimeApi: RuntimeApi,\n ack: (payload?: Json) => void\n): Promise<void> {\n const msg = env.message as Command;\n switch (msg.type) {\n case \"Build\": {\n console.debug(\n `[${label}] rx Build seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0} envKeys=${Object.keys(\n msg.payload.environment ?? {}\n ).join(\",\")}`\n );\n await runtimeApi.build(msg.payload.def, msg.payload.environment as Json);\n ack();\n break;\n }\n case \"Update\": {\n console.debug(\n `[${label}] rx Update seq=${env.seq} nodes=${\n msg.payload.def.nodes?.length ?? 0\n } edges=${msg.payload.def.edges?.length ?? 0}`\n );\n await runtimeApi.update(msg.payload.def);\n ack();\n break;\n }\n case \"SetEnvironment\": {\n console.debug(`[${label}] rx SetEnvironment seq=${env.seq}`);\n runtimeApi.setEnvironment(msg.payload.environment, {\n merge: Boolean(msg.payload.merge),\n });\n ack();\n break;\n }\n case \"SetInput\": {\n console.debug(\n `[${label}] rx SetInput seq=${env.seq} ${msg.payload.nodeId}.${\n msg.payload.handle\n }=${summarize(msg.payload.value)}`\n );\n runtimeApi.setInput(\n msg.payload.nodeId,\n msg.payload.handle,\n msg.payload.value\n );\n ack();\n break;\n }\n case \"SetInputs\": {\n console.debug(\n `[${label}] rx SetInputs seq=${env.seq} ${\n 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 runtimeApi.setInputs(nodeId, inputs);\n ack();\n break;\n }\n case \"TriggerExternal\": {\n console.debug(\n `[${label}] rx TriggerExternal seq=${env.seq} ${\n msg.payload.nodeId\n } event=${summarize(msg.payload.event)}`\n );\n runtimeApi.triggerExternal(msg.payload.nodeId, msg.payload.event);\n ack();\n break;\n }\n case \"Launch\": {\n console.debug(`[${label}] rx Launch seq=${env.seq}`);\n runtimeApi.launch();\n ack();\n break;\n }\n case \"WhenIdle\": {\n console.debug(`[${label}] rx WhenIdle seq=${env.seq}`);\n await runtimeApi.whenIdle();\n ack();\n break;\n }\n case \"Snapshot\": {\n console.debug(`[${label}] rx Snapshot seq=${env.seq}`);\n const snap = runtimeApi.snapshot();\n ack({ snapshot: snap });\n break;\n }\n case \"SnapshotFull\": {\n console.debug(`[${label}] rx SnapshotFull seq=${env.seq}`);\n const snap = runtimeApi.snapshotFull();\n ack({ snapshot: snap });\n break;\n }\n case \"GetEnvironment\": {\n console.debug(`[${label}] rx GetEnvironment seq=${env.seq}`);\n const environment = runtimeApi.getEnvironment();\n ack({ environment });\n break;\n }\n case \"ApplySnapshotFull\": {\n console.debug(`[${label}] rx ApplySnapshotFull seq=${env.seq}`);\n await runtimeApi.applySnapshotFull(msg.payload);\n ack();\n break;\n }\n case \"Coerce\": {\n console.debug(\n `[${label}] rx Coerce seq=${env.seq} ${msg.payload.from} -> ${msg.payload.to}`\n );\n const value = await 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 console.debug(`[${label}] rx DescribeRegistry seq=${env.seq}`);\n const desc = runtimeApi.describeRegistry();\n ack({ registry: desc });\n break;\n }\n case \"RegistryApply\": {\n console.debug(`[${label}] rx RegistryApply seq=${env.seq}`);\n await runtimeApi.applyRegistry((msg as any).payload?.deltas || []);\n ack();\n break;\n }\n case \"Dispose\": {\n console.debug(`[${label}] rx Dispose seq=${env.seq}`);\n runtimeApi.dispose();\n ack();\n break;\n }\n case \"Pause\":\n case \"Resume\": {\n console.debug(`[${label}] rx ${msg.type} seq=${env.seq} (not-impl)`);\n ack();\n break;\n }\n default: {\n console.debug(`[${label}] rx Unknown type seq=${env.seq}`);\n ack();\n }\n }\n}\n","import { GraphBuilder, Registry, GraphRuntime } from \"@bian-womp/spark-graph\";\nimport type {\n Envelope,\n RuntimeEvent,\n GraphDefinition,\n RegisteryDescriptor,\n RuntimeSnapshot,\n RuntimeSnapshotFull,\n} from \"@bian-womp/spark-protocol\";\n\nexport type Json = Record<string, unknown>;\n\nexport interface RuntimeApi {\n build: (def: GraphDefinition, env?: Json) => Promise<void>;\n update: (def: GraphDefinition) => Promise<void>;\n applyRegistry: (deltas: any[]) => Promise<void>;\n setEnvironment: (env: Json, opts?: { merge?: boolean }) => void;\n getEnvironment: () => Record<string, unknown>;\n setInput: (nodeId: string, handle: string, value: unknown) => void;\n setInputs: (nodeId: string, inputs: Record<string, unknown>) => void;\n triggerExternal: (nodeId: string, event: unknown) => void;\n launch: () => void;\n whenIdle: () => Promise<void>;\n dispose: () => void;\n describeRegistry: () => RegisteryDescriptor;\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 async function createRuntimeAdapter(\n createRegistry: () => Promise<Registry>,\n send: (e: Envelope<RuntimeEvent>) => void\n): Promise<RuntimeApi> {\n const registry = await createRegistry();\n const builder = new GraphBuilder(registry);\n let graphRuntime: GraphRuntime | undefined;\n\n // Seed defaults for any missing inputs for a single node\n function seedDefaultsForNode(\n nodeId: string,\n defaultValues?: Record<string, unknown>\n ): void {\n if (!graphRuntime || !defaultValues) return;\n try {\n const nd = graphRuntime.getNodeData(nodeId);\n const existing = nd?.inputs || {};\n const toSet: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(defaultValues)) {\n if (!(k in existing)) toSet[k] = v;\n }\n if (Object.keys(toSet).length > 0) {\n graphRuntime.setInputs(nodeId, toSet);\n }\n } catch {}\n }\n\n // Seed defaults for all nodes based on a graph definition with resolvedHandles\n function seedDefaultsFromDef(def: GraphDefinition): void {\n if (!graphRuntime) return;\n for (const n of def.nodes || []) {\n const defs = n.resolvedHandles?.inputDefaults;\n if (defs) seedDefaultsForNode(n.nodeId, defs);\n }\n }\n\n const computeResolvedHandles = (\n def: GraphDefinition,\n nodeInputs: Record<string, Record<string, unknown>>,\n env?: Record<string, unknown>\n ): GraphDefinition => {\n try {\n const enriched: GraphDefinition = {\n ...def,\n nodes: def.nodes.map((n) => {\n const desc = registry.nodes.get(n.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return n;\n try {\n const r =\n desc.resolveHandles({\n environment: env || {},\n params: n.params,\n inputs: nodeInputs?.[n.nodeId],\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n return {\n ...n,\n resolvedHandles: { inputs, outputs, inputDefaults },\n };\n } catch {\n return n;\n }\n }),\n };\n return enriched;\n } catch {\n return def;\n }\n };\n const api: RuntimeApi = {\n async coerce(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 async applyRegistry(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 async build(def, opts) {\n const env = opts || {};\n const enriched = computeResolvedHandles(def, {}, env);\n graphRuntime = builder.build(enriched, { environment: env });\n // Seed defaults for dynamic inputs on initial build\n seedDefaultsFromDef(enriched);\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 // Listen for input changes to recompute dynamic handles per node (generalized)\n graphRuntime.on(\"value\", (e) => {\n try {\n if (!graphRuntime) return;\n if (!e || e.io !== \"input\") return;\n const nodeId = e.nodeId;\n const nd = graphRuntime.getNodeData(nodeId);\n if (!nd) return;\n // Recompute resolved handles for only this node using current inputs\n const envNow = graphRuntime.getEnvironment?.() ?? env;\n const curDef = graphRuntime.getGraphDef();\n const target = (curDef.nodes || []).find((n) => n.nodeId === nodeId);\n if (!target) return;\n const desc = registry.nodes.get(target.typeId);\n if (!desc || typeof desc.resolveHandles !== \"function\") return;\n const r =\n desc.resolveHandles({\n params: target.params,\n environment: envNow || {},\n inputs: nd.inputs || {},\n }) || {};\n const inputs = { ...desc.inputs, ...r.inputs };\n const outputs = { ...desc.outputs, ...r.outputs };\n const inputDefaults = { ...desc.inputDefaults, ...r.inputDefaults };\n const nextHandles = { inputs, outputs, inputDefaults };\n // If nothing changed, skip\n const before = target.resolvedHandles || {};\n if (JSON.stringify(before) === JSON.stringify(nextHandles)) return;\n // Apply per-node update\n graphRuntime.updateNodeHandles(nodeId, nextHandles, registry);\n target.resolvedHandles = nextHandles;\n // Seed newly added dynamic inputs with defaults if provided and not present\n seedDefaultsForNode(nodeId, inputDefaults);\n send({\n message: {\n type: \"invalidate\",\n payload: { reason: \"graph-updated\" },\n },\n });\n } catch {\n // ignore\n }\n });\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 = api.snapshot();\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 };\n },\n async applySnapshotFull(payload) {\n const def = payload.def;\n if (!def) return;\n await api.build(def, payload.environment);\n // Hydrate inputs/outputs exactly, then re-emit outputs without scheduling runs\n graphRuntime?.hydrate(\n { inputs: payload.inputs, outputs: payload.outputs },\n { reemit: true }\n );\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 async update(def) {\n if (!graphRuntime) return;\n const env = graphRuntime.getEnvironment?.() ?? {};\n // Build current inputs map from runtime so resolveHandles can depend on inputs\n const inputsMap: Record<string, Record<string, unknown>> = {};\n const ids = graphRuntime.getNodeIds();\n for (const id of ids) {\n const nd = graphRuntime.getNodeData(id);\n if (nd?.inputs && Object.keys(nd.inputs).length > 0) {\n inputsMap[id] = nd.inputs;\n }\n }\n const enriched = computeResolvedHandles(def, inputsMap, env);\n graphRuntime.update(enriched, registry);\n // Seed defaults for newly added dynamic inputs on update\n seedDefaultsFromDef(enriched);\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 setInput(nodeId, handle, value) {\n graphRuntime?.setInput(nodeId, handle, value);\n },\n setInputs(nodeId, inputs) {\n graphRuntime?.setInputs(nodeId, inputs);\n },\n triggerExternal(nodeId, event) {\n graphRuntime?.triggerExternal(nodeId, event);\n },\n launch() {\n graphRuntime?.launch();\n },\n whenIdle() {\n return graphRuntime?.whenIdle?.() ?? Promise.resolve();\n },\n dispose() {\n graphRuntime?.dispose?.();\n graphRuntime = undefined;\n },\n };\n return api;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAgB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,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,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,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,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,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,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;IAC5C,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,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,GACxC,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAgB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,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,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,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,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,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,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;IAC5C,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,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,GACxC,OAAO,CAAC,UAAU,CAAC,CA8SrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bian-womp/spark-remote",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.21",
|
|
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.
|
|
52
|
-
"@bian-womp/spark-protocol": "^0.2.
|
|
51
|
+
"@bian-womp/spark-graph": "^0.2.21",
|
|
52
|
+
"@bian-womp/spark-protocol": "^0.2.21",
|
|
53
53
|
"ws": "^8.18.3"
|
|
54
54
|
}
|
|
55
55
|
}
|