@ebowwa/sandbox 0.1.1
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/dist/compilers/index.d.ts +24 -0
- package/dist/compilers/index.d.ts.map +1 -0
- package/dist/compilers/index.js +42 -0
- package/dist/compilers/index.js.map +1 -0
- package/dist/compilers/javascript.d.ts +117 -0
- package/dist/compilers/javascript.d.ts.map +1 -0
- package/dist/compilers/javascript.js +462 -0
- package/dist/compilers/javascript.js.map +1 -0
- package/dist/compilers/python.d.ts +140 -0
- package/dist/compilers/python.d.ts.map +1 -0
- package/dist/compilers/python.js +650 -0
- package/dist/compilers/python.js.map +1 -0
- package/dist/compilers/typescript.d.ts +99 -0
- package/dist/compilers/typescript.d.ts.map +1 -0
- package/dist/compilers/typescript.js +323 -0
- package/dist/compilers/typescript.js.map +1 -0
- package/dist/core/cell.d.ts +160 -0
- package/dist/core/cell.d.ts.map +1 -0
- package/dist/core/cell.js +319 -0
- package/dist/core/cell.js.map +1 -0
- package/dist/core/compiler.d.ts +126 -0
- package/dist/core/compiler.d.ts.map +1 -0
- package/dist/core/compiler.js +123 -0
- package/dist/core/compiler.js.map +1 -0
- package/dist/core/index.d.ts +19 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/limits.d.ts +173 -0
- package/dist/core/limits.d.ts.map +1 -0
- package/dist/core/limits.js +440 -0
- package/dist/core/limits.js.map +1 -0
- package/dist/core/permissions.d.ts +103 -0
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/core/permissions.js +341 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/runtime.d.ts +127 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +325 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/types.d.ts +380 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +67 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +145 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +279 -0
- package/dist/index.js.map +1 -0
- package/dist/multi/index.d.ts +9 -0
- package/dist/multi/index.d.ts.map +1 -0
- package/dist/multi/index.js +7 -0
- package/dist/multi/index.js.map +1 -0
- package/dist/multi/polyglot.d.ts +179 -0
- package/dist/multi/polyglot.d.ts.map +1 -0
- package/dist/multi/polyglot.js +319 -0
- package/dist/multi/polyglot.js.map +1 -0
- package/dist/runtimes/docker.d.ts +97 -0
- package/dist/runtimes/docker.d.ts.map +1 -0
- package/dist/runtimes/docker.js +368 -0
- package/dist/runtimes/docker.js.map +1 -0
- package/dist/runtimes/index.d.ts +11 -0
- package/dist/runtimes/index.d.ts.map +1 -0
- package/dist/runtimes/index.js +9 -0
- package/dist/runtimes/index.js.map +1 -0
- package/dist/runtimes/process.d.ts +47 -0
- package/dist/runtimes/process.d.ts.map +1 -0
- package/dist/runtimes/process.js +230 -0
- package/dist/runtimes/process.js.map +1 -0
- package/dist/session/index.d.ts +12 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +9 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/kernel.d.ts +199 -0
- package/dist/session/kernel.d.ts.map +1 -0
- package/dist/session/kernel.js +400 -0
- package/dist/session/kernel.js.map +1 -0
- package/dist/session/notebook.d.ts +168 -0
- package/dist/session/notebook.d.ts.map +1 -0
- package/dist/session/notebook.js +499 -0
- package/dist/session/notebook.js.map +1 -0
- package/dist/session/repl.d.ts +159 -0
- package/dist/session/repl.d.ts.map +1 -0
- package/dist/session/repl.js +409 -0
- package/dist/session/repl.js.map +1 -0
- package/package.json +142 -0
- package/src/compilers/index.ts +80 -0
- package/src/compilers/javascript.ts +571 -0
- package/src/compilers/python.ts +785 -0
- package/src/compilers/typescript.ts +442 -0
- package/src/core/cell.ts +439 -0
- package/src/core/compiler.ts +250 -0
- package/src/core/index.ts +123 -0
- package/src/core/limits.ts +508 -0
- package/src/core/permissions.ts +409 -0
- package/src/core/runtime.ts +499 -0
- package/src/core/types.ts +528 -0
- package/src/global.d.ts +59 -0
- package/src/index.ts +515 -0
- package/src/multi/index.ts +22 -0
- package/src/multi/polyglot.ts +461 -0
- package/src/runtimes/docker.ts +501 -0
- package/src/runtimes/index.ts +21 -0
- package/src/runtimes/process.ts +316 -0
- package/src/session/index.ts +41 -0
- package/src/session/kernel.ts +553 -0
- package/src/session/notebook.ts +635 -0
- package/src/session/repl.ts +521 -0
- package/src/wasm2wasm.d.ts +35 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Docker Runtime
|
|
3
|
+
*
|
|
4
|
+
* Runs code in Docker containers for maximum isolation.
|
|
5
|
+
* Provides full filesystem and network control with container-level security.
|
|
6
|
+
*
|
|
7
|
+
* Isolation level: 'container'
|
|
8
|
+
*/
|
|
9
|
+
import { spawn } from "node:child_process";
|
|
10
|
+
import { randomUUID } from "node:crypto";
|
|
11
|
+
import { setTimeout as setTimeoutPromise } from "node:timers/promises";
|
|
12
|
+
/**
|
|
13
|
+
* Docker Runtime
|
|
14
|
+
*
|
|
15
|
+
* Executes code in isolated Docker containers with full resource control.
|
|
16
|
+
* Maximum isolation with configurable filesystem and network access.
|
|
17
|
+
*/
|
|
18
|
+
export class DockerRuntime {
|
|
19
|
+
name = "docker";
|
|
20
|
+
capabilities = {
|
|
21
|
+
isolation: "container",
|
|
22
|
+
stateful: true,
|
|
23
|
+
async: true,
|
|
24
|
+
filesystem: true,
|
|
25
|
+
network: true,
|
|
26
|
+
maxMemory: 16 * 1024 * 1024 * 1024, // 16GB
|
|
27
|
+
wasi: true,
|
|
28
|
+
};
|
|
29
|
+
executing = false;
|
|
30
|
+
config;
|
|
31
|
+
containers = new Map(); // name -> containerId
|
|
32
|
+
constructor(config = {}) {
|
|
33
|
+
this.config = {
|
|
34
|
+
defaultImage: config.defaultImage ?? "node:20-slim",
|
|
35
|
+
dockerSocket: config.dockerSocket ?? "/var/run/docker.sock",
|
|
36
|
+
networkMode: config.networkMode ?? "none",
|
|
37
|
+
autoCleanup: config.autoCleanup ?? true,
|
|
38
|
+
defaultMemory: config.defaultMemory ?? 512 * 1024 * 1024, // 512MB
|
|
39
|
+
cpuLimit: config.cpuLimit ?? 1,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async init() {
|
|
43
|
+
// Verify Docker is available
|
|
44
|
+
const available = await this.checkDockerAvailable();
|
|
45
|
+
if (!available) {
|
|
46
|
+
throw new Error("Docker is not available. Ensure Docker daemon is running.");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async isAvailable() {
|
|
50
|
+
return this.checkDockerAvailable();
|
|
51
|
+
}
|
|
52
|
+
async execute(request, options) {
|
|
53
|
+
const startTime = Date.now();
|
|
54
|
+
this.executing = true;
|
|
55
|
+
const stdout = [];
|
|
56
|
+
const stderr = [];
|
|
57
|
+
const displays = [];
|
|
58
|
+
const containerName = `sandbox-${randomUUID().slice(0, 8)}`;
|
|
59
|
+
try {
|
|
60
|
+
// Parse limits
|
|
61
|
+
const timeout = this.parseTimeout(options.limits?.timeout);
|
|
62
|
+
const maxMemory = this.parseMemory(options.limits?.memory) || this.config.defaultMemory;
|
|
63
|
+
const cpuLimit = options.limits?.cpuTime
|
|
64
|
+
? Math.max(0.1, (options.limits.cpuTime / 1000))
|
|
65
|
+
: this.config.cpuLimit;
|
|
66
|
+
// Build container options from permissions
|
|
67
|
+
const containerOptions = this.buildContainerOptions(request, options, {
|
|
68
|
+
memory: maxMemory,
|
|
69
|
+
cpu: cpuLimit,
|
|
70
|
+
name: containerName,
|
|
71
|
+
});
|
|
72
|
+
// Create abort controller for timeout
|
|
73
|
+
const controller = new AbortController();
|
|
74
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
75
|
+
if (options.signal) {
|
|
76
|
+
options.signal.addEventListener("abort", () => {
|
|
77
|
+
controller.abort();
|
|
78
|
+
clearTimeout(timeoutId);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Pull image if needed
|
|
82
|
+
await this.pullImageIfNeeded(containerOptions.image);
|
|
83
|
+
// Create and start container
|
|
84
|
+
const containerId = await this.createContainer(containerOptions);
|
|
85
|
+
this.containers.set(containerName, containerId);
|
|
86
|
+
// Execute code in container
|
|
87
|
+
const result = await this.runInContainer(containerId, request, controller.signal);
|
|
88
|
+
clearTimeout(timeoutId);
|
|
89
|
+
// Collect output
|
|
90
|
+
stdout.push(...result.stdout);
|
|
91
|
+
stderr.push(...result.stderr);
|
|
92
|
+
return {
|
|
93
|
+
success: result.exitCode === 0,
|
|
94
|
+
value: result.value,
|
|
95
|
+
metrics: {
|
|
96
|
+
duration: Date.now() - startTime,
|
|
97
|
+
memoryUsed: maxMemory, // Approximate
|
|
98
|
+
},
|
|
99
|
+
output: { stdout, stderr, displays },
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
104
|
+
return this.createErrorResult("Execution timed out", "timeout", startTime, stdout, stderr);
|
|
105
|
+
}
|
|
106
|
+
return this.createErrorResult(error instanceof Error ? error.message : String(error), "runtime", startTime, stdout, stderr);
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
// Cleanup container
|
|
110
|
+
if (this.config.autoCleanup) {
|
|
111
|
+
await this.removeContainer(containerName);
|
|
112
|
+
}
|
|
113
|
+
this.executing = false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async terminate() {
|
|
117
|
+
// Cleanup all containers
|
|
118
|
+
for (const [name] of this.containers) {
|
|
119
|
+
await this.removeContainer(name);
|
|
120
|
+
}
|
|
121
|
+
this.containers.clear();
|
|
122
|
+
this.executing = false;
|
|
123
|
+
}
|
|
124
|
+
isExecuting() {
|
|
125
|
+
return this.executing;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Check if Docker is available
|
|
129
|
+
*/
|
|
130
|
+
async checkDockerAvailable() {
|
|
131
|
+
return new Promise((resolve) => {
|
|
132
|
+
const proc = spawn("docker", ["version"], { stdio: "ignore" });
|
|
133
|
+
proc.on("close", (code) => resolve(code === 0));
|
|
134
|
+
proc.on("error", () => resolve(false));
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Pull Docker image if not present
|
|
139
|
+
*/
|
|
140
|
+
async pullImageIfNeeded(image) {
|
|
141
|
+
// Check if image exists
|
|
142
|
+
const exists = await new Promise((resolve) => {
|
|
143
|
+
const proc = spawn("docker", ["image", "inspect", image], { stdio: "ignore" });
|
|
144
|
+
proc.on("close", (code) => resolve(code === 0));
|
|
145
|
+
proc.on("error", () => resolve(false));
|
|
146
|
+
});
|
|
147
|
+
if (!exists) {
|
|
148
|
+
await new Promise((resolve, reject) => {
|
|
149
|
+
const proc = spawn("docker", ["pull", image], { stdio: "inherit" });
|
|
150
|
+
proc.on("close", (code) => {
|
|
151
|
+
if (code === 0)
|
|
152
|
+
resolve();
|
|
153
|
+
else
|
|
154
|
+
reject(new Error(`Failed to pull image: ${image}`));
|
|
155
|
+
});
|
|
156
|
+
proc.on("error", reject);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Build container options from execution request
|
|
162
|
+
*/
|
|
163
|
+
buildContainerOptions(request, options, limits) {
|
|
164
|
+
const perms = options.permissions;
|
|
165
|
+
const containerOptions = {
|
|
166
|
+
image: this.config.defaultImage,
|
|
167
|
+
name: limits.name,
|
|
168
|
+
env: options.env,
|
|
169
|
+
workdir: options.cwd ?? "/workspace",
|
|
170
|
+
network: this.config.networkMode,
|
|
171
|
+
};
|
|
172
|
+
// Filesystem permissions
|
|
173
|
+
if (perms.fs?.read || perms.fs?.write) {
|
|
174
|
+
containerOptions.mounts = [
|
|
175
|
+
{
|
|
176
|
+
source: options.cwd ?? process.cwd(),
|
|
177
|
+
target: containerOptions.workdir ?? "/workspace",
|
|
178
|
+
readonly: !perms.fs.write,
|
|
179
|
+
},
|
|
180
|
+
];
|
|
181
|
+
}
|
|
182
|
+
// Network permissions
|
|
183
|
+
if (perms.network?.outbound || perms.network?.inbound) {
|
|
184
|
+
containerOptions.network = "bridge";
|
|
185
|
+
}
|
|
186
|
+
return containerOptions;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Create Docker container
|
|
190
|
+
*/
|
|
191
|
+
async createContainer(opts) {
|
|
192
|
+
const args = ["create"];
|
|
193
|
+
// Name
|
|
194
|
+
args.push("--name", opts.name);
|
|
195
|
+
// Memory limit
|
|
196
|
+
args.push("--memory", `${Math.floor(this.config.defaultMemory / (1024 * 1024))}m`);
|
|
197
|
+
// CPU limit
|
|
198
|
+
args.push("--cpus", this.config.cpuLimit.toString());
|
|
199
|
+
// Network mode
|
|
200
|
+
if (opts.network) {
|
|
201
|
+
args.push(`--network=${opts.network}`);
|
|
202
|
+
}
|
|
203
|
+
// Working directory
|
|
204
|
+
if (opts.workdir) {
|
|
205
|
+
args.push("--workdir", opts.workdir);
|
|
206
|
+
}
|
|
207
|
+
// Environment variables
|
|
208
|
+
if (opts.env) {
|
|
209
|
+
for (const [key, value] of Object.entries(opts.env)) {
|
|
210
|
+
args.push("--env", `${key}=${value}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Mounts
|
|
214
|
+
if (opts.mounts) {
|
|
215
|
+
for (const mount of opts.mounts) {
|
|
216
|
+
const mode = mount.readonly ? ":ro" : "";
|
|
217
|
+
args.push("--volume", `${mount.source}:${mount.target}${mode}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Port mappings
|
|
221
|
+
if (opts.ports) {
|
|
222
|
+
for (const port of opts.ports) {
|
|
223
|
+
const protocol = port.protocol ?? "tcp";
|
|
224
|
+
args.push("--publish", `${port.hostPort}:${port.containerPort}/${protocol}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Security options
|
|
228
|
+
args.push("--security-opt", "no-new-privileges");
|
|
229
|
+
// Disable inter-container communication
|
|
230
|
+
args.push("--icc=false");
|
|
231
|
+
// Image
|
|
232
|
+
args.push(opts.image);
|
|
233
|
+
return new Promise((resolve, reject) => {
|
|
234
|
+
const proc = spawn("docker", args);
|
|
235
|
+
let output = "";
|
|
236
|
+
proc.stdout.on("data", (data) => {
|
|
237
|
+
output += data.toString();
|
|
238
|
+
});
|
|
239
|
+
proc.stderr.on("data", (data) => {
|
|
240
|
+
console.error(`docker stderr: ${data}`);
|
|
241
|
+
});
|
|
242
|
+
proc.on("close", (code) => {
|
|
243
|
+
if (code === 0) {
|
|
244
|
+
resolve(output.trim());
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
reject(new Error(`Failed to create container: ${output}`));
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
proc.on("error", reject);
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Run code in container
|
|
255
|
+
*/
|
|
256
|
+
async runInContainer(containerId, request, signal) {
|
|
257
|
+
const stdout = [];
|
|
258
|
+
const stderr = [];
|
|
259
|
+
// Start container
|
|
260
|
+
await new Promise((resolve, reject) => {
|
|
261
|
+
const proc = spawn("docker", ["start", containerId]);
|
|
262
|
+
proc.on("close", (code) => {
|
|
263
|
+
if (code === 0)
|
|
264
|
+
resolve();
|
|
265
|
+
else
|
|
266
|
+
reject(new Error("Failed to start container"));
|
|
267
|
+
});
|
|
268
|
+
proc.on("error", reject);
|
|
269
|
+
});
|
|
270
|
+
// Write WASM to temp file and execute
|
|
271
|
+
const wasmBase64 = Buffer.from(request.wasm.wasmBytes).toString("base64");
|
|
272
|
+
const execCommand = `node -e "require('fs').writeFileSync('/tmp/code.wasm',Buffer.from('${wasmBase64}','base64'));const {WASI}=require('wasi');const wasi=new WASI({version:'preview1'});WebAssembly.instantiate(require('fs').readFileSync('/tmp/code.wasm'),{wasi_snapshot_preview1:wasi.wasiImport}).then(({instance})=>{wasi.start(instance)})"`;
|
|
273
|
+
// Execute in container
|
|
274
|
+
return new Promise((resolve, reject) => {
|
|
275
|
+
const proc = spawn("docker", [
|
|
276
|
+
"exec",
|
|
277
|
+
containerId,
|
|
278
|
+
"/bin/sh",
|
|
279
|
+
"-c",
|
|
280
|
+
execCommand,
|
|
281
|
+
]);
|
|
282
|
+
proc.stdout.on("data", (data) => {
|
|
283
|
+
stdout.push(data.toString("utf8"));
|
|
284
|
+
});
|
|
285
|
+
proc.stderr.on("data", (data) => {
|
|
286
|
+
stderr.push(data.toString("utf8"));
|
|
287
|
+
});
|
|
288
|
+
signal.addEventListener("abort", () => {
|
|
289
|
+
proc.kill("SIGKILL");
|
|
290
|
+
});
|
|
291
|
+
proc.on("close", (code) => {
|
|
292
|
+
// Try to parse output as JSON
|
|
293
|
+
let value = undefined;
|
|
294
|
+
const output = stdout.join("");
|
|
295
|
+
try {
|
|
296
|
+
const parsed = JSON.parse(output);
|
|
297
|
+
if (parsed.__return_value !== undefined) {
|
|
298
|
+
value = parsed.__return_value;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
value = output.trim() || undefined;
|
|
303
|
+
}
|
|
304
|
+
resolve({
|
|
305
|
+
stdout,
|
|
306
|
+
stderr,
|
|
307
|
+
exitCode: code ?? 1,
|
|
308
|
+
value,
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
proc.on("error", reject);
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Remove container
|
|
316
|
+
*/
|
|
317
|
+
async removeContainer(nameOrId) {
|
|
318
|
+
const containerId = this.containers.get(nameOrId) ?? nameOrId;
|
|
319
|
+
await new Promise((resolve) => {
|
|
320
|
+
const proc = spawn("docker", ["rm", "-f", containerId], { stdio: "ignore" });
|
|
321
|
+
proc.on("close", () => {
|
|
322
|
+
this.containers.delete(nameOrId);
|
|
323
|
+
resolve();
|
|
324
|
+
});
|
|
325
|
+
proc.on("error", () => resolve());
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
createErrorResult(message, type, startTime, stdout = [], stderr = []) {
|
|
329
|
+
return {
|
|
330
|
+
success: false,
|
|
331
|
+
error: { message, type },
|
|
332
|
+
metrics: {
|
|
333
|
+
duration: Date.now() - startTime,
|
|
334
|
+
memoryUsed: 0,
|
|
335
|
+
},
|
|
336
|
+
output: { stdout, stderr, displays: [] },
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
parseMemory(memory) {
|
|
340
|
+
if (!memory)
|
|
341
|
+
return this.config.defaultMemory;
|
|
342
|
+
if (typeof memory === "number")
|
|
343
|
+
return memory;
|
|
344
|
+
const match = memory.match(/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i);
|
|
345
|
+
if (!match)
|
|
346
|
+
return this.config.defaultMemory;
|
|
347
|
+
const [, num, unit] = match;
|
|
348
|
+
const multipliers = {
|
|
349
|
+
b: 1, kb: 1024, mb: 1024 ** 2, gb: 1024 ** 3,
|
|
350
|
+
};
|
|
351
|
+
return Math.floor(parseFloat(num) * (multipliers[unit?.toLowerCase() ?? "b"] ?? 1));
|
|
352
|
+
}
|
|
353
|
+
parseTimeout(timeout) {
|
|
354
|
+
if (!timeout)
|
|
355
|
+
return 300000; // 5 minutes default for containers
|
|
356
|
+
if (typeof timeout === "number")
|
|
357
|
+
return timeout;
|
|
358
|
+
const match = timeout.match(/^(\d+(?:\.\d+)?)\s*(ms|s|m)?$/i);
|
|
359
|
+
if (!match)
|
|
360
|
+
return 300000;
|
|
361
|
+
const [, num, unit] = match;
|
|
362
|
+
const multipliers = {
|
|
363
|
+
ms: 1, s: 1000, m: 60000,
|
|
364
|
+
};
|
|
365
|
+
return Math.floor(parseFloat(num) * (multipliers[unit?.toLowerCase() ?? "ms"] ?? 1));
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/runtimes/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Exports
|
|
3
|
+
*
|
|
4
|
+
* Exports all available runtimes for sandboxed code execution.
|
|
5
|
+
*/
|
|
6
|
+
export type { ProcessRuntimeConfig } from "./process.js";
|
|
7
|
+
export type { DockerRuntimeConfig, ContainerOptions } from "./docker.js";
|
|
8
|
+
export { ProcessRuntime } from "./process.js";
|
|
9
|
+
export { DockerRuntime } from "./docker.js";
|
|
10
|
+
export type { IRuntime, RuntimeOptions, ExecutionRequest, RuntimeCapabilities, } from "../core/runtime.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,YAAY,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process Runtime
|
|
3
|
+
*
|
|
4
|
+
* Spawns child processes for code execution with elevated permissions.
|
|
5
|
+
* Supports filesystem and network access with configurable limits.
|
|
6
|
+
*
|
|
7
|
+
* Isolation level: 'process'
|
|
8
|
+
*/
|
|
9
|
+
import type { ExecutionResult } from "../core/types.js";
|
|
10
|
+
import type { IRuntime, RuntimeOptions, ExecutionRequest, RuntimeCapabilities } from "../core/runtime.js";
|
|
11
|
+
/** Process runtime configuration */
|
|
12
|
+
export interface ProcessRuntimeConfig {
|
|
13
|
+
/** Default shell to use */
|
|
14
|
+
shell?: string;
|
|
15
|
+
/** Timeout for availability check */
|
|
16
|
+
availabilityTimeout?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Process Runtime
|
|
20
|
+
*
|
|
21
|
+
* Executes code in child processes with configurable permissions.
|
|
22
|
+
* Provides filesystem and network access based on permission level.
|
|
23
|
+
*/
|
|
24
|
+
export declare class ProcessRuntime implements IRuntime {
|
|
25
|
+
readonly name = "process";
|
|
26
|
+
readonly capabilities: RuntimeCapabilities;
|
|
27
|
+
private executing;
|
|
28
|
+
private config;
|
|
29
|
+
constructor(config?: ProcessRuntimeConfig);
|
|
30
|
+
init(): Promise<void>;
|
|
31
|
+
isAvailable(): Promise<boolean>;
|
|
32
|
+
execute(request: ExecutionRequest, options: RuntimeOptions): Promise<ExecutionResult>;
|
|
33
|
+
terminate(): Promise<void>;
|
|
34
|
+
isExecuting(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Build command and arguments for execution
|
|
37
|
+
*/
|
|
38
|
+
private buildCommand;
|
|
39
|
+
/**
|
|
40
|
+
* Generate WASM runner script
|
|
41
|
+
*/
|
|
42
|
+
private generateWasmRunner;
|
|
43
|
+
private createErrorResult;
|
|
44
|
+
private parseMemory;
|
|
45
|
+
private parseTimeout;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/runtimes/process.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B,oCAAoC;AACpC,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAQxC;IAEF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,GAAE,oBAAyB;IAOvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,OAAO,CACX,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,eAAe,CAAC;IA8IrB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;CAWrB"}
|