@anthropic-ai/sdk 0.115.0 → 0.117.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.
- package/CHANGELOG.md +64 -0
- package/client.d.mts +3 -3
- package/client.d.mts.map +1 -1
- package/client.d.ts +3 -3
- package/client.d.ts.map +1 -1
- package/client.js +1 -1
- package/client.js.map +1 -1
- package/client.mjs +1 -1
- package/client.mjs.map +1 -1
- package/internal/constants.d.mts.map +1 -1
- package/internal/constants.d.ts.map +1 -1
- package/internal/constants.js +0 -5
- package/internal/constants.js.map +1 -1
- package/internal/constants.mjs +0 -5
- package/internal/constants.mjs.map +1 -1
- package/lib/BetaMessageStream.d.mts.map +1 -1
- package/lib/BetaMessageStream.d.ts.map +1 -1
- package/lib/BetaMessageStream.js +12 -5
- package/lib/BetaMessageStream.js.map +1 -1
- package/lib/BetaMessageStream.mjs +12 -5
- package/lib/BetaMessageStream.mjs.map +1 -1
- package/lib/MessageStream.d.mts.map +1 -1
- package/lib/MessageStream.d.ts.map +1 -1
- package/lib/MessageStream.js +9 -4
- package/lib/MessageStream.js.map +1 -1
- package/lib/MessageStream.mjs +9 -4
- package/lib/MessageStream.mjs.map +1 -1
- package/lib/environments/worker.d.mts.map +1 -1
- package/lib/environments/worker.d.ts.map +1 -1
- package/lib/environments/worker.js +29 -3
- package/lib/environments/worker.js.map +1 -1
- package/lib/environments/worker.mjs +29 -3
- package/lib/environments/worker.mjs.map +1 -1
- package/lib/sessions/accumulate.js +1 -0
- package/lib/sessions/accumulate.js.map +1 -1
- package/lib/sessions/accumulate.mjs +1 -0
- package/lib/sessions/accumulate.mjs.map +1 -1
- package/lib/tools/BetaToolRunner.d.mts.map +1 -1
- package/lib/tools/BetaToolRunner.d.ts.map +1 -1
- package/lib/tools/BetaToolRunner.js +11 -0
- package/lib/tools/BetaToolRunner.js.map +1 -1
- package/lib/tools/BetaToolRunner.mjs +11 -0
- package/lib/tools/BetaToolRunner.mjs.map +1 -1
- package/package.json +9 -15
- package/resources/beta/agents/agents.d.mts +25 -3
- package/resources/beta/agents/agents.d.mts.map +1 -1
- package/resources/beta/agents/agents.d.ts +25 -3
- package/resources/beta/agents/agents.d.ts.map +1 -1
- package/resources/beta/agents/agents.js.map +1 -1
- package/resources/beta/agents/agents.mjs.map +1 -1
- package/resources/beta/agents/index.d.mts +1 -1
- package/resources/beta/agents/index.d.mts.map +1 -1
- package/resources/beta/agents/index.d.ts +1 -1
- package/resources/beta/agents/index.d.ts.map +1 -1
- package/resources/beta/agents/index.js.map +1 -1
- package/resources/beta/agents/index.mjs.map +1 -1
- package/resources/beta/beta.d.mts +28 -10
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +28 -10
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/deployments.d.mts +16 -1
- package/resources/beta/deployments.d.mts.map +1 -1
- package/resources/beta/deployments.d.ts +16 -1
- package/resources/beta/deployments.d.ts.map +1 -1
- package/resources/beta/dreams.d.mts +46 -6
- package/resources/beta/dreams.d.mts.map +1 -1
- package/resources/beta/dreams.d.ts +46 -6
- package/resources/beta/dreams.d.ts.map +1 -1
- package/resources/beta/index.d.mts +5 -5
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +5 -5
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/messages/messages.d.mts +51 -0
- package/resources/beta/messages/messages.d.mts.map +1 -1
- package/resources/beta/messages/messages.d.ts +51 -0
- package/resources/beta/messages/messages.d.ts.map +1 -1
- package/resources/beta/messages/messages.js +2 -23
- package/resources/beta/messages/messages.js.map +1 -1
- package/resources/beta/messages/messages.mjs +2 -23
- package/resources/beta/messages/messages.mjs.map +1 -1
- package/resources/beta/sessions/events.d.mts +60 -10
- package/resources/beta/sessions/events.d.mts.map +1 -1
- package/resources/beta/sessions/events.d.ts +60 -10
- package/resources/beta/sessions/events.d.ts.map +1 -1
- package/resources/beta/sessions/events.js.map +1 -1
- package/resources/beta/sessions/events.mjs.map +1 -1
- package/resources/beta/sessions/index.d.mts +2 -2
- package/resources/beta/sessions/index.d.mts.map +1 -1
- package/resources/beta/sessions/index.d.ts +2 -2
- package/resources/beta/sessions/index.d.ts.map +1 -1
- package/resources/beta/sessions/index.js.map +1 -1
- package/resources/beta/sessions/index.mjs.map +1 -1
- package/resources/beta/sessions/sessions.d.mts +101 -6
- package/resources/beta/sessions/sessions.d.mts.map +1 -1
- package/resources/beta/sessions/sessions.d.ts +101 -6
- package/resources/beta/sessions/sessions.d.ts.map +1 -1
- package/resources/beta/sessions/sessions.js.map +1 -1
- package/resources/beta/sessions/sessions.mjs.map +1 -1
- package/resources/beta/sessions/threads/threads.d.mts +17 -5
- package/resources/beta/sessions/threads/threads.d.mts.map +1 -1
- package/resources/beta/sessions/threads/threads.d.ts +17 -5
- package/resources/beta/sessions/threads/threads.d.ts.map +1 -1
- package/resources/beta/sessions/threads/threads.js.map +1 -1
- package/resources/beta/sessions/threads/threads.mjs.map +1 -1
- package/resources/beta/user-profiles.d.mts +5 -5
- package/resources/beta/user-profiles.d.ts +5 -5
- package/resources/beta/webhooks.d.mts +11 -2
- package/resources/beta/webhooks.d.mts.map +1 -1
- package/resources/beta/webhooks.d.ts +11 -2
- package/resources/beta/webhooks.d.ts.map +1 -1
- package/resources/index.d.mts +1 -1
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +1 -1
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs.map +1 -1
- package/resources/messages/messages.d.mts +52 -1
- package/resources/messages/messages.d.mts.map +1 -1
- package/resources/messages/messages.d.ts +52 -1
- package/resources/messages/messages.d.ts.map +1 -1
- package/resources/messages/messages.js +2 -23
- package/resources/messages/messages.js.map +1 -1
- package/resources/messages/messages.mjs +2 -23
- package/resources/messages/messages.mjs.map +1 -1
- package/src/client.ts +6 -2
- package/src/internal/constants.ts +0 -5
- package/src/lib/BetaMessageStream.ts +15 -5
- package/src/lib/MessageStream.ts +11 -4
- package/src/lib/environments/worker.ts +28 -3
- package/src/lib/sessions/accumulate.ts +1 -0
- package/src/lib/tools/BetaToolRunner.ts +11 -0
- package/src/resources/beta/agents/agents.ts +29 -2
- package/src/resources/beta/agents/index.ts +1 -0
- package/src/resources/beta/beta.ts +43 -1
- package/src/resources/beta/deployments.ts +19 -0
- package/src/resources/beta/dreams.ts +54 -5
- package/src/resources/beta/index.ts +11 -0
- package/src/resources/beta/messages/messages.ts +53 -23
- package/src/resources/beta/sessions/events.ts +95 -9
- package/src/resources/beta/sessions/index.ts +7 -0
- package/src/resources/beta/sessions/sessions.ts +127 -3
- package/src/resources/beta/sessions/threads/threads.ts +21 -5
- package/src/resources/beta/user-profiles.ts +5 -5
- package/src/resources/beta/webhooks.ts +16 -1
- package/src/resources/index.ts +2 -0
- package/src/resources/messages/messages.ts +53 -25
- package/src/tools/agent-toolset/fs-util.ts +43 -23
- package/src/tools/agent-toolset/node.browser.ts +14 -0
- package/src/tools/agent-toolset/node.ts +20 -9
- package/src/tools/agent-toolset/skills.ts +127 -31
- package/src/version.ts +1 -1
- package/tools/agent-toolset/fs-util.d.mts +14 -2
- package/tools/agent-toolset/fs-util.d.mts.map +1 -1
- package/tools/agent-toolset/fs-util.d.ts +14 -2
- package/tools/agent-toolset/fs-util.d.ts.map +1 -1
- package/tools/agent-toolset/fs-util.js +46 -24
- package/tools/agent-toolset/fs-util.js.map +1 -1
- package/tools/agent-toolset/fs-util.mjs +45 -24
- package/tools/agent-toolset/fs-util.mjs.map +1 -1
- package/tools/agent-toolset/node.browser.d.mts +9 -0
- package/tools/agent-toolset/node.browser.d.mts.map +1 -1
- package/tools/agent-toolset/node.browser.d.ts +9 -0
- package/tools/agent-toolset/node.browser.d.ts.map +1 -1
- package/tools/agent-toolset/node.browser.js +13 -1
- package/tools/agent-toolset/node.browser.js.map +1 -1
- package/tools/agent-toolset/node.browser.mjs +11 -0
- package/tools/agent-toolset/node.browser.mjs.map +1 -1
- package/tools/agent-toolset/node.d.mts +9 -0
- package/tools/agent-toolset/node.d.mts.map +1 -1
- package/tools/agent-toolset/node.d.ts +9 -0
- package/tools/agent-toolset/node.d.ts.map +1 -1
- package/tools/agent-toolset/node.js +19 -7
- package/tools/agent-toolset/node.js.map +1 -1
- package/tools/agent-toolset/node.mjs +17 -6
- package/tools/agent-toolset/node.mjs.map +1 -1
- package/tools/agent-toolset/skills.d.mts +26 -3
- package/tools/agent-toolset/skills.d.mts.map +1 -1
- package/tools/agent-toolset/skills.d.ts +26 -3
- package/tools/agent-toolset/skills.d.ts.map +1 -1
- package/tools/agent-toolset/skills.js +114 -29
- package/tools/agent-toolset/skills.js.map +1 -1
- package/tools/agent-toolset/skills.mjs +113 -30
- package/tools/agent-toolset/skills.mjs.map +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -8,12 +8,20 @@
|
|
|
8
8
|
export declare const DIR_CREATE_MODE = 493;
|
|
9
9
|
/** Mode for files the file tools create. */
|
|
10
10
|
export declare const FILE_CREATE_MODE = 420;
|
|
11
|
+
/** The `code` of a Node system error, or `undefined` for anything else. */
|
|
12
|
+
export declare function errnoCode(err: unknown): string | undefined;
|
|
11
13
|
/**
|
|
12
14
|
* Fully resolve `abs`: `realpath` the longest existing ancestor and re-append
|
|
13
15
|
* the rest, but never re-append a component that is itself a symlink — read the
|
|
14
16
|
* link and continue from its target instead. This handles paths being created
|
|
15
17
|
* (write/edit) without letting a symlink leaf (e.g. a dangling one pointing
|
|
16
18
|
* outside a confinement root) slip through unresolved.
|
|
19
|
+
*
|
|
20
|
+
* Returns a symlink-free path or throws an errno-carrying error (`ELOOP` for a
|
|
21
|
+
* cycle or more than {@link MAX_SYMLINK_HOPS} links, the `lstat`/`realpath`
|
|
22
|
+
* error for an unreadable component); it never returns `abs` unresolved. Only
|
|
23
|
+
* symlink hops count against the cap, so any depth of not-yet-existing
|
|
24
|
+
* directories still resolves.
|
|
17
25
|
*/
|
|
18
26
|
export declare function canonicalize(abs: string): Promise<string>;
|
|
19
27
|
/**
|
|
@@ -25,6 +33,9 @@ export declare function canonicalize(abs: string): Promise<string>;
|
|
|
25
33
|
* leaf, even a dangling one) is resolved before the confinement check, and the
|
|
26
34
|
* resolved path is what the caller then operates on, so a symlink inside `root`
|
|
27
35
|
* that points outside it can neither pass the check nor be followed afterwards.
|
|
36
|
+
* `..` is collapsed lexically before any symlink is followed. A path that cannot
|
|
37
|
+
* be resolved (symlink loop, unreadable component) is rejected with a
|
|
38
|
+
* `ToolError` naming `p`, never the host's absolute path.
|
|
28
39
|
*
|
|
29
40
|
* Residual TOCTOU: a component could still be swapped for a symlink between this
|
|
30
41
|
* call and the eventual `fs` operation. Closing that fully needs per-component
|
|
@@ -43,8 +54,9 @@ export declare function atomicWriteFile(targetPath: string, content: string): Pr
|
|
|
43
54
|
/**
|
|
44
55
|
* Map a thrown filesystem error to a consistent, language-independent message,
|
|
45
56
|
* so the model sees the same wording regardless of the runtime (Node's raw
|
|
46
|
-
* `ENOENT: no such file...` text would otherwise leak through).
|
|
47
|
-
*
|
|
57
|
+
* `ENOENT: no such file...` text would otherwise leak through). Codes we don't
|
|
58
|
+
* special-case render as the bare code, never Node's message, which embeds the
|
|
59
|
+
* host's absolute path.
|
|
48
60
|
*/
|
|
49
61
|
export declare function fsErrorMessage(err: unknown, file: string): string;
|
|
50
62
|
//# sourceMappingURL=fs-util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-util.d.ts","sourceRoot":"","sources":["../../src/tools/agent-toolset/fs-util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,uFAAuF;AACvF,eAAO,MAAM,eAAe,MAAQ,CAAC;AACrC,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,MAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"fs-util.d.ts","sourceRoot":"","sources":["../../src/tools/agent-toolset/fs-util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,uFAAuF;AACvF,eAAO,MAAM,eAAe,MAAQ,CAAC;AACrC,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,MAAQ,CAAC;AActC,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B/D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBjE"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.FILE_CREATE_MODE = exports.DIR_CREATE_MODE = void 0;
|
|
10
|
+
exports.errnoCode = errnoCode;
|
|
10
11
|
exports.canonicalize = canonicalize;
|
|
11
12
|
exports.confineToRoot = confineToRoot;
|
|
12
13
|
exports.atomicWriteFile = atomicWriteFile;
|
|
@@ -29,12 +30,25 @@ async function realpathOrSelf(p) {
|
|
|
29
30
|
return p;
|
|
30
31
|
}
|
|
31
32
|
}
|
|
33
|
+
/** Matches Linux MAXSYMLINKS, the threshold at which `realpath` itself reports ELOOP. */
|
|
34
|
+
const MAX_SYMLINK_HOPS = 40;
|
|
35
|
+
/** The `code` of a Node system error, or `undefined` for anything else. */
|
|
36
|
+
function errnoCode(err) {
|
|
37
|
+
const code = err?.code;
|
|
38
|
+
return typeof code === 'string' ? code : undefined;
|
|
39
|
+
}
|
|
32
40
|
/**
|
|
33
41
|
* Fully resolve `abs`: `realpath` the longest existing ancestor and re-append
|
|
34
42
|
* the rest, but never re-append a component that is itself a symlink — read the
|
|
35
43
|
* link and continue from its target instead. This handles paths being created
|
|
36
44
|
* (write/edit) without letting a symlink leaf (e.g. a dangling one pointing
|
|
37
45
|
* outside a confinement root) slip through unresolved.
|
|
46
|
+
*
|
|
47
|
+
* Returns a symlink-free path or throws an errno-carrying error (`ELOOP` for a
|
|
48
|
+
* cycle or more than {@link MAX_SYMLINK_HOPS} links, the `lstat`/`realpath`
|
|
49
|
+
* error for an unreadable component); it never returns `abs` unresolved. Only
|
|
50
|
+
* symlink hops count against the cap, so any depth of not-yet-existing
|
|
51
|
+
* directories still resolves.
|
|
38
52
|
*/
|
|
39
53
|
async function canonicalize(abs) {
|
|
40
54
|
const tail = [];
|
|
@@ -45,30 +59,28 @@ async function canonicalize(abs) {
|
|
|
45
59
|
try {
|
|
46
60
|
real = await fs.realpath(prefix);
|
|
47
61
|
}
|
|
48
|
-
catch {
|
|
49
|
-
let isLink
|
|
62
|
+
catch (realpathErr) {
|
|
63
|
+
let isLink;
|
|
50
64
|
try {
|
|
51
65
|
isLink = (await fs.lstat(prefix)).isSymbolicLink();
|
|
52
66
|
}
|
|
53
|
-
catch {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
throw new ToolError_1.ToolError(`path ${JSON.stringify(abs)} has too many levels of symbolic links`);
|
|
63
|
-
}
|
|
64
|
-
prefix = path.resolve(path.dirname(prefix), await fs.readlink(prefix));
|
|
67
|
+
catch (lstatErr) {
|
|
68
|
+
const code = errnoCode(lstatErr);
|
|
69
|
+
if (code !== 'ENOENT' && code !== 'ENOTDIR')
|
|
70
|
+
throw lstatErr;
|
|
71
|
+
const parent = path.dirname(prefix);
|
|
72
|
+
if (parent === prefix)
|
|
73
|
+
throw lstatErr;
|
|
74
|
+
tail.push(path.basename(prefix));
|
|
75
|
+
prefix = parent;
|
|
65
76
|
continue;
|
|
66
77
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
78
|
+
if (!isLink)
|
|
79
|
+
throw realpathErr;
|
|
80
|
+
if (++hops > MAX_SYMLINK_HOPS) {
|
|
81
|
+
throw Object.assign(new Error('too many levels of symbolic links'), { code: 'ELOOP' });
|
|
82
|
+
}
|
|
83
|
+
prefix = path.resolve(path.dirname(prefix), await fs.readlink(prefix));
|
|
72
84
|
continue;
|
|
73
85
|
}
|
|
74
86
|
return tail.length ? path.join(real, ...tail.reverse()) : real;
|
|
@@ -83,6 +95,9 @@ async function canonicalize(abs) {
|
|
|
83
95
|
* leaf, even a dangling one) is resolved before the confinement check, and the
|
|
84
96
|
* resolved path is what the caller then operates on, so a symlink inside `root`
|
|
85
97
|
* that points outside it can neither pass the check nor be followed afterwards.
|
|
98
|
+
* `..` is collapsed lexically before any symlink is followed. A path that cannot
|
|
99
|
+
* be resolved (symlink loop, unreadable component) is rejected with a
|
|
100
|
+
* `ToolError` naming `p`, never the host's absolute path.
|
|
86
101
|
*
|
|
87
102
|
* Residual TOCTOU: a component could still be swapped for a symlink between this
|
|
88
103
|
* call and the eventual `fs` operation. Closing that fully needs per-component
|
|
@@ -95,7 +110,13 @@ async function confineToRoot(root, p, opts) {
|
|
|
95
110
|
const abs = path.resolve(realRoot, p);
|
|
96
111
|
if (allowOutside)
|
|
97
112
|
return abs;
|
|
98
|
-
|
|
113
|
+
let real;
|
|
114
|
+
try {
|
|
115
|
+
real = await canonicalize(abs);
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
throw new ToolError_1.ToolError(fsErrorMessage(err, `path ${JSON.stringify(p)}`));
|
|
119
|
+
}
|
|
99
120
|
if (real !== realRoot && !real.startsWith(realRoot + path.sep)) {
|
|
100
121
|
throw new ToolError_1.ToolError(`path ${JSON.stringify(p)} escapes workdir`);
|
|
101
122
|
}
|
|
@@ -128,11 +149,12 @@ async function atomicWriteFile(targetPath, content) {
|
|
|
128
149
|
/**
|
|
129
150
|
* Map a thrown filesystem error to a consistent, language-independent message,
|
|
130
151
|
* so the model sees the same wording regardless of the runtime (Node's raw
|
|
131
|
-
* `ENOENT: no such file...` text would otherwise leak through).
|
|
132
|
-
*
|
|
152
|
+
* `ENOENT: no such file...` text would otherwise leak through). Codes we don't
|
|
153
|
+
* special-case render as the bare code, never Node's message, which embeds the
|
|
154
|
+
* host's absolute path.
|
|
133
155
|
*/
|
|
134
156
|
function fsErrorMessage(err, file) {
|
|
135
|
-
const code = err
|
|
157
|
+
const code = errnoCode(err);
|
|
136
158
|
switch (code) {
|
|
137
159
|
case 'ENOENT':
|
|
138
160
|
return `${file}: no such file or directory`;
|
|
@@ -153,7 +175,7 @@ function fsErrorMessage(err, file) {
|
|
|
153
175
|
case 'ENFILE':
|
|
154
176
|
return `${file}: too many open files`;
|
|
155
177
|
default:
|
|
156
|
-
return `${file}: ${
|
|
178
|
+
return `${file}: ${code !== undefined ? `i/o error (${code})` : 'i/o error'}`;
|
|
157
179
|
}
|
|
158
180
|
}
|
|
159
181
|
//# sourceMappingURL=fs-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-util.js","sourceRoot":"","sources":["../../src/tools/agent-toolset/fs-util.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"fs-util.js","sourceRoot":"","sources":["../../src/tools/agent-toolset/fs-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,12 +21,25 @@ async function realpathOrSelf(p) {
|
|
|
21
21
|
return p;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
+
/** Matches Linux MAXSYMLINKS, the threshold at which `realpath` itself reports ELOOP. */
|
|
25
|
+
const MAX_SYMLINK_HOPS = 40;
|
|
26
|
+
/** The `code` of a Node system error, or `undefined` for anything else. */
|
|
27
|
+
export function errnoCode(err) {
|
|
28
|
+
const code = err?.code;
|
|
29
|
+
return typeof code === 'string' ? code : undefined;
|
|
30
|
+
}
|
|
24
31
|
/**
|
|
25
32
|
* Fully resolve `abs`: `realpath` the longest existing ancestor and re-append
|
|
26
33
|
* the rest, but never re-append a component that is itself a symlink — read the
|
|
27
34
|
* link and continue from its target instead. This handles paths being created
|
|
28
35
|
* (write/edit) without letting a symlink leaf (e.g. a dangling one pointing
|
|
29
36
|
* outside a confinement root) slip through unresolved.
|
|
37
|
+
*
|
|
38
|
+
* Returns a symlink-free path or throws an errno-carrying error (`ELOOP` for a
|
|
39
|
+
* cycle or more than {@link MAX_SYMLINK_HOPS} links, the `lstat`/`realpath`
|
|
40
|
+
* error for an unreadable component); it never returns `abs` unresolved. Only
|
|
41
|
+
* symlink hops count against the cap, so any depth of not-yet-existing
|
|
42
|
+
* directories still resolves.
|
|
30
43
|
*/
|
|
31
44
|
export async function canonicalize(abs) {
|
|
32
45
|
const tail = [];
|
|
@@ -37,30 +50,28 @@ export async function canonicalize(abs) {
|
|
|
37
50
|
try {
|
|
38
51
|
real = await fs.realpath(prefix);
|
|
39
52
|
}
|
|
40
|
-
catch {
|
|
41
|
-
let isLink
|
|
53
|
+
catch (realpathErr) {
|
|
54
|
+
let isLink;
|
|
42
55
|
try {
|
|
43
56
|
isLink = (await fs.lstat(prefix)).isSymbolicLink();
|
|
44
57
|
}
|
|
45
|
-
catch {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
throw new ToolError(`path ${JSON.stringify(abs)} has too many levels of symbolic links`);
|
|
55
|
-
}
|
|
56
|
-
prefix = path.resolve(path.dirname(prefix), await fs.readlink(prefix));
|
|
58
|
+
catch (lstatErr) {
|
|
59
|
+
const code = errnoCode(lstatErr);
|
|
60
|
+
if (code !== 'ENOENT' && code !== 'ENOTDIR')
|
|
61
|
+
throw lstatErr;
|
|
62
|
+
const parent = path.dirname(prefix);
|
|
63
|
+
if (parent === prefix)
|
|
64
|
+
throw lstatErr;
|
|
65
|
+
tail.push(path.basename(prefix));
|
|
66
|
+
prefix = parent;
|
|
57
67
|
continue;
|
|
58
68
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
if (!isLink)
|
|
70
|
+
throw realpathErr;
|
|
71
|
+
if (++hops > MAX_SYMLINK_HOPS) {
|
|
72
|
+
throw Object.assign(new Error('too many levels of symbolic links'), { code: 'ELOOP' });
|
|
73
|
+
}
|
|
74
|
+
prefix = path.resolve(path.dirname(prefix), await fs.readlink(prefix));
|
|
64
75
|
continue;
|
|
65
76
|
}
|
|
66
77
|
return tail.length ? path.join(real, ...tail.reverse()) : real;
|
|
@@ -75,6 +86,9 @@ export async function canonicalize(abs) {
|
|
|
75
86
|
* leaf, even a dangling one) is resolved before the confinement check, and the
|
|
76
87
|
* resolved path is what the caller then operates on, so a symlink inside `root`
|
|
77
88
|
* that points outside it can neither pass the check nor be followed afterwards.
|
|
89
|
+
* `..` is collapsed lexically before any symlink is followed. A path that cannot
|
|
90
|
+
* be resolved (symlink loop, unreadable component) is rejected with a
|
|
91
|
+
* `ToolError` naming `p`, never the host's absolute path.
|
|
78
92
|
*
|
|
79
93
|
* Residual TOCTOU: a component could still be swapped for a symlink between this
|
|
80
94
|
* call and the eventual `fs` operation. Closing that fully needs per-component
|
|
@@ -87,7 +101,13 @@ export async function confineToRoot(root, p, opts) {
|
|
|
87
101
|
const abs = path.resolve(realRoot, p);
|
|
88
102
|
if (allowOutside)
|
|
89
103
|
return abs;
|
|
90
|
-
|
|
104
|
+
let real;
|
|
105
|
+
try {
|
|
106
|
+
real = await canonicalize(abs);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
throw new ToolError(fsErrorMessage(err, `path ${JSON.stringify(p)}`));
|
|
110
|
+
}
|
|
91
111
|
if (real !== realRoot && !real.startsWith(realRoot + path.sep)) {
|
|
92
112
|
throw new ToolError(`path ${JSON.stringify(p)} escapes workdir`);
|
|
93
113
|
}
|
|
@@ -120,11 +140,12 @@ export async function atomicWriteFile(targetPath, content) {
|
|
|
120
140
|
/**
|
|
121
141
|
* Map a thrown filesystem error to a consistent, language-independent message,
|
|
122
142
|
* so the model sees the same wording regardless of the runtime (Node's raw
|
|
123
|
-
* `ENOENT: no such file...` text would otherwise leak through).
|
|
124
|
-
*
|
|
143
|
+
* `ENOENT: no such file...` text would otherwise leak through). Codes we don't
|
|
144
|
+
* special-case render as the bare code, never Node's message, which embeds the
|
|
145
|
+
* host's absolute path.
|
|
125
146
|
*/
|
|
126
147
|
export function fsErrorMessage(err, file) {
|
|
127
|
-
const code = err
|
|
148
|
+
const code = errnoCode(err);
|
|
128
149
|
switch (code) {
|
|
129
150
|
case 'ENOENT':
|
|
130
151
|
return `${file}: no such file or directory`;
|
|
@@ -145,7 +166,7 @@ export function fsErrorMessage(err, file) {
|
|
|
145
166
|
case 'ENFILE':
|
|
146
167
|
return `${file}: too many open files`;
|
|
147
168
|
default:
|
|
148
|
-
return `${file}: ${
|
|
169
|
+
return `${file}: ${code !== undefined ? `i/o error (${code})` : 'i/o error'}`;
|
|
149
170
|
}
|
|
150
171
|
}
|
|
151
172
|
//# sourceMappingURL=fs-util.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-util.mjs","sourceRoot":"","sources":["../../src/tools/agent-toolset/fs-util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,sCAAkC;AAEtD,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAEtC,0EAA0E;AAC1E,KAAK,UAAU,cAAc,CAAC,CAAS;IACrC,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"fs-util.mjs","sourceRoot":"","sources":["../../src/tools/agent-toolset/fs-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* exports are re-exported from the real module (erased at build time), so
|
|
13
13
|
* type-level usage is unaffected.
|
|
14
14
|
*/
|
|
15
|
+
import { AnthropicError } from "../../core/error.mjs";
|
|
15
16
|
import type { Anthropic } from "../../client.mjs";
|
|
16
17
|
import type { BetaRunnableTool } from "../../lib/tools/BetaRunnableTool.mjs";
|
|
17
18
|
import type { AgentToolContext } from "./node.mjs";
|
|
@@ -21,6 +22,14 @@ export declare function resolveSkillVersion(_client: Anthropic, _skillId: string
|
|
|
21
22
|
export declare function extractSkillArchive(_resp: Response, _dest: string): Promise<void>;
|
|
22
23
|
export declare function betaAgentToolset20260401(_ctx: AgentToolContext): BetaRunnableTool[];
|
|
23
24
|
export declare function resolvePath(_ctx: AgentToolContext, _p: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* A bash command exceeded its `timeoutMs`. Carries the timeout so a caller can
|
|
27
|
+
* tell it apart from an abort without matching on the message text.
|
|
28
|
+
*/
|
|
29
|
+
export declare class BashTimeoutError extends AnthropicError {
|
|
30
|
+
readonly timeoutMs: number;
|
|
31
|
+
constructor(timeoutMs: number);
|
|
32
|
+
}
|
|
24
33
|
export declare class BashSession {
|
|
25
34
|
constructor(_dir: string, _env?: NodeJS.ProcessEnv);
|
|
26
35
|
get closed(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.browser.d.mts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"node.browser.d.mts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,6BAAyB;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAqB;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,6CAAyC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAe;AAE/C,YAAY,EAAE,gBAAgB,EAAE,mBAAe;AAM/C,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAEhF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAEnF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/E;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAK9B;AAED,qBAAa,WAAW;gBACV,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU;IAIlD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAA;KAAO,GAC1E,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAIhD,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* exports are re-exported from the real module (erased at build time), so
|
|
13
13
|
* type-level usage is unaffected.
|
|
14
14
|
*/
|
|
15
|
+
import { AnthropicError } from "../../core/error.js";
|
|
15
16
|
import type { Anthropic } from "../../client.js";
|
|
16
17
|
import type { BetaRunnableTool } from "../../lib/tools/BetaRunnableTool.js";
|
|
17
18
|
import type { AgentToolContext } from "./node.js";
|
|
@@ -21,6 +22,14 @@ export declare function resolveSkillVersion(_client: Anthropic, _skillId: string
|
|
|
21
22
|
export declare function extractSkillArchive(_resp: Response, _dest: string): Promise<void>;
|
|
22
23
|
export declare function betaAgentToolset20260401(_ctx: AgentToolContext): BetaRunnableTool[];
|
|
23
24
|
export declare function resolvePath(_ctx: AgentToolContext, _p: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* A bash command exceeded its `timeoutMs`. Carries the timeout so a caller can
|
|
27
|
+
* tell it apart from an abort without matching on the message text.
|
|
28
|
+
*/
|
|
29
|
+
export declare class BashTimeoutError extends AnthropicError {
|
|
30
|
+
readonly timeoutMs: number;
|
|
31
|
+
constructor(timeoutMs: number);
|
|
32
|
+
}
|
|
24
33
|
export declare class BashSession {
|
|
25
34
|
constructor(_dir: string, _env?: NodeJS.ProcessEnv);
|
|
26
35
|
get closed(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.browser.d.ts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"node.browser.d.ts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAqB;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,4CAAyC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAe;AAE/C,YAAY,EAAE,gBAAgB,EAAE,kBAAe;AAM/C,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAEhF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAEnF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/E;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAK9B;AAED,qBAAa,WAAW;gBACV,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,UAAU;IAIlD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAA;KAAO,GAC1E,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAIhD,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAErE"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* type-level usage is unaffected.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.BashSession = void 0;
|
|
17
|
+
exports.BashSession = exports.BashTimeoutError = void 0;
|
|
18
18
|
exports.setupSkills = setupSkills;
|
|
19
19
|
exports.resolveSkillVersion = resolveSkillVersion;
|
|
20
20
|
exports.extractSkillArchive = extractSkillArchive;
|
|
@@ -45,6 +45,18 @@ function betaAgentToolset20260401(_ctx) {
|
|
|
45
45
|
function resolvePath(_ctx, _p) {
|
|
46
46
|
return nodeOnly('resolvePath');
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* A bash command exceeded its `timeoutMs`. Carries the timeout so a caller can
|
|
50
|
+
* tell it apart from an abort without matching on the message text.
|
|
51
|
+
*/
|
|
52
|
+
class BashTimeoutError extends error_1.AnthropicError {
|
|
53
|
+
constructor(timeoutMs) {
|
|
54
|
+
super(`bash command timed out after ${timeoutMs}ms`);
|
|
55
|
+
this.name = 'BashTimeoutError';
|
|
56
|
+
this.timeoutMs = timeoutMs;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.BashTimeoutError = BashTimeoutError;
|
|
48
60
|
class BashSession {
|
|
49
61
|
constructor(_dir, _env) {
|
|
50
62
|
nodeOnly('BashSession');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.browser.js","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAaH,kCAEC;AAED,kDAEC;AAED,kDAEC;AAED,4DAEC;AAED,kCAEC;
|
|
1
|
+
{"version":3,"file":"node.browser.js","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAaH,kCAEC;AAED,kDAEC;AAED,kDAEC;AAED,4DAEC;AAED,kCAEC;AAqCD,oCAEC;AAED,oCAEC;AAED,sCAEC;AAED,oCAEC;AAED,oCAEC;AAED,oCAEC;AAxFD,+CAAkD;AAOlD,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,IAAI,sBAAc,CAAC,GAAG,IAAI,gDAAgD,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,WAAW,CAAC,IAAsB;IAChD,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAAkB,EAAE,QAAgB,EAAE,QAAgB;IACxF,OAAO,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAe,EAAE,KAAa;IAChE,OAAO,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,wBAAwB,CAAC,IAAsB;IAC7D,OAAO,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,WAAW,CAAC,IAAsB,EAAE,EAAU;IAC5D,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,sBAAc;IAGlD,YAAY,SAAiB;QAC3B,KAAK,CAAC,gCAAgC,SAAS,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,4CAQC;AAED,MAAa,WAAW;IACtB,YAAY,IAAY,EAAE,IAAwB;QAChD,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CACF,QAAgB,EAChB,QAAyE,EAAE;QAE3E,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,KAAK;QACH,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1B,CAAC;CACF;AAnBD,kCAmBC;AAED,SAAgB,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa,CAAC,IAAsB;IAClD,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -31,6 +31,17 @@ export function betaAgentToolset20260401(_ctx) {
|
|
|
31
31
|
export function resolvePath(_ctx, _p) {
|
|
32
32
|
return nodeOnly('resolvePath');
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* A bash command exceeded its `timeoutMs`. Carries the timeout so a caller can
|
|
36
|
+
* tell it apart from an abort without matching on the message text.
|
|
37
|
+
*/
|
|
38
|
+
export class BashTimeoutError extends AnthropicError {
|
|
39
|
+
constructor(timeoutMs) {
|
|
40
|
+
super(`bash command timed out after ${timeoutMs}ms`);
|
|
41
|
+
this.name = 'BashTimeoutError';
|
|
42
|
+
this.timeoutMs = timeoutMs;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
34
45
|
export class BashSession {
|
|
35
46
|
constructor(_dir, _env) {
|
|
36
47
|
nodeOnly('BashSession');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.browser.mjs","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,6BAAyB;AAOlD,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,IAAI,cAAc,CAAC,GAAG,IAAI,gDAAgD,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAsB;IAChD,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAkB,EAAE,QAAgB,EAAE,QAAgB;IACxF,OAAO,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAe,EAAE,KAAa;IAChE,OAAO,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAsB;IAC7D,OAAO,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAsB,EAAE,EAAU;IAC5D,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,OAAO,WAAW;IACtB,YAAY,IAAY,EAAE,IAAwB;QAChD,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CACF,QAAgB,EAChB,QAAyE,EAAE;QAE3E,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,KAAK;QACH,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAsB;IAClD,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"node.browser.mjs","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,6BAAyB;AAOlD,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,IAAI,cAAc,CAAC,GAAG,IAAI,gDAAgD,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAsB;IAChD,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAkB,EAAE,QAAgB,EAAE,QAAgB;IACxF,OAAO,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAe,EAAE,KAAa;IAChE,OAAO,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAsB;IAC7D,OAAO,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAsB,EAAE,EAAU;IAC5D,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAGlD,YAAY,SAAiB;QAC3B,KAAK,CAAC,gCAAgC,SAAS,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACtB,YAAY,IAAY,EAAE,IAAwB;QAChD,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CACF,QAAgB,EAChB,QAAyE,EAAE;QAE3E,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,KAAK;QACH,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAsB;IAClD,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -29,8 +29,17 @@
|
|
|
29
29
|
* {@link AgentToolContext}.
|
|
30
30
|
*/
|
|
31
31
|
import type { Anthropic } from "../../client.mjs";
|
|
32
|
+
import { AnthropicError } from "../../core/error.mjs";
|
|
32
33
|
import type { BetaRunnableTool } from "../../lib/tools/BetaRunnableTool.mjs";
|
|
33
34
|
export { setupSkills, resolveSkillVersion, extractSkillArchive } from "./skills.mjs";
|
|
35
|
+
/**
|
|
36
|
+
* A bash command exceeded its `timeoutMs`. Carries the timeout so a caller can
|
|
37
|
+
* tell it apart from an abort without matching on the message text.
|
|
38
|
+
*/
|
|
39
|
+
export declare class BashTimeoutError extends AnthropicError {
|
|
40
|
+
readonly timeoutMs: number;
|
|
41
|
+
constructor(timeoutMs: number);
|
|
42
|
+
}
|
|
34
43
|
/**
|
|
35
44
|
* Workdir + path-policy for the agent toolset.
|
|
36
45
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.mts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAqB;
|
|
1
|
+
{"version":3,"file":"node.d.mts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAqB;AAC9C,OAAO,EAAE,cAAc,EAAE,6BAAyB;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,6CAAyC;AAMzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAiB;AAYjF;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAK9B;AAqBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CASlF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AA0BD;;;GAGG;AACH,qBAAa,WAAW;;gBASV,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAA+B;IAyBpE,uDAAuD;IACvD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAkBK,IAAI,CACR,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAA;KAAO,GACzE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IA+DhD,KAAK,IAAI,IAAI;CAkBd;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAgEpE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAiDpE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAqBrE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CA8DpE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAgFpE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAmBpE"}
|
|
@@ -29,8 +29,17 @@
|
|
|
29
29
|
* {@link AgentToolContext}.
|
|
30
30
|
*/
|
|
31
31
|
import type { Anthropic } from "../../client.js";
|
|
32
|
+
import { AnthropicError } from "../../core/error.js";
|
|
32
33
|
import type { BetaRunnableTool } from "../../lib/tools/BetaRunnableTool.js";
|
|
33
34
|
export { setupSkills, resolveSkillVersion, extractSkillArchive } from "./skills.js";
|
|
35
|
+
/**
|
|
36
|
+
* A bash command exceeded its `timeoutMs`. Carries the timeout so a caller can
|
|
37
|
+
* tell it apart from an abort without matching on the message text.
|
|
38
|
+
*/
|
|
39
|
+
export declare class BashTimeoutError extends AnthropicError {
|
|
40
|
+
readonly timeoutMs: number;
|
|
41
|
+
constructor(timeoutMs: number);
|
|
42
|
+
}
|
|
34
43
|
/**
|
|
35
44
|
* Workdir + path-policy for the agent toolset.
|
|
36
45
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAqB;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/tools/agent-toolset/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAqB;AAC9C,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,4CAAyC;AAMzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAiB;AAYjF;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,SAAS,EAAE,MAAM;CAK9B;AAqBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CASlF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AA0BD;;;GAGG;AACH,qBAAa,WAAW;;gBASV,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAA+B;IAyBpE,uDAAuD;IACvD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAkBK,IAAI,CACR,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAA;KAAO,GACzE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IA+DhD,KAAK,IAAI,IAAI;CAkBd;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAgEpE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAiDpE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAqBrE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CA8DpE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAgFpE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB,CAmBpE"}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
*/
|
|
32
32
|
var _BashSession_instances, _BashSession_proc, _BashSession_buf, _BashSession_truncated, _BashSession_closed, _BashSession_waiting, _BashSession_append;
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
-
exports.BashSession = exports.extractSkillArchive = exports.resolveSkillVersion = exports.setupSkills = void 0;
|
|
34
|
+
exports.BashSession = exports.BashTimeoutError = exports.extractSkillArchive = exports.resolveSkillVersion = exports.setupSkills = void 0;
|
|
35
35
|
exports.betaAgentToolset20260401 = betaAgentToolset20260401;
|
|
36
36
|
exports.resolvePath = resolvePath;
|
|
37
37
|
exports.betaBashTool = betaBashTool;
|
|
@@ -65,6 +65,18 @@ const DEFAULT_MAX_FILE_BYTES = 256 * 1024;
|
|
|
65
65
|
const GREP_OUTPUT_LIMIT = 100 * 1024;
|
|
66
66
|
const GREP_MAX_LINE_LENGTH = 2000;
|
|
67
67
|
const GLOB_RESULT_LIMIT = 200;
|
|
68
|
+
/**
|
|
69
|
+
* A bash command exceeded its `timeoutMs`. Carries the timeout so a caller can
|
|
70
|
+
* tell it apart from an abort without matching on the message text.
|
|
71
|
+
*/
|
|
72
|
+
class BashTimeoutError extends error_1.AnthropicError {
|
|
73
|
+
constructor(timeoutMs) {
|
|
74
|
+
super(`bash command timed out after ${timeoutMs}ms`);
|
|
75
|
+
this.name = 'BashTimeoutError';
|
|
76
|
+
this.timeoutMs = timeoutMs;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.BashTimeoutError = BashTimeoutError;
|
|
68
80
|
const ANSI_RE = /\x1b\[[0-9;?]*[ -/]*[@-~]/g;
|
|
69
81
|
const fsGlob = fs.glob;
|
|
70
82
|
function resolveMaxBytes(configured) {
|
|
@@ -189,9 +201,9 @@ class BashSession {
|
|
|
189
201
|
}
|
|
190
202
|
const timeoutMs = opts.timeoutMs ?? BASH_DEFAULT_TIMEOUT_MS;
|
|
191
203
|
const signal = opts.signal;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
204
|
+
// Reject with the signal's own reason, so a caller telling a user cancel
|
|
205
|
+
// apart from an `AbortSignal.timeout()` sees the platform's name intact.
|
|
206
|
+
signal?.throwIfAborted();
|
|
195
207
|
tslib_1.__classPrivateFieldSet(this, _BashSession_buf, '', "f");
|
|
196
208
|
tslib_1.__classPrivateFieldSet(this, _BashSession_truncated, false, "f");
|
|
197
209
|
// Per-call nonce so a command that prints a fixed marker can't spoof the
|
|
@@ -215,12 +227,12 @@ class BashSession {
|
|
|
215
227
|
await Promise.race([
|
|
216
228
|
sentinelSeen,
|
|
217
229
|
new Promise((_, reject) => {
|
|
218
|
-
timer = setTimeout(() => reject(new
|
|
230
|
+
timer = setTimeout(() => reject(new BashTimeoutError(timeoutMs)), timeoutMs);
|
|
219
231
|
}),
|
|
220
232
|
new Promise((_, reject) => {
|
|
221
233
|
if (!signal)
|
|
222
234
|
return;
|
|
223
|
-
onAbort = () => reject(
|
|
235
|
+
onAbort = () => reject(signal.reason);
|
|
224
236
|
signal.addEventListener('abort', onAbort, { once: true });
|
|
225
237
|
}),
|
|
226
238
|
]);
|
|
@@ -394,7 +406,7 @@ function betaReadTool(ctx) {
|
|
|
394
406
|
throw e;
|
|
395
407
|
throw new ToolError_1.ToolError(`read: ${(0, fs_util_1.fsErrorMessage)(e, file_path)}`);
|
|
396
408
|
}
|
|
397
|
-
if (!view_range)
|
|
409
|
+
if (!view_range?.length)
|
|
398
410
|
return data;
|
|
399
411
|
if (view_range.length !== 2)
|
|
400
412
|
throw new ToolError_1.ToolError('read: view_range must be [start_line, end_line]');
|