@bian-womp/spark-workbench 0.2.10 → 0.2.12
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 +192 -42
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/misc/NodeContextMenu.d.ts +1 -1
- package/lib/cjs/src/misc/NodeContextMenu.d.ts.map +1 -1
- package/lib/cjs/src/misc/WorkbenchCanvas.d.ts.map +1 -1
- package/lib/cjs/src/misc/WorkbenchStudio.d.ts.map +1 -1
- package/lib/cjs/src/runtime/AbstractGraphRunner.d.ts +7 -0
- package/lib/cjs/src/runtime/AbstractGraphRunner.d.ts.map +1 -1
- package/lib/cjs/src/runtime/IGraphRunner.d.ts +7 -0
- package/lib/cjs/src/runtime/IGraphRunner.d.ts.map +1 -1
- package/lib/cjs/src/runtime/LocalGraphRunner.d.ts +12 -0
- package/lib/cjs/src/runtime/LocalGraphRunner.d.ts.map +1 -1
- package/lib/cjs/src/runtime/RemoteGraphRunner.d.ts +7 -0
- package/lib/cjs/src/runtime/RemoteGraphRunner.d.ts.map +1 -1
- package/lib/esm/index.js +192 -42
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/misc/NodeContextMenu.d.ts +1 -1
- package/lib/esm/src/misc/NodeContextMenu.d.ts.map +1 -1
- package/lib/esm/src/misc/WorkbenchCanvas.d.ts.map +1 -1
- package/lib/esm/src/misc/WorkbenchStudio.d.ts.map +1 -1
- package/lib/esm/src/runtime/AbstractGraphRunner.d.ts +7 -0
- package/lib/esm/src/runtime/AbstractGraphRunner.d.ts.map +1 -1
- package/lib/esm/src/runtime/IGraphRunner.d.ts +7 -0
- package/lib/esm/src/runtime/IGraphRunner.d.ts.map +1 -1
- package/lib/esm/src/runtime/LocalGraphRunner.d.ts +12 -0
- package/lib/esm/src/runtime/LocalGraphRunner.d.ts.map +1 -1
- package/lib/esm/src/runtime/RemoteGraphRunner.d.ts +7 -0
- package/lib/esm/src/runtime/RemoteGraphRunner.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -4,7 +4,7 @@ export declare function NodeContextMenu({ open, clientPos, nodeId, onClose, }: {
|
|
|
4
4
|
x: number;
|
|
5
5
|
y: number;
|
|
6
6
|
} | null;
|
|
7
|
-
nodeId
|
|
7
|
+
nodeId: string;
|
|
8
8
|
onClose: () => void;
|
|
9
9
|
}): import("react/jsx-runtime").JSX.Element | null;
|
|
10
10
|
//# sourceMappingURL=NodeContextMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/misc/NodeContextMenu.tsx"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,
|
|
1
|
+
{"version":3,"file":"NodeContextMenu.d.ts","sourceRoot":"","sources":["../../../../src/misc/NodeContextMenu.tsx"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,kDA2RA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkbenchCanvas.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAkBf,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe;iBAGX,OAAO;cACV,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM;eAC3C,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO;yBACvC,CACnB,MAAM,EAAE,MAAM,KACX;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;+
|
|
1
|
+
{"version":3,"file":"WorkbenchCanvas.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAkBf,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,eAAe;iBAGX,OAAO;cACV,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM;eAC3C,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO;yBACvC,CACnB,MAAM,EAAE,MAAM,KACX;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;+CA8VpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkbenchStudio.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchStudio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EACL,KAAK,eAAe,EAEpB,QAAQ,EAYT,MAAM,wBAAwB,CAAC;AAkBhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EACL,UAAU,EAEV,oBAAoB,EACpB,YAAY,EAEb,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,CACT,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,EAC1D,GAAG,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KACxB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAClD,SAAS,CAAC,EAAE,CACV,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO,EAChE,GAAG,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KACxB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC;IACvD,QAAQ,CAAC,EAAE,CACT,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,EACxE,GAAG,EAAE;QACH,MAAM,EAAE,YAAY,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,QAAQ,CAAC;KAEpB,KACE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,UAAU,CAAC,EAAE,CACX,cAAc,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,IAAI,EAC/C,GAAG,EAAE;QAAE,EAAE,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,KACnD,IAAI,CAAC;IAEV,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,CAAC;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,kBAAkB,CAAC,EAAE,CACnB,MAAM,EAAE,MAAM,KACX;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACpD,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkbenchStudio.d.ts","sourceRoot":"","sources":["../../../../src/misc/WorkbenchStudio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EACL,KAAK,eAAe,EAEpB,QAAQ,EAYT,MAAM,wBAAwB,CAAC;AAkBhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EACL,UAAU,EAEV,oBAAoB,EACpB,YAAY,EAEb,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,CACT,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,EAC1D,GAAG,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KACxB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAClD,SAAS,CAAC,EAAE,CACV,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO,EAChE,GAAG,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KACxB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC;IACvD,QAAQ,CAAC,EAAE,CACT,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,EACxE,GAAG,EAAE;QACH,MAAM,EAAE,YAAY,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,QAAQ,CAAC;KAEpB,KACE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,UAAU,CAAC,EAAE,CACX,cAAc,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,IAAI,EAC/C,GAAG,EAAE;QAAE,EAAE,EAAE,iBAAiB,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,KACnD,IAAI,CAAC;IAEV,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,CAAC;IACrE,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B,kBAAkB,CAAC,EAAE,CACnB,MAAM,EAAE,MAAM,KACX;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACpD,CAAC;AAq1BF,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,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,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,2CAgEA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RuntimeSnapshotFull } from "@bian-womp/spark-protocol";
|
|
1
2
|
import { Engine, GraphDefinition, Registry, GraphRuntime } from "@bian-womp/spark-graph";
|
|
2
3
|
import { IGraphRunner, RunnerEventName, type RunnerEventListener, EngineKind, ExecutionBackend, RunnerOptions, RunnerEventMap } from "./IGraphRunner";
|
|
3
4
|
export declare abstract class AbstractGraphRunner implements IGraphRunner {
|
|
@@ -16,6 +17,12 @@ export declare abstract class AbstractGraphRunner implements IGraphRunner {
|
|
|
16
17
|
abstract flush(): void;
|
|
17
18
|
abstract getOutputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
18
19
|
abstract getInputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
20
|
+
abstract setEnvironment(env: Record<string, unknown>, opts?: {
|
|
21
|
+
merge?: boolean;
|
|
22
|
+
}): void;
|
|
23
|
+
abstract getEnvironment(): Record<string, unknown> | undefined;
|
|
24
|
+
abstract snapshotFull(): Promise<RuntimeSnapshotFull>;
|
|
25
|
+
abstract applySnapshotFull(payload: RuntimeSnapshotFull): Promise<void>;
|
|
19
26
|
launch(def: GraphDefinition, opts: RunnerOptions): void;
|
|
20
27
|
setInput(nodeId: string, handle: string, value: unknown): void;
|
|
21
28
|
triggerExternal(nodeId: string, event: unknown): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/AbstractGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,eAAe,EACf,QAAQ,EACR,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,mBAAmB,EACxB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,8BAAsB,mBAAoB,YAAW,YAAY;IAW7D,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAC5B,SAAS,CAAC,OAAO,EAAE,gBAAgB;IAXrC,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,SAAS,CAGb;IACJ,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAM;IACrE,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;gBAGvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB;IAGrC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAC1C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAC3C,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACnD,QAAQ,CAAC,KAAK,IAAI,IAAI;IACtB,QAAQ,CAAC,UAAU,CACjB,GAAG,EAAE,eAAe,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAChB,GAAG,EAAE,eAAe,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1C,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAMvD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAW9D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAKrD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgB1D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,EAAE,CAAC,CAAC,SAAS,eAAe,EAC1B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,MAAM,IAAI;IAOb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,eAAe,EACtC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,IAAI;IAKP,OAAO,IAAI,IAAI;IAWf,SAAS,IAAI,OAAO;IAIpB,gBAAgB,IAAI,UAAU,GAAG,SAAS;CAG3C"}
|
|
1
|
+
{"version":3,"file":"AbstractGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/AbstractGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,MAAM,EACN,eAAe,EACf,QAAQ,EACR,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,mBAAmB,EACxB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,8BAAsB,mBAAoB,YAAW,YAAY;IAW7D,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAC5B,SAAS,CAAC,OAAO,EAAE,gBAAgB;IAXrC,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,SAAS,CAGb;IACJ,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAM;IACrE,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;gBAGvB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB;IAGrC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAC1C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAC3C,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACnD,QAAQ,CAAC,KAAK,IAAI,IAAI;IACtB,QAAQ,CAAC,UAAU,CACjB,GAAG,EAAE,eAAe,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAChB,GAAG,EAAE,eAAe,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1C,QAAQ,CAAC,cAAc,CACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GACzB,IAAI;IAEP,QAAQ,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAE9D,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAErD,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvE,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAMvD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAW9D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAKrD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgB1D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,EAAE,CAAC,CAAC,SAAS,eAAe,EAC1B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,MAAM,IAAI;IAOb,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,eAAe,EACtC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,IAAI;IAKP,OAAO,IAAI,IAAI;IAWf,SAAS,IAAI,OAAO;IAIpB,gBAAgB,IAAI,UAAU,GAAG,SAAS;CAG3C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RuntimeSnapshotFull } from "@bian-womp/spark-protocol";
|
|
1
2
|
import { EngineEventName, GraphDefinition, Registry, type RuntimeEventMap } from "@bian-womp/spark-graph";
|
|
2
3
|
import { HttpPollingTransport, WebSocketTransport } from "@bian-womp/spark-remote";
|
|
3
4
|
export type EngineKind = "push" | "batched" | "pull" | "hybrid" | "step";
|
|
@@ -58,5 +59,11 @@ export interface IGraphRunner {
|
|
|
58
59
|
dispose(): void;
|
|
59
60
|
isRunning(): boolean;
|
|
60
61
|
getRunningEngine(): EngineKind | undefined;
|
|
62
|
+
snapshotFull: () => Promise<RuntimeSnapshotFull>;
|
|
63
|
+
applySnapshotFull: (payload: RuntimeSnapshotFull) => Promise<void>;
|
|
64
|
+
setEnvironment: (env: Record<string, unknown>, opts?: {
|
|
65
|
+
merge?: boolean;
|
|
66
|
+
}) => void;
|
|
67
|
+
getEnvironment: () => Record<string, unknown> | undefined;
|
|
61
68
|
}
|
|
62
69
|
//# sourceMappingURL=IGraphRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/IGraphRunner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/IGraphRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GraphDefinition, Registry } from "@bian-womp/spark-graph";
|
|
2
|
+
import { RuntimeSnapshotFull } from "@bian-womp/spark-protocol";
|
|
2
3
|
import type { RunnerOptions } from "./IGraphRunner";
|
|
3
4
|
import { AbstractGraphRunner } from "./AbstractGraphRunner";
|
|
4
5
|
export declare class LocalGraphRunner extends AbstractGraphRunner {
|
|
@@ -11,6 +12,17 @@ export declare class LocalGraphRunner extends AbstractGraphRunner {
|
|
|
11
12
|
flush(): void;
|
|
12
13
|
getOutputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
13
14
|
getInputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
15
|
+
setEnvironment: (env: Record<string, unknown>, opts?: {
|
|
16
|
+
merge?: boolean;
|
|
17
|
+
}) => void;
|
|
18
|
+
getEnvironment: () => Record<string, unknown> | undefined;
|
|
19
|
+
snapshotFull(): Promise<{
|
|
20
|
+
def: any;
|
|
21
|
+
environment: Record<string, unknown>;
|
|
22
|
+
inputs: Record<string, Record<string, unknown>>;
|
|
23
|
+
outputs: Record<string, Record<string, unknown>>;
|
|
24
|
+
}>;
|
|
25
|
+
applySnapshotFull(payload: RuntimeSnapshotFull): Promise<void>;
|
|
14
26
|
dispose(): void;
|
|
15
27
|
}
|
|
16
28
|
//# sourceMappingURL=LocalGraphRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/LocalGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,QAAQ,EAOT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,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;IA0CjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,KAAK,IAAI,IAAI;IAKb,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;
|
|
1
|
+
{"version":3,"file":"LocalGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/LocalGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,QAAQ,EAOT,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,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;IA0CjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,KAAK,IAAI,IAAI;IAKb,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;IAaxE,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;;;;;;IA0BZ,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;IAUpD,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RuntimeSnapshotFull } from "@bian-womp/spark-protocol";
|
|
1
2
|
import { GraphDefinition, Registry } from "@bian-womp/spark-graph";
|
|
2
3
|
import { RemoteRunner } from "@bian-womp/spark-remote";
|
|
3
4
|
import { RemoteExecutionBackend, RemoteTransport, RunnerOptions } from "./IGraphRunner";
|
|
@@ -21,6 +22,12 @@ export declare class RemoteGraphRunner extends AbstractGraphRunner {
|
|
|
21
22
|
flush(): void;
|
|
22
23
|
triggerExternal(nodeId: string, event: unknown): void;
|
|
23
24
|
coerce(from: string, to: string, value: unknown): Promise<unknown>;
|
|
25
|
+
snapshotFull(): Promise<RuntimeSnapshotFull>;
|
|
26
|
+
applySnapshotFull(payload: RuntimeSnapshotFull): Promise<void>;
|
|
27
|
+
setEnvironment(env: Record<string, unknown>, opts?: {
|
|
28
|
+
merge?: boolean;
|
|
29
|
+
}): void;
|
|
30
|
+
getEnvironment(): Record<string, unknown> | undefined;
|
|
24
31
|
getOutputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
25
32
|
getInputs(def: GraphDefinition): Record<string, Record<string, unknown>>;
|
|
26
33
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/RemoteGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAEL,YAAY,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EAEtB,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAChC,SAAS,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAEtC,UAAU;YAEF,OAAO,GAAG,QAAQ;eAAS,OAAO;wBAAkB,MAAM;OAC9D;IACJ,cAAc,UAAS;gBAEX,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB;IA8D/D,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAIjC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAWlC,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAyDjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,KAAK,IAAI,IAAI;IAIb,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RemoteGraphRunner.d.ts","sourceRoot":"","sources":["../../../../src/runtime/RemoteGraphRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAU,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAEL,YAAY,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EAEtB,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACpC,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAChC,SAAS,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAEtC,UAAU;YAEF,OAAO,GAAG,QAAQ;eAAS,OAAO;wBAAkB,MAAM;OAC9D;IACJ,cAAc,UAAS;gBAEX,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB;IA8D/D,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAIjC,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAWlC,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAyDjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,KAAK,IAAI,IAAI;IAIb,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQ/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IASlE,YAAY;IASZ,iBAAiB,CAAC,OAAO,EAAE,mBAAmB;IAKpD,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;IAWvE,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAOrD,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAmBzE,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAkBxE,OAAO,IAAI,IAAI;cAYC,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC;CA0B5D"}
|
package/lib/esm/index.js
CHANGED
|
@@ -409,6 +409,21 @@ class AbstractGraphRunner {
|
|
|
409
409
|
class LocalGraphRunner extends AbstractGraphRunner {
|
|
410
410
|
constructor(registry) {
|
|
411
411
|
super(registry, { kind: "local" });
|
|
412
|
+
this.setEnvironment = (env, opts) => {
|
|
413
|
+
if (!this.runtime)
|
|
414
|
+
return;
|
|
415
|
+
if (opts?.merge) {
|
|
416
|
+
const current = this.runtime.getEnvironment();
|
|
417
|
+
const next = { ...(current || {}), ...(env || {}) };
|
|
418
|
+
this.runtime.setEnvironment(next);
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
this.runtime.setEnvironment(env);
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
this.getEnvironment = () => {
|
|
425
|
+
return this.runtime?.getEnvironment?.();
|
|
426
|
+
};
|
|
412
427
|
this.emit("transport", { state: "local" });
|
|
413
428
|
}
|
|
414
429
|
build(def) {
|
|
@@ -507,17 +522,36 @@ class LocalGraphRunner extends AbstractGraphRunner {
|
|
|
507
522
|
const runtimeInputs = this.runtime
|
|
508
523
|
? this.runtime.getNodeData?.(n.nodeId)?.inputs ?? {}
|
|
509
524
|
: {};
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
else {
|
|
514
|
-
const merged = { ...runtimeInputs, ...staged };
|
|
515
|
-
if (Object.keys(merged).length > 0)
|
|
516
|
-
out[n.nodeId] = merged;
|
|
517
|
-
}
|
|
525
|
+
const merged = { ...runtimeInputs, ...staged };
|
|
526
|
+
if (Object.keys(merged).length > 0)
|
|
527
|
+
out[n.nodeId] = merged;
|
|
518
528
|
}
|
|
519
529
|
return out;
|
|
520
530
|
}
|
|
531
|
+
async snapshotFull() {
|
|
532
|
+
const def = undefined; // UI will supply def/positions on download for local
|
|
533
|
+
const inputs = this.getInputs(this.runtime
|
|
534
|
+
? {
|
|
535
|
+
nodes: Array.from(this.runtime.getNodeIds()).map((id) => ({ nodeId: id, typeId: "" })),
|
|
536
|
+
edges: [],
|
|
537
|
+
}
|
|
538
|
+
: { nodes: [], edges: [] });
|
|
539
|
+
const outputs = this.getOutputs(this.runtime
|
|
540
|
+
? {
|
|
541
|
+
nodes: Array.from(this.runtime.getNodeIds()).map((id) => ({ nodeId: id, typeId: "" })),
|
|
542
|
+
edges: [],
|
|
543
|
+
}
|
|
544
|
+
: { nodes: [], edges: [] });
|
|
545
|
+
const environment = this.getEnvironment() || {};
|
|
546
|
+
return { def, environment, inputs, outputs };
|
|
547
|
+
}
|
|
548
|
+
async applySnapshotFull(payload) {
|
|
549
|
+
if (payload.def)
|
|
550
|
+
this.build(payload.def);
|
|
551
|
+
this.setEnvironment?.(payload.environment || {}, { merge: false });
|
|
552
|
+
// Hydrate via runtime for exact restore and re-emit
|
|
553
|
+
this.runtime?.hydrate({ inputs: payload.inputs || {}, outputs: payload.outputs || {} }, { reemit: true });
|
|
554
|
+
}
|
|
521
555
|
dispose() {
|
|
522
556
|
super.dispose();
|
|
523
557
|
this.runtime = undefined;
|
|
@@ -689,6 +723,36 @@ class RemoteGraphRunner extends AbstractGraphRunner {
|
|
|
689
723
|
return value;
|
|
690
724
|
}
|
|
691
725
|
}
|
|
726
|
+
async snapshotFull() {
|
|
727
|
+
const runner = await this.ensureRemoteRunner();
|
|
728
|
+
try {
|
|
729
|
+
return await runner.snapshotFull();
|
|
730
|
+
}
|
|
731
|
+
catch {
|
|
732
|
+
return { def: undefined, environment: {}, inputs: {}, outputs: {} };
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
async applySnapshotFull(payload) {
|
|
736
|
+
const runner = await this.ensureRemoteRunner();
|
|
737
|
+
await runner.applySnapshotFull(payload);
|
|
738
|
+
}
|
|
739
|
+
setEnvironment(env, opts) {
|
|
740
|
+
const t = this.transport;
|
|
741
|
+
if (!t)
|
|
742
|
+
return;
|
|
743
|
+
t.request({
|
|
744
|
+
message: {
|
|
745
|
+
type: "SetEnvironment",
|
|
746
|
+
payload: { environment: env, merge: opts?.merge },
|
|
747
|
+
},
|
|
748
|
+
}).catch(() => { });
|
|
749
|
+
}
|
|
750
|
+
getEnvironment() {
|
|
751
|
+
// Fetch from remote via lightweight command
|
|
752
|
+
// Note: returns undefined synchronously; callers needing value should use snapshotFull or call runner directly
|
|
753
|
+
// For now, we expose an async helper on RemoteRunner. Keep sync signature per interface.
|
|
754
|
+
return undefined;
|
|
755
|
+
}
|
|
692
756
|
getOutputs(def) {
|
|
693
757
|
const out = {};
|
|
694
758
|
const cache = this.valueCache;
|
|
@@ -722,7 +786,7 @@ class RemoteGraphRunner extends AbstractGraphRunner {
|
|
|
722
786
|
if (rec && rec.io === "input")
|
|
723
787
|
cur[h] = rec.value;
|
|
724
788
|
}
|
|
725
|
-
const merged =
|
|
789
|
+
const merged = { ...cur, ...staged };
|
|
726
790
|
if (Object.keys(merged).length > 0)
|
|
727
791
|
out[n.nodeId] = merged;
|
|
728
792
|
}
|
|
@@ -2238,14 +2302,6 @@ function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
|
|
|
2238
2302
|
if (open)
|
|
2239
2303
|
ref.current?.focus();
|
|
2240
2304
|
}, [open]);
|
|
2241
|
-
if (!open || !clientPos || !nodeId)
|
|
2242
|
-
return null;
|
|
2243
|
-
// clamp
|
|
2244
|
-
const MENU_MIN_WIDTH = 180;
|
|
2245
|
-
const PADDING = 16;
|
|
2246
|
-
const x = Math.min(clientPos.x, (typeof window !== "undefined" ? window.innerWidth : 0) -
|
|
2247
|
-
(MENU_MIN_WIDTH + PADDING));
|
|
2248
|
-
const y = Math.min(clientPos.y, (typeof window !== "undefined" ? window.innerHeight : 0) - 240);
|
|
2249
2305
|
// Bake helpers
|
|
2250
2306
|
const getBakeableOutputs = () => {
|
|
2251
2307
|
try {
|
|
@@ -2312,43 +2368,40 @@ function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
|
|
|
2312
2368
|
const arrTarget = isArray ? tArr?.bakeTarget : undefined;
|
|
2313
2369
|
const elemTarget = isArray ? tElem?.bakeTarget : undefined;
|
|
2314
2370
|
if (singleTarget) {
|
|
2315
|
-
const nodeDesc = registry.nodes.get(
|
|
2316
|
-
const inType = getInputTypeId(nodeDesc?.inputs,
|
|
2371
|
+
const nodeDesc = registry.nodes.get(singleTarget.nodeTypeId);
|
|
2372
|
+
const inType = getInputTypeId(nodeDesc?.inputs, singleTarget.inputHandle);
|
|
2317
2373
|
const coerced = await coerceIfNeeded(typeId, inType, unwrap(raw));
|
|
2318
2374
|
const newId = wb.addNode({
|
|
2319
|
-
typeId:
|
|
2375
|
+
typeId: singleTarget.nodeTypeId,
|
|
2320
2376
|
position: { x: pos.x + 180, y: pos.y },
|
|
2321
2377
|
params: {},
|
|
2322
2378
|
});
|
|
2323
2379
|
runner.update(wb.export());
|
|
2324
2380
|
await runner.whenIdle();
|
|
2325
|
-
runner.setInputs(newId, {
|
|
2326
|
-
[String(singleTarget.inputHandle || "Value")]: coerced,
|
|
2327
|
-
});
|
|
2381
|
+
runner.setInputs(newId, { [singleTarget.inputHandle]: coerced });
|
|
2328
2382
|
return;
|
|
2329
2383
|
}
|
|
2330
2384
|
if (isArray && arrTarget) {
|
|
2331
|
-
const nodeDesc = registry.nodes.get(
|
|
2332
|
-
const inType = getInputTypeId(nodeDesc?.inputs,
|
|
2385
|
+
const nodeDesc = registry.nodes.get(arrTarget.nodeTypeId);
|
|
2386
|
+
const inType = getInputTypeId(nodeDesc?.inputs, arrTarget.inputHandle);
|
|
2333
2387
|
const coerced = await coerceIfNeeded(typeId, inType, unwrap(raw));
|
|
2334
2388
|
const newId = `n${Math.random().toString(36).slice(2, 8)}`;
|
|
2335
2389
|
wb.addNode({
|
|
2336
2390
|
nodeId: newId,
|
|
2337
|
-
typeId:
|
|
2391
|
+
typeId: arrTarget.nodeTypeId,
|
|
2338
2392
|
position: { x: pos.x + 180, y: pos.y },
|
|
2339
2393
|
params: {},
|
|
2340
2394
|
});
|
|
2341
2395
|
runner.update(wb.export());
|
|
2342
2396
|
await runner.whenIdle();
|
|
2343
|
-
runner.setInputs(newId, {
|
|
2344
|
-
[String(arrTarget.inputHandle || "Value")]: coerced,
|
|
2345
|
-
});
|
|
2397
|
+
runner.setInputs(newId, { [arrTarget.inputHandle]: coerced });
|
|
2346
2398
|
return;
|
|
2347
2399
|
}
|
|
2348
|
-
if (isArray && elemTarget
|
|
2349
|
-
const nodeDesc = registry.nodes.get(
|
|
2350
|
-
const inType = getInputTypeId(nodeDesc?.inputs,
|
|
2351
|
-
const
|
|
2400
|
+
if (isArray && elemTarget) {
|
|
2401
|
+
const nodeDesc = registry.nodes.get(elemTarget.nodeTypeId);
|
|
2402
|
+
const inType = getInputTypeId(nodeDesc?.inputs, elemTarget.inputHandle);
|
|
2403
|
+
const src = unwrap(raw);
|
|
2404
|
+
const items = Array.isArray(src) ? src : [src];
|
|
2352
2405
|
const coercedItems = await Promise.all(items.map((v) => coerceIfNeeded(baseTypeId, inType, v)));
|
|
2353
2406
|
const COLS = 4;
|
|
2354
2407
|
const DX = 180;
|
|
@@ -2358,18 +2411,14 @@ function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
|
|
|
2358
2411
|
const col = idx % COLS;
|
|
2359
2412
|
const row = Math.floor(idx / COLS);
|
|
2360
2413
|
const newId = wb.addNode({
|
|
2361
|
-
typeId:
|
|
2414
|
+
typeId: elemTarget.nodeTypeId,
|
|
2362
2415
|
position: { x: pos.x + (col + 1) * DX, y: pos.y + row * DY },
|
|
2363
2416
|
params: {},
|
|
2364
|
-
initialInputs: {
|
|
2365
|
-
[String(elemTarget.inputHandle || "Value")]: clone(cv),
|
|
2366
|
-
},
|
|
2417
|
+
initialInputs: { [elemTarget.inputHandle]: clone(cv) },
|
|
2367
2418
|
});
|
|
2368
2419
|
runner.update(wb.export());
|
|
2369
2420
|
await runner.whenIdle();
|
|
2370
|
-
runner.setInputs(newId, {
|
|
2371
|
-
[String(elemTarget.inputHandle || "Value")]: cv,
|
|
2372
|
-
});
|
|
2421
|
+
runner.setInputs(newId, { [elemTarget.inputHandle]: cv });
|
|
2373
2422
|
}
|
|
2374
2423
|
return;
|
|
2375
2424
|
}
|
|
@@ -2412,6 +2461,14 @@ function NodeContextMenu({ open, clientPos, nodeId, onClose, }) {
|
|
|
2412
2461
|
catch { }
|
|
2413
2462
|
onClose();
|
|
2414
2463
|
}, [nodeId, runner, onClose]);
|
|
2464
|
+
if (!open || !clientPos || !nodeId)
|
|
2465
|
+
return null;
|
|
2466
|
+
// clamp
|
|
2467
|
+
const MENU_MIN_WIDTH = 180;
|
|
2468
|
+
const PADDING = 16;
|
|
2469
|
+
const x = Math.min(clientPos.x, (typeof window !== "undefined" ? window.innerWidth : 0) -
|
|
2470
|
+
(MENU_MIN_WIDTH + PADDING));
|
|
2471
|
+
const y = Math.min(clientPos.y, (typeof window !== "undefined" ? window.innerHeight : 0) - 240);
|
|
2415
2472
|
const canRunPull = engineKind()?.toString() === "pull";
|
|
2416
2473
|
const outs = getBakeableOutputs();
|
|
2417
2474
|
return (jsxs("div", { ref: ref, tabIndex: -1, className: "fixed z-[1000] bg-white border border-gray-300 rounded-lg shadow-lg p-1 min-w-[180px] text-sm text-gray-700", style: { left: x, top: y }, onClick: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation(), onWheel: (e) => e.stopPropagation(), onContextMenu: (e) => {
|
|
@@ -2461,6 +2518,7 @@ const WorkbenchCanvas = React.forwardRef(({ showValues, toString, toElement, get
|
|
|
2461
2518
|
outputValues: n.data.outputValues,
|
|
2462
2519
|
status: n.data.status,
|
|
2463
2520
|
validation: n.data.validation,
|
|
2521
|
+
inputConnected: n.data.inputConnected,
|
|
2464
2522
|
},
|
|
2465
2523
|
});
|
|
2466
2524
|
return isEqual(pick(a), pick(b));
|
|
@@ -2664,7 +2722,7 @@ const WorkbenchCanvas = React.forwardRef(({ showValues, toString, toElement, get
|
|
|
2664
2722
|
}, []);
|
|
2665
2723
|
return (jsx("div", { className: "w-full h-full", onContextMenu: onContextMenu, children: jsx(ReactFlowProvider, { children: jsxs(ReactFlow, { nodes: throttled.nodes, edges: throttled.edges, nodeTypes: nodeTypes, selectionOnDrag: true, onInit: (inst) => {
|
|
2666
2724
|
rfInstanceRef.current = inst;
|
|
2667
|
-
}, onConnect: onConnect, onEdgesChange: onEdgesChange, onEdgesDelete: onEdgesDelete, onNodesDelete: onNodesDelete, onNodesChange: onNodesChange, deleteKeyCode: ["Backspace", "Delete"], proOptions: { hideAttribution: true }, noDragClassName: "wb-nodrag", noWheelClassName: "wb-nowheel", noPanClassName: "wb-nopan", fitView: true, children: [jsx(Background, { id: "workbench-canvas-background", variant: BackgroundVariant.Dots, gap: 12, size: 1 }), jsx(MiniMap, {}), jsx(Controls, {}), jsx(DefaultContextMenu, { open: menuOpen, clientPos: menuPos, onAdd: addNodeAt, onClose: onCloseMenu }), jsx(NodeContextMenu, { open: nodeMenuOpen, clientPos: nodeMenuPos, nodeId: nodeAtMenu, onClose: onCloseNodeMenu })] }) }) }));
|
|
2725
|
+
}, onConnect: onConnect, onEdgesChange: onEdgesChange, onEdgesDelete: onEdgesDelete, onNodesDelete: onNodesDelete, onNodesChange: onNodesChange, deleteKeyCode: ["Backspace", "Delete"], proOptions: { hideAttribution: true }, noDragClassName: "wb-nodrag", noWheelClassName: "wb-nowheel", noPanClassName: "wb-nopan", fitView: true, children: [jsx(Background, { id: "workbench-canvas-background", variant: BackgroundVariant.Dots, gap: 12, size: 1 }), jsx(MiniMap, {}), jsx(Controls, {}), jsx(DefaultContextMenu, { open: menuOpen, clientPos: menuPos, onAdd: addNodeAt, onClose: onCloseMenu }), !!nodeAtMenu && (jsx(NodeContextMenu, { open: nodeMenuOpen, clientPos: nodeMenuPos, nodeId: nodeAtMenu, onClose: onCloseNodeMenu }))] }) }) }));
|
|
2668
2726
|
});
|
|
2669
2727
|
|
|
2670
2728
|
function WorkbenchStudioCanvas({ setRegistry, autoScroll, onAutoScrollChange, example, onExampleChange, engine, onEngineChange, backendKind, onBackendKindChange, httpBaseUrl, onHttpBaseUrlChange, wsUrl, onWsUrlChange, debug, onDebugChange, showValues, onShowValuesChange, hideWorkbench, onHideWorkbenchChange, overrides, onInit, onChange, }) {
|
|
@@ -2719,6 +2777,7 @@ function WorkbenchStudioCanvas({ setRegistry, autoScroll, onAutoScrollChange, ex
|
|
|
2719
2777
|
const lastAutoLaunched = useRef(undefined);
|
|
2720
2778
|
const autoLayoutRan = useRef(false);
|
|
2721
2779
|
const canvasRef = useRef(null);
|
|
2780
|
+
const uploadInputRef = useRef(null);
|
|
2722
2781
|
// Expose init callback with setInitialGraph helper
|
|
2723
2782
|
const initCalled = useRef(false);
|
|
2724
2783
|
useEffect(() => {
|
|
@@ -2823,6 +2882,69 @@ function WorkbenchStudioCanvas({ setRegistry, autoScroll, onAutoScrollChange, ex
|
|
|
2823
2882
|
alert(String(err?.message ?? err));
|
|
2824
2883
|
}
|
|
2825
2884
|
}, [wb, runner]);
|
|
2885
|
+
const onUploadPicked = useCallback(async (e) => {
|
|
2886
|
+
try {
|
|
2887
|
+
const file = e.target.files?.[0];
|
|
2888
|
+
if (!file)
|
|
2889
|
+
return;
|
|
2890
|
+
const text = await file.text();
|
|
2891
|
+
const parsed = JSON.parse(text);
|
|
2892
|
+
// Support both Graph and Snapshot payloads
|
|
2893
|
+
const isSnapshot = parsed &&
|
|
2894
|
+
typeof parsed === "object" &&
|
|
2895
|
+
(parsed.def || parsed.inputs || parsed.outputs || parsed.environment);
|
|
2896
|
+
if (isSnapshot) {
|
|
2897
|
+
const def = parsed.def;
|
|
2898
|
+
const positions = parsed.positions || {};
|
|
2899
|
+
const environment = parsed.environment || {};
|
|
2900
|
+
const inputs = parsed.inputs || {};
|
|
2901
|
+
if (def && runner.isRunning()) {
|
|
2902
|
+
// Remote exact restore path
|
|
2903
|
+
await runner.applySnapshotFull({
|
|
2904
|
+
def,
|
|
2905
|
+
environment,
|
|
2906
|
+
inputs,
|
|
2907
|
+
outputs: parsed.outputs || {},
|
|
2908
|
+
});
|
|
2909
|
+
await wb.load(def);
|
|
2910
|
+
if (positions && typeof positions === "object")
|
|
2911
|
+
wb.setPositions(positions);
|
|
2912
|
+
}
|
|
2913
|
+
else {
|
|
2914
|
+
alert("Graph definition is empty or engine is not running");
|
|
2915
|
+
}
|
|
2916
|
+
}
|
|
2917
|
+
else {
|
|
2918
|
+
const def = parsed?.def ?? parsed;
|
|
2919
|
+
const inputs = parsed?.inputs ?? {};
|
|
2920
|
+
await wb.load(def);
|
|
2921
|
+
try {
|
|
2922
|
+
runner.build(wb.export());
|
|
2923
|
+
}
|
|
2924
|
+
catch { }
|
|
2925
|
+
if (inputs && typeof inputs === "object") {
|
|
2926
|
+
for (const [nodeId, map] of Object.entries(inputs)) {
|
|
2927
|
+
try {
|
|
2928
|
+
runner.setInputs(nodeId, map);
|
|
2929
|
+
}
|
|
2930
|
+
catch { }
|
|
2931
|
+
}
|
|
2932
|
+
}
|
|
2933
|
+
}
|
|
2934
|
+
runAutoLayout();
|
|
2935
|
+
}
|
|
2936
|
+
catch (err) {
|
|
2937
|
+
alert(String(err?.message ?? err));
|
|
2938
|
+
}
|
|
2939
|
+
finally {
|
|
2940
|
+
// reset input so same file can be picked again
|
|
2941
|
+
if (uploadInputRef.current)
|
|
2942
|
+
uploadInputRef.current.value = "";
|
|
2943
|
+
}
|
|
2944
|
+
}, [wb, runner, runAutoLayout]);
|
|
2945
|
+
const triggerUpload = useCallback(() => {
|
|
2946
|
+
uploadInputRef.current?.click();
|
|
2947
|
+
}, []);
|
|
2826
2948
|
const hydrateFromBackend = useCallback(async (kind, base) => {
|
|
2827
2949
|
try {
|
|
2828
2950
|
const transport = kind === "remote-http"
|
|
@@ -3120,7 +3242,35 @@ function WorkbenchStudioCanvas({ setRegistry, autoScroll, onAutoScrollChange, ex
|
|
|
3120
3242
|
catch (err) {
|
|
3121
3243
|
alert(String(err?.message ?? err));
|
|
3122
3244
|
}
|
|
3123
|
-
}, disabled: !engine, children: "Start" })), jsx("button", { className: "border border-gray-300 rounded px-2 py-1.5", onClick: runAutoLayout, children: "Auto Layout" }), jsx("button", { className: "ml-2 border border-gray-300 rounded px-2 py-1.5", onClick: () => canvasRef.current?.fitView?.(), title: "Fit View", children: "Fit View" }), jsx("button", { className: "ml-2 border border-gray-300 rounded px-2 py-1.5", onClick: downloadGraph, children: "Download Graph" }),
|
|
3245
|
+
}, disabled: !engine, children: "Start" })), jsx("button", { className: "border border-gray-300 rounded px-2 py-1.5", onClick: runAutoLayout, children: "Auto Layout" }), jsx("button", { className: "ml-2 border border-gray-300 rounded px-2 py-1.5", onClick: () => canvasRef.current?.fitView?.(), title: "Fit View", children: "Fit View" }), jsx("button", { className: "ml-2 border border-gray-300 rounded px-2 py-1.5", onClick: downloadGraph, children: "Download Graph" }), jsx("button", { className: "ml-2 border border-gray-300 rounded px-2 py-1.5", onClick: async () => {
|
|
3246
|
+
try {
|
|
3247
|
+
const def = wb.export();
|
|
3248
|
+
const positions = wb.getPositions();
|
|
3249
|
+
const snapshot = await runner.snapshotFull();
|
|
3250
|
+
const payload = {
|
|
3251
|
+
...snapshot,
|
|
3252
|
+
def,
|
|
3253
|
+
positions,
|
|
3254
|
+
schemaVersion: 1,
|
|
3255
|
+
};
|
|
3256
|
+
const pretty = JSON.stringify(payload, null, 2);
|
|
3257
|
+
const blob = new Blob([pretty], { type: "application/json" });
|
|
3258
|
+
const url = URL.createObjectURL(blob);
|
|
3259
|
+
const a = document.createElement("a");
|
|
3260
|
+
const d = new Date();
|
|
3261
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
3262
|
+
const ts = `${pad(d.getMonth() + 1)}${pad(d.getDate())}-${pad(d.getHours())}${pad(d.getMinutes())}`;
|
|
3263
|
+
a.href = url;
|
|
3264
|
+
a.download = `spark-snapshot-${ts}.json`;
|
|
3265
|
+
document.body.appendChild(a);
|
|
3266
|
+
a.click();
|
|
3267
|
+
a.remove();
|
|
3268
|
+
URL.revokeObjectURL(url);
|
|
3269
|
+
}
|
|
3270
|
+
catch (err) {
|
|
3271
|
+
alert(String(err?.message ?? err));
|
|
3272
|
+
}
|
|
3273
|
+
}, children: "Download Snapshot" }), jsx("input", { ref: uploadInputRef, type: "file", accept: "application/json,.json", className: "hidden", onChange: onUploadPicked }), jsx("button", { className: "ml-2 border border-gray-300 rounded px-2 py-1.5", onClick: triggerUpload, children: "Upload Graph/Snapshot" }), jsxs("label", { className: "ml-2 flex items-center gap-1", children: [jsx("input", { type: "checkbox", checked: debug, onChange: (e) => onDebugChange(e.target.checked) }), jsx("span", { children: "Debug events" })] }), jsxs("label", { className: "ml-2 flex items-center gap-1", children: [jsx("input", { type: "checkbox", checked: showValues, onChange: (e) => onShowValuesChange(e.target.checked) }), jsx("span", { children: "Show values in nodes" })] })] }), jsxs("div", { className: "flex flex-1 min-h-0", children: [jsx("div", { className: "flex-1 min-w-0", children: jsx(WorkbenchCanvas, { ref: canvasRef, showValues: showValues, toString: toString, toElement: toElement, getDefaultNodeSize: overrides?.getDefaultNodeSize }) }), jsx(Inspector, { setInput: setInput, debug: debug, autoScroll: autoScroll, hideWorkbench: hideWorkbench, onAutoScrollChange: onAutoScrollChange, onHideWorkbenchChange: onHideWorkbenchChange, toString: toString, toElement: toElement, contextPanel: overrides?.contextPanel })] })] }));
|
|
3124
3274
|
}
|
|
3125
3275
|
function WorkbenchStudio({ engine, onEngineChange, example, onExampleChange, backendKind, onBackendKindChange, httpBaseUrl, onHttpBaseUrlChange, wsUrl, onWsUrlChange, debug, onDebugChange, showValues, onShowValuesChange, hideWorkbench, onHideWorkbenchChange, autoScroll, onAutoScrollChange, overrides, onInit, onChange, }) {
|
|
3126
3276
|
const [registry, setRegistry] = useState(createSimpleGraphRegistry());
|