@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.
Files changed (191) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/client.d.mts +3 -3
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +3 -3
  5. package/client.d.ts.map +1 -1
  6. package/client.js +1 -1
  7. package/client.js.map +1 -1
  8. package/client.mjs +1 -1
  9. package/client.mjs.map +1 -1
  10. package/internal/constants.d.mts.map +1 -1
  11. package/internal/constants.d.ts.map +1 -1
  12. package/internal/constants.js +0 -5
  13. package/internal/constants.js.map +1 -1
  14. package/internal/constants.mjs +0 -5
  15. package/internal/constants.mjs.map +1 -1
  16. package/lib/BetaMessageStream.d.mts.map +1 -1
  17. package/lib/BetaMessageStream.d.ts.map +1 -1
  18. package/lib/BetaMessageStream.js +12 -5
  19. package/lib/BetaMessageStream.js.map +1 -1
  20. package/lib/BetaMessageStream.mjs +12 -5
  21. package/lib/BetaMessageStream.mjs.map +1 -1
  22. package/lib/MessageStream.d.mts.map +1 -1
  23. package/lib/MessageStream.d.ts.map +1 -1
  24. package/lib/MessageStream.js +9 -4
  25. package/lib/MessageStream.js.map +1 -1
  26. package/lib/MessageStream.mjs +9 -4
  27. package/lib/MessageStream.mjs.map +1 -1
  28. package/lib/environments/worker.d.mts.map +1 -1
  29. package/lib/environments/worker.d.ts.map +1 -1
  30. package/lib/environments/worker.js +29 -3
  31. package/lib/environments/worker.js.map +1 -1
  32. package/lib/environments/worker.mjs +29 -3
  33. package/lib/environments/worker.mjs.map +1 -1
  34. package/lib/sessions/accumulate.js +1 -0
  35. package/lib/sessions/accumulate.js.map +1 -1
  36. package/lib/sessions/accumulate.mjs +1 -0
  37. package/lib/sessions/accumulate.mjs.map +1 -1
  38. package/lib/tools/BetaToolRunner.d.mts.map +1 -1
  39. package/lib/tools/BetaToolRunner.d.ts.map +1 -1
  40. package/lib/tools/BetaToolRunner.js +11 -0
  41. package/lib/tools/BetaToolRunner.js.map +1 -1
  42. package/lib/tools/BetaToolRunner.mjs +11 -0
  43. package/lib/tools/BetaToolRunner.mjs.map +1 -1
  44. package/package.json +9 -15
  45. package/resources/beta/agents/agents.d.mts +25 -3
  46. package/resources/beta/agents/agents.d.mts.map +1 -1
  47. package/resources/beta/agents/agents.d.ts +25 -3
  48. package/resources/beta/agents/agents.d.ts.map +1 -1
  49. package/resources/beta/agents/agents.js.map +1 -1
  50. package/resources/beta/agents/agents.mjs.map +1 -1
  51. package/resources/beta/agents/index.d.mts +1 -1
  52. package/resources/beta/agents/index.d.mts.map +1 -1
  53. package/resources/beta/agents/index.d.ts +1 -1
  54. package/resources/beta/agents/index.d.ts.map +1 -1
  55. package/resources/beta/agents/index.js.map +1 -1
  56. package/resources/beta/agents/index.mjs.map +1 -1
  57. package/resources/beta/beta.d.mts +28 -10
  58. package/resources/beta/beta.d.mts.map +1 -1
  59. package/resources/beta/beta.d.ts +28 -10
  60. package/resources/beta/beta.d.ts.map +1 -1
  61. package/resources/beta/beta.js.map +1 -1
  62. package/resources/beta/beta.mjs.map +1 -1
  63. package/resources/beta/deployments.d.mts +16 -1
  64. package/resources/beta/deployments.d.mts.map +1 -1
  65. package/resources/beta/deployments.d.ts +16 -1
  66. package/resources/beta/deployments.d.ts.map +1 -1
  67. package/resources/beta/dreams.d.mts +46 -6
  68. package/resources/beta/dreams.d.mts.map +1 -1
  69. package/resources/beta/dreams.d.ts +46 -6
  70. package/resources/beta/dreams.d.ts.map +1 -1
  71. package/resources/beta/index.d.mts +5 -5
  72. package/resources/beta/index.d.mts.map +1 -1
  73. package/resources/beta/index.d.ts +5 -5
  74. package/resources/beta/index.d.ts.map +1 -1
  75. package/resources/beta/index.js.map +1 -1
  76. package/resources/beta/index.mjs.map +1 -1
  77. package/resources/beta/messages/messages.d.mts +51 -0
  78. package/resources/beta/messages/messages.d.mts.map +1 -1
  79. package/resources/beta/messages/messages.d.ts +51 -0
  80. package/resources/beta/messages/messages.d.ts.map +1 -1
  81. package/resources/beta/messages/messages.js +2 -23
  82. package/resources/beta/messages/messages.js.map +1 -1
  83. package/resources/beta/messages/messages.mjs +2 -23
  84. package/resources/beta/messages/messages.mjs.map +1 -1
  85. package/resources/beta/sessions/events.d.mts +60 -10
  86. package/resources/beta/sessions/events.d.mts.map +1 -1
  87. package/resources/beta/sessions/events.d.ts +60 -10
  88. package/resources/beta/sessions/events.d.ts.map +1 -1
  89. package/resources/beta/sessions/events.js.map +1 -1
  90. package/resources/beta/sessions/events.mjs.map +1 -1
  91. package/resources/beta/sessions/index.d.mts +2 -2
  92. package/resources/beta/sessions/index.d.mts.map +1 -1
  93. package/resources/beta/sessions/index.d.ts +2 -2
  94. package/resources/beta/sessions/index.d.ts.map +1 -1
  95. package/resources/beta/sessions/index.js.map +1 -1
  96. package/resources/beta/sessions/index.mjs.map +1 -1
  97. package/resources/beta/sessions/sessions.d.mts +101 -6
  98. package/resources/beta/sessions/sessions.d.mts.map +1 -1
  99. package/resources/beta/sessions/sessions.d.ts +101 -6
  100. package/resources/beta/sessions/sessions.d.ts.map +1 -1
  101. package/resources/beta/sessions/sessions.js.map +1 -1
  102. package/resources/beta/sessions/sessions.mjs.map +1 -1
  103. package/resources/beta/sessions/threads/threads.d.mts +17 -5
  104. package/resources/beta/sessions/threads/threads.d.mts.map +1 -1
  105. package/resources/beta/sessions/threads/threads.d.ts +17 -5
  106. package/resources/beta/sessions/threads/threads.d.ts.map +1 -1
  107. package/resources/beta/sessions/threads/threads.js.map +1 -1
  108. package/resources/beta/sessions/threads/threads.mjs.map +1 -1
  109. package/resources/beta/user-profiles.d.mts +5 -5
  110. package/resources/beta/user-profiles.d.ts +5 -5
  111. package/resources/beta/webhooks.d.mts +11 -2
  112. package/resources/beta/webhooks.d.mts.map +1 -1
  113. package/resources/beta/webhooks.d.ts +11 -2
  114. package/resources/beta/webhooks.d.ts.map +1 -1
  115. package/resources/index.d.mts +1 -1
  116. package/resources/index.d.mts.map +1 -1
  117. package/resources/index.d.ts +1 -1
  118. package/resources/index.d.ts.map +1 -1
  119. package/resources/index.js.map +1 -1
  120. package/resources/index.mjs.map +1 -1
  121. package/resources/messages/messages.d.mts +52 -1
  122. package/resources/messages/messages.d.mts.map +1 -1
  123. package/resources/messages/messages.d.ts +52 -1
  124. package/resources/messages/messages.d.ts.map +1 -1
  125. package/resources/messages/messages.js +2 -23
  126. package/resources/messages/messages.js.map +1 -1
  127. package/resources/messages/messages.mjs +2 -23
  128. package/resources/messages/messages.mjs.map +1 -1
  129. package/src/client.ts +6 -2
  130. package/src/internal/constants.ts +0 -5
  131. package/src/lib/BetaMessageStream.ts +15 -5
  132. package/src/lib/MessageStream.ts +11 -4
  133. package/src/lib/environments/worker.ts +28 -3
  134. package/src/lib/sessions/accumulate.ts +1 -0
  135. package/src/lib/tools/BetaToolRunner.ts +11 -0
  136. package/src/resources/beta/agents/agents.ts +29 -2
  137. package/src/resources/beta/agents/index.ts +1 -0
  138. package/src/resources/beta/beta.ts +43 -1
  139. package/src/resources/beta/deployments.ts +19 -0
  140. package/src/resources/beta/dreams.ts +54 -5
  141. package/src/resources/beta/index.ts +11 -0
  142. package/src/resources/beta/messages/messages.ts +53 -23
  143. package/src/resources/beta/sessions/events.ts +95 -9
  144. package/src/resources/beta/sessions/index.ts +7 -0
  145. package/src/resources/beta/sessions/sessions.ts +127 -3
  146. package/src/resources/beta/sessions/threads/threads.ts +21 -5
  147. package/src/resources/beta/user-profiles.ts +5 -5
  148. package/src/resources/beta/webhooks.ts +16 -1
  149. package/src/resources/index.ts +2 -0
  150. package/src/resources/messages/messages.ts +53 -25
  151. package/src/tools/agent-toolset/fs-util.ts +43 -23
  152. package/src/tools/agent-toolset/node.browser.ts +14 -0
  153. package/src/tools/agent-toolset/node.ts +20 -9
  154. package/src/tools/agent-toolset/skills.ts +127 -31
  155. package/src/version.ts +1 -1
  156. package/tools/agent-toolset/fs-util.d.mts +14 -2
  157. package/tools/agent-toolset/fs-util.d.mts.map +1 -1
  158. package/tools/agent-toolset/fs-util.d.ts +14 -2
  159. package/tools/agent-toolset/fs-util.d.ts.map +1 -1
  160. package/tools/agent-toolset/fs-util.js +46 -24
  161. package/tools/agent-toolset/fs-util.js.map +1 -1
  162. package/tools/agent-toolset/fs-util.mjs +45 -24
  163. package/tools/agent-toolset/fs-util.mjs.map +1 -1
  164. package/tools/agent-toolset/node.browser.d.mts +9 -0
  165. package/tools/agent-toolset/node.browser.d.mts.map +1 -1
  166. package/tools/agent-toolset/node.browser.d.ts +9 -0
  167. package/tools/agent-toolset/node.browser.d.ts.map +1 -1
  168. package/tools/agent-toolset/node.browser.js +13 -1
  169. package/tools/agent-toolset/node.browser.js.map +1 -1
  170. package/tools/agent-toolset/node.browser.mjs +11 -0
  171. package/tools/agent-toolset/node.browser.mjs.map +1 -1
  172. package/tools/agent-toolset/node.d.mts +9 -0
  173. package/tools/agent-toolset/node.d.mts.map +1 -1
  174. package/tools/agent-toolset/node.d.ts +9 -0
  175. package/tools/agent-toolset/node.d.ts.map +1 -1
  176. package/tools/agent-toolset/node.js +19 -7
  177. package/tools/agent-toolset/node.js.map +1 -1
  178. package/tools/agent-toolset/node.mjs +17 -6
  179. package/tools/agent-toolset/node.mjs.map +1 -1
  180. package/tools/agent-toolset/skills.d.mts +26 -3
  181. package/tools/agent-toolset/skills.d.mts.map +1 -1
  182. package/tools/agent-toolset/skills.d.ts +26 -3
  183. package/tools/agent-toolset/skills.d.ts.map +1 -1
  184. package/tools/agent-toolset/skills.js +114 -29
  185. package/tools/agent-toolset/skills.js.map +1 -1
  186. package/tools/agent-toolset/skills.mjs +113 -30
  187. package/tools/agent-toolset/skills.mjs.map +1 -1
  188. package/version.d.mts +1 -1
  189. package/version.d.ts +1 -1
  190. package/version.js +1 -1
  191. 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). Falls back to
