@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.
Files changed (108) hide show
  1. package/dist/compilers/index.d.ts +24 -0
  2. package/dist/compilers/index.d.ts.map +1 -0
  3. package/dist/compilers/index.js +42 -0
  4. package/dist/compilers/index.js.map +1 -0
  5. package/dist/compilers/javascript.d.ts +117 -0
  6. package/dist/compilers/javascript.d.ts.map +1 -0
  7. package/dist/compilers/javascript.js +462 -0
  8. package/dist/compilers/javascript.js.map +1 -0
  9. package/dist/compilers/python.d.ts +140 -0
  10. package/dist/compilers/python.d.ts.map +1 -0
  11. package/dist/compilers/python.js +650 -0
  12. package/dist/compilers/python.js.map +1 -0
  13. package/dist/compilers/typescript.d.ts +99 -0
  14. package/dist/compilers/typescript.d.ts.map +1 -0
  15. package/dist/compilers/typescript.js +323 -0
  16. package/dist/compilers/typescript.js.map +1 -0
  17. package/dist/core/cell.d.ts +160 -0
  18. package/dist/core/cell.d.ts.map +1 -0
  19. package/dist/core/cell.js +319 -0
  20. package/dist/core/cell.js.map +1 -0
  21. package/dist/core/compiler.d.ts +126 -0
  22. package/dist/core/compiler.d.ts.map +1 -0
  23. package/dist/core/compiler.js +123 -0
  24. package/dist/core/compiler.js.map +1 -0
  25. package/dist/core/index.d.ts +19 -0
  26. package/dist/core/index.d.ts.map +1 -0
  27. package/dist/core/index.js +14 -0
  28. package/dist/core/index.js.map +1 -0
  29. package/dist/core/limits.d.ts +173 -0
  30. package/dist/core/limits.d.ts.map +1 -0
  31. package/dist/core/limits.js +440 -0
  32. package/dist/core/limits.js.map +1 -0
  33. package/dist/core/permissions.d.ts +103 -0
  34. package/dist/core/permissions.d.ts.map +1 -0
  35. package/dist/core/permissions.js +341 -0
  36. package/dist/core/permissions.js.map +1 -0
  37. package/dist/core/runtime.d.ts +127 -0
  38. package/dist/core/runtime.d.ts.map +1 -0
  39. package/dist/core/runtime.js +325 -0
  40. package/dist/core/runtime.js.map +1 -0
  41. package/dist/core/types.d.ts +380 -0
  42. package/dist/core/types.d.ts.map +1 -0
  43. package/dist/core/types.js +67 -0
  44. package/dist/core/types.js.map +1 -0
  45. package/dist/index.d.ts +145 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +279 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/multi/index.d.ts +9 -0
  50. package/dist/multi/index.d.ts.map +1 -0
  51. package/dist/multi/index.js +7 -0
  52. package/dist/multi/index.js.map +1 -0
  53. package/dist/multi/polyglot.d.ts +179 -0
  54. package/dist/multi/polyglot.d.ts.map +1 -0
  55. package/dist/multi/polyglot.js +319 -0
  56. package/dist/multi/polyglot.js.map +1 -0
  57. package/dist/runtimes/docker.d.ts +97 -0
  58. package/dist/runtimes/docker.d.ts.map +1 -0
  59. package/dist/runtimes/docker.js +368 -0
  60. package/dist/runtimes/docker.js.map +1 -0
  61. package/dist/runtimes/index.d.ts +11 -0
  62. package/dist/runtimes/index.d.ts.map +1 -0
  63. package/dist/runtimes/index.js +9 -0
  64. package/dist/runtimes/index.js.map +1 -0
  65. package/dist/runtimes/process.d.ts +47 -0
  66. package/dist/runtimes/process.d.ts.map +1 -0
  67. package/dist/runtimes/process.js +230 -0
  68. package/dist/runtimes/process.js.map +1 -0
  69. package/dist/session/index.d.ts +12 -0
  70. package/dist/session/index.d.ts.map +1 -0
  71. package/dist/session/index.js +9 -0
  72. package/dist/session/index.js.map +1 -0
  73. package/dist/session/kernel.d.ts +199 -0
  74. package/dist/session/kernel.d.ts.map +1 -0
  75. package/dist/session/kernel.js +400 -0
  76. package/dist/session/kernel.js.map +1 -0
  77. package/dist/session/notebook.d.ts +168 -0
  78. package/dist/session/notebook.d.ts.map +1 -0
  79. package/dist/session/notebook.js +499 -0
  80. package/dist/session/notebook.js.map +1 -0
  81. package/dist/session/repl.d.ts +159 -0
  82. package/dist/session/repl.d.ts.map +1 -0
  83. package/dist/session/repl.js +409 -0
  84. package/dist/session/repl.js.map +1 -0
  85. package/package.json +142 -0
  86. package/src/compilers/index.ts +80 -0
  87. package/src/compilers/javascript.ts +571 -0
  88. package/src/compilers/python.ts +785 -0
  89. package/src/compilers/typescript.ts +442 -0
  90. package/src/core/cell.ts +439 -0
  91. package/src/core/compiler.ts +250 -0
  92. package/src/core/index.ts +123 -0
  93. package/src/core/limits.ts +508 -0
  94. package/src/core/permissions.ts +409 -0
  95. package/src/core/runtime.ts +499 -0
  96. package/src/core/types.ts +528 -0
  97. package/src/global.d.ts +59 -0
  98. package/src/index.ts +515 -0
  99. package/src/multi/index.ts +22 -0
  100. package/src/multi/polyglot.ts +461 -0
  101. package/src/runtimes/docker.ts +501 -0
  102. package/src/runtimes/index.ts +21 -0
  103. package/src/runtimes/process.ts +316 -0
  104. package/src/session/index.ts +41 -0
  105. package/src/session/kernel.ts +553 -0
  106. package/src/session/notebook.ts +635 -0
  107. package/src/session/repl.ts +521 -0
  108. package/src/wasm2wasm.d.ts +35 -0
