@bian-womp/spark-workbench 0.2.46 → 0.2.48
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 +153 -86
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/misc/WorkbenchStudio.d.ts.map +1 -1
- package/lib/cjs/src/misc/context/WorkbenchContext.d.ts +2 -2
- package/lib/cjs/src/misc/context/WorkbenchContext.d.ts.map +1 -1
- package/lib/cjs/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -1
- package/lib/cjs/src/runtime/AbstractGraphRunner.d.ts +6 -3
- package/lib/cjs/src/runtime/AbstractGraphRunner.d.ts.map +1 -1
- package/lib/cjs/src/runtime/IGraphRunner.d.ts +4 -14
- package/lib/cjs/src/runtime/IGraphRunner.d.ts.map +1 -1
- package/lib/cjs/src/runtime/LocalGraphRunner.d.ts +3 -3
- package/lib/cjs/src/runtime/LocalGraphRunner.d.ts.map +1 -1
- package/lib/cjs/src/runtime/RemoteGraphRunner.d.ts +5 -3
- package/lib/cjs/src/runtime/RemoteGraphRunner.d.ts.map +1 -1
- package/lib/esm/index.js +154 -87
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/misc/WorkbenchStudio.d.ts.map +1 -1
- package/lib/esm/src/misc/context/WorkbenchContext.d.ts +2 -2
- package/lib/esm/src/misc/context/WorkbenchContext.d.ts.map +1 -1
- package/lib/esm/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -1
- package/lib/esm/src/runtime/AbstractGraphRunner.d.ts +6 -3
- package/lib/esm/src/runtime/AbstractGraphRunner.d.ts.map +1 -1
- package/lib/esm/src/runtime/IGraphRunner.d.ts +4 -14
- package/lib/esm/src/runtime/IGraphRunner.d.ts.map +1 -1
- package/lib/esm/src/runtime/LocalGraphRunner.d.ts +3 -3
- package/lib/esm/src/runtime/LocalGraphRunner.d.ts.map +1 -1
- package/lib/esm/src/runtime/RemoteGraphRunner.d.ts +5 -3
- package/lib/esm/src/runtime/RemoteGraphRunner.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkbenchStudio.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchStudio.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"WorkbenchStudio.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchStudio.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,2BAA2B,CAAC;AAgB7E,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAmBvE,OAAO,EAGL,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAEL,oBAAoB,EACpB,YAAY,EAGb,MAAM,yBAAyB,CAAC;AAIjC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CACtC;AAq1BD,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,cAAc,EACd,OAAO,EACP,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,KAAK,EACL,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAClD,WAAW,EAAE,oBAAoB,CAAC;IAClC,mBAAmB,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QACd,EAAE,EAAE,iBAAiB,CAAC;QACtB,MAAM,EAAE,YAAY,CAAC;QACrB,eAAe,EAAE,CACf,GAAG,EAAE,eAAe,EACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,GAAG,EAAE,eAAe,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACjD,KAAK,IAAI,CAAC;CACZ,2CAoHA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { GraphDefinition, InputValidationError, RegistryError, SystemError } from "@bian-womp/spark-protocol";
|
|
2
|
+
import type { GraphDefinition, InputValidationError, RegistryError, SystemError, EngineKind } from "@bian-womp/spark-protocol";
|
|
3
3
|
import type { Registry, ValidationIssue } from "@bian-womp/spark-graph";
|
|
4
4
|
import { InMemoryWorkbench } from "../../core/InMemoryWorkbench";
|
|
5
5
|
import type { HandleIssue, NodeRunStatus, EdgeRunStatus, DebugEvent } from "../../core/contracts";
|
|
6
6
|
import { AbstractWorkbench } from "../../core/AbstractWorkbench";
|
|
7
|
-
import { IGraphRunner
|
|
7
|
+
import { IGraphRunner } from "../../runtime/IGraphRunner";
|
|
8
8
|
export type ExampleDescriptor = {
|
|
9
9
|
id: string;
|
|
10
10
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkbenchContext.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,WAAW,
|
|
1
|
+
{"version":3,"file":"WorkbenchContext.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkbenchContext.provider.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkbenchContext.provider.d.ts","sourceRoot":"","sources":["../../../../../src/misc/context/WorkbenchContext.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAUf,OAAO,EAAE,KAAK,QAAQ,EAAwB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAa1D,OAAO,EAGL,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAI5B,wBAAgB,iBAAiB,CAAC,EAChC,EAAE,EACF,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAouBA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { RuntimeSnapshotFull, GraphDefinition } from "@bian-womp/spark-protocol";
|
|
1
|
+
import type { RuntimeSnapshotFull, GraphDefinition, EngineKind, RunnerOptions } from "@bian-womp/spark-protocol";
|
|
2
2
|
import { Engine, Registry, GraphRuntime } from "@bian-womp/spark-graph";
|
|
3
|
-
import { IGraphRunner, RunnerEventName, type RunnerEventListener,
|
|
3
|
+
import { IGraphRunner, RunnerEventName, type RunnerEventListener, ExecutionBackend, RunnerEventMap } from "./IGraphRunner";
|
|
4
4
|
export declare abstract class AbstractGraphRunner implements IGraphRunner {
|
|
5
5
|
protected registry: Registry;
|
|
6
6
|
protected backend: ExecutionBackend;
|
|
@@ -14,7 +14,7 @@ export declare abstract class AbstractGraphRunner implements IGraphRunner {
|
|
|
14
14
|
abstract update(def: GraphDefinition): void;
|
|
15
15
|
abstract step(): Promise<void>;
|
|
16
16
|
abstract computeNode(nodeId: string): Promise<void>;
|
|
17
|
-
abstract flush(): void
|
|
17
|
+
abstract flush(): Promise<void>;
|
|
18
18
|
abstract getInputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
19
19
|
abstract getInputDefaults(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
20
20
|
abstract getOutputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
@@ -29,6 +29,9 @@ export declare abstract class AbstractGraphRunner implements IGraphRunner {
|
|
|
29
29
|
triggerExternal(nodeId: string, event: unknown): void;
|
|
30
30
|
setInputs(nodeId: string, inputs: Record<string, unknown>): void;
|
|
31
31
|
whenIdle(): Promise<void>;
|
|
32
|
+
stop(): void;
|
|
33
|
+
switchEngine(opts?: RunnerOptions): Promise<void>;
|
|
34
|
+
protected abstract createAndLaunchEngine(opts?: RunnerOptions): Promise<void>;
|
|
32
35
|
on<K extends RunnerEventName>(event: K, handler: RunnerEventListener<K>): () => void;
|
|
33
36
|
protected emit<K extends RunnerEventName>(event: K, payload: RunnerEventMap[K]): void;
|
|
34
37
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/AbstractGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,
|
|
1
|
+
{"version":3,"file":"AbstractGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/AbstractGraphRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { GraphDefinition, RuntimeSnapshotFull } from "@bian-womp/spark-protocol";
|
|
1
|
+
import type { GraphDefinition, RuntimeSnapshotFull, EngineKind, RunnerOptions } from "@bian-womp/spark-protocol";
|
|
2
2
|
import { EngineEventName, Registry, type RuntimeEventMap } from "@bian-womp/spark-graph";
|
|
3
3
|
import { HttpPollingTransport, WebSocketTransport, TransportConnectOptions } from "@bian-womp/spark-remote";
|
|
4
|
-
export type EngineKind = "push" | "batched" | "pull" | "hybrid" | "step";
|
|
5
4
|
export type RemoteExecutionBackend = {
|
|
6
5
|
kind: "remote-http";
|
|
7
6
|
baseUrl: string;
|
|
@@ -35,23 +34,12 @@ export interface RunnerEventMap extends RuntimeEventMap {
|
|
|
35
34
|
transport: TransportStatus;
|
|
36
35
|
registry: Registry;
|
|
37
36
|
}
|
|
38
|
-
export interface RunnerOptions {
|
|
39
|
-
engine: EngineKind;
|
|
40
|
-
invalidate?: boolean;
|
|
41
|
-
batched?: {
|
|
42
|
-
flushIntervalMs?: number;
|
|
43
|
-
};
|
|
44
|
-
hybrid?: {
|
|
45
|
-
windowMs?: number;
|
|
46
|
-
batchThreshold?: number;
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
37
|
export interface IGraphRunner {
|
|
50
38
|
build(def: GraphDefinition): void;
|
|
51
39
|
update(def: GraphDefinition): void;
|
|
52
40
|
step(): Promise<void>;
|
|
53
41
|
computeNode(nodeId: string): Promise<void>;
|
|
54
|
-
flush(): void
|
|
42
|
+
flush(): Promise<void>;
|
|
55
43
|
getOutputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
56
44
|
getInputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
57
45
|
getInputDefaults(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
@@ -62,6 +50,8 @@ export interface IGraphRunner {
|
|
|
62
50
|
coerce?(from: string, to: string, value: unknown): Promise<unknown>;
|
|
63
51
|
on<K extends RunnerEventName>(event: K, handler: RunnerEventListener<K>): () => void;
|
|
64
52
|
whenIdle(): Promise<void>;
|
|
53
|
+
stop(): void;
|
|
54
|
+
switchEngine(opts?: RunnerOptions): Promise<void>;
|
|
65
55
|
dispose(): void;
|
|
66
56
|
isRunning(): boolean;
|
|
67
57
|
getRunningEngine(): EngineKind | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/IGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,
|
|
1
|
+
{"version":3,"file":"IGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/IGraphRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Registry } from "@bian-womp/spark-graph";
|
|
2
|
-
import type { GraphDefinition, RuntimeSnapshotFull } from "@bian-womp/spark-protocol";
|
|
3
|
-
import type { RunnerOptions } from "./IGraphRunner";
|
|
2
|
+
import type { GraphDefinition, RuntimeSnapshotFull, RunnerOptions } from "@bian-womp/spark-protocol";
|
|
4
3
|
import { AbstractGraphRunner } from "./AbstractGraphRunner";
|
|
5
4
|
export declare class LocalGraphRunner extends AbstractGraphRunner {
|
|
6
5
|
constructor(registry: Registry);
|
|
7
6
|
build(def: GraphDefinition): void;
|
|
8
7
|
update(def: GraphDefinition): void;
|
|
9
8
|
launch(def: GraphDefinition, opts: RunnerOptions): void;
|
|
9
|
+
protected createAndLaunchEngine(opts?: RunnerOptions): Promise<void>;
|
|
10
10
|
step(): Promise<void>;
|
|
11
11
|
computeNode(nodeId: string): Promise<void>;
|
|
12
|
-
flush(): void
|
|
12
|
+
flush(): Promise<void>;
|
|
13
13
|
getOutputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
14
14
|
getInputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
15
15
|
getInputDefaults(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/LocalGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"LocalGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/LocalGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAKT,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,gBAAiB,SAAQ,mBAAmB;gBAC3C,QAAQ,EAAE,QAAQ;IAK9B,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAOjC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IASlC,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;cAgBvC,qBAAqB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiBzE,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAuBxE,gBAAgB,CACd,GAAG,EAAE,eAAe,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAW1C,cAAc,QACP,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SACrB;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,UAU1B;IAEF,cAAc,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAEtD;IAEI,YAAY;;;;;;IA4BZ,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;IAUpD,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { RuntimeSnapshotFull, GraphDefinition } from "@bian-womp/spark-protocol";
|
|
1
|
+
import type { RuntimeSnapshotFull, GraphDefinition, RunnerOptions } from "@bian-womp/spark-protocol";
|
|
2
2
|
import { Registry } from "@bian-womp/spark-graph";
|
|
3
3
|
import { RuntimeApiClient } from "@bian-womp/spark-remote";
|
|
4
|
-
import { RemoteExecutionBackend
|
|
4
|
+
import { RemoteExecutionBackend } from "./IGraphRunner";
|
|
5
5
|
import { AbstractGraphRunner } from "./AbstractGraphRunner";
|
|
6
6
|
export declare class RemoteGraphRunner extends AbstractGraphRunner {
|
|
7
7
|
protected lastDef?: GraphDefinition;
|
|
@@ -33,6 +33,7 @@ export declare class RemoteGraphRunner extends AbstractGraphRunner {
|
|
|
33
33
|
build(def: GraphDefinition): void;
|
|
34
34
|
update(def: GraphDefinition): void;
|
|
35
35
|
launch(def: GraphDefinition, opts: RunnerOptions): void;
|
|
36
|
+
protected createAndLaunchEngine(opts?: RunnerOptions): Promise<void>;
|
|
36
37
|
/**
|
|
37
38
|
* Launch using an existing backend runtime that has already been built and hydrated.
|
|
38
39
|
* This is used when resuming from a snapshot where the backend has already applied
|
|
@@ -41,9 +42,10 @@ export declare class RemoteGraphRunner extends AbstractGraphRunner {
|
|
|
41
42
|
* the runtime state that was just restored.
|
|
42
43
|
*/
|
|
43
44
|
launchExisting(def: GraphDefinition, opts: RunnerOptions): void;
|
|
45
|
+
switchEngine(opts?: RunnerOptions): Promise<void>;
|
|
44
46
|
step(): Promise<void>;
|
|
45
47
|
computeNode(nodeId: string): Promise<void>;
|
|
46
|
-
flush(): void
|
|
48
|
+
flush(): Promise<void>;
|
|
47
49
|
triggerExternal(nodeId: string, event: unknown): void;
|
|
48
50
|
coerce(from: string, to: string, value: unknown): Promise<unknown>;
|
|
49
51
|
snapshotFull(): Promise<RuntimeSnapshotFull>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/RemoteGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,
|
|
1
|
+
{"version":3,"file":"RemoteGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/RemoteGraphRunner.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GraphBuilder,
|
|
1
|
+
import { GraphBuilder, createEngine, StepEngine, PullEngine, BatchedEngine, isTypedOutput, getTypedOutputValue, getTypedOutputTypeId, isInputPrivate, getInputTypeId, createSimpleGraphRegistry, createSimpleGraphDef, createAsyncGraphDef, createAsyncGraphRegistry, createProgressGraphDef, createProgressGraphRegistry, createValidationGraphDef, createValidationGraphRegistry } from '@bian-womp/spark-graph';
|
|
2
2
|
import { RuntimeApiClient } from '@bian-womp/spark-remote';
|
|
3
3
|
import { Position, Handle, useUpdateNodeInternals, useReactFlow, ReactFlowProvider, ReactFlow, Background, BackgroundVariant, MiniMap, Controls } from '@xyflow/react';
|
|
4
4
|
import React, { useCallback, useState, useRef, useEffect, useMemo, createContext, useContext, useImperativeHandle } from 'react';
|
|
@@ -334,8 +334,9 @@ class AbstractGraphRunner {
|
|
|
334
334
|
this.stagedInputs = {};
|
|
335
335
|
}
|
|
336
336
|
launch(def, opts) {
|
|
337
|
+
// Auto-stop if engine is already running
|
|
337
338
|
if (this.engine) {
|
|
338
|
-
|
|
339
|
+
this.stop();
|
|
339
340
|
}
|
|
340
341
|
}
|
|
341
342
|
setInput(nodeId, handle, value) {
|
|
@@ -387,6 +388,39 @@ class AbstractGraphRunner {
|
|
|
387
388
|
async whenIdle() {
|
|
388
389
|
await this.engine?.whenIdle();
|
|
389
390
|
}
|
|
391
|
+
stop() {
|
|
392
|
+
if (!this.engine)
|
|
393
|
+
return;
|
|
394
|
+
// Dispose engine (cleans up timers, listeners, etc.)
|
|
395
|
+
this.engine.dispose();
|
|
396
|
+
this.engine = undefined;
|
|
397
|
+
// Emit status but keep runtime alive
|
|
398
|
+
if (this.runningKind) {
|
|
399
|
+
this.runningKind = undefined;
|
|
400
|
+
this.emit("status", { running: false, engine: undefined });
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
async switchEngine(opts) {
|
|
404
|
+
if (!this.engine || !this.runtime) {
|
|
405
|
+
throw new Error("No engine running to switch from");
|
|
406
|
+
}
|
|
407
|
+
// Wait for current engine to be idle
|
|
408
|
+
await this.whenIdle();
|
|
409
|
+
// Capture current state
|
|
410
|
+
const currentInputs = { ...this.stagedInputs };
|
|
411
|
+
// Stop current engine
|
|
412
|
+
this.stop();
|
|
413
|
+
// Ensure runtime is in a clean state (resumed)
|
|
414
|
+
this.runtime.resume();
|
|
415
|
+
// Create and launch new engine (to be implemented by subclasses)
|
|
416
|
+
await this.createAndLaunchEngine(opts);
|
|
417
|
+
// Re-apply staged inputs to new engine
|
|
418
|
+
for (const [nodeId, map] of Object.entries(currentInputs)) {
|
|
419
|
+
if (this.engine) {
|
|
420
|
+
this.engine.setInputs(nodeId, map);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
390
424
|
on(event, handler) {
|
|
391
425
|
if (!this.listeners.has(event))
|
|
392
426
|
this.listeners.set(event, new Set());
|
|
@@ -458,37 +492,30 @@ class LocalGraphRunner extends AbstractGraphRunner {
|
|
|
458
492
|
this.build(def);
|
|
459
493
|
if (!this.runtime)
|
|
460
494
|
throw new Error("Runtime not built");
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
break;
|
|
480
|
-
case "step":
|
|
481
|
-
this.engine = new StepEngine(rt);
|
|
482
|
-
break;
|
|
483
|
-
default:
|
|
484
|
-
throw new Error("Unknown engine kind");
|
|
485
|
-
}
|
|
495
|
+
// Use the async method to create engine
|
|
496
|
+
this.createAndLaunchEngine(opts).catch((err) => {
|
|
497
|
+
console.error("Failed to launch engine:", err);
|
|
498
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
499
|
+
this.emit("error", {
|
|
500
|
+
kind: "system",
|
|
501
|
+
message: errorMessage,
|
|
502
|
+
err: err instanceof Error ? err : new Error(errorMessage),
|
|
503
|
+
});
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
async createAndLaunchEngine(opts) {
|
|
507
|
+
if (!this.runtime)
|
|
508
|
+
throw new Error("Runtime not built");
|
|
509
|
+
// Use shared engine factory
|
|
510
|
+
this.engine = createEngine(this.runtime, opts);
|
|
511
|
+
if (!this.engine)
|
|
512
|
+
throw new Error("Failed to create engine");
|
|
486
513
|
this.engine.on("value", (e) => this.emit("value", e));
|
|
487
514
|
this.engine.on("error", (e) => this.emit("error", e));
|
|
488
515
|
this.engine.on("invalidate", (e) => this.emit("invalidate", e));
|
|
489
516
|
this.engine.on("stats", (e) => this.emit("stats", e));
|
|
490
|
-
this.engine.launch(opts
|
|
491
|
-
this.runningKind = opts
|
|
517
|
+
this.engine.launch(opts?.invalidate);
|
|
518
|
+
this.runningKind = opts?.engine ?? "push";
|
|
492
519
|
this.emit("status", { running: true, engine: this.runningKind });
|
|
493
520
|
for (const [nodeId, map] of Object.entries(this.stagedInputs)) {
|
|
494
521
|
this.engine.setInputs(nodeId, map);
|
|
@@ -496,18 +523,18 @@ class LocalGraphRunner extends AbstractGraphRunner {
|
|
|
496
523
|
}
|
|
497
524
|
async step() {
|
|
498
525
|
const eng = this.engine;
|
|
499
|
-
if (eng instanceof StepEngine)
|
|
526
|
+
if (eng && eng instanceof StepEngine)
|
|
500
527
|
await eng.step();
|
|
501
528
|
}
|
|
502
529
|
async computeNode(nodeId) {
|
|
503
530
|
const eng = this.engine;
|
|
504
|
-
if (eng instanceof PullEngine)
|
|
531
|
+
if (eng && eng instanceof PullEngine)
|
|
505
532
|
await eng.computeNode(nodeId);
|
|
506
533
|
}
|
|
507
|
-
flush() {
|
|
534
|
+
async flush() {
|
|
508
535
|
const eng = this.engine;
|
|
509
|
-
if (eng instanceof BatchedEngine)
|
|
510
|
-
eng.flush();
|
|
536
|
+
if (eng && eng instanceof BatchedEngine)
|
|
537
|
+
await eng.flush();
|
|
511
538
|
}
|
|
512
539
|
getOutputs(def) {
|
|
513
540
|
const out = {};
|
|
@@ -903,30 +930,36 @@ class RemoteGraphRunner extends AbstractGraphRunner {
|
|
|
903
930
|
catch {
|
|
904
931
|
console.error("Failed to hydrate remote inputs/outputs");
|
|
905
932
|
}
|
|
906
|
-
|
|
907
|
-
if (!this.listenersBound) {
|
|
908
|
-
eng.on("value", (e) => {
|
|
909
|
-
this.valueCache.set(`${e.nodeId}.${e.handle}`, {
|
|
910
|
-
io: e.io,
|
|
911
|
-
value: e.value,
|
|
912
|
-
runtimeTypeId: e.runtimeTypeId,
|
|
913
|
-
});
|
|
914
|
-
this.emit("value", e);
|
|
915
|
-
});
|
|
916
|
-
eng.on("error", (e) => this.emit("error", e));
|
|
917
|
-
eng.on("invalidate", (e) => this.emit("invalidate", e));
|
|
918
|
-
eng.on("stats", (e) => this.emit("stats", e));
|
|
919
|
-
this.listenersBound = true;
|
|
920
|
-
}
|
|
921
|
-
this.engine = eng;
|
|
922
|
-
this.engine.launch(opts.invalidate);
|
|
923
|
-
this.runningKind = "push";
|
|
924
|
-
this.emit("status", { running: true, engine: this.runningKind });
|
|
925
|
-
for (const [nodeId, map] of Object.entries(this.stagedInputs)) {
|
|
926
|
-
this.engine.setInputs(nodeId, map);
|
|
927
|
-
}
|
|
933
|
+
await this.createAndLaunchEngine(opts);
|
|
928
934
|
});
|
|
929
935
|
}
|
|
936
|
+
async createAndLaunchEngine(opts) {
|
|
937
|
+
const client = await this.ensureClient();
|
|
938
|
+
// Configure and launch engine on the backend
|
|
939
|
+
await client.launch(opts);
|
|
940
|
+
// Get the remote engine proxy and wire up event listeners
|
|
941
|
+
const eng = client.getEngine();
|
|
942
|
+
if (!this.listenersBound) {
|
|
943
|
+
eng.on("value", (e) => {
|
|
944
|
+
this.valueCache.set(`${e.nodeId}.${e.handle}`, {
|
|
945
|
+
io: e.io,
|
|
946
|
+
value: e.value,
|
|
947
|
+
runtimeTypeId: e.runtimeTypeId,
|
|
948
|
+
});
|
|
949
|
+
this.emit("value", e);
|
|
950
|
+
});
|
|
951
|
+
eng.on("error", (e) => this.emit("error", e));
|
|
952
|
+
eng.on("invalidate", (e) => this.emit("invalidate", e));
|
|
953
|
+
eng.on("stats", (e) => this.emit("stats", e));
|
|
954
|
+
this.listenersBound = true;
|
|
955
|
+
}
|
|
956
|
+
this.engine = eng;
|
|
957
|
+
this.runningKind = opts?.engine ?? "push";
|
|
958
|
+
this.emit("status", { running: true, engine: this.runningKind });
|
|
959
|
+
for (const [nodeId, map] of Object.entries(this.stagedInputs)) {
|
|
960
|
+
this.engine.setInputs(nodeId, map);
|
|
961
|
+
}
|
|
962
|
+
}
|
|
930
963
|
/**
|
|
931
964
|
* Launch using an existing backend runtime that has already been built and hydrated.
|
|
932
965
|
* This is used when resuming from a snapshot where the backend has already applied
|
|
@@ -942,34 +975,44 @@ class RemoteGraphRunner extends AbstractGraphRunner {
|
|
|
942
975
|
// has already been built and hydrated via ApplySnapshotFull.
|
|
943
976
|
// Calling build() would create a new runtime and lose the restored state.
|
|
944
977
|
this.lastDef = def;
|
|
945
|
-
|
|
946
|
-
const eng = client.getEngine();
|
|
947
|
-
if (!this.listenersBound) {
|
|
948
|
-
eng.on("value", (e) => {
|
|
949
|
-
this.valueCache.set(`${e.nodeId}.${e.handle}`, {
|
|
950
|
-
io: e.io,
|
|
951
|
-
value: e.value,
|
|
952
|
-
runtimeTypeId: e.runtimeTypeId,
|
|
953
|
-
});
|
|
954
|
-
this.emit("value", e);
|
|
955
|
-
});
|
|
956
|
-
eng.on("error", (e) => this.emit("error", e));
|
|
957
|
-
eng.on("invalidate", (e) => this.emit("invalidate", e));
|
|
958
|
-
eng.on("stats", (e) => this.emit("stats", e));
|
|
959
|
-
this.listenersBound = true;
|
|
960
|
-
}
|
|
961
|
-
this.engine = eng;
|
|
962
|
-
this.engine.launch(opts.invalidate);
|
|
963
|
-
this.runningKind = "push";
|
|
964
|
-
this.emit("status", { running: true, engine: this.runningKind });
|
|
965
|
-
for (const [nodeId, map] of Object.entries(this.stagedInputs)) {
|
|
966
|
-
this.engine.setInputs(nodeId, map);
|
|
967
|
-
}
|
|
978
|
+
await this.createAndLaunchEngine(opts);
|
|
968
979
|
});
|
|
969
980
|
}
|
|
970
|
-
async
|
|
971
|
-
|
|
972
|
-
|
|
981
|
+
async switchEngine(opts) {
|
|
982
|
+
if (!this.engine) {
|
|
983
|
+
throw new Error("No engine running to switch from");
|
|
984
|
+
}
|
|
985
|
+
// Wait for current engine to be idle
|
|
986
|
+
await this.whenIdle();
|
|
987
|
+
// Capture current state
|
|
988
|
+
const currentInputs = { ...this.stagedInputs };
|
|
989
|
+
// Stop current engine
|
|
990
|
+
this.stop();
|
|
991
|
+
// Create and launch new engine with the specified kind
|
|
992
|
+
const client = await this.ensureClient();
|
|
993
|
+
await client.launch(opts);
|
|
994
|
+
// Get the remote engine proxy
|
|
995
|
+
const eng = client.getEngine();
|
|
996
|
+
this.engine = eng;
|
|
997
|
+
this.runningKind = opts?.engine ?? "push";
|
|
998
|
+
this.emit("status", { running: true, engine: this.runningKind });
|
|
999
|
+
// Re-apply staged inputs to new engine
|
|
1000
|
+
for (const [nodeId, map] of Object.entries(currentInputs)) {
|
|
1001
|
+
this.engine.setInputs(nodeId, map);
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
async step() {
|
|
1005
|
+
const client = await this.ensureClient();
|
|
1006
|
+
await client.step();
|
|
1007
|
+
}
|
|
1008
|
+
async computeNode(nodeId) {
|
|
1009
|
+
const client = await this.ensureClient();
|
|
1010
|
+
await client.computeNode(nodeId);
|
|
1011
|
+
}
|
|
1012
|
+
async flush() {
|
|
1013
|
+
const client = await this.ensureClient();
|
|
1014
|
+
await client.flush();
|
|
1015
|
+
}
|
|
973
1016
|
triggerExternal(nodeId, event) {
|
|
974
1017
|
this.ensureClient().then(async (client) => {
|
|
975
1018
|
try {
|
|
@@ -2325,7 +2368,7 @@ function WorkbenchProvider({ wb, runner, registry, setRegistry, overrides, uiVer
|
|
|
2325
2368
|
offRunnerRegistry();
|
|
2326
2369
|
offRunnerTransport();
|
|
2327
2370
|
};
|
|
2328
|
-
}, [runner, wb]);
|
|
2371
|
+
}, [runner, wb, setRegistry]);
|
|
2329
2372
|
// Push incremental updates into running engine without full reload
|
|
2330
2373
|
useEffect(() => {
|
|
2331
2374
|
if (runner.isRunning()) {
|
|
@@ -2406,7 +2449,7 @@ function WorkbenchProvider({ wb, runner, registry, setRegistry, overrides, uiVer
|
|
|
2406
2449
|
}
|
|
2407
2450
|
catch { }
|
|
2408
2451
|
}, [runner, wb]);
|
|
2409
|
-
const stop = useCallback(() => runner.
|
|
2452
|
+
const stop = useCallback(() => runner.stop(), [runner]);
|
|
2410
2453
|
const step = useCallback(() => runner.step(), [runner]);
|
|
2411
2454
|
const flush = useCallback(() => runner.flush(), [runner]);
|
|
2412
2455
|
const value = useMemo(() => ({
|
|
@@ -3992,10 +4035,34 @@ function WorkbenchStudioCanvas({ setRegistry, autoScroll, onAutoScrollChange, ex
|
|
|
3992
4035
|
? "Stop engine before switching example"
|
|
3993
4036
|
: undefined, children: [jsx("option", { value: "", children: "Select Example\u2026" }), examples.map((ex) => (jsx("option", { value: ex.id, children: ex.label }, ex.id)))] }), jsxs("select", { className: "border border-gray-300 rounded px-2 py-1", value: backendKind, onChange: (e) => onBackendKindChange(e.target.value), disabled: runner.isRunning(), title: runner.isRunning()
|
|
3994
4037
|
? "Stop engine before switching backend"
|
|
3995
|
-
: undefined, children: [jsx("option", { value: "local", children: "Local" }), jsx("option", { value: "remote-http", children: "Remote (HTTP)" }), jsx("option", { value: "remote-ws", children: "Remote (WebSocket)" })] }), backendKind === "remote-http" && !!onHttpBaseUrlChange && (jsx("input", { className: "ml-2 border border-gray-300 rounded px-2 py-1 w-72", placeholder: "http://127.0.0.1:18080", value: httpBaseUrl, onChange: (e) => onHttpBaseUrlChange(e.target.value) })), backendKind === "remote-ws" && !!onWsUrlChange && (jsx("input", { className: "ml-2 border border-gray-300 rounded px-2 py-1 w-72", placeholder: "ws://127.0.0.1:18081", value: wsUrl, onChange: (e) => onWsUrlChange(e.target.value) })), jsxs("select", { className: "border border-gray-300 rounded px-2 py-1", value: runner.getRunningEngine() ?? engine ?? "", onChange: (e) => {
|
|
4038
|
+
: undefined, children: [jsx("option", { value: "local", children: "Local" }), jsx("option", { value: "remote-http", children: "Remote (HTTP)" }), jsx("option", { value: "remote-ws", children: "Remote (WebSocket)" })] }), backendKind === "remote-http" && !!onHttpBaseUrlChange && (jsx("input", { className: "ml-2 border border-gray-300 rounded px-2 py-1 w-72", placeholder: "http://127.0.0.1:18080", value: httpBaseUrl, onChange: (e) => onHttpBaseUrlChange(e.target.value) })), backendKind === "remote-ws" && !!onWsUrlChange && (jsx("input", { className: "ml-2 border border-gray-300 rounded px-2 py-1 w-72", placeholder: "ws://127.0.0.1:18081", value: wsUrl, onChange: (e) => onWsUrlChange(e.target.value) })), jsxs("select", { className: "border border-gray-300 rounded px-2 py-1", value: runner.getRunningEngine() ?? engine ?? "", onChange: async (e) => {
|
|
3996
4039
|
const kind = e.target.value || undefined;
|
|
3997
|
-
|
|
3998
|
-
|
|
4040
|
+
const currentEngine = runner.getRunningEngine();
|
|
4041
|
+
// If engine is running and user selected a different engine, switch it
|
|
4042
|
+
if (runner.isRunning() &&
|
|
4043
|
+
currentEngine &&
|
|
4044
|
+
kind &&
|
|
4045
|
+
kind !== currentEngine) {
|
|
4046
|
+
try {
|
|
4047
|
+
await runner.switchEngine({
|
|
4048
|
+
engine: kind,
|
|
4049
|
+
batched: { flushIntervalMs: 0 },
|
|
4050
|
+
hybrid: { windowMs: 250, batchThreshold: 3 },
|
|
4051
|
+
});
|
|
4052
|
+
onEngineChange?.(kind);
|
|
4053
|
+
}
|
|
4054
|
+
catch (err) {
|
|
4055
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
4056
|
+
alert(`Failed to switch engine: ${message}`);
|
|
4057
|
+
// Reset dropdown to current engine
|
|
4058
|
+
e.target.value = currentEngine;
|
|
4059
|
+
}
|
|
4060
|
+
}
|
|
4061
|
+
else {
|
|
4062
|
+
// Normal change when not running
|
|
4063
|
+
onEngineChange?.(kind);
|
|
4064
|
+
}
|
|
4065
|
+
}, children: [jsx("option", { value: "", children: "Select Engine\u2026" }), jsx("option", { value: "push", children: "Push" }), jsx("option", { value: "batched", children: "Batched" }), jsx("option", { value: "pull", children: "Pull" }), jsx("option", { value: "hybrid", children: "Hybrid" }), jsx("option", { value: "step", children: "Step" })] }), runner.getRunningEngine() === "step" && (jsx("button", { className: "ml-2 border border-gray-300 rounded p-1", onClick: () => runner.step(), disabled: !runner.isRunning(), title: "Step", children: jsx(PlayPauseIcon, { size: 24 }) })), runner.getRunningEngine() === "batched" && (jsx("button", { className: "ml-2 border border-gray-300 rounded p-1", onClick: () => runner.flush(), disabled: !runner.isRunning(), title: "Flush", children: jsx(LightningIcon, { size: 24 }) })), runner.isRunning() ? (jsxs("button", { className: "border rounded px-2 py-1.5 text-red-700 border-red-600 flex items-center gap-1", onClick: () => runner.stop(), title: "Stop engine", children: [jsx(StopIcon, { size: 16, weight: "fill" }), jsx("span", { className: "font-medium ml-1", children: "Stop" })] })) : (jsxs("button", { className: "border rounded px-2 py-1.5 text-green-700 border-green-600 flex items-center gap-1 disabled:text-gray-400 disabled:border-gray-300", onClick: (evt) => {
|
|
3999
4066
|
const kind = engine;
|
|
4000
4067
|
if (!kind)
|
|
4001
4068
|
return alert("Select an engine first.");
|