47
- * the raw error message for codes we don't special-case.
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;AAWtC;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkC/D;AAED;;;;;;;;;;;;;;GAcG;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,CAUjB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBjE"}
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 = false;
62
+ catch (realpathErr) {
63
+ let isLink;
50
64
  try {
51
65
  isLink = (await fs.lstat(prefix)).isSymbolicLink();
52
66
  }
53
- catch {
54
- /* prefix truly doesn't exist (ENOENT) — fall through and walk up */
55
- }
56
- if (isLink) {
57
- // Resolve the symlink ourselves and retry; `tail` (the part below it)
58
- // still applies to the link's target. The hop cap matches Linux
59
- // MAXSYMLINKS — the same threshold at which `realpath` itself would
60
- // have returned ELOOP — so a cycle of unresolvable links terminates.
61
- if (++hops > 40) {
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
- const parent = path.dirname(prefix);
68
- if (parent === prefix)
69
- return abs; // walked past the FS root without a hit
70
- tail.push(path.basename(prefix));
71
- prefix = parent;
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
- const real = await canonicalize(abs);
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). Falls back to
132
- * the raw error message for codes we don't special-case.
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?.code;
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}: ${err instanceof Error ? err.message : String(err)}`;
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":"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"}
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 = false;
53
+ catch (realpathErr) {
54
+ let isLink;
42
55
  try {
43
56
  isLink = (await fs.lstat(prefix)).isSymbolicLink();
44
57
  }
45
- catch {
46
- /* prefix truly doesn't exist (ENOENT) — fall through and walk up */
47
- }
48
- if (isLink) {
49
- // Resolve the symlink ourselves and retry; `tail` (the part below it)
50
- // still applies to the link's target. The hop cap matches Linux
51
- // MAXSYMLINKS — the same threshold at which `realpath` itself would
52
- // have returned ELOOP — so a cycle of unresolvable links terminates.
53
- if (++hops > 40) {
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
- const parent = path.dirname(prefix);
60
- if (parent === prefix)
61
- return abs; // walked past the FS root without a hit
62
- tail.push(path.basename(prefix));
63
- prefix = parent;
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
- const real = await canonicalize(abs);
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). Falls back to
124
- * the raw error message for codes we don't special-case.
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?.code;
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}: ${err instanceof Error ? err.message : String(err)}`;
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":"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"}
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;AAGH,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,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"}
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;AAGH,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,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"}
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;AAuBD,oCAEC;AAED,oCAEC;AAED,sCAEC;AAED,oCAEC;AAED,oCAEC;AAED,oCAEC;AA1ED,+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,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"}
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;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,6CAAyC;AAMzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAiB;AA+BjF;;;;;;;;;;;;;;;;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;IAkEhD,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"}
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;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,4CAAyC;AAMzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAiB;AA+BjF;;;;;;;;;;;;;;;;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;IAkEhD,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"}
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
- if (signal?.aborted) {
193
- throw new error_1.AnthropicError('bash command aborted');
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 error_1.AnthropicError(`bash command timed out after ${timeoutMs}ms`)), timeoutMs);
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(new error_1.AnthropicError('bash command aborted'));
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]');