@nodetool-ai/sandbox-runtime 0.0.0-stage → 0.8.9-bootstrap.0
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/README.md +24 -2
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/host-access-gate.d.ts +24 -0
- package/dist/host-access-gate.d.ts.map +1 -0
- package/dist/host-access-gate.js +31 -0
- package/dist/host-access-gate.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +318 -0
- package/dist/index.js.map +1 -0
- package/dist/js-sandbox-worker/engine.d.ts +4 -0
- package/dist/js-sandbox-worker/engine.d.ts.map +1 -0
- package/dist/js-sandbox-worker/engine.js +82 -0
- package/dist/js-sandbox-worker/engine.js.map +1 -0
- package/dist/js-sandbox-worker/host.d.ts +136 -0
- package/dist/js-sandbox-worker/host.d.ts.map +1 -0
- package/dist/js-sandbox-worker/host.js +482 -0
- package/dist/js-sandbox-worker/host.js.map +1 -0
- package/dist/js-sandbox-worker/interpreter.d.ts +276 -0
- package/dist/js-sandbox-worker/interpreter.d.ts.map +1 -0
- package/dist/js-sandbox-worker/interpreter.js +1318 -0
- package/dist/js-sandbox-worker/interpreter.js.map +1 -0
- package/dist/js-sandbox-worker/protocol.d.ts +168 -0
- package/dist/js-sandbox-worker/protocol.d.ts.map +1 -0
- package/dist/js-sandbox-worker/protocol.js +217 -0
- package/dist/js-sandbox-worker/protocol.js.map +1 -0
- package/dist/js-sandbox-worker/worker-entry.d.ts +26 -0
- package/dist/js-sandbox-worker/worker-entry.d.ts.map +1 -0
- package/dist/js-sandbox-worker/worker-entry.js +308 -0
- package/dist/js-sandbox-worker/worker-entry.js.map +1 -0
- package/dist/limits.d.ts +77 -0
- package/dist/limits.d.ts.map +1 -0
- package/dist/limits.js +56 -0
- package/dist/limits.js.map +1 -0
- package/dist/sandbox-bootstrap-modules.d.ts +54 -0
- package/dist/sandbox-bootstrap-modules.d.ts.map +1 -0
- package/dist/sandbox-bootstrap-modules.js +104 -0
- package/dist/sandbox-bootstrap-modules.js.map +1 -0
- package/dist/sandbox-bytes.d.ts +43 -0
- package/dist/sandbox-bytes.d.ts.map +1 -0
- package/dist/sandbox-bytes.js +61 -0
- package/dist/sandbox-bytes.js.map +1 -0
- package/dist/sandbox-canvas-api.d.ts +30 -0
- package/dist/sandbox-canvas-api.d.ts.map +1 -0
- package/dist/sandbox-canvas-api.js +81 -0
- package/dist/sandbox-canvas-api.js.map +1 -0
- package/dist/sandbox-constants.d.ts +5 -0
- package/dist/sandbox-constants.d.ts.map +1 -0
- package/dist/sandbox-constants.js +13 -0
- package/dist/sandbox-constants.js.map +1 -0
- package/dist/sandbox-json-transport.d.ts +107 -0
- package/dist/sandbox-json-transport.d.ts.map +1 -0
- package/dist/sandbox-json-transport.js +324 -0
- package/dist/sandbox-json-transport.js.map +1 -0
- package/dist/timeline-capture.d.ts +21 -0
- package/dist/timeline-capture.d.ts.map +1 -0
- package/dist/timeline-capture.js +564 -0
- package/dist/timeline-capture.js.map +1 -0
- package/dist/utils/type-guards.d.ts +26 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +44 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/package.json +138 -4
- package/vendor/README.md +17 -0
- package/vendor/quickjs/LICENSE +21 -0
- package/vendor/quickjs/PROVENANCE.json +8 -0
- package/vendor/quickjs/adapter/fetch.d.ts +56 -0
- package/vendor/quickjs/adapter/fetch.js +140 -0
- package/vendor/quickjs/createTimeInterval.d.ts +9 -0
- package/vendor/quickjs/createTimeInterval.js +22 -0
- package/vendor/quickjs/createVirtualFileSystem.d.ts +13 -0
- package/vendor/quickjs/createVirtualFileSystem.js +191 -0
- package/vendor/quickjs/index.d.ts +77 -0
- package/vendor/quickjs/index.js +77 -0
- package/vendor/quickjs/loadAsyncQuickJs.d.ts +12 -0
- package/vendor/quickjs/loadAsyncQuickJs.js +66 -0
- package/vendor/quickjs/loadQuickJs.d.ts +12 -0
- package/vendor/quickjs/loadQuickJs.js +73 -0
- package/vendor/quickjs/modules/assert.d.ts +2 -0
- package/vendor/quickjs/modules/assert.js +47 -0
- package/vendor/quickjs/modules/buffer.d.ts +2 -0
- package/vendor/quickjs/modules/buffer.js +106 -0
- package/vendor/quickjs/modules/build/test-lib.js +2 -0
- package/vendor/quickjs/modules/events.d.ts +2 -0
- package/vendor/quickjs/modules/events.js +4 -0
- package/vendor/quickjs/modules/fs.d.ts +2 -0
- package/vendor/quickjs/modules/fs.js +76 -0
- package/vendor/quickjs/modules/fs_promises.d.ts +2 -0
- package/vendor/quickjs/modules/fs_promises.js +328 -0
- package/vendor/quickjs/modules/module.d.ts +2 -0
- package/vendor/quickjs/modules/module.js +33 -0
- package/vendor/quickjs/modules/nodeCompatibility/headers.d.ts +2 -0
- package/vendor/quickjs/modules/nodeCompatibility/headers.js +58 -0
- package/vendor/quickjs/modules/nodeCompatibility/request.d.ts +2 -0
- package/vendor/quickjs/modules/nodeCompatibility/request.js +5 -0
- package/vendor/quickjs/modules/nodeCompatibility/response.d.ts +2 -0
- package/vendor/quickjs/modules/nodeCompatibility/response.js +5 -0
- package/vendor/quickjs/modules/path.d.ts +2 -0
- package/vendor/quickjs/modules/path.js +504 -0
- package/vendor/quickjs/modules/process.d.ts +2 -0
- package/vendor/quickjs/modules/process.js +309 -0
- package/vendor/quickjs/modules/punycode.d.ts +2 -0
- package/vendor/quickjs/modules/punycode.js +443 -0
- package/vendor/quickjs/modules/querystring.d.ts +2 -0
- package/vendor/quickjs/modules/querystring.js +15 -0
- package/vendor/quickjs/modules/string_decoder.d.ts +2 -0
- package/vendor/quickjs/modules/string_decoder.js +223 -0
- package/vendor/quickjs/modules/timers.d.ts +2 -0
- package/vendor/quickjs/modules/timers.js +10 -0
- package/vendor/quickjs/modules/timers_promises.d.ts +2 -0
- package/vendor/quickjs/modules/timers_promises.js +40 -0
- package/vendor/quickjs/modules/url.d.ts +2 -0
- package/vendor/quickjs/modules/url.js +104 -0
- package/vendor/quickjs/modules/util.d.ts +2 -0
- package/vendor/quickjs/modules/util.js +233 -0
- package/vendor/quickjs/package.json +3 -0
- package/vendor/quickjs/sandbox/asyncVersion/createAsyncEvalCodeFunction.d.ts +4 -0
- package/vendor/quickjs/sandbox/asyncVersion/createAsyncEvalCodeFunction.js +76 -0
- package/vendor/quickjs/sandbox/asyncVersion/createAsyncValidateCodeFunction.d.ts +3 -0
- package/vendor/quickjs/sandbox/asyncVersion/createAsyncValidateCodeFunction.js +22 -0
- package/vendor/quickjs/sandbox/asyncVersion/executeAsyncSandboxFunction.d.ts +12 -0
- package/vendor/quickjs/sandbox/asyncVersion/executeAsyncSandboxFunction.js +9 -0
- package/vendor/quickjs/sandbox/asyncVersion/getAsyncModuleLoader.d.ts +4 -0
- package/vendor/quickjs/sandbox/asyncVersion/getAsyncModuleLoader.js +30 -0
- package/vendor/quickjs/sandbox/asyncVersion/modulePathNormalizerAsync.d.ts +2 -0
- package/vendor/quickjs/sandbox/asyncVersion/modulePathNormalizerAsync.js +12 -0
- package/vendor/quickjs/sandbox/asyncVersion/prepareAsyncNodeCompatibility.d.ts +3 -0
- package/vendor/quickjs/sandbox/asyncVersion/prepareAsyncNodeCompatibility.js +11 -0
- package/vendor/quickjs/sandbox/asyncVersion/prepareAsyncSandbox.d.ts +4 -0
- package/vendor/quickjs/sandbox/asyncVersion/prepareAsyncSandbox.js +10 -0
- package/vendor/quickjs/sandbox/expose/expose.d.ts +3 -0
- package/vendor/quickjs/sandbox/expose/expose.js +155 -0
- package/vendor/quickjs/sandbox/expose/isES2015Class.d.ts +1 -0
- package/vendor/quickjs/sandbox/expose/isES2015Class.js +4 -0
- package/vendor/quickjs/sandbox/expose/isObject.d.ts +1 -0
- package/vendor/quickjs/sandbox/expose/isObject.js +4 -0
- package/vendor/quickjs/sandbox/expose/pendingHostPromises.d.ts +6 -0
- package/vendor/quickjs/sandbox/expose/pendingHostPromises.js +40 -0
- package/vendor/quickjs/sandbox/getMaxIntervalAmount.d.ts +8 -0
- package/vendor/quickjs/sandbox/getMaxIntervalAmount.js +12 -0
- package/vendor/quickjs/sandbox/getMaxTimeoutAmount.d.ts +8 -0
- package/vendor/quickjs/sandbox/getMaxTimeoutAmount.js +12 -0
- package/vendor/quickjs/sandbox/handleEvalError.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleEvalError.js +21 -0
- package/vendor/quickjs/sandbox/handleToNative/handleToNative.d.ts +9 -0
- package/vendor/quickjs/sandbox/handleToNative/handleToNative.js +153 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/index.d.ts +10 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/index.js +36 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeArrayBuffer.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeArrayBuffer.js +4 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeBuffer.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeBuffer.js +16 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeDate.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeDate.js +16 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeError.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeError.js +18 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeHeaders.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeHeaders.js +17 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeMap.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeMap.js +18 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeSet.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeSet.js +16 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeURLSearchParams.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeURLSearchParams.js +17 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeUrl.d.ts +2 -0
- package/vendor/quickjs/sandbox/handleToNative/serializer/serializeUrl.js +17 -0
- package/vendor/quickjs/sandbox/helper.d.ts +2 -0
- package/vendor/quickjs/sandbox/helper.js +14 -0
- package/vendor/quickjs/sandbox/provide/provideConsole.d.ts +6 -0
- package/vendor/quickjs/sandbox/provide/provideConsole.js +53 -0
- package/vendor/quickjs/sandbox/provide/provideEnv.d.ts +3 -0
- package/vendor/quickjs/sandbox/provide/provideEnv.js +10 -0
- package/vendor/quickjs/sandbox/provide/provideFs.d.ts +4 -0
- package/vendor/quickjs/sandbox/provide/provideFs.js +159 -0
- package/vendor/quickjs/sandbox/provide/provideHttp.d.ts +9 -0
- package/vendor/quickjs/sandbox/provide/provideHttp.js +42 -0
- package/vendor/quickjs/sandbox/provide/provideTimingFunctions.d.ts +7 -0
- package/vendor/quickjs/sandbox/provide/provideTimingFunctions.js +119 -0
- package/vendor/quickjs/sandbox/setupFileSystem.d.ts +3 -0
- package/vendor/quickjs/sandbox/setupFileSystem.js +13 -0
- package/vendor/quickjs/sandbox/syncVersion/createEvalCodeFunction.d.ts +4 -0
- package/vendor/quickjs/sandbox/syncVersion/createEvalCodeFunction.js +76 -0
- package/vendor/quickjs/sandbox/syncVersion/createValidateCodeFunction.d.ts +3 -0
- package/vendor/quickjs/sandbox/syncVersion/createValidateCodeFunction.js +22 -0
- package/vendor/quickjs/sandbox/syncVersion/executeSandboxFunction.d.ts +12 -0
- package/vendor/quickjs/sandbox/syncVersion/executeSandboxFunction.js +9 -0
- package/vendor/quickjs/sandbox/syncVersion/getModuleLoader.d.ts +4 -0
- package/vendor/quickjs/sandbox/syncVersion/getModuleLoader.js +30 -0
- package/vendor/quickjs/sandbox/syncVersion/modulePathNormalizer.d.ts +2 -0
- package/vendor/quickjs/sandbox/syncVersion/modulePathNormalizer.js +12 -0
- package/vendor/quickjs/sandbox/syncVersion/prepareNodeCompatibility.d.ts +3 -0
- package/vendor/quickjs/sandbox/syncVersion/prepareNodeCompatibility.js +11 -0
- package/vendor/quickjs/sandbox/syncVersion/prepareSandbox.d.ts +4 -0
- package/vendor/quickjs/sandbox/syncVersion/prepareSandbox.js +10 -0
- package/vendor/quickjs/types/CodeFunctionInput.d.ts +12 -0
- package/vendor/quickjs/types/CodeFunctionInput.js +1 -0
- package/vendor/quickjs/types/ErrorResponse.d.ts +9 -0
- package/vendor/quickjs/types/ErrorResponse.js +1 -0
- package/vendor/quickjs/types/LoadQuickJsOptions.d.ts +3 -0
- package/vendor/quickjs/types/LoadQuickJsOptions.js +1 -0
- package/vendor/quickjs/types/OkResponse.d.ts +4 -0
- package/vendor/quickjs/types/OkResponse.js +1 -0
- package/vendor/quickjs/types/OkResponseCheck.d.ts +3 -0
- package/vendor/quickjs/types/OkResponseCheck.js +1 -0
- package/vendor/quickjs/types/Prettify.d.ts +3 -0
- package/vendor/quickjs/types/Prettify.js +1 -0
- package/vendor/quickjs/types/RuntimeOptions.d.ts +87 -0
- package/vendor/quickjs/types/RuntimeOptions.js +1 -0
- package/vendor/quickjs/types/SandboxEvalCode.d.ts +5 -0
- package/vendor/quickjs/types/SandboxEvalCode.js +1 -0
- package/vendor/quickjs/types/SandboxFunction.d.ts +16 -0
- package/vendor/quickjs/types/SandboxFunction.js +1 -0
- package/vendor/quickjs/types/SandboxOptions.d.ts +152 -0
- package/vendor/quickjs/types/SandboxOptions.js +1 -0
- package/vendor/quickjs/types/SandboxValidateCode.d.ts +9 -0
- package/vendor/quickjs/types/SandboxValidateCode.js +1 -0
- package/vendor/quickjs/types/Serializer.d.ts +2 -0
- package/vendor/quickjs/types/Serializer.js +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.js","sourceRoot":"","sources":["../../src/js-sandbox-worker/interpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wire contract between the main thread and the QuickJS sandbox worker.
|
|
3
|
+
*
|
|
4
|
+
* A CPU-bound guest never yields, so the interpreter runs on a `worker_threads`
|
|
5
|
+
* thread and every host bridge it calls becomes a message. This module holds
|
|
6
|
+
* the message types, the derivation that tells the worker which bridge names to
|
|
7
|
+
* build proxies for, and the pre-scan that decides whether a run's caller
|
|
8
|
+
* globals can cross a structured clone at all.
|
|
9
|
+
*
|
|
10
|
+
* It is imported by `js-sandbox.ts`, which is the browser-safe subpath export,
|
|
11
|
+
* so nothing here may touch a Node builtin.
|
|
12
|
+
*/
|
|
13
|
+
import type { SandboxModuleResolution } from "@nodetool-ai/protocol";
|
|
14
|
+
import type { ResolvedSandboxLimits } from "../limits.js";
|
|
15
|
+
import { type InterpreterOutcome } from "./interpreter.js";
|
|
16
|
+
/** The three host dispatchers, which stay on the main thread. */
|
|
17
|
+
export declare const SANDBOX_DISPATCHER_KINDS: readonly ["wasm", "host", "capability"];
|
|
18
|
+
export type SandboxDispatcherKind = (typeof SANDBOX_DISPATCHER_KINDS)[number];
|
|
19
|
+
/** Guest binding name each dispatcher is exposed under. */
|
|
20
|
+
export declare const SANDBOX_DISPATCHER_BINDINGS: Readonly<Record<SandboxDispatcherKind, string>>;
|
|
21
|
+
/** A caller-supplied global, as the worker has to rebuild it. */
|
|
22
|
+
export type GlobalShape = {
|
|
23
|
+
readonly kind: "fn";
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: "value";
|
|
26
|
+
readonly value: unknown;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* What the worker needs in order to reconstruct the bridge table.
|
|
30
|
+
*
|
|
31
|
+
* The bridges themselves are host closures and cannot be cloned, so only their
|
|
32
|
+
* *names* cross; the worker turns each into an RPC proxy that posts the path
|
|
33
|
+
* back. `values` is the one exception — bridges like `__maxIter` and
|
|
34
|
+
* `__secretScope` are plain data the guest reads directly, and proxying them
|
|
35
|
+
* would turn a property read into a round trip.
|
|
36
|
+
*/
|
|
37
|
+
export interface BridgeShape {
|
|
38
|
+
/** Top-level function bridges: `fetch`, `sleep`, `__takeInput`, … */
|
|
39
|
+
readonly flat: readonly string[];
|
|
40
|
+
/** Object bridges and their member names: `workspace`, `image`, `crypto`, … */
|
|
41
|
+
readonly objects: Readonly<Record<string, readonly string[]>>;
|
|
42
|
+
/** Non-function bridge values, passed by value. */
|
|
43
|
+
readonly values: Readonly<Record<string, unknown>>;
|
|
44
|
+
/** Dispatchers this run exposes; each becomes one RPC proxy. */
|
|
45
|
+
readonly dispatchers: readonly SandboxDispatcherKind[];
|
|
46
|
+
/** Caller globals, function-valued ones proxied like a bridge. */
|
|
47
|
+
readonly globals: Readonly<Record<string, GlobalShape>>;
|
|
48
|
+
}
|
|
49
|
+
/** The main-side table {@link deriveBridgeShape} reads. */
|
|
50
|
+
interface BridgeTable {
|
|
51
|
+
/** The record `expose()` would receive, minus caller globals. */
|
|
52
|
+
readonly bridges: Readonly<Record<string, unknown>>;
|
|
53
|
+
/** Dispatchers the run built, in any order. */
|
|
54
|
+
readonly dispatchers?: readonly SandboxDispatcherKind[];
|
|
55
|
+
/** Caller-supplied globals, already filtered by the host. */
|
|
56
|
+
readonly globals?: Readonly<Record<string, unknown>>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Classify a main-side bridge table into what the worker can rebuild.
|
|
60
|
+
*
|
|
61
|
+
* Names are sorted so two derivations of one table compare equal — the shape
|
|
62
|
+
* travels in every run message, and a stable order keeps a diff readable.
|
|
63
|
+
*/
|
|
64
|
+
export declare function deriveBridgeShape(table: BridgeTable): BridgeShape;
|
|
65
|
+
export type CloneSafetyVerdict = {
|
|
66
|
+
readonly ok: true;
|
|
67
|
+
} | {
|
|
68
|
+
readonly ok: false;
|
|
69
|
+
readonly reason: string;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Decide whether a run's caller globals can cross to the worker.
|
|
73
|
+
*
|
|
74
|
+
* A top-level function value is fine — it becomes an RPC proxy. Everything else
|
|
75
|
+
* has to survive a structured clone unchanged, which rules out a function
|
|
76
|
+
* nested inside an object (nothing on the far side could call it) and a class
|
|
77
|
+
* instance (the clone arrives as a plain object, so a method call there throws
|
|
78
|
+
* where the in-process path worked).
|
|
79
|
+
*/
|
|
80
|
+
export declare function precheckCloneSafety(globals: Readonly<Record<string, unknown>>): CloneSafetyVerdict;
|
|
81
|
+
/** Everything the worker needs to run one guest program. */
|
|
82
|
+
export interface RunMessage {
|
|
83
|
+
readonly type: "run";
|
|
84
|
+
readonly runId: string;
|
|
85
|
+
readonly code: string;
|
|
86
|
+
readonly timeoutMs: number;
|
|
87
|
+
readonly limits: ResolvedSandboxLimits;
|
|
88
|
+
readonly suspendAllowanceMs: number;
|
|
89
|
+
/** Whether the host owns a suspendable clock for this run. */
|
|
90
|
+
readonly hasClock: boolean;
|
|
91
|
+
/** The engine's own wall-clock backstop, already clamped by the host. */
|
|
92
|
+
readonly engineTimeoutMs: number;
|
|
93
|
+
readonly modules?: SandboxModuleResolution;
|
|
94
|
+
/** Guest specifier → generated facade source for the platform's modules. */
|
|
95
|
+
readonly capabilityFacades?: ReadonlyMap<string, string>;
|
|
96
|
+
/** Seed for the worker-local `stream.open` mirror; `null` reads all closed. */
|
|
97
|
+
readonly streamOpenSeed: Readonly<Record<string, boolean>> | null;
|
|
98
|
+
readonly bridgeShape: BridgeShape;
|
|
99
|
+
}
|
|
100
|
+
/** Suspended-time credit, pushed while the guest is parked on a take. */
|
|
101
|
+
interface SuspendUpdateMessage {
|
|
102
|
+
readonly type: "suspend-update";
|
|
103
|
+
readonly runId: string;
|
|
104
|
+
readonly suspendedMs: number;
|
|
105
|
+
}
|
|
106
|
+
/** One input handle reached end-of-stream. Streams never reopen. */
|
|
107
|
+
interface StreamClosedMessage {
|
|
108
|
+
readonly type: "stream-closed";
|
|
109
|
+
readonly runId: string;
|
|
110
|
+
readonly handle: string;
|
|
111
|
+
}
|
|
112
|
+
export type RpcReplyMessage = {
|
|
113
|
+
readonly type: "rpc-reply";
|
|
114
|
+
readonly id: number;
|
|
115
|
+
readonly ok: true;
|
|
116
|
+
readonly value: unknown;
|
|
117
|
+
} | {
|
|
118
|
+
readonly type: "rpc-reply";
|
|
119
|
+
readonly id: number;
|
|
120
|
+
readonly ok: false;
|
|
121
|
+
readonly name: string;
|
|
122
|
+
readonly message: string;
|
|
123
|
+
};
|
|
124
|
+
export type HostToWorkerMessage = RunMessage | SuspendUpdateMessage | StreamClosedMessage | RpcReplyMessage;
|
|
125
|
+
/** One bridge call, addressed by the path the worker proxied. */
|
|
126
|
+
interface RpcRequestMessage {
|
|
127
|
+
readonly type: "rpc";
|
|
128
|
+
readonly id: number;
|
|
129
|
+
/** `["workspace", "read"]`, `["fetch"]`, `["__wasmCall"]`, … */
|
|
130
|
+
readonly path: readonly string[];
|
|
131
|
+
readonly args: readonly unknown[];
|
|
132
|
+
}
|
|
133
|
+
/** Fire-and-forget: port FIFO puts every line ahead of the result. */
|
|
134
|
+
interface LogMessage {
|
|
135
|
+
readonly type: "log";
|
|
136
|
+
readonly line: string;
|
|
137
|
+
}
|
|
138
|
+
interface ProgressMessage {
|
|
139
|
+
readonly type: "progress";
|
|
140
|
+
readonly percent: number;
|
|
141
|
+
readonly message?: string;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* How a run settled.
|
|
145
|
+
*
|
|
146
|
+
* `failure` distinguishes the two outcomes the guest did not produce: a worker
|
|
147
|
+
* that died mid-run and a run the host cancelled. The main thread maps the
|
|
148
|
+
* first through `describeEngineFailure`; a plain guest error carries no
|
|
149
|
+
* `failure` and is reported as-is.
|
|
150
|
+
*/
|
|
151
|
+
export interface ResultMessage {
|
|
152
|
+
readonly type: "result";
|
|
153
|
+
readonly runId: string;
|
|
154
|
+
readonly evalOk: boolean;
|
|
155
|
+
readonly data?: unknown;
|
|
156
|
+
readonly errorName?: string;
|
|
157
|
+
readonly errorMessage?: string;
|
|
158
|
+
readonly errorStack?: string;
|
|
159
|
+
/** Extracted object-global snapshots; the host replaces them in place. */
|
|
160
|
+
readonly syncedGlobals?: Record<string, unknown>;
|
|
161
|
+
readonly failure?: "worker" | "cancelled";
|
|
162
|
+
}
|
|
163
|
+
export type WorkerToHostMessage = RpcRequestMessage | LogMessage | ProgressMessage | ResultMessage;
|
|
164
|
+
export declare function interpreterResultMessage(runId: string, outcome: InterpreterOutcome): ResultMessage;
|
|
165
|
+
export declare function isWorkerToHostMessage(value: unknown): value is WorkerToHostMessage;
|
|
166
|
+
export declare function isHostToWorkerMessage(value: unknown): value is HostToWorkerMessage;
|
|
167
|
+
export {};
|
|
168
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/js-sandbox-worker/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wire contract between the main thread and the QuickJS sandbox worker.
|
|
3
|
+
*
|
|
4
|
+
* A CPU-bound guest never yields, so the interpreter runs on a `worker_threads`
|
|
5
|
+
* thread and every host bridge it calls becomes a message. This module holds
|
|
6
|
+
* the message types, the derivation that tells the worker which bridge names to
|
|
7
|
+
* build proxies for, and the pre-scan that decides whether a run's caller
|
|
8
|
+
* globals can cross a structured clone at all.
|
|
9
|
+
*
|
|
10
|
+
* It is imported by `js-sandbox.ts`, which is the browser-safe subpath export,
|
|
11
|
+
* so nothing here may touch a Node builtin.
|
|
12
|
+
*/
|
|
13
|
+
import { SANDBOX_CAPABILITY_BRIDGE_BINDING, SANDBOX_HOST_BRIDGE_BINDING, SANDBOX_WASM_BRIDGE_BINDING } from "./interpreter.js";
|
|
14
|
+
import { isFunction } from "../utils/type-guards.js";
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Bridge shape
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
/** The three host dispatchers, which stay on the main thread. */
|
|
19
|
+
export const SANDBOX_DISPATCHER_KINDS = ["wasm", "host", "capability"];
|
|
20
|
+
/** Guest binding name each dispatcher is exposed under. */
|
|
21
|
+
export const SANDBOX_DISPATCHER_BINDINGS = {
|
|
22
|
+
wasm: SANDBOX_WASM_BRIDGE_BINDING,
|
|
23
|
+
host: SANDBOX_HOST_BRIDGE_BINDING,
|
|
24
|
+
capability: SANDBOX_CAPABILITY_BRIDGE_BINDING
|
|
25
|
+
};
|
|
26
|
+
function isMemberTable(value) {
|
|
27
|
+
if (value === null || typeof value !== "object")
|
|
28
|
+
return false;
|
|
29
|
+
if (Array.isArray(value))
|
|
30
|
+
return false;
|
|
31
|
+
const entries = Object.entries(value);
|
|
32
|
+
if (entries.length === 0)
|
|
33
|
+
return false;
|
|
34
|
+
return entries.every(([, member]) => isFunction(member));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Classify a main-side bridge table into what the worker can rebuild.
|
|
38
|
+
*
|
|
39
|
+
* Names are sorted so two derivations of one table compare equal — the shape
|
|
40
|
+
* travels in every run message, and a stable order keeps a diff readable.
|
|
41
|
+
*/
|
|
42
|
+
export function deriveBridgeShape(table) {
|
|
43
|
+
const flat = [];
|
|
44
|
+
const objects = {};
|
|
45
|
+
const values = {};
|
|
46
|
+
for (const [name, value] of Object.entries(table.bridges)) {
|
|
47
|
+
if (isFunction(value)) {
|
|
48
|
+
flat.push(name);
|
|
49
|
+
}
|
|
50
|
+
else if (isMemberTable(value)) {
|
|
51
|
+
objects[name] = Object.keys(value).sort();
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
values[name] = value;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const declared = new Set(table.dispatchers ?? []);
|
|
58
|
+
const dispatchers = SANDBOX_DISPATCHER_KINDS.filter((kind) => declared.has(kind));
|
|
59
|
+
const globals = {};
|
|
60
|
+
for (const [name, value] of Object.entries(table.globals ?? {})) {
|
|
61
|
+
globals[name] =
|
|
62
|
+
isFunction(value) ? { kind: "fn" } : { kind: "value", value };
|
|
63
|
+
}
|
|
64
|
+
return { flat: flat.sort(), objects, values, dispatchers, globals };
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Depth past which the scan stops looking.
|
|
68
|
+
*
|
|
69
|
+
* Accepting beyond the cap is safe rather than optimistic: `postMessage` throws
|
|
70
|
+
* `DataCloneError` synchronously, so a value the scan let through still fails
|
|
71
|
+
* closed on the main thread and falls back in-process.
|
|
72
|
+
*/
|
|
73
|
+
const MAX_PRECHECK_DEPTH = 32;
|
|
74
|
+
const CLONEABLE_TAGS = new Set([
|
|
75
|
+
"[object Date]",
|
|
76
|
+
"[object RegExp]",
|
|
77
|
+
"[object ArrayBuffer]",
|
|
78
|
+
"[object SharedArrayBuffer]",
|
|
79
|
+
"[object DataView]",
|
|
80
|
+
"[object Error]",
|
|
81
|
+
"[object Boolean]",
|
|
82
|
+
"[object Number]",
|
|
83
|
+
"[object String]"
|
|
84
|
+
]);
|
|
85
|
+
function describe(value) {
|
|
86
|
+
if (value === null)
|
|
87
|
+
return "null";
|
|
88
|
+
if (typeof value !== "object")
|
|
89
|
+
return typeof value;
|
|
90
|
+
const name = value.constructor?.name;
|
|
91
|
+
return name && name !== "Object" ? name : "object";
|
|
92
|
+
}
|
|
93
|
+
function isPlainObject(value) {
|
|
94
|
+
const proto = Object.getPrototypeOf(value);
|
|
95
|
+
return proto === null || proto === Object.prototype;
|
|
96
|
+
}
|
|
97
|
+
function scan(value, path, depth, seen) {
|
|
98
|
+
if (value === null)
|
|
99
|
+
return null;
|
|
100
|
+
const type = typeof value;
|
|
101
|
+
if (type === "function") {
|
|
102
|
+
return `${path} is a function; only a top-level global may be a function`;
|
|
103
|
+
}
|
|
104
|
+
if (type === "symbol")
|
|
105
|
+
return `${path} is a symbol, which cannot be cloned`;
|
|
106
|
+
if (type !== "object")
|
|
107
|
+
return null;
|
|
108
|
+
const object = value;
|
|
109
|
+
if (seen.has(object))
|
|
110
|
+
return null;
|
|
111
|
+
seen.add(object);
|
|
112
|
+
if (depth >= MAX_PRECHECK_DEPTH)
|
|
113
|
+
return null;
|
|
114
|
+
if (ArrayBuffer.isView(object) ||
|
|
115
|
+
CLONEABLE_TAGS.has(Object.prototype.toString.call(object))) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
if (Array.isArray(object)) {
|
|
119
|
+
for (let i = 0; i < object.length; i++) {
|
|
120
|
+
const reason = scan(object[i], `${path}[${i}]`, depth + 1, seen);
|
|
121
|
+
if (reason !== null)
|
|
122
|
+
return reason;
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
if (object instanceof Map) {
|
|
127
|
+
for (const [key, entry] of object) {
|
|
128
|
+
const reason = scan(key, `${path} (Map key)`, depth + 1, seen) ??
|
|
129
|
+
scan(entry, `${path}.get(…)`, depth + 1, seen);
|
|
130
|
+
if (reason !== null)
|
|
131
|
+
return reason;
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if (object instanceof Set) {
|
|
136
|
+
for (const entry of object) {
|
|
137
|
+
const reason = scan(entry, `${path} (Set entry)`, depth + 1, seen);
|
|
138
|
+
if (reason !== null)
|
|
139
|
+
return reason;
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
if (!isPlainObject(object)) {
|
|
144
|
+
return `${path} is a ${describe(object)} instance, which loses its prototype in a structured clone`;
|
|
145
|
+
}
|
|
146
|
+
for (const [key, entry] of Object.entries(object)) {
|
|
147
|
+
const reason = scan(entry, `${path}.${key}`, depth + 1, seen);
|
|
148
|
+
if (reason !== null)
|
|
149
|
+
return reason;
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Decide whether a run's caller globals can cross to the worker.
|
|
155
|
+
*
|
|
156
|
+
* A top-level function value is fine — it becomes an RPC proxy. Everything else
|
|
157
|
+
* has to survive a structured clone unchanged, which rules out a function
|
|
158
|
+
* nested inside an object (nothing on the far side could call it) and a class
|
|
159
|
+
* instance (the clone arrives as a plain object, so a method call there throws
|
|
160
|
+
* where the in-process path worked).
|
|
161
|
+
*/
|
|
162
|
+
export function precheckCloneSafety(globals) {
|
|
163
|
+
for (const [name, value] of Object.entries(globals)) {
|
|
164
|
+
if (isFunction(value))
|
|
165
|
+
continue;
|
|
166
|
+
const reason = scan(value, `globals.${name}`, 0, new Set());
|
|
167
|
+
if (reason !== null)
|
|
168
|
+
return { ok: false, reason };
|
|
169
|
+
}
|
|
170
|
+
return { ok: true };
|
|
171
|
+
}
|
|
172
|
+
export function interpreterResultMessage(runId, outcome) {
|
|
173
|
+
const synced = outcome.syncedGlobals === undefined
|
|
174
|
+
? {}
|
|
175
|
+
: { syncedGlobals: outcome.syncedGlobals };
|
|
176
|
+
if (outcome.ok) {
|
|
177
|
+
return {
|
|
178
|
+
type: "result",
|
|
179
|
+
runId,
|
|
180
|
+
evalOk: true,
|
|
181
|
+
data: outcome.data,
|
|
182
|
+
...synced
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const failed = {
|
|
186
|
+
type: "result",
|
|
187
|
+
runId,
|
|
188
|
+
evalOk: false,
|
|
189
|
+
errorName: outcome.error.name,
|
|
190
|
+
errorMessage: outcome.error.message,
|
|
191
|
+
...synced
|
|
192
|
+
};
|
|
193
|
+
if (outcome.error.stack !== undefined) {
|
|
194
|
+
failed.errorStack = outcome.error.stack;
|
|
195
|
+
}
|
|
196
|
+
return failed;
|
|
197
|
+
}
|
|
198
|
+
function isTagged(value) {
|
|
199
|
+
return value !== null && typeof value === "object" && "type" in value;
|
|
200
|
+
}
|
|
201
|
+
export function isWorkerToHostMessage(value) {
|
|
202
|
+
if (!isTagged(value))
|
|
203
|
+
return false;
|
|
204
|
+
return (value.type === "rpc" ||
|
|
205
|
+
value.type === "log" ||
|
|
206
|
+
value.type === "progress" ||
|
|
207
|
+
value.type === "result");
|
|
208
|
+
}
|
|
209
|
+
export function isHostToWorkerMessage(value) {
|
|
210
|
+
if (!isTagged(value))
|
|
211
|
+
return false;
|
|
212
|
+
return (value.type === "run" ||
|
|
213
|
+
value.type === "suspend-update" ||
|
|
214
|
+
value.type === "stream-closed" ||
|
|
215
|
+
value.type === "rpc-reply");
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/js-sandbox-worker/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker main for the off-thread QuickJS sandbox.
|
|
3
|
+
*
|
|
4
|
+
* One engine per worker, one run at a time. Everything the guest reaches that
|
|
5
|
+
* lives on the main thread — every bridge, every dispatcher, every
|
|
6
|
+
* function-valued caller global — is rebuilt here as a proxy that posts an RPC
|
|
7
|
+
* and awaits the reply, which is indistinguishable from an ordinary async host
|
|
8
|
+
* function to the library's `expose()`.
|
|
9
|
+
*
|
|
10
|
+
* Three things are deliberately *not* proxied, because the guest reads them
|
|
11
|
+
* synchronously and a round trip has no synchronous answer: `crypto.randomUUID`
|
|
12
|
+
* and `crypto.getRandomValues`, which are reimplemented over the worker's own
|
|
13
|
+
* WebCrypto, and `stream.open`, which is served from a mirror seeded at run
|
|
14
|
+
* start and push-updated when a handle closes.
|
|
15
|
+
*
|
|
16
|
+
* This module is never statically imported by `js-sandbox.ts` — it is loaded
|
|
17
|
+
* only as a worker entry.
|
|
18
|
+
*/
|
|
19
|
+
import { type WorkerToHostMessage } from "./protocol.js";
|
|
20
|
+
type Port = {
|
|
21
|
+
postMessage(message: WorkerToHostMessage): void;
|
|
22
|
+
on(event: "message", handler: (payload: unknown) => void): void;
|
|
23
|
+
};
|
|
24
|
+
export declare function startWorker(port: Port): Promise<void>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=worker-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-entry.d.ts","sourceRoot":"","sources":["../../src/js-sandbox-worker/worker-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAeH,OAAO,EAOL,KAAK,mBAAmB,EACzB,MAAM,eAAe,CAAC;AA2CvB,KAAK,IAAI,GAAG;IACV,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CACjE,CAAC;AAwQF,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC3D"}
|