@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,380 @@
1
+ /**
2
+ * Core Types for @ebowwa/sandbox
3
+ *
4
+ * Composable primitives for multi-language sandboxed execution.
5
+ * Each type is designed to be independently usable.
6
+ */
7
+ /** Supported input languages/formats */
8
+ export type Language = "wasm" | "javascript" | "typescript" | "assemblyscript" | "python" | "json" | "markdown" | "custom";
9
+ /** Language capability flags */
10
+ export interface LanguageCapabilities {
11
+ supportsREPL: boolean;
12
+ supportsState: boolean;
13
+ requiresCompilation: boolean;
14
+ hasGarbageCollection: boolean;
15
+ canImportModules: boolean;
16
+ canAccessFS: boolean;
17
+ canAccessNetwork: boolean;
18
+ }
19
+ /** Permission level - escalating access */
20
+ export type PermissionLevel = "isolated" | "readonly" | "network" | "filesystem" | "admin" | "sudo";
21
+ /** Individual permission flags - composable */
22
+ export interface Permissions {
23
+ fs?: FileSystemPermission;
24
+ network?: NetworkPermission;
25
+ env?: EnvironmentPermission;
26
+ process?: ProcessPermission;
27
+ memory?: {
28
+ maxBytes?: number;
29
+ };
30
+ cpu?: CpuPermission;
31
+ }
32
+ /** Filesystem permission */
33
+ export interface FileSystemPermission {
34
+ read?: boolean;
35
+ write?: boolean;
36
+ delete?: boolean;
37
+ allowedPaths?: string[];
38
+ deniedPaths?: string[];
39
+ }
40
+ /** Network permission */
41
+ export interface NetworkPermission {
42
+ outbound?: boolean;
43
+ inbound?: boolean;
44
+ allowedHosts?: string[];
45
+ deniedHosts?: string[];
46
+ }
47
+ /** Environment permission */
48
+ export interface EnvironmentPermission {
49
+ read?: boolean;
50
+ write?: boolean;
51
+ allowedKeys?: string[];
52
+ }
53
+ /** Process permission */
54
+ export interface ProcessPermission {
55
+ spawn?: boolean;
56
+ allowedCommands?: string[];
57
+ }
58
+ /** CPU permission */
59
+ export interface CpuPermission {
60
+ maxPercent?: number;
61
+ maxTimeMs?: number;
62
+ }
63
+ /** Convert permission level to permissions object */
64
+ export declare function permissionsFromLevel(level: PermissionLevel): Permissions;
65
+ /** Resource limits for execution */
66
+ export interface Limits {
67
+ /** Memory limit (bytes or string like "64MB") */
68
+ memory?: number | string;
69
+ /** Execution timeout (ms or string like "5s") */
70
+ timeout?: number | string;
71
+ /** CPU time limit (ms) */
72
+ cpuTime?: number;
73
+ /** Max WASM instructions (gas/fuel) */
74
+ maxInstructions?: number;
75
+ /** Max output size (bytes) */
76
+ maxOutputSize?: number;
77
+ /** Max call stack depth */
78
+ maxStackDepth?: number;
79
+ /** Network bandwidth limits */
80
+ network?: {
81
+ maxBandwidth?: string;
82
+ maxConnections?: number;
83
+ };
84
+ /** Filesystem limits */
85
+ filesystem?: {
86
+ maxFileSize?: string;
87
+ maxTotalSize?: string;
88
+ maxOpenFiles?: number;
89
+ };
90
+ }
91
+ /** Parse memory string to bytes */
92
+ export declare function parseMemory(mem: number | string | undefined): number;
93
+ /** Parse time string to milliseconds */
94
+ export declare function parseTime(time: number | string | undefined): number;
95
+ /** Code cell for notebook/repl execution */
96
+ export interface Cell {
97
+ id: string;
98
+ language: Language;
99
+ source: string;
100
+ metadata?: Record<string, unknown>;
101
+ }
102
+ /** Result from another cell (for imports) */
103
+ export interface CellResult {
104
+ success: boolean;
105
+ value?: unknown;
106
+ error?: {
107
+ message: string;
108
+ type: string;
109
+ };
110
+ exports?: Map<string, unknown>;
111
+ }
112
+ /** Execution context passed to runtimes */
113
+ export interface ExecutionContext {
114
+ cellId: string;
115
+ permissions: Permissions;
116
+ limits: Limits;
117
+ environment: Record<string, string>;
118
+ workingDirectory?: string;
119
+ /** Shared state from previous cells */
120
+ state?: Map<string, unknown>;
121
+ /** Imports from other cells */
122
+ imports?: Map<string, CellResult>;
123
+ /** Abort signal for cancellation */
124
+ signal?: AbortSignal;
125
+ }
126
+ /** Execution options */
127
+ export interface ExecutionOptions {
128
+ entrypoint?: string;
129
+ args?: unknown[];
130
+ input?: unknown;
131
+ timeout?: number;
132
+ signal?: AbortSignal;
133
+ /** Pass state from previous execution */
134
+ state?: Map<string, unknown>;
135
+ }
136
+ /** Result of cell/execution */
137
+ export interface ExecutionResult<T = unknown> {
138
+ /** Execution succeeded */
139
+ success: boolean;
140
+ /** Return value */
141
+ value?: T;
142
+ /** Error if failed */
143
+ error?: ExecutionError;
144
+ /** Execution metrics */
145
+ metrics: ExecutionMetrics;
146
+ /** Captured output */
147
+ output: {
148
+ stdout: string[];
149
+ stderr: string[];
150
+ displays: DisplayOutput[];
151
+ };
152
+ /** State to pass to next cells */
153
+ state?: Map<string, unknown>;
154
+ /** Exports for other cells to import */
155
+ exports?: Map<string, unknown>;
156
+ }
157
+ /** Error during execution */
158
+ export interface ExecutionError {
159
+ message: string;
160
+ stack?: string;
161
+ type: "compile" | "runtime" | "permission" | "limit" | "timeout" | "cancel";
162
+ language?: Language;
163
+ line?: number;
164
+ column?: number;
165
+ }
166
+ /** Execution metrics */
167
+ export interface ExecutionMetrics {
168
+ /** Wall clock time in ms */
169
+ duration: number;
170
+ /** Memory used in bytes */
171
+ memoryUsed: number;
172
+ /** CPU time in ms */
173
+ cpuTime?: number;
174
+ /** WASM instructions executed */
175
+ instructionsExecuted?: number;
176
+ /** Bytes received over network */
177
+ networkIn?: number;
178
+ /** Bytes sent over network */
179
+ networkOut?: number;
180
+ }
181
+ /** Rich display output (Jupyter-style) */
182
+ export interface DisplayOutput {
183
+ type: "text" | "html" | "image" | "json" | "markdown" | "javascript";
184
+ data: string | Record<string, unknown>;
185
+ metadata?: Record<string, unknown>;
186
+ }
187
+ /** Compiler: Language → WASM */
188
+ export interface Compiler {
189
+ /** Language this compiler handles */
190
+ language: Language;
191
+ /** Check if code is valid for this language */
192
+ validate(code: string): Promise<{
193
+ valid: boolean;
194
+ error?: string;
195
+ }>;
196
+ /** Compile source to WASM bytes */
197
+ compile(code: string, options: CompileOptions): Promise<Uint8Array>;
198
+ /** Check if compiler is available */
199
+ isAvailable(): Promise<boolean>;
200
+ }
201
+ /** Compilation options */
202
+ export interface CompileOptions {
203
+ permissions: Permissions;
204
+ limits: Limits;
205
+ optimize?: boolean;
206
+ /** Additional compiler-specific options */
207
+ extra?: Record<string, unknown>;
208
+ }
209
+ /** Runtime: WASM → Execution */
210
+ export interface Runtime {
211
+ /** Runtime name */
212
+ name: string;
213
+ /** Initialize runtime */
214
+ init(): Promise<void>;
215
+ /** Check if runtime is available */
216
+ isAvailable(): Promise<boolean>;
217
+ /** Execute WASM bytes */
218
+ execute(wasmBytes: Uint8Array, options: ExecutionOptions, context: ExecutionContext): Promise<ExecutionResult>;
219
+ /** Terminate runtime and cleanup */
220
+ terminate(): Promise<void>;
221
+ }
222
+ /** Kernel: Language-specific execution session */
223
+ export interface Kernel {
224
+ /** Language this kernel handles */
225
+ language: Language;
226
+ /** Kernel display name */
227
+ displayName: string;
228
+ /** Initialize kernel */
229
+ start(): Promise<void>;
230
+ /** Check if kernel is running */
231
+ isRunning(): boolean;
232
+ /** Execute code in kernel */
233
+ execute(code: string, options?: ExecutionOptions): Promise<ExecutionResult>;
234
+ /** Complete code at position (autocomplete) */
235
+ complete(code: string, position: number): Promise<CompletionResult>;
236
+ /** Inspect object at position */
237
+ inspect(code: string, position: number): Promise<InspectResult>;
238
+ /** Get current kernel state */
239
+ getState(): Map<string, unknown>;
240
+ /** Restart kernel (clear state) */
241
+ restart(): Promise<void>;
242
+ /** Shutdown kernel */
243
+ shutdown(): Promise<void>;
244
+ }
245
+ /** Autocomplete result */
246
+ export interface CompletionResult {
247
+ matches: string[];
248
+ cursorStart: number;
249
+ cursorEnd: number;
250
+ metadata?: Record<string, unknown>;
251
+ }
252
+ /** Inspect result (hover/tooltip) */
253
+ export interface InspectResult {
254
+ found: boolean;
255
+ details?: {
256
+ type: string;
257
+ documentation?: string;
258
+ signature?: string;
259
+ };
260
+ }
261
+ /** Notebook: Multi-cell, multi-language document */
262
+ export interface Notebook {
263
+ id: string;
264
+ cells: Cell[];
265
+ metadata: NotebookMetadata;
266
+ /** Execute cells in order */
267
+ runAll(options?: NotebookRunOptions): Promise<NotebookResult[]>;
268
+ /** Execute single cell */
269
+ runCell(cellId: string, options?: ExecutionOptions): Promise<NotebookResult>;
270
+ /** Execute cells from index */
271
+ runFrom(startIndex: number): Promise<NotebookResult[]>;
272
+ /** Add cell */
273
+ addCell(cell: Omit<Cell, "id">): Cell;
274
+ /** Remove cell */
275
+ removeCell(cellId: string): void;
276
+ /** Move cell */
277
+ moveCell(cellId: string, newIndex: number): void;
278
+ /** Get cell by id */
279
+ getCell(cellId: string): Cell | undefined;
280
+ /** Export to format */
281
+ export(format: "ipynb" | "json" | "markdown"): string;
282
+ }
283
+ /** Notebook metadata */
284
+ export interface NotebookMetadata {
285
+ name: string;
286
+ language?: Language;
287
+ kernelspec?: {
288
+ name: string;
289
+ display_name: string;
290
+ language: string;
291
+ };
292
+ created: Date;
293
+ modified: Date;
294
+ tags?: string[];
295
+ }
296
+ /** Notebook run options */
297
+ export interface NotebookRunOptions {
298
+ /** Stop on first error */
299
+ stopOnError?: boolean;
300
+ /** Parallel execution where possible */
301
+ parallel?: boolean;
302
+ /** Continue from last successful cell */
303
+ continueFrom?: string;
304
+ }
305
+ /** Result of notebook cell execution */
306
+ export interface NotebookResult {
307
+ cellId: string;
308
+ executionCount: number;
309
+ result: ExecutionResult;
310
+ timestamp: Date;
311
+ }
312
+ /** Session: Stateful execution context */
313
+ export interface Session {
314
+ id: string;
315
+ /** Get active kernel for language */
316
+ getKernel(language: Language): Kernel | undefined;
317
+ /** Start a kernel for language */
318
+ startKernel(language: Language): Promise<Kernel>;
319
+ /** Execute code (auto-selects kernel) */
320
+ execute(code: string, language: Language, options?: ExecutionOptions): Promise<ExecutionResult>;
321
+ /** Get shared state across all kernels */
322
+ getSharedState(): Map<string, unknown>;
323
+ /** Set shared state */
324
+ setSharedState(key: string, value: unknown): void;
325
+ /** Register language compiler */
326
+ registerCompiler(compiler: Compiler): void;
327
+ /** Register runtime */
328
+ registerRuntime(runtime: Runtime): void;
329
+ /** Shutdown session */
330
+ shutdown(): Promise<void>;
331
+ }
332
+ /** Polyglot cell - code that can run in multiple languages */
333
+ export interface PolyglotCell {
334
+ id: string;
335
+ variants: Map<Language, string>;
336
+ preferredLanguage?: Language;
337
+ }
338
+ /** Bridge for passing data between languages */
339
+ export interface LanguageBridge {
340
+ from: Language;
341
+ to: Language;
342
+ /** Serialize value from source language */
343
+ serialize(value: unknown): Uint8Array;
344
+ /** Deserialize value in target language */
345
+ deserialize(bytes: Uint8Array): unknown;
346
+ /** Can these types be bridged? */
347
+ canBridge(type: string): boolean;
348
+ }
349
+ /** Main Sandbox interface - combines all primitives */
350
+ export interface Sandbox {
351
+ /** Create a session for interactive use */
352
+ createSession(options?: SessionOptions): Session;
353
+ /** Create a notebook */
354
+ createNotebook(options?: NotebookOptions): Notebook;
355
+ /** Quick execute (isolated, no state) */
356
+ execute(code: string, language: Language, options?: SandboxOptions): Promise<ExecutionResult>;
357
+ /** Quick execute with preset */
358
+ quick(code: string, preset?: "isolated" | "trusted" | "admin"): Promise<ExecutionResult>;
359
+ }
360
+ /** Sandbox configuration */
361
+ export interface SandboxOptions {
362
+ permissions?: PermissionLevel | Permissions;
363
+ limits?: Limits;
364
+ language?: Language;
365
+ environment?: Record<string, string>;
366
+ workingDirectory?: string;
367
+ }
368
+ /** Session options */
369
+ export interface SessionOptions extends SandboxOptions {
370
+ /** Languages to pre-warm kernels for */
371
+ languages?: Language[];
372
+ /** Enable shared memory between kernels */
373
+ sharedMemory?: boolean;
374
+ }
375
+ /** Notebook options */
376
+ export interface NotebookOptions extends SandboxOptions {
377
+ name?: string;
378
+ defaultLanguage?: Language;
379
+ }
380
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Core Types for @ebowwa/sandbox
3
+ *
4
+ * Composable primitives for multi-language sandboxed execution.
5
+ * Each type is designed to be independently usable.
6
+ */
7
+ /** Convert permission level to permissions object */
8
+ export function permissionsFromLevel(level) {
9
+ switch (level) {
10
+ case "isolated":
11
+ return {};
12
+ case "readonly":
13
+ return { fs: { read: true } };
14
+ case "network":
15
+ return { fs: { read: true }, network: { outbound: true } };
16
+ case "filesystem":
17
+ return {
18
+ fs: { read: true, write: true, delete: true },
19
+ network: { outbound: true, inbound: true }
20
+ };
21
+ case "admin":
22
+ return {
23
+ fs: { read: true, write: true, delete: true },
24
+ network: { outbound: true, inbound: true },
25
+ env: { read: true, write: true },
26
+ process: { spawn: true }
27
+ };
28
+ case "sudo":
29
+ return {
30
+ fs: { read: true, write: true, delete: true },
31
+ network: { outbound: true, inbound: true },
32
+ env: { read: true, write: true },
33
+ process: { spawn: true }
34
+ };
35
+ }
36
+ }
37
+ /** Parse memory string to bytes */
38
+ export function parseMemory(mem) {
39
+ if (mem === undefined)
40
+ return 16 * 1024 * 1024; // 16MB default
41
+ if (typeof mem === "number")
42
+ return mem;
43
+ const match = mem.match(/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i);
44
+ if (!match)
45
+ return 16 * 1024 * 1024;
46
+ const [, num, unit] = match;
47
+ const multipliers = {
48
+ b: 1, kb: 1024, mb: 1024 ** 2, gb: 1024 ** 3
49
+ };
50
+ return Math.floor(parseFloat(num) * (multipliers[unit?.toLowerCase() ?? "b"] ?? 1));
51
+ }
52
+ /** Parse time string to milliseconds */
53
+ export function parseTime(time) {
54
+ if (time === undefined)
55
+ return 30000; // 30s default
56
+ if (typeof time === "number")
57
+ return time;
58
+ const match = time.match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h)?$/i);
59
+ if (!match)
60
+ return 30000;
61
+ const [, num, unit] = match;
62
+ const multipliers = {
63
+ ms: 1, s: 1000, m: 60000, h: 3600000
64
+ };
65
+ return Math.floor(parseFloat(num) * (multipliers[unit?.toLowerCase() ?? "ms"] ?? 1));
66
+ }
67
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * @ebowwa/sandbox
3
+ *
4
+ * Composable sandbox primitives for multi-language code execution.
5
+ * Jupyter/REPL-style with Python+Rust+JS+TS+WASM support.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { Sandbox, createNotebook, createREPL } from "@ebowwa/sandbox";
10
+ *
11
+ * // Quick execution
12
+ * const sandbox = new Sandbox();
13
+ * const result = await sandbox.execute("console.log('Hello')", "javascript");
14
+ *
15
+ * // Notebook
16
+ * const notebook = createNotebook({ name: "My Notebook" });
17
+ * notebook.addCell({ language: "javascript", source: "const x = 42" });
18
+ * notebook.runAll();
19
+ *
20
+ * // REPL
21
+ * const repl = createREPL({ language: "python" });
22
+ * repl.start();
23
+ * ```
24
+ */
25
+ export type { Language, LanguageCapabilities, PermissionLevel, Permissions, Limits, Cell, ExecutionResult, ExecutionOptions, ExecutionContext, ExecutionError, ExecutionMetrics, DisplayOutput, NotebookMetadata, NotebookRunOptions, NotebookResult, PolyglotCell, LanguageBridge, Sandbox as SandboxInterface, SandboxOptions, SessionOptions, NotebookOptions, Session, Notebook, Kernel, Compiler, Runtime, } from "./core/types.js";
26
+ export { permissionsFromLevel, parseMemory, parseTime, } from "./core/types.js";
27
+ export type { CompileResult, ImportDefinition, CompilerOptions, ICompiler, } from "./core/compiler.js";
28
+ export { BaseCompiler, WasmCompiler, CompilerRegistry, defaultCompilerRegistry, } from "./core/compiler.js";
29
+ export type { RuntimeOptions, ExecutionRequest, IRuntime, RuntimeCapabilities, } from "./core/runtime.js";
30
+ export { Wasm2WasmRuntime, NativeWasmRuntime, RuntimeRegistry, defaultRuntimeRegistry, } from "./core/runtime.js";
31
+ export type { ProcessRuntimeConfig, DockerRuntimeConfig, ContainerOptions, } from "./runtimes/index.js";
32
+ export { ProcessRuntime, DockerRuntime, } from "./runtimes/index.js";
33
+ export { PermissionChecker, PermissionBuilder, createPermissions, mergePermissions, impliesPermission, upgradePermissions, } from "./core/permissions.js";
34
+ export type { ParsedLimits } from "./core/limits.js";
35
+ export { DEFAULT_LIMITS, LimitsParser, LimitsEnforcer, LimitsBuilder, mergeLimits, } from "./core/limits.js";
36
+ export type { CellMetadata, CellState, ExecutableCell, } from "./core/cell.js";
37
+ export { CellBuilder, CellExecutor, CellRegistry, createCell, createCellsFromMarkdown, cellsToMarkdown, } from "./core/cell.js";
38
+ export type { KernelState, KernelOptions, KernelStats, NotebookState, NotebookEvents, REPLOptions, REPLHistoryEntry, REPLState, } from "./session/index.js";
39
+ export { BaseKernel, KernelManager, BaseNotebook, createNotebook, BaseREPL, createREPL, } from "./session/index.js";
40
+ export type { PolyglotOptions, VariableBinding, PolyglotContext, } from "./multi/index.js";
41
+ export { PolyglotSession, PolyglotNotebook, createPolyglotSession, createPolyglotNotebook, } from "./multi/index.js";
42
+ import type { Language, Permissions, Limits, ExecutionResult, ExecutionOptions, SandboxOptions, SessionOptions, NotebookOptions as NotebookOpts } from "./core/types.js";
43
+ import { BaseKernel, KernelManager } from "./session/kernel.js";
44
+ import { BaseNotebook } from "./session/notebook.js";
45
+ import { BaseREPL } from "./session/repl.js";
46
+ import { PolyglotSession } from "./multi/polyglot.js";
47
+ /**
48
+ * Sandbox Implementation
49
+ *
50
+ * Main entry point for sandboxed execution.
51
+ */
52
+ export declare class Sandbox {
53
+ private defaultOptions?;
54
+ private kernelManager;
55
+ constructor(defaultOptions?: SandboxOptions | undefined);
56
+ /**
57
+ * Quick execute (isolated, no state)
58
+ */
59
+ execute(code: string, language?: Language, options?: SandboxOptions): Promise<ExecutionResult>;
60
+ /**
61
+ * Quick execute with preset
62
+ */
63
+ quick(code: string, preset?: "isolated" | "trusted" | "admin"): Promise<ExecutionResult>;
64
+ /**
65
+ * Create a session for interactive use
66
+ */
67
+ createSession(options?: SessionOptions): SandboxSession;
68
+ /**
69
+ * Create a notebook
70
+ */
71
+ createNotebook(options?: NotebookOpts): BaseNotebook;
72
+ /**
73
+ * Create a REPL
74
+ */
75
+ createREPL(options?: SessionOptions & {
76
+ language?: Language;
77
+ }): BaseREPL;
78
+ /**
79
+ * Create polyglot session
80
+ */
81
+ createPolyglot(options?: {
82
+ permissions?: Permissions;
83
+ limits?: Limits;
84
+ }): PolyglotSession;
85
+ /**
86
+ * Merge options with defaults
87
+ */
88
+ private mergeOptions;
89
+ }
90
+ /**
91
+ * Sandbox Session
92
+ *
93
+ * Stateful execution context.
94
+ */
95
+ export declare class SandboxSession {
96
+ readonly id: string;
97
+ private kernelManager;
98
+ private kernels;
99
+ private sharedState;
100
+ private options;
101
+ constructor(kernelManager: KernelManager, options: {
102
+ permissions: Permissions;
103
+ limits: Limits;
104
+ environment: Record<string, string>;
105
+ workingDirectory: string;
106
+ sharedMemory: boolean;
107
+ });
108
+ /**
109
+ * Get kernel for language
110
+ */
111
+ getKernel(language: Language): BaseKernel | undefined;
112
+ /**
113
+ * Start kernel for language
114
+ */
115
+ startKernel(language: Language): Promise<BaseKernel>;
116
+ /**
117
+ * Execute code
118
+ */
119
+ execute(code: string, language: Language, options?: ExecutionOptions): Promise<ExecutionResult>;
120
+ /**
121
+ * Get shared state
122
+ */
123
+ getSharedState(): Map<string, unknown>;
124
+ /**
125
+ * Set shared state
126
+ */
127
+ setSharedState(key: string, value: unknown): void;
128
+ /**
129
+ * Shutdown session
130
+ */
131
+ shutdown(): Promise<void>;
132
+ }
133
+ /**
134
+ * Create default sandbox instance
135
+ */
136
+ export declare const sandbox: Sandbox;
137
+ /**
138
+ * Quick execute helper
139
+ */
140
+ export declare function execute(code: string, language?: Language, options?: SandboxOptions): Promise<ExecutionResult>;
141
+ /**
142
+ * Quick execute with preset helper
143
+ */
144
+ export declare function quick(code: string, preset?: "isolated" | "trusted" | "admin"): Promise<ExecutionResult>;
145
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}