@@ -0,0 +1,230 @@
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 { spawn } from "node:child_process";
10
+ import { setTimeout as setTimeoutPromise } from "node:timers/promises";
11
+ /**
12
+ * Process Runtime
13
+ *
14
+ * Executes code in child processes with configurable permissions.
15
+ * Provides filesystem and network access based on permission level.
16
+ */
17
+ export class ProcessRuntime {
18
+ name = "process";
19
+ capabilities = {
20
+ isolation: "process",
21
+ stateful: true,
22
+ async: true,
23
+ filesystem: true,
24
+ network: true,
25
+ maxMemory: 4 * 1024 * 1024 * 1024, // 4GB
26
+ wasi: false,
27
+ };
28
+ executing = false;
29
+ config;
30
+ constructor(config = {}) {
31
+ this.config = {
32
+ shell: config.shell ?? "/bin/sh",
33
+ availabilityTimeout: config.availabilityTimeout ?? 5000,
34
+ };
35
+ }
36
+ async init() {
37
+ // No special initialization needed for process runtime
38
+ }
39
+ async isAvailable() {
40
+ // Process spawning is always available in Node.js
41
+ return typeof process !== "undefined" && typeof spawn === "function";
42
+ }
43
+ async execute(request, options) {
44
+ const startTime = Date.now();
45
+ this.executing = true;
46
+ const stdout = [];
47
+ const stderr = [];
48
+ const displays = [];
49
+ try {
50
+ // Parse limits
51
+ const timeout = this.parseTimeout(options.limits?.timeout);
52
+ const maxMemory = this.parseMemory(options.limits?.memory);
53
+ // Build execution command based on code type
54
+ const { command, args } = this.buildCommand(request, options);
55
+ // Create abort controller for timeout
56
+ const controller = new AbortController();
57
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
58
+ // Combine with external signal if provided
59
+ if (options.signal) {
60
+ options.signal.addEventListener("abort", () => {
61
+ controller.abort();
62
+ clearTimeout(timeoutId);
63
+ });
64
+ }
65
+ // Spawn child process
66
+ const childProcess = spawn(command, args, {
67
+ cwd: options.cwd ?? process.cwd(),
68
+ env: {
69
+ ...process.env,
70
+ ...options.env,
71
+ NODE_OPTIONS: `--max-old-space-size=${Math.floor(maxMemory / (1024 * 1024))}`,
72
+ },
73
+ signal: controller.signal,
74
+ shell: false,
75
+ stdio: ["pipe", "pipe", "pipe"],
76
+ });
77
+ // Collect stdout
78
+ childProcess.stdout?.on("data", (data) => {
79
+ stdout.push(data.toString("utf8"));
80
+ });
81
+ // Collect stderr
82
+ childProcess.stderr?.on("data", (data) => {
83
+ stderr.push(data.toString("utf8"));
84
+ });
85
+ // Handle process events
86
+ const result = await new Promise((resolve) => {
87
+ let returnValue = undefined;
88
+ childProcess.on("error", (error) => {
89
+ clearTimeout(timeoutId);
90
+ resolve(this.createErrorResult(`Process error: ${error.message}`, "runtime", startTime, stdout, stderr));
91
+ });
92
+ childProcess.on("close", (code, signal) => {
93
+ clearTimeout(timeoutId);
94
+ if (signal) {
95
+ resolve(this.createErrorResult(`Process killed by signal: ${signal}`, signal === "SIGTERM" ? "timeout" : "cancel", startTime, stdout, stderr));
96
+ return;
97
+ }
98
+ // Try to parse stdout as JSON for return value
99
+ const output = stdout.join("");
100
+ try {
101
+ const parsed = JSON.parse(output);
102
+ if (parsed.__return_value !== undefined) {
103
+ returnValue = parsed.__return_value;
104
+ }
105
+ }
106
+ catch {
107
+ // Not JSON, use raw output as value
108
+ returnValue = output.trim() || undefined;
109
+ }
110
+ resolve({
111
+ success: code === 0,
112
+ value: returnValue,
113
+ metrics: {
114
+ duration: Date.now() - startTime,
115
+ memoryUsed: 0, // Not tracked at process level
116
+ },
117
+ output: { stdout, stderr, displays },
118
+ });
119
+ });
120
+ // Write input if provided
121
+ if (request.input !== undefined) {
122
+ const inputStr = typeof request.input === "string"
123
+ ? request.input
124
+ : JSON.stringify(request.input);
125
+ childProcess.stdin?.write(inputStr);
126
+ childProcess.stdin?.end();
127
+ }
128
+ });
129
+ return result;
130
+ }
131
+ catch (error) {
132
+ if (error instanceof Error && error.name === "AbortError") {
133
+ return this.createErrorResult("Execution timed out", "timeout", startTime, stdout, stderr);
134
+ }
135
+ return this.createErrorResult(error instanceof Error ? error.message : String(error), "runtime", startTime, stdout, stderr);
136
+ }
137
+ finally {
138
+ this.executing = false;
139
+ }
140
+ }
141
+ async terminate() {
142
+ this.executing = false;
143
+ }
144
+ isExecuting() {
145
+ return this.executing;
146
+ }
147
+ /**
148
+ * Build command and arguments for execution
149
+ */
150
+ buildCommand(request, options) {
151
+ // Execute WASM using node with WASI support
152
+ return {
153
+ command: "node",
154
+ args: [
155
+ "--experimental-wasi-unstable-preview1",
156
+ "-e",
157
+ this.generateWasmRunner(request.wasm.wasmBytes, options.permissions),
158
+ ],
159
+ };
160
+ }
161
+ /**
162
+ * Generate WASM runner script
163
+ */
164
+ generateWasmRunner(wasmBytes, permissions) {
165
+ const hasFs = permissions.fs?.read || permissions.fs?.write;
166
+ const hasNetwork = permissions.network?.outbound || permissions.network?.inbound;
167
+ return `
168
+ const { WASI } = require('wasi');
169
+ const { readFile } = require('fs/promises');
170
+
171
+ async function run() {
172
+ const wasmBuffer = Buffer.from([${Array.from(wasmBytes).join(",")}]);
173
+
174
+ const wasi = new WASI({
175
+ version: 'preview1',
176
+ preopens: ${hasFs ? "{ '/': process.cwd() }" : "{}"},
177
+ env: process.env,
178
+ });
179
+
180
+ const { instance } = await WebAssembly.instantiate(wasmBuffer, {
181
+ wasi_snapshot_preview1: wasi.wasiImport,
182
+ });
183
+
184
+ wasi.start(instance);
185
+ }
186
+
187
+ run().catch(console.error);
188
+ `;
189
+ }
190
+ createErrorResult(message, type, startTime, stdout = [], stderr = []) {
191
+ return {
192
+ success: false,
193
+ error: { message, type },
194
+ metrics: {
195
+ duration: Date.now() - startTime,
196
+ memoryUsed: 0,
197
+ },
198
+ output: { stdout, stderr, displays: [] },
199
+ };
200
+ }
201
+ parseMemory(memory) {
202
+ if (!memory)
203
+ return 256 * 1024 * 1024; // 256MB default
204
+ if (typeof memory === "number")
205
+ return memory;
206
+ const match = memory.match(/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i);
207
+ if (!match)
208
+ return 256 * 1024 * 1024;
209
+ const [, num, unit] = match;
210
+ const multipliers = {
211
+ b: 1, kb: 1024, mb: 1024 ** 2, gb: 1024 ** 3,
212
+ };
213
+ return Math.floor(parseFloat(num) * (multipliers[unit?.toLowerCase() ?? "b"] ?? 1));
214
+ }
215
+ parseTimeout(timeout) {
216
+ if (!timeout)
217
+ return 60000; // 60s default for process
218
+ if (typeof timeout === "number")
219
+ return timeout;
220
+ const match = timeout.match(/^(\d+(?:\.\d+)?)\s*(ms|s|m)?$/i);
221
+ if (!match)
222
+ return 60000;
223
+ const [, num, unit] = match;
224
+ const multipliers = {
225
+ ms: 1, s: 1000, m: 60000,
226
+ };
227
+ return Math.floor(parseFloat(num) * (multipliers[unit?.toLowerCase() ?? "ms"] ?? 1));
228
+ }
229
+ }
230
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/runtimes/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Session Primitives
3
+ *
4
+ * Stateful execution contexts for interactive use.
5
+ */
6
+ export type { KernelState, KernelOptions, KernelStats, } from "./kernel.js";
7
+ export { BaseKernel, KernelManager, } from "./kernel.js";
8
+ export type { NotebookOptions, NotebookState, NotebookEvents, } from "./notebook.js";
9
+ export { BaseNotebook, createNotebook, } from "./notebook.js";
10
+ export type { REPLOptions, REPLHistoryEntry, REPLState, } from "./repl.js";
11
+ export { BaseREPL, createREPL, } from "./repl.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,UAAU,EACV,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,SAAS,GACV,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,QAAQ,EACR,UAAU,GACX,MAAM,WAAW,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Session Primitives
3
+ *
4
+ * Stateful execution contexts for interactive use.
5
+ */
6
+ export { BaseKernel, KernelManager, } from "./kernel.js";
7
+ export { BaseNotebook, createNotebook, } from "./notebook.js";
8
+ export { BaseREPL, createREPL, } from "./repl.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EACL,UAAU,EACV,aAAa,GACd,MAAM,aAAa,CAAC;AASrB,OAAO,EACL,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AASvB,OAAO,EACL,QAAQ,EACR,UAAU,GACX,MAAM,WAAW,CAAC"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Kernel Primitive
3
+ *
4
+ * Language-specific execution session with state persistence.
5
+ * Provides REPL-like interactive execution for a single language.
6
+ */
7
+ import type { Language, Kernel, ExecutionResult, ExecutionOptions, CompletionResult, InspectResult, Permissions, Limits } from "../core/types.js";
8
+ import type { ICompiler } from "../core/compiler.js";
9
+ import type { IRuntime } from "../core/runtime.js";
10
+ /**
11
+ * Kernel state
12
+ */
13
+ export type KernelState = "starting" | "ready" | "busy" | "error" | "shutting_down" | "dead";
14
+ /**
15
+ * Kernel options
16
+ */
17
+ export interface KernelOptions {
18
+ /** Kernel ID */
19
+ id?: string;
20
+ /** Display name */
21
+ displayName?: string;
22
+ /** Language */
23
+ language: Language;
24
+ /** Compiler for this language */
25
+ compiler: ICompiler;
26
+ /** Runtime for execution */
27
+ runtime: IRuntime;
28
+ /** Permissions */
29
+ permissions?: Permissions;
30
+ /** Resource limits */
31
+ limits?: Limits;
32
+ /** Environment variables */
33
+ env?: Record<string, string>;
34
+ /** Working directory */
35
+ cwd?: string;
36
+ }
37
+ /**
38
+ * Kernel statistics
39
+ */
40
+ export interface KernelStats {
41
+ /** Total executions */
42
+ executions: number;
43
+ /** Successful executions */
44
+ successes: number;
45
+ /** Failed executions */
46
+ failures: number;
47
+ /** Total execution time (ms) */
48
+ totalTime: number;
49
+ /** Average execution time (ms) */
50
+ avgTime: number;
51
+ /** Memory high water mark */
52
+ memoryHighWater: number;
53
+ /** Last execution time */
54
+ lastExecution?: Date;
55
+ }
56
+ /**
57
+ * Base Kernel Implementation
58
+ *
59
+ * Provides core kernel functionality with state management.
60
+ */
61
+ export declare class BaseKernel implements Kernel {
62
+ readonly language: Language;
63
+ readonly displayName: string;
64
+ private id;
65
+ private state;
66
+ private kernelState;
67
+ private exports;
68
+ private compiler;
69
+ private runtime;
70
+ private permissions;
71
+ private limits;
72
+ private env;
73
+ private cwd?;
74
+ private stats;
75
+ private permissionChecker;
76
+ constructor(options: KernelOptions);
77
+ /**
78
+ * Get kernel ID
79
+ */
80
+ getId(): string;
81
+ /**
82
+ * Get current execution state
83
+ */
84
+ getExecutionState(): KernelState;
85
+ /**
86
+ * Get kernel state (variables)
87
+ */
88
+ getState(): Map<string, unknown>;
89
+ /**
90
+ * Get exports
91
+ */
92
+ getExports(): Map<string, unknown>;
93
+ /**
94
+ * Get statistics
95
+ */
96
+ getStats(): KernelStats;
97
+ /**
98
+ * Start the kernel
99
+ */
100
+ start(): Promise<void>;
101
+ /**
102
+ * Check if kernel is running
103
+ */
104
+ isRunning(): boolean;
105
+ /**
106
+ * Get display name
107
+ */
108
+ getDisplayName(): string;
109
+ /**
110
+ * Get language
111
+ */
112
+ getLanguage(): Language;
113
+ /**
114
+ * Execute code
115
+ */
116
+ execute(code: string, options?: ExecutionOptions): Promise<ExecutionResult>;
117
+ /**
118
+ * Complete code at position (autocomplete)
119
+ */
120
+ complete(code: string, position: number): Promise<CompletionResult>;
121
+ /**
122
+ * Inspect object at position
123
+ */
124
+ inspect(code: string, position: number): Promise<InspectResult>;
125
+ /**
126
+ * Restart kernel (clear state)
127
+ */
128
+ restart(): Promise<void>;
129
+ /**
130
+ * Shutdown kernel
131
+ */
132
+ shutdown(): Promise<void>;
133
+ /**
134
+ * Interrupt current execution
135
+ */
136
+ interrupt(): void;
137
+ /**
138
+ * Set environment variable
139
+ */
140
+ setEnv(key: string, value: string): void;
141
+ /**
142
+ * Get environment variable
143
+ */
144
+ getEnv(key: string): string | undefined;
145
+ /**
146
+ * Update permissions
147
+ */
148
+ setPermissions(permissions: Permissions): void;
149
+ /**
150
+ * Update limits
151
+ */
152
+ setLimits(limits: Limits): void;
153
+ /**
154
+ * Create error result
155
+ */
156
+ private createErrorResult;
157
+ /**
158
+ * Update statistics
159
+ */
160
+ private updateStats;
161
+ }
162
+ /**
163
+ * Kernel Manager
164
+ *
165
+ * Manages multiple kernels across languages.
166
+ */
167
+ export declare class KernelManager {
168
+ private kernels;
169
+ private languageKernels;
170
+ /**
171
+ * Create and register a kernel
172
+ */
173
+ createKernel(options: KernelOptions): Promise<BaseKernel>;
174
+ /**
175
+ * Get kernel by ID
176
+ */
177
+ getKernel(id: string): BaseKernel | undefined;
178
+ /**
179
+ * Get kernels by language
180
+ */
181
+ getKernelsByLanguage(language: Language): BaseKernel[];
182
+ /**
183
+ * Get all kernels
184
+ */
185
+ getAllKernels(): BaseKernel[];
186
+ /**
187
+ * Shutdown a kernel
188
+ */
189
+ shutdownKernel(id: string): Promise<void>;
190
+ /**
191
+ * Shutdown all kernels
192
+ */
193
+ shutdownAll(): Promise<void>;
194
+ /**
195
+ * Get kernel count
196
+ */
197
+ get count(): number;
198
+ }
199
+ //# sourceMappingURL=kernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../../src/session/kernel.ts"],"names":[],"mappings":"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"}