@cogitator-ai/sandbox 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/executors/wasm-memory.d.ts +9 -0
- package/dist/executors/wasm-memory.d.ts.map +1 -0
- package/dist/executors/wasm-memory.js +91 -0
- package/dist/executors/wasm-memory.js.map +1 -0
- package/dist/executors/wasm.d.ts +2 -1
- package/dist/executors/wasm.d.ts.map +1 -1
- package/dist/executors/wasm.js +13 -6
- package/dist/executors/wasm.js.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -258,7 +258,7 @@ await wasm.disconnect();
|
|
|
258
258
|
- Local paths, module specifiers and `http(s)` URLs are supported for `wasmModule`.
|
|
259
259
|
- `wasmModule`, `functionName` and `wasi` from the executor options are used when the per-request config omits them.
|
|
260
260
|
- `network.allowedHosts` is forwarded to Extism's HTTP allow-list (empty when `network.mode` is `'none'`).
|
|
261
|
-
- `memoryPages` (default 256 = 16 MB)
|
|
261
|
+
- `memoryPages` (default 256 = 16 MB) caps the module's own memory: its memory section gets that maximum before the module loads, so `memory.grow` past it fails inside the module, and a module that needs more to start is refused. Extism's memory for plugin input, output and vars gets the same limit. Modules from a URL are fetched by the executor so the cap applies to them too.
|
|
262
262
|
|
|
263
263
|
---
|
|
264
264
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The module with every memory it defines capped at `maxPages` (64 KiB
|
|
3
|
+
* pages): a missing or larger maximum becomes `maxPages`, so `memory.grow`
|
|
4
|
+
* past it fails inside the module whatever runtime executes it. Throws when
|
|
5
|
+
* a memory needs more than `maxPages` to start. Imported memories belong to
|
|
6
|
+
* the host and are left as they are.
|
|
7
|
+
*/
|
|
8
|
+
export declare function capModuleMemory(module: Uint8Array, maxPages: number): Uint8Array<ArrayBuffer>;
|
|
9
|
+
//# sourceMappingURL=wasm-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-memory.d.ts","sourceRoot":"","sources":["../../src/executors/wasm-memory.ts"],"names":[],"mappings":"AAkCA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CA0D7F"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const MEMORY_SECTION = 5;
|
|
2
|
+
const HAS_MAXIMUM = 0x01;
|
|
3
|
+
const PREAMBLE_SIZE = 8;
|
|
4
|
+
function readLeb(bytes, offset) {
|
|
5
|
+
let value = 0n;
|
|
6
|
+
let shift = 0n;
|
|
7
|
+
let position = offset;
|
|
8
|
+
for (;;) {
|
|
9
|
+
if (position >= bytes.length)
|
|
10
|
+
throw new Error('Malformed WASM module: truncated LEB128');
|
|
11
|
+
const byte = bytes[position++];
|
|
12
|
+
value |= BigInt(byte & 0x7f) << shift;
|
|
13
|
+
if ((byte & 0x80) === 0)
|
|
14
|
+
return { value, next: position };
|
|
15
|
+
shift += 7n;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function writeLeb(value) {
|
|
19
|
+
const out = [];
|
|
20
|
+
let remaining = value;
|
|
21
|
+
do {
|
|
22
|
+
let byte = Number(remaining & 0x7fn);
|
|
23
|
+
remaining >>= 7n;
|
|
24
|
+
if (remaining !== 0n)
|
|
25
|
+
byte |= 0x80;
|
|
26
|
+
out.push(byte);
|
|
27
|
+
} while (remaining !== 0n);
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The module with every memory it defines capped at `maxPages` (64 KiB
|
|
32
|
+
* pages): a missing or larger maximum becomes `maxPages`, so `memory.grow`
|
|
33
|
+
* past it fails inside the module whatever runtime executes it. Throws when
|
|
34
|
+
* a memory needs more than `maxPages` to start. Imported memories belong to
|
|
35
|
+
* the host and are left as they are.
|
|
36
|
+
*/
|
|
37
|
+
export function capModuleMemory(module, maxPages) {
|
|
38
|
+
if (!Number.isInteger(maxPages) || maxPages < 1) {
|
|
39
|
+
throw new Error(`memoryPages must be a positive integer, got ${maxPages}`);
|
|
40
|
+
}
|
|
41
|
+
if (module.length < PREAMBLE_SIZE || module[0] !== 0x00 || module[1] !== 0x61) {
|
|
42
|
+
throw new Error('Not a WASM module');
|
|
43
|
+
}
|
|
44
|
+
const limit = BigInt(maxPages);
|
|
45
|
+
const parts = [module.subarray(0, PREAMBLE_SIZE)];
|
|
46
|
+
let offset = PREAMBLE_SIZE;
|
|
47
|
+
while (offset < module.length) {
|
|
48
|
+
const id = module[offset];
|
|
49
|
+
const size = readLeb(module, offset + 1);
|
|
50
|
+
const start = size.next;
|
|
51
|
+
const end = start + Number(size.value);
|
|
52
|
+
if (end > module.length)
|
|
53
|
+
throw new Error('Malformed WASM module: section past the end');
|
|
54
|
+
if (id !== MEMORY_SECTION) {
|
|
55
|
+
parts.push(module.subarray(offset, end));
|
|
56
|
+
offset = end;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const count = readLeb(module, start);
|
|
60
|
+
const content = writeLeb(count.value);
|
|
61
|
+
let position = count.next;
|
|
62
|
+
for (let i = 0n; i < count.value; i++) {
|
|
63
|
+
const flags = module[position];
|
|
64
|
+
const minimum = readLeb(module, position + 1);
|
|
65
|
+
if (minimum.value > limit) {
|
|
66
|
+
throw new Error(`WASM module needs ${minimum.value} memory pages to start; memoryPages allows ${maxPages}`);
|
|
67
|
+
}
|
|
68
|
+
let maximum = limit;
|
|
69
|
+
position = minimum.next;
|
|
70
|
+
if (flags & HAS_MAXIMUM) {
|
|
71
|
+
const declared = readLeb(module, position);
|
|
72
|
+
if (declared.value < maximum)
|
|
73
|
+
maximum = declared.value;
|
|
74
|
+
position = declared.next;
|
|
75
|
+
}
|
|
76
|
+
content.push(flags | HAS_MAXIMUM, ...writeLeb(minimum.value), ...writeLeb(maximum));
|
|
77
|
+
}
|
|
78
|
+
if (position !== end)
|
|
79
|
+
throw new Error('Malformed WASM module: memory section size');
|
|
80
|
+
parts.push(Uint8Array.from([id, ...writeLeb(BigInt(content.length)), ...content]));
|
|
81
|
+
offset = end;
|
|
82
|
+
}
|
|
83
|
+
const capped = new Uint8Array(parts.reduce((total, part) => total + part.length, 0));
|
|
84
|
+
let cursor = 0;
|
|
85
|
+
for (const part of parts) {
|
|
86
|
+
capped.set(part, cursor);
|
|
87
|
+
cursor += part.length;
|
|
88
|
+
}
|
|
89
|
+
return capped;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=wasm-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-memory.js","sourceRoot":"","sources":["../../src/executors/wasm-memory.ts"],"names":[],"mappings":"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"}
|
package/dist/executors/wasm.d.ts
CHANGED
|
@@ -25,7 +25,8 @@ export declare class WasmSandboxExecutor extends BaseSandboxExecutor {
|
|
|
25
25
|
private acquire;
|
|
26
26
|
private release;
|
|
27
27
|
private closePlugin;
|
|
28
|
-
|
|
28
|
+
/** The module's bytes, from a URL, a file or an installed package. */
|
|
29
|
+
private loadModule;
|
|
29
30
|
private buildInput;
|
|
30
31
|
private callWithTimeout;
|
|
31
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../src/executors/wasm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../src/executors/wasm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAM7C,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAqCD,qBAAa,mBAAoB,SAAQ,mBAAmB;IAC1D,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAElC,OAAO,GAAE,mBAAwB;IAKvC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAYvC,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAU1C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ/B,OAAO,CACX,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAuDnC,OAAO;YAwBP,OAAO;YAsBP,WAAW;IAWzB,sEAAsE;YACxD,UAAU;IAsBxB,OAAO,CAAC,UAAU;YAWJ,eAAe;CAiC9B"}
|
package/dist/executors/wasm.js
CHANGED
|
@@ -8,6 +8,7 @@ import { BaseSandboxExecutor } from './base.js';
|
|
|
8
8
|
import { readFile } from 'node:fs/promises';
|
|
9
9
|
import { existsSync } from 'node:fs';
|
|
10
10
|
import { createRequire } from 'node:module';
|
|
11
|
+
import { capModuleMemory } from './wasm-memory.js';
|
|
11
12
|
const DEFAULT_TIMEOUT = 30_000;
|
|
12
13
|
const DEFAULT_FUNCTION = 'run';
|
|
13
14
|
const MAX_OUTPUT_SIZE = 50_000;
|
|
@@ -104,9 +105,10 @@ export class WasmSandboxExecutor extends BaseSandboxExecutor {
|
|
|
104
105
|
this.activePlugins.add(reused);
|
|
105
106
|
return reused;
|
|
106
107
|
}
|
|
108
|
+
const maxPages = this.options.wasm?.memoryPages ?? DEFAULT_MEMORY_PAGES;
|
|
107
109
|
const manifest = {
|
|
108
|
-
|
|
109
|
-
memory: { maxPages
|
|
110
|
+
wasm: [{ data: capModuleMemory(await this.loadModule(spec.module), maxPages) }],
|
|
111
|
+
memory: { maxPages },
|
|
110
112
|
};
|
|
111
113
|
const plugin = await this.createPlugin(manifest, {
|
|
112
114
|
useWasi: spec.useWasi,
|
|
@@ -146,12 +148,17 @@ export class WasmSandboxExecutor extends BaseSandboxExecutor {
|
|
|
146
148
|
console.warn('[wasm] Failed to close plugin:', error instanceof Error ? error.message : String(error));
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
|
-
|
|
151
|
+
/** The module's bytes, from a URL, a file or an installed package. */
|
|
152
|
+
async loadModule(wasmModule) {
|
|
150
153
|
if (wasmModule.startsWith('http://') || wasmModule.startsWith('https://')) {
|
|
151
|
-
|
|
154
|
+
const response = await fetch(wasmModule);
|
|
155
|
+
if (!response.ok) {
|
|
156
|
+
throw new Error(`Failed to fetch WASM module ${wasmModule}: HTTP ${response.status}`);
|
|
157
|
+
}
|
|
158
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
152
159
|
}
|
|
153
160
|
if (existsSync(wasmModule)) {
|
|
154
|
-
return
|
|
161
|
+
return new Uint8Array(await readFile(wasmModule));
|
|
155
162
|
}
|
|
156
163
|
let resolved;
|
|
157
164
|
try {
|
|
@@ -160,7 +167,7 @@ export class WasmSandboxExecutor extends BaseSandboxExecutor {
|
|
|
160
167
|
catch {
|
|
161
168
|
throw new Error(`WASM module not found: ${wasmModule}`);
|
|
162
169
|
}
|
|
163
|
-
return
|
|
170
|
+
return new Uint8Array(await readFile(resolved));
|
|
164
171
|
}
|
|
165
172
|
buildInput(request) {
|
|
166
173
|
if (request.stdin) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../src/executors/wasm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../src/executors/wasm.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/sandbox",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "Sandbox execution for Cogitator agents (Docker and WASM)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"node": ">=22.12.0"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@cogitator-ai/types": "0.
|
|
21
|
+
"@cogitator-ai/types": "0.28.0"
|
|
22
22
|
},
|
|
23
23
|
"optionalDependencies": {
|
|
24
24
|
"@extism/extism": "^2.0.0-rc13",
|
|
@@ -55,8 +55,9 @@
|
|
|
55
55
|
"build": "tsc && tsx ../../scripts/fix-esm-imports.ts .",
|
|
56
56
|
"dev": "tsc --watch",
|
|
57
57
|
"clean": "rm -rf dist",
|
|
58
|
-
"typecheck": "tsc --noEmit",
|
|
58
|
+
"typecheck": "tsc --noEmit -p tsconfig.test.json",
|
|
59
59
|
"test": "vitest run",
|
|
60
|
-
"test:watch": "vitest"
|
|
60
|
+
"test:watch": "vitest",
|
|
61
|
+
"bench": "SANDBOX_BENCHMARK=1 vitest run benchmark"
|
|
61
62
|
}
|
|
62
63
|
}
|