@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,103 @@
1
+ /**
2
+ * Permissions Primitive
3
+ *
4
+ * Composable permission enforcement for sandbox execution.
5
+ * Each permission can be independently granted or denied.
6
+ */
7
+ import type { Permissions, PermissionLevel, FileSystemPermission, NetworkPermission, EnvironmentPermission, ProcessPermission } from "./types.js";
8
+ /**
9
+ * Permission Checker
10
+ *
11
+ * Validates permissions against allowed operations.
12
+ */
13
+ export declare class PermissionChecker {
14
+ private permissions;
15
+ constructor(permissions: Permissions);
16
+ /**
17
+ * Check if filesystem read is allowed
18
+ */
19
+ canReadFile(path?: string): boolean;
20
+ /**
21
+ * Check if filesystem write is allowed
22
+ */
23
+ canWriteFile(path?: string): boolean;
24
+ /**
25
+ * Check if filesystem delete is allowed
26
+ */
27
+ canDeleteFile(path?: string): boolean;
28
+ /**
29
+ * Check if network outbound is allowed
30
+ */
31
+ canConnect(host?: string): boolean;
32
+ /**
33
+ * Check if network inbound is allowed
34
+ */
35
+ canListen(port?: number): boolean;
36
+ /**
37
+ * Check if environment read is allowed
38
+ */
39
+ canReadEnv(key?: string): boolean;
40
+ /**
41
+ * Check if environment write is allowed
42
+ */
43
+ canWriteEnv(key?: string): boolean;
44
+ /**
45
+ * Check if process spawn is allowed
46
+ */
47
+ canSpawnProcess(command?: string): boolean;
48
+ /**
49
+ * Get memory limit
50
+ */
51
+ getMemoryLimit(): number | undefined;
52
+ /**
53
+ * Get CPU limits
54
+ */
55
+ getCpuLimits(): {
56
+ maxPercent?: number;
57
+ maxTimeMs?: number;
58
+ };
59
+ /**
60
+ * Check if path is allowed
61
+ */
62
+ private isPathAllowed;
63
+ /**
64
+ * Check if host is allowed
65
+ */
66
+ private isHostAllowed;
67
+ }
68
+ /**
69
+ * Permission Builder
70
+ *
71
+ * Fluent API for building permission sets.
72
+ */
73
+ export declare class PermissionBuilder {
74
+ private permissions;
75
+ filesystem(options: Partial<FileSystemPermission>): this;
76
+ network(options: Partial<NetworkPermission>): this;
77
+ environment(options: Partial<EnvironmentPermission>): this;
78
+ process(options: Partial<ProcessPermission>): this;
79
+ memory(maxBytes: number): this;
80
+ cpu(options: {
81
+ maxPercent?: number;
82
+ maxTimeMs?: number;
83
+ }): this;
84
+ build(): Permissions;
85
+ }
86
+ /**
87
+ * Create permission set from level
88
+ */
89
+ export declare function createPermissions(level: PermissionLevel): Permissions;
90
+ /**
91
+ * Merge permissions (intersection - most restrictive)
92
+ */
93
+ export declare function mergePermissions(...perms: Permissions[]): Permissions;
94
+ /**
95
+ * Check if permission level implies another
96
+ */
97
+ export declare function impliesPermission(level: PermissionLevel, required: PermissionLevel): boolean;
98
+ /**
99
+ * Upgrade permissions to higher level
100
+ */
101
+ export declare function upgradePermissions(current: Permissions, newLevel: PermissionLevel): Permissions;
102
+ export { permissionsFromLevel } from "./types.js";
103
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/core/permissions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C;;OAEG;IACH,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAUnC;;OAEG;IACH,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAUpC;;OAEG;IACH,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrC;;OAEG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAUlC;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAQjC;;OAEG;IACH,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUjC;;OAEG;IACH,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUlC;;OAEG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IAY1C;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;OAEG;IACH,YAAY,IAAI;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAQ3D;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,aAAa;CAsBtB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAmB;IAEtC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAQxD,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAQlD,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;IAQ1D,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAQlD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK9B,GAAG,CAAC,OAAO,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAK/D,KAAK,IAAI,WAAW;CAGrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,CAsCrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,CAwDrE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAUT;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,eAAe,GACxB,WAAW,CAGb;AAuBD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,341 @@
1
+ /**
2
+ * Permissions Primitive
3
+ *
4
+ * Composable permission enforcement for sandbox execution.
5
+ * Each permission can be independently granted or denied.
6
+ */
7
+ /**
8
+ * Permission Checker
9
+ *
10
+ * Validates permissions against allowed operations.
11
+ */
12
+ export class PermissionChecker {
13
+ permissions;
14
+ constructor(permissions) {
15
+ this.permissions = permissions;
16
+ }
17
+ /**
18
+ * Check if filesystem read is allowed
19
+ */
20
+ canReadFile(path) {
21
+ const fs = this.permissions.fs;
22
+ if (!fs?.read)
23
+ return false;
24
+ if (path) {
25
+ return this.isPathAllowed(path, fs);
26
+ }
27
+ return true;
28
+ }
29
+ /**
30
+ * Check if filesystem write is allowed
31
+ */
32
+ canWriteFile(path) {
33
+ const fs = this.permissions.fs;
34
+ if (!fs?.write)
35
+ return false;
36
+ if (path) {
37
+ return this.isPathAllowed(path, fs);
38
+ }
39
+ return true;
40
+ }
41
+ /**
42
+ * Check if filesystem delete is allowed
43
+ */
44
+ canDeleteFile(path) {
45
+ const fs = this.permissions.fs;
46
+ if (!fs?.delete)
47
+ return false;
48
+ if (path) {
49
+ return this.isPathAllowed(path, fs);
50
+ }
51
+ return true;
52
+ }
53
+ /**
54
+ * Check if network outbound is allowed
55
+ */
56
+ canConnect(host) {
57
+ const net = this.permissions.network;
58
+ if (!net?.outbound)
59
+ return false;
60
+ if (host) {
61
+ return this.isHostAllowed(host, net);
62
+ }
63
+ return true;
64
+ }
65
+ /**
66
+ * Check if network inbound is allowed
67
+ */
68
+ canListen(port) {
69
+ const net = this.permissions.network;
70
+ if (!net?.inbound)
71
+ return false;
72
+ // Could add port-based restrictions here
73
+ return true;
74
+ }
75
+ /**
76
+ * Check if environment read is allowed
77
+ */
78
+ canReadEnv(key) {
79
+ const env = this.permissions.env;
80
+ if (!env?.read)
81
+ return false;
82
+ if (key && env.allowedKeys) {
83
+ return env.allowedKeys.includes(key);
84
+ }
85
+ return true;
86
+ }
87
+ /**
88
+ * Check if environment write is allowed
89
+ */
90
+ canWriteEnv(key) {
91
+ const env = this.permissions.env;
92
+ if (!env?.write)
93
+ return false;
94
+ if (key && env.allowedKeys) {
95
+ return env.allowedKeys.includes(key);
96
+ }
97
+ return true;
98
+ }
99
+ /**
100
+ * Check if process spawn is allowed
101
+ */
102
+ canSpawnProcess(command) {
103
+ const proc = this.permissions.process;
104
+ if (!proc?.spawn)
105
+ return false;
106
+ if (command && proc.allowedCommands) {
107
+ return proc.allowedCommands.some(cmd => command.startsWith(cmd) || command === cmd);
108
+ }
109
+ return true;
110
+ }
111
+ /**
112
+ * Get memory limit
113
+ */
114
+ getMemoryLimit() {
115
+ return this.permissions.memory?.maxBytes;
116
+ }
117
+ /**
118
+ * Get CPU limits
119
+ */
120
+ getCpuLimits() {
121
+ const cpu = this.permissions.cpu;
122
+ return {
123
+ maxPercent: cpu?.maxPercent,
124
+ maxTimeMs: cpu?.maxTimeMs,
125
+ };
126
+ }
127
+ /**
128
+ * Check if path is allowed
129
+ */
130
+ isPathAllowed(path, fs) {
131
+ // Check denied paths first
132
+ if (fs.deniedPaths) {
133
+ for (const denied of fs.deniedPaths) {
134
+ if (path.startsWith(denied)) {
135
+ return false;
136
+ }
137
+ }
138
+ }
139
+ // Check allowed paths
140
+ if (fs.allowedPaths) {
141
+ for (const allowed of fs.allowedPaths) {
142
+ if (path.startsWith(allowed)) {
143
+ return true;
144
+ }
145
+ }
146
+ return false;
147
+ }
148
+ return true;
149
+ }
150
+ /**
151
+ * Check if host is allowed
152
+ */
153
+ isHostAllowed(host, net) {
154
+ // Check denied hosts first
155
+ if (net.deniedHosts) {
156
+ for (const denied of net.deniedHosts) {
157
+ if (host === denied || host.endsWith(`.${denied}`)) {
158
+ return false;
159
+ }
160
+ }
161
+ }
162
+ // Check allowed hosts
163
+ if (net.allowedHosts) {
164
+ for (const allowed of net.allowedHosts) {
165
+ if (host === allowed || host.endsWith(`.${allowed}`)) {
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ }
171
+ return true;
172
+ }
173
+ }
174
+ /**
175
+ * Permission Builder
176
+ *
177
+ * Fluent API for building permission sets.
178
+ */
179
+ export class PermissionBuilder {
180
+ permissions = {};
181
+ filesystem(options) {
182
+ this.permissions.fs = {
183
+ ...this.permissions.fs,
184
+ ...options,
185
+ };
186
+ return this;
187
+ }
188
+ network(options) {
189
+ this.permissions.network = {
190
+ ...this.permissions.network,
191
+ ...options,
192
+ };
193
+ return this;
194
+ }
195
+ environment(options) {
196
+ this.permissions.env = {
197
+ ...this.permissions.env,
198
+ ...options,
199
+ };
200
+ return this;
201
+ }
202
+ process(options) {
203
+ this.permissions.process = {
204
+ ...this.permissions.process,
205
+ ...options,
206
+ };
207
+ return this;
208
+ }
209
+ memory(maxBytes) {
210
+ this.permissions.memory = { maxBytes };
211
+ return this;
212
+ }
213
+ cpu(options) {
214
+ this.permissions.cpu = options;
215
+ return this;
216
+ }
217
+ build() {
218
+ return this.permissions;
219
+ }
220
+ }
221
+ /**
222
+ * Create permission set from level
223
+ */
224
+ export function createPermissions(level) {
225
+ switch (level) {
226
+ case "isolated":
227
+ return {};
228
+ case "readonly":
229
+ return {
230
+ fs: { read: true },
231
+ };
232
+ case "network":
233
+ return {
234
+ fs: { read: true },
235
+ network: { outbound: true },
236
+ };
237
+ case "filesystem":
238
+ return {
239
+ fs: { read: true, write: true, delete: true },
240
+ network: { outbound: true, inbound: true },
241
+ };
242
+ case "admin":
243
+ return {
244
+ fs: { read: true, write: true, delete: true },
245
+ network: { outbound: true, inbound: true },
246
+ env: { read: true, write: true },
247
+ process: { spawn: true },
248
+ };
249
+ case "sudo":
250
+ return {
251
+ fs: { read: true, write: true, delete: true },
252
+ network: { outbound: true, inbound: true },
253
+ env: { read: true, write: true },
254
+ process: { spawn: true },
255
+ };
256
+ }
257
+ }
258
+ /**
259
+ * Merge permissions (intersection - most restrictive)
260
+ */
261
+ export function mergePermissions(...perms) {
262
+ const result = {};
263
+ // Filesystem
264
+ const fsPerms = perms.filter(p => p.fs);
265
+ if (fsPerms.length === perms.length) {
266
+ result.fs = {
267
+ read: fsPerms.every(p => p.fs?.read),
268
+ write: fsPerms.every(p => p.fs?.write),
269
+ delete: fsPerms.every(p => p.fs?.delete),
270
+ allowedPaths: intersectArrays(...fsPerms.map(p => p.fs?.allowedPaths).filter(Boolean)),
271
+ deniedPaths: unionArrays(...fsPerms.map(p => p.fs?.deniedPaths).filter(Boolean)),
272
+ };
273
+ }
274
+ // Network
275
+ const netPerms = perms.filter(p => p.network);
276
+ if (netPerms.length === perms.length) {
277
+ result.network = {
278
+ outbound: netPerms.every(p => p.network?.outbound),
279
+ inbound: netPerms.every(p => p.network?.inbound),
280
+ allowedHosts: intersectArrays(...netPerms.map(p => p.network?.allowedHosts).filter(Boolean)),
281
+ deniedHosts: unionArrays(...netPerms.map(p => p.network?.deniedHosts).filter(Boolean)),
282
+ };
283
+ }
284
+ // Memory (take minimum)
285
+ const memoryLimits = perms
286
+ .map(p => p.memory?.maxBytes)
287
+ .filter(Boolean);
288
+ if (memoryLimits.length > 0) {
289
+ result.memory = { maxBytes: Math.min(...memoryLimits) };
290
+ }
291
+ // CPU (take minimums)
292
+ const cpuPerms = perms.filter(p => p.cpu);
293
+ if (cpuPerms.length > 0) {
294
+ result.cpu = {
295
+ maxPercent: Math.min(...cpuPerms.map(p => p.cpu?.maxPercent ?? 100)),
296
+ maxTimeMs: Math.min(...cpuPerms.map(p => p.cpu?.maxTimeMs ?? Infinity)),
297
+ };
298
+ }
299
+ return result;
300
+ }
301
+ /**
302
+ * Check if permission level implies another
303
+ */
304
+ export function impliesPermission(level, required) {
305
+ const levels = [
306
+ "isolated",
307
+ "readonly",
308
+ "network",
309
+ "filesystem",
310
+ "admin",
311
+ "sudo",
312
+ ];
313
+ return levels.indexOf(level) >= levels.indexOf(required);
314
+ }
315
+ /**
316
+ * Upgrade permissions to higher level
317
+ */
318
+ export function upgradePermissions(current, newLevel) {
319
+ const newPerms = createPermissions(newLevel);
320
+ return mergePermissions(current, newPerms);
321
+ }
322
+ // Helper functions
323
+ function intersectArrays(...arrays) {
324
+ if (arrays.length === 0)
325
+ return [];
326
+ if (arrays.length === 1)
327
+ return arrays[0];
328
+ return arrays[0].filter(item => arrays.every(arr => arr.includes(item)));
329
+ }
330
+ function unionArrays(...arrays) {
331
+ const set = new Set();
332
+ for (const arr of arrays) {
333
+ for (const item of arr) {
334
+ set.add(item);
335
+ }
336
+ }
337
+ return Array.from(set);
338
+ }
339
+ // Re-export from types
340
+ export { permissionsFromLevel } from "./types.js";
341
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/core/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Runtime Primitive
3
+ *
4
+ * Executes compiled code (WASM) with resource limits and permissions.
5
+ * Composable: different runtimes for different isolation levels.
6
+ */
7
+ import type { ExecutionResult, Permissions, Limits } from "./types.js";
8
+ import type { CompileResult } from "./compiler.js";
9
+ /** Runtime options */
10
+ export interface RuntimeOptions {
11
+ permissions: Permissions;
12
+ limits: Limits;
13
+ /** Environment variables */
14
+ env?: Record<string, string>;
15
+ /** Working directory */
16
+ cwd?: string;
17
+ /** Abort signal */
18
+ signal?: AbortSignal;
19
+ }
20
+ /** Execution request */
21
+ export interface ExecutionRequest {
22
+ /** Compiled WASM */
23
+ wasm: CompileResult;
24
+ /** Entrypoint function */
25
+ entrypoint?: string;
26
+ /** Arguments to pass */
27
+ args?: unknown[];
28
+ /** Input data */
29
+ input?: unknown;
30
+ /** Previous state */
31
+ state?: Map<string, unknown>;
32
+ }
33
+ /** Base runtime interface */
34
+ export interface IRuntime {
35
+ /** Runtime name */
36
+ readonly name: string;
37
+ /** Runtime capabilities */
38
+ readonly capabilities: RuntimeCapabilities;
39
+ /** Initialize runtime */
40
+ init(): Promise<void>;
41
+ /** Check if runtime is available */
42
+ isAvailable(): Promise<boolean>;
43
+ /** Execute compiled code */
44
+ execute(request: ExecutionRequest, options: RuntimeOptions): Promise<ExecutionResult>;
45
+ /** Terminate runtime and cleanup resources */
46
+ terminate(): Promise<void>;
47
+ /** Check if currently executing */
48
+ isExecuting(): boolean;
49
+ }
50
+ /** Runtime capabilities */
51
+ export interface RuntimeCapabilities {
52
+ /** Isolation level */
53
+ isolation: "none" | "process" | "vm" | "wasm" | "container";
54
+ /** Supports state persistence */
55
+ stateful: boolean;
56
+ /** Supports async execution */
57
+ async: boolean;
58
+ /** Can access filesystem */
59
+ filesystem: boolean;
60
+ /** Can access network */
61
+ network: boolean;
62
+ /** Max memory (bytes) */
63
+ maxMemory: number;
64
+ /** Supports WASI */
65
+ wasi: boolean;
66
+ }
67
+ /**
68
+ * WASM-in-WASM Runtime
69
+ *
70
+ * Uses @ebowwa/wasm2wasm for maximum isolation.
71
+ * Runs WASM bytecode inside a WASM interpreter.
72
+ */
73
+ export declare class Wasm2WasmRuntime implements IRuntime {
74
+ readonly name = "wasm2wasm";
75
+ readonly capabilities: RuntimeCapabilities;
76
+ private executing;
77
+ init(): Promise<void>;
78
+ isAvailable(): Promise<boolean>;
79
+ execute(request: ExecutionRequest, options: RuntimeOptions): Promise<ExecutionResult>;
80
+ terminate(): Promise<void>;
81
+ isExecuting(): boolean;
82
+ private createErrorResult;
83
+ private parseMemory;
84
+ private parseTimeout;
85
+ private combineSignals;
86
+ }
87
+ /**
88
+ * Native WASM Runtime
89
+ *
90
+ * Uses browser/Node WebAssembly API directly.
91
+ * Less isolated but faster.
92
+ */
93
+ export declare class NativeWasmRuntime implements IRuntime {
94
+ readonly name = "native-wasm";
95
+ readonly capabilities: RuntimeCapabilities;
96
+ private executing;
97
+ init(): Promise<void>;
98
+ isAvailable(): Promise<boolean>;
99
+ execute(request: ExecutionRequest, options: RuntimeOptions): Promise<ExecutionResult>;
100
+ terminate(): Promise<void>;
101
+ isExecuting(): boolean;
102
+ private buildImports;
103
+ private createErrorResult;
104
+ private parseTimeout;
105
+ }
106
+ /**
107
+ * Runtime Registry
108
+ *
109
+ * Manages available runtimes and selects appropriate one.
110
+ */
111
+ export declare class RuntimeRegistry {
112
+ private runtimes;
113
+ register(runtime: IRuntime): void;
114
+ get(name: string): IRuntime | undefined;
115
+ has(name: string): boolean;
116
+ getAvailable(): Promise<string[]>;
117
+ /**
118
+ * Select best runtime for given requirements
119
+ */
120
+ selectBest(requirements: {
121
+ isolation?: RuntimeCapabilities["isolation"];
122
+ filesystem?: boolean;
123
+ network?: boolean;
124
+ }): IRuntime | undefined;
125
+ }
126
+ export declare const defaultRuntimeRegistry: RuntimeRegistry;
127
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"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"}