@framers/agentos 0.10.25 → 0.10.26
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.
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
*
|
|
29
29
|
* Allowlisted APIs (each requires explicit opt-in via {@link SandboxAPI}):
|
|
30
30
|
* - `fetch` — HTTP requests, domain-restricted via {@link SandboxedToolForgeConfig.fetchDomainAllowlist}.
|
|
31
|
-
* - `fs.readFile` — Read-only file access,
|
|
31
|
+
* - `fs.readFile` — Read-only file access, max 1 MB, restricted to the
|
|
32
|
+
* configured roots after symlink resolution (a link inside a root cannot
|
|
33
|
+
* be used to reach a file outside one).
|
|
32
34
|
* - `crypto` — Hashing and HMAC only (`createHash`, `createHmac`).
|
|
33
35
|
*/
|
|
34
36
|
import type { SandboxExecutionRequest, SandboxExecutionResult, SandboxAPI } from './types.js';
|
|
@@ -101,6 +103,20 @@ export declare class SandboxedToolForge {
|
|
|
101
103
|
private readonly fetchDomainAllowlist;
|
|
102
104
|
/** Filesystem roots sandboxed reads may access. */
|
|
103
105
|
private readonly fsReadRoots;
|
|
106
|
+
/**
|
|
107
|
+
* Real path of each configured root, resolved lazily and cached PER ROOT.
|
|
108
|
+
*
|
|
109
|
+
* Both sides of a containment check have to be real paths: a configured
|
|
110
|
+
* root is frequently itself a link (on macOS `/tmp` is a link to
|
|
111
|
+
* `/private/tmp`), so comparing a resolved file against an unresolved root
|
|
112
|
+
* would deny perfectly legitimate reads.
|
|
113
|
+
*
|
|
114
|
+
* Per root, not per set: a set-wide cache that is dropped whenever ANY
|
|
115
|
+
* root fails to resolve would re-resolve the roots that DID succeed, and a
|
|
116
|
+
* root symlink repointed in between would then be followed to its new
|
|
117
|
+
* target — losing the pinning this cache exists to provide.
|
|
118
|
+
*/
|
|
119
|
+
private readonly realFsReadRootCache;
|
|
104
120
|
/**
|
|
105
121
|
* Hardened node:vm sandbox shared across all execute() calls. Owns the
|
|
106
122
|
* codeGeneration restriction, frozen console, and explicit-undefined
|
|
@@ -149,6 +165,19 @@ export declare class SandboxedToolForge {
|
|
|
149
165
|
* the raw message in that case. The hints map to the 4 most common
|
|
150
166
|
* LLM forge mistakes observed in production.
|
|
151
167
|
*/
|
|
168
|
+
private resolveReadRoots;
|
|
169
|
+
/**
|
|
170
|
+
* Resolve one configured root, pinning the first success.
|
|
171
|
+
*
|
|
172
|
+
* A resolved root is pinned for the life of the forge, deliberately:
|
|
173
|
+
* re-resolving it per read would let a root symlink be repointed
|
|
174
|
+
* underneath a running sandbox, which is the move this containment check
|
|
175
|
+
* exists to stop. A caller that needs to follow a retargeted root builds a
|
|
176
|
+
* new forge. A FAILED resolution is not pinned, so a root that becomes
|
|
177
|
+
* readable later is picked up — and because each root is cached on its
|
|
178
|
+
* own, one unreadable root can never un-pin a sibling that resolved.
|
|
179
|
+
*/
|
|
180
|
+
private resolveReadRoot;
|
|
152
181
|
private describeSyntaxError;
|
|
153
182
|
validateCode(code: string, allowlist: SandboxAPI[]): {
|
|
154
183
|
valid: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxedToolForge.d.ts","sourceRoot":"","sources":["../../../src/cognition/emergent/SandboxedToolForge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SandboxedToolForge.d.ts","sourceRoot":"","sources":["../../../src/cognition/emergent/SandboxedToolForge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAKH,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAe9F;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,kBAAkB;IAC7B,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAW;IAEhD,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IAEvC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;IAE1E;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,wBAAwB;IAY7C;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;IAiC3B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAsC7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA4HhF;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAkG1B"}
|
|
@@ -28,11 +28,13 @@
|
|
|
28
28
|
*
|
|
29
29
|
* Allowlisted APIs (each requires explicit opt-in via {@link SandboxAPI}):
|
|
30
30
|
* - `fetch` — HTTP requests, domain-restricted via {@link SandboxedToolForgeConfig.fetchDomainAllowlist}.
|
|
31
|
-
* - `fs.readFile` — Read-only file access,
|
|
31
|
+
* - `fs.readFile` — Read-only file access, max 1 MB, restricted to the
|
|
32
|
+
* configured roots after symlink resolution (a link inside a root cannot
|
|
33
|
+
* be used to reach a file outside one).
|
|
32
34
|
* - `crypto` — Hashing and HMAC only (`createHash`, `createHmac`).
|
|
33
35
|
*/
|
|
34
36
|
import { createHash, createHmac, randomUUID } from 'node:crypto';
|
|
35
|
-
import { readFile } from 'node:fs/promises';
|
|
37
|
+
import { readFile, realpath } from 'node:fs/promises';
|
|
36
38
|
import * as path from 'node:path';
|
|
37
39
|
import { CodeSandbox } from '../../safety/sandbox/executor/CodeSandbox.js';
|
|
38
40
|
/**
|
|
@@ -104,6 +106,20 @@ export class SandboxedToolForge {
|
|
|
104
106
|
* defaults (128 MB memory, 5000 ms timeout, no domain restrictions).
|
|
105
107
|
*/
|
|
106
108
|
constructor(config) {
|
|
109
|
+
/**
|
|
110
|
+
* Real path of each configured root, resolved lazily and cached PER ROOT.
|
|
111
|
+
*
|
|
112
|
+
* Both sides of a containment check have to be real paths: a configured
|
|
113
|
+
* root is frequently itself a link (on macOS `/tmp` is a link to
|
|
114
|
+
* `/private/tmp`), so comparing a resolved file against an unresolved root
|
|
115
|
+
* would deny perfectly legitimate reads.
|
|
116
|
+
*
|
|
117
|
+
* Per root, not per set: a set-wide cache that is dropped whenever ANY
|
|
118
|
+
* root fails to resolve would re-resolve the roots that DID succeed, and a
|
|
119
|
+
* root symlink repointed in between would then be followed to its new
|
|
120
|
+
* target — losing the pinning this cache exists to provide.
|
|
121
|
+
*/
|
|
122
|
+
this.realFsReadRootCache = new Map();
|
|
107
123
|
this.memoryMB = config?.memoryMB ?? 128;
|
|
108
124
|
this.timeoutMs = config?.timeoutMs ?? 5000;
|
|
109
125
|
this.fetchDomainAllowlist = (config?.fetchDomainAllowlist ?? []).map((d) => d.toLowerCase());
|
|
@@ -148,6 +164,34 @@ export class SandboxedToolForge {
|
|
|
148
164
|
* the raw message in that case. The hints map to the 4 most common
|
|
149
165
|
* LLM forge mistakes observed in production.
|
|
150
166
|
*/
|
|
167
|
+
resolveReadRoots() {
|
|
168
|
+
return Promise.all(this.fsReadRoots.map((root) => this.resolveReadRoot(root)));
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Resolve one configured root, pinning the first success.
|
|
172
|
+
*
|
|
173
|
+
* A resolved root is pinned for the life of the forge, deliberately:
|
|
174
|
+
* re-resolving it per read would let a root symlink be repointed
|
|
175
|
+
* underneath a running sandbox, which is the move this containment check
|
|
176
|
+
* exists to stop. A caller that needs to follow a retargeted root builds a
|
|
177
|
+
* new forge. A FAILED resolution is not pinned, so a root that becomes
|
|
178
|
+
* readable later is picked up — and because each root is cached on its
|
|
179
|
+
* own, one unreadable root can never un-pin a sibling that resolved.
|
|
180
|
+
*/
|
|
181
|
+
resolveReadRoot(root) {
|
|
182
|
+
const cached = this.realFsReadRootCache.get(root);
|
|
183
|
+
if (cached !== undefined)
|
|
184
|
+
return cached;
|
|
185
|
+
const pending = realpath(root).catch(() => {
|
|
186
|
+
// Drop the failure so the next read retries this root. Its lexical
|
|
187
|
+
// form never matches a real path, so an unresolvable root cannot
|
|
188
|
+
// widen the sandbox while it stays unreadable.
|
|
189
|
+
this.realFsReadRootCache.delete(root);
|
|
190
|
+
return root;
|
|
191
|
+
});
|
|
192
|
+
this.realFsReadRootCache.set(root, pending);
|
|
193
|
+
return pending;
|
|
194
|
+
}
|
|
151
195
|
describeSyntaxError(message) {
|
|
152
196
|
const m = message || '';
|
|
153
197
|
if (/Unexpected token 'const'/.test(m) || /Unexpected token 'let'/.test(m)) {
|
|
@@ -376,13 +420,50 @@ export class SandboxedToolForge {
|
|
|
376
420
|
extras.fs = {
|
|
377
421
|
readFile: async (filePath) => {
|
|
378
422
|
const resolvedPath = path.resolve(filePath);
|
|
379
|
-
|
|
380
|
-
|
|
423
|
+
// Containment via path.relative, not a string prefix: a root that
|
|
424
|
+
// already ends in a separator (the filesystem root `/`, a Windows
|
|
425
|
+
// drive root `C:\`) would otherwise be compared against a doubled
|
|
426
|
+
// separator and deny every file beneath it. path.relative also
|
|
427
|
+
// applies the platform's own case rules.
|
|
428
|
+
const withinRoots = (candidate, roots) => roots.some((root) => {
|
|
429
|
+
const relative = path.relative(root, candidate);
|
|
430
|
+
// '' means the candidate IS the root. A relative path that
|
|
431
|
+
// climbs out ('..' or '../x') or stays absolute (a different
|
|
432
|
+
// Windows drive) is outside it. Checking for the '..' segment
|
|
433
|
+
// rather than the '..' prefix keeps a sibling named '..foo'
|
|
434
|
+
// from reading as an escape.
|
|
435
|
+
return (relative === '' ||
|
|
436
|
+
(relative !== '..' &&
|
|
437
|
+
!relative.startsWith(`..${path.sep}`) &&
|
|
438
|
+
!path.isAbsolute(relative)));
|
|
381
439
|
});
|
|
382
|
-
|
|
440
|
+
// Lexical pass: rejects the obvious `../../etc/passwd` shape before
|
|
441
|
+
// the sandbox pays for any filesystem call.
|
|
442
|
+
if (!withinRoots(resolvedPath, this.fsReadRoots)) {
|
|
383
443
|
throw new Error(`fs.readFile blocked: path "${resolvedPath}" is outside the allowed roots`);
|
|
384
444
|
}
|
|
385
|
-
|
|
445
|
+
// Lexical containment is NOT containment. A symlink sitting inside
|
|
446
|
+
// an allowed root resolves to an in-root string while pointing at
|
|
447
|
+
// any file on the machine, so string-prefix checking alone reads
|
|
448
|
+
// whatever the link targets (CWE-22). Follow the link chain and
|
|
449
|
+
// re-check against the roots' own real paths.
|
|
450
|
+
//
|
|
451
|
+
// The path has already cleared the lexical check, so a resolution
|
|
452
|
+
// failure here names something inside an allowed root: surface the
|
|
453
|
+
// filesystem's own error (ENOENT and friends) rather than masking
|
|
454
|
+
// a missing file as a containment failure.
|
|
455
|
+
const realPath = await realpath(resolvedPath);
|
|
456
|
+
if (!withinRoots(realPath, await this.resolveReadRoots())) {
|
|
457
|
+
throw new Error(`fs.readFile blocked: path "${resolvedPath}" resolves outside the allowed roots`);
|
|
458
|
+
}
|
|
459
|
+
// Read the RESOLVED path, not the caller's string: re-resolving the
|
|
460
|
+
// original would walk the link a second time, and the link can be
|
|
461
|
+
// repointed between the two walks. (A component of the resolved
|
|
462
|
+
// path could still be swapped for a link in that window — closing
|
|
463
|
+
// that needs an O_NOFOLLOW handle, which node's fs/promises does
|
|
464
|
+
// not expose; it requires local write access inside an allowed
|
|
465
|
+
// root, which is already outside this sandbox's threat model.)
|
|
466
|
+
const data = await readFile(realPath);
|
|
386
467
|
if (data.byteLength > 1048576) {
|
|
387
468
|
throw new Error(`fs.readFile blocked: file exceeds 1 MB limit (${data.byteLength} bytes)`);
|
|
388
469
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SandboxedToolForge.js","sourceRoot":"","sources":["../../../src/cognition/emergent/SandboxedToolForge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SandboxedToolForge.js","sourceRoot":"","sources":["../../../src/cognition/emergent/SandboxedToolForge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/agentos",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.26",
|
|
4
4
|
"description": "AgentOS: open-source TypeScript framework for autonomous AI agents. Unified graph orchestration, cognitive memory, runtime tool forging, multi-tier guardrails, voice pipeline, and 11 LLM providers.",
|
|
5
5
|
"homepage": "https://agentos.sh",
|
|
6
6
|
"repository": {
|