@ainative/cody-sdk 0.1.0

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 (770) hide show
  1. package/.github/logo.svg +3 -0
  2. package/CHANGELOG.md +2345 -0
  3. package/LICENSE +8 -0
  4. package/README.md +45 -0
  5. package/_vendor/partial-json-parser/parser.d.mts +3 -0
  6. package/_vendor/partial-json-parser/parser.d.mts.map +1 -0
  7. package/_vendor/partial-json-parser/parser.d.ts +3 -0
  8. package/_vendor/partial-json-parser/parser.d.ts.map +1 -0
  9. package/_vendor/partial-json-parser/parser.js +226 -0
  10. package/_vendor/partial-json-parser/parser.js.map +1 -0
  11. package/_vendor/partial-json-parser/parser.mjs +223 -0
  12. package/_vendor/partial-json-parser/parser.mjs.map +1 -0
  13. package/ainative.d.mts +32 -0
  14. package/ainative.d.mts.map +1 -0
  15. package/ainative.d.ts +32 -0
  16. package/ainative.d.ts.map +1 -0
  17. package/ainative.js +78 -0
  18. package/ainative.js.map +1 -0
  19. package/ainative.mjs +71 -0
  20. package/ainative.mjs.map +1 -0
  21. package/api-promise.d.mts +2 -0
  22. package/api-promise.d.mts.map +1 -0
  23. package/api-promise.d.ts +2 -0
  24. package/api-promise.d.ts.map +1 -0
  25. package/api-promise.js +6 -0
  26. package/api-promise.js.map +1 -0
  27. package/api-promise.mjs +2 -0
  28. package/api-promise.mjs.map +1 -0
  29. package/bin/cli +53 -0
  30. package/bin/migration-config.json +82 -0
  31. package/client.d.mts +247 -0
  32. package/client.d.mts.map +1 -0
  33. package/client.d.ts +247 -0
  34. package/client.d.ts.map +1 -0
  35. package/client.js +567 -0
  36. package/client.js.map +1 -0
  37. package/client.mjs +562 -0
  38. package/client.mjs.map +1 -0
  39. package/core/api-promise.d.mts +49 -0
  40. package/core/api-promise.d.mts.map +1 -0
  41. package/core/api-promise.d.ts +49 -0
  42. package/core/api-promise.d.ts.map +1 -0
  43. package/core/api-promise.js +76 -0
  44. package/core/api-promise.js.map +1 -0
  45. package/core/api-promise.mjs +72 -0
  46. package/core/api-promise.mjs.map +1 -0
  47. package/core/error.d.mts +50 -0
  48. package/core/error.d.mts.map +1 -0
  49. package/core/error.d.ts +50 -0
  50. package/core/error.d.ts.map +1 -0
  51. package/core/error.js +116 -0
  52. package/core/error.js.map +1 -0
  53. package/core/error.mjs +100 -0
  54. package/core/error.mjs.map +1 -0
  55. package/core/pagination.d.mts +105 -0
  56. package/core/pagination.d.mts.map +1 -0
  57. package/core/pagination.d.ts +105 -0
  58. package/core/pagination.d.ts.map +1 -0
  59. package/core/pagination.js +185 -0
  60. package/core/pagination.js.map +1 -0
  61. package/core/pagination.mjs +177 -0
  62. package/core/pagination.mjs.map +1 -0
  63. package/core/resource.d.mts +6 -0
  64. package/core/resource.d.mts.map +1 -0
  65. package/core/resource.d.ts +6 -0
  66. package/core/resource.d.ts.map +1 -0
  67. package/core/resource.js +11 -0
  68. package/core/resource.js.map +1 -0
  69. package/core/resource.mjs +7 -0
  70. package/core/resource.mjs.map +1 -0
  71. package/core/streaming.d.mts +33 -0
  72. package/core/streaming.d.mts.map +1 -0
  73. package/core/streaming.d.ts +33 -0
  74. package/core/streaming.d.ts.map +1 -0
  75. package/core/streaming.js +290 -0
  76. package/core/streaming.js.map +1 -0
  77. package/core/streaming.mjs +285 -0
  78. package/core/streaming.mjs.map +1 -0
  79. package/core/uploads.d.mts +3 -0
  80. package/core/uploads.d.mts.map +1 -0
  81. package/core/uploads.d.ts +3 -0
  82. package/core/uploads.d.ts.map +1 -0
  83. package/core/uploads.js +6 -0
  84. package/core/uploads.js.map +1 -0
  85. package/core/uploads.mjs +2 -0
  86. package/core/uploads.mjs.map +1 -0
  87. package/error.d.mts +2 -0
  88. package/error.d.mts.map +1 -0
  89. package/error.d.ts +2 -0
  90. package/error.d.ts.map +1 -0
  91. package/error.js +6 -0
  92. package/error.js.map +1 -0
  93. package/error.mjs +2 -0
  94. package/error.mjs.map +1 -0
  95. package/helpers/beta/json-schema.d.mts +31 -0
  96. package/helpers/beta/json-schema.d.mts.map +1 -0
  97. package/helpers/beta/json-schema.d.ts +31 -0
  98. package/helpers/beta/json-schema.d.ts.map +1 -0
  99. package/helpers/beta/json-schema.js +56 -0
  100. package/helpers/beta/json-schema.js.map +1 -0
  101. package/helpers/beta/json-schema.mjs +52 -0
  102. package/helpers/beta/json-schema.mjs.map +1 -0
  103. package/helpers/beta/mcp.d.mts +303 -0
  104. package/helpers/beta/mcp.d.mts.map +1 -0
  105. package/helpers/beta/mcp.d.ts +303 -0
  106. package/helpers/beta/mcp.d.ts.map +1 -0
  107. package/helpers/beta/mcp.js +419 -0
  108. package/helpers/beta/mcp.js.map +1 -0
  109. package/helpers/beta/mcp.mjs +406 -0
  110. package/helpers/beta/mcp.mjs.map +1 -0
  111. package/helpers/beta/memory.d.mts +11 -0
  112. package/helpers/beta/memory.d.mts.map +1 -0
  113. package/helpers/beta/memory.d.ts +11 -0
  114. package/helpers/beta/memory.d.ts.map +1 -0
  115. package/helpers/beta/memory.js +18 -0
  116. package/helpers/beta/memory.js.map +1 -0
  117. package/helpers/beta/memory.mjs +15 -0
  118. package/helpers/beta/memory.mjs.map +1 -0
  119. package/helpers/beta/zod.d.mts +27 -0
  120. package/helpers/beta/zod.d.mts.map +1 -0
  121. package/helpers/beta/zod.d.ts +27 -0
  122. package/helpers/beta/zod.d.ts.map +1 -0
  123. package/helpers/beta/zod.js +57 -0
  124. package/helpers/beta/zod.js.map +1 -0
  125. package/helpers/beta/zod.mjs +52 -0
  126. package/helpers/beta/zod.mjs.map +1 -0
  127. package/helpers/index.d.mts +3 -0
  128. package/helpers/index.d.mts.map +1 -0
  129. package/helpers/index.d.ts +3 -0
  130. package/helpers/index.d.ts.map +1 -0
  131. package/helpers/index.js +8 -0
  132. package/helpers/index.js.map +1 -0
  133. package/helpers/index.mjs +3 -0
  134. package/helpers/index.mjs.map +1 -0
  135. package/helpers/json-schema.d.mts +18 -0
  136. package/helpers/json-schema.d.mts.map +1 -0
  137. package/helpers/json-schema.d.ts +18 -0
  138. package/helpers/json-schema.d.ts.map +1 -0
  139. package/helpers/json-schema.js +37 -0
  140. package/helpers/json-schema.js.map +1 -0
  141. package/helpers/json-schema.mjs +34 -0
  142. package/helpers/json-schema.mjs.map +1 -0
  143. package/helpers/zod.d.mts +13 -0
  144. package/helpers/zod.d.mts.map +1 -0
  145. package/helpers/zod.d.ts +13 -0
  146. package/helpers/zod.d.ts.map +1 -0
  147. package/helpers/zod.js +47 -0
  148. package/helpers/zod.js.map +1 -0
  149. package/helpers/zod.mjs +43 -0
  150. package/helpers/zod.mjs.map +1 -0
  151. package/index.d.mts +9 -0
  152. package/index.d.mts.map +1 -0
  153. package/index.d.ts +9 -0
  154. package/index.d.ts.map +1 -0
  155. package/index.js +42 -0
  156. package/index.js.map +1 -0
  157. package/index.mjs +9 -0
  158. package/index.mjs.map +1 -0
  159. package/internal/builtin-types.d.mts +73 -0
  160. package/internal/builtin-types.d.mts.map +1 -0
  161. package/internal/builtin-types.d.ts +73 -0
  162. package/internal/builtin-types.d.ts.map +1 -0
  163. package/internal/builtin-types.js +4 -0
  164. package/internal/builtin-types.js.map +1 -0
  165. package/internal/builtin-types.mjs +3 -0
  166. package/internal/builtin-types.mjs.map +1 -0
  167. package/internal/constants.d.mts +5 -0
  168. package/internal/constants.d.mts.map +1 -0
  169. package/internal/constants.d.ts +5 -0
  170. package/internal/constants.d.ts.map +1 -0
  171. package/internal/constants.js +18 -0
  172. package/internal/constants.js.map +1 -0
  173. package/internal/constants.mjs +15 -0
  174. package/internal/constants.mjs.map +1 -0
  175. package/internal/decoders/jsonl.d.mts +10 -0
  176. package/internal/decoders/jsonl.d.mts.map +1 -0
  177. package/internal/decoders/jsonl.d.ts +10 -0
  178. package/internal/decoders/jsonl.d.ts.map +1 -0
  179. package/internal/decoders/jsonl.js +39 -0
  180. package/internal/decoders/jsonl.js.map +1 -0
  181. package/internal/decoders/jsonl.mjs +35 -0
  182. package/internal/decoders/jsonl.mjs.map +1 -0
  183. package/internal/decoders/line.d.mts +17 -0
  184. package/internal/decoders/line.d.mts.map +1 -0
  185. package/internal/decoders/line.d.ts +17 -0
  186. package/internal/decoders/line.d.ts.map +1 -0
  187. package/internal/decoders/line.js +113 -0
  188. package/internal/decoders/line.js.map +1 -0
  189. package/internal/decoders/line.mjs +108 -0
  190. package/internal/decoders/line.mjs.map +1 -0
  191. package/internal/detect-platform.d.mts +15 -0
  192. package/internal/detect-platform.d.mts.map +1 -0
  193. package/internal/detect-platform.d.ts +15 -0
  194. package/internal/detect-platform.d.ts.map +1 -0
  195. package/internal/detect-platform.js +162 -0
  196. package/internal/detect-platform.js.map +1 -0
  197. package/internal/detect-platform.mjs +157 -0
  198. package/internal/detect-platform.mjs.map +1 -0
  199. package/internal/errors.d.mts +3 -0
  200. package/internal/errors.d.mts.map +1 -0
  201. package/internal/errors.d.ts +3 -0
  202. package/internal/errors.d.ts.map +1 -0
  203. package/internal/errors.js +41 -0
  204. package/internal/errors.js.map +1 -0
  205. package/internal/errors.mjs +36 -0
  206. package/internal/errors.mjs.map +1 -0
  207. package/internal/headers.d.mts +22 -0
  208. package/internal/headers.d.mts.map +1 -0
  209. package/internal/headers.d.ts +22 -0
  210. package/internal/headers.d.ts.map +1 -0
  211. package/internal/headers.js +79 -0
  212. package/internal/headers.js.map +1 -0
  213. package/internal/headers.mjs +74 -0
  214. package/internal/headers.mjs.map +1 -0
  215. package/internal/parse.d.mts +17 -0
  216. package/internal/parse.d.mts.map +1 -0
  217. package/internal/parse.d.ts +17 -0
  218. package/internal/parse.d.ts.map +1 -0
  219. package/internal/parse.js +60 -0
  220. package/internal/parse.js.map +1 -0
  221. package/internal/parse.mjs +56 -0
  222. package/internal/parse.mjs.map +1 -0
  223. package/internal/request-options.d.mts +77 -0
  224. package/internal/request-options.d.mts.map +1 -0
  225. package/internal/request-options.d.ts +77 -0
  226. package/internal/request-options.d.ts.map +1 -0
  227. package/internal/request-options.js +14 -0
  228. package/internal/request-options.js.map +1 -0
  229. package/internal/request-options.mjs +10 -0
  230. package/internal/request-options.mjs.map +1 -0
  231. package/internal/shim-types.d.mts +17 -0
  232. package/internal/shim-types.d.mts.map +1 -0
  233. package/internal/shim-types.d.ts +17 -0
  234. package/internal/shim-types.d.ts.map +1 -0
  235. package/internal/shim-types.js +4 -0
  236. package/internal/shim-types.js.map +1 -0
  237. package/internal/shim-types.mjs +3 -0
  238. package/internal/shim-types.mjs.map +1 -0
  239. package/internal/shims.d.mts +20 -0
  240. package/internal/shims.d.mts.map +1 -0
  241. package/internal/shims.d.ts +20 -0
  242. package/internal/shims.d.ts.map +1 -0
  243. package/internal/shims.js +92 -0
  244. package/internal/shims.js.map +1 -0
  245. package/internal/shims.mjs +85 -0
  246. package/internal/shims.mjs.map +1 -0
  247. package/internal/stream-utils.d.mts +8 -0
  248. package/internal/stream-utils.d.mts.map +1 -0
  249. package/internal/stream-utils.d.ts +8 -0
  250. package/internal/stream-utils.d.ts.map +1 -0
  251. package/internal/stream-utils.js +38 -0
  252. package/internal/stream-utils.js.map +1 -0
  253. package/internal/stream-utils.mjs +35 -0
  254. package/internal/stream-utils.mjs.map +1 -0
  255. package/internal/to-file.d.mts +45 -0
  256. package/internal/to-file.d.mts.map +1 -0
  257. package/internal/to-file.d.ts +45 -0
  258. package/internal/to-file.d.ts.map +1 -0
  259. package/internal/to-file.js +96 -0
  260. package/internal/to-file.js.map +1 -0
  261. package/internal/to-file.mjs +93 -0
  262. package/internal/to-file.mjs.map +1 -0
  263. package/internal/tslib.js +81 -0
  264. package/internal/tslib.mjs +17 -0
  265. package/internal/types.d.mts +69 -0
  266. package/internal/types.d.mts.map +1 -0
  267. package/internal/types.d.ts +69 -0
  268. package/internal/types.d.ts.map +1 -0
  269. package/internal/types.js +4 -0
  270. package/internal/types.js.map +1 -0
  271. package/internal/types.mjs +3 -0
  272. package/internal/types.mjs.map +1 -0
  273. package/internal/uploads.d.mts +42 -0
  274. package/internal/uploads.d.mts.map +1 -0
  275. package/internal/uploads.d.ts +42 -0
  276. package/internal/uploads.d.ts.map +1 -0
  277. package/internal/uploads.js +145 -0
  278. package/internal/uploads.js.map +1 -0
  279. package/internal/uploads.mjs +135 -0
  280. package/internal/uploads.mjs.map +1 -0
  281. package/internal/utils/base64.d.mts +3 -0
  282. package/internal/utils/base64.d.mts.map +1 -0
  283. package/internal/utils/base64.d.ts +3 -0
  284. package/internal/utils/base64.d.ts.map +1 -0
  285. package/internal/utils/base64.js +38 -0
  286. package/internal/utils/base64.js.map +1 -0
  287. package/internal/utils/base64.mjs +33 -0
  288. package/internal/utils/base64.mjs.map +1 -0
  289. package/internal/utils/bytes.d.mts +4 -0
  290. package/internal/utils/bytes.d.mts.map +1 -0
  291. package/internal/utils/bytes.d.ts +4 -0
  292. package/internal/utils/bytes.d.ts.map +1 -0
  293. package/internal/utils/bytes.js +31 -0
  294. package/internal/utils/bytes.js.map +1 -0
  295. package/internal/utils/bytes.mjs +26 -0
  296. package/internal/utils/bytes.mjs.map +1 -0
  297. package/internal/utils/env.d.mts +9 -0
  298. package/internal/utils/env.d.mts.map +1 -0
  299. package/internal/utils/env.d.ts +9 -0
  300. package/internal/utils/env.d.ts.map +1 -0
  301. package/internal/utils/env.js +22 -0
  302. package/internal/utils/env.js.map +1 -0
  303. package/internal/utils/env.mjs +18 -0
  304. package/internal/utils/env.mjs.map +1 -0
  305. package/internal/utils/log.d.mts +37 -0
  306. package/internal/utils/log.d.mts.map +1 -0
  307. package/internal/utils/log.d.ts +37 -0
  308. package/internal/utils/log.d.ts.map +1 -0
  309. package/internal/utils/log.js +86 -0
  310. package/internal/utils/log.js.map +1 -0
  311. package/internal/utils/log.mjs +80 -0
  312. package/internal/utils/log.mjs.map +1 -0
  313. package/internal/utils/path.d.mts +15 -0
  314. package/internal/utils/path.d.mts.map +1 -0
  315. package/internal/utils/path.d.ts +15 -0
  316. package/internal/utils/path.d.ts.map +1 -0
  317. package/internal/utils/path.js +79 -0
  318. package/internal/utils/path.js.map +1 -0
  319. package/internal/utils/path.mjs +74 -0
  320. package/internal/utils/path.mjs.map +1 -0
  321. package/internal/utils/query.d.mts +5 -0
  322. package/internal/utils/query.d.mts.map +1 -0
  323. package/internal/utils/query.d.ts +5 -0
  324. package/internal/utils/query.d.ts.map +1 -0
  325. package/internal/utils/query.js +23 -0
  326. package/internal/utils/query.js.map +1 -0
  327. package/internal/utils/query.mjs +20 -0
  328. package/internal/utils/query.mjs.map +1 -0
  329. package/internal/utils/sleep.d.mts +2 -0
  330. package/internal/utils/sleep.d.mts.map +1 -0
  331. package/internal/utils/sleep.d.ts +2 -0
  332. package/internal/utils/sleep.d.ts.map +1 -0
  333. package/internal/utils/sleep.js +7 -0
  334. package/internal/utils/sleep.js.map +1 -0
  335. package/internal/utils/sleep.mjs +3 -0
  336. package/internal/utils/sleep.mjs.map +1 -0
  337. package/internal/utils/uuid.d.mts +5 -0
  338. package/internal/utils/uuid.d.mts.map +1 -0
  339. package/internal/utils/uuid.d.ts +5 -0
  340. package/internal/utils/uuid.d.ts.map +1 -0
  341. package/internal/utils/uuid.js +19 -0
  342. package/internal/utils/uuid.js.map +1 -0
  343. package/internal/utils/uuid.mjs +15 -0
  344. package/internal/utils/uuid.mjs.map +1 -0
  345. package/internal/utils/values.d.mts +19 -0
  346. package/internal/utils/values.d.mts.map +1 -0
  347. package/internal/utils/values.d.ts +19 -0
  348. package/internal/utils/values.d.ts.map +1 -0
  349. package/internal/utils/values.js +119 -0
  350. package/internal/utils/values.js.map +1 -0
  351. package/internal/utils/values.mjs +100 -0
  352. package/internal/utils/values.mjs.map +1 -0
  353. package/internal/utils.d.mts +8 -0
  354. package/internal/utils.d.mts.map +1 -0
  355. package/internal/utils.d.ts +8 -0
  356. package/internal/utils.d.ts.map +1 -0
  357. package/internal/utils.js +12 -0
  358. package/internal/utils.js.map +1 -0
  359. package/internal/utils.mjs +9 -0
  360. package/internal/utils.mjs.map +1 -0
  361. package/lib/BetaMessageStream.d.mts +122 -0
  362. package/lib/BetaMessageStream.d.mts.map +1 -0
  363. package/lib/BetaMessageStream.d.ts +122 -0
  364. package/lib/BetaMessageStream.d.ts.map +1 -0
  365. package/lib/BetaMessageStream.js +620 -0
  366. package/lib/BetaMessageStream.js.map +1 -0
  367. package/lib/BetaMessageStream.mjs +616 -0
  368. package/lib/BetaMessageStream.mjs.map +1 -0
  369. package/lib/MessageStream.d.mts +121 -0
  370. package/lib/MessageStream.d.mts.map +1 -0
  371. package/lib/MessageStream.d.ts +121 -0
  372. package/lib/MessageStream.d.ts.map +1 -0
  373. package/lib/MessageStream.js +595 -0
  374. package/lib/MessageStream.js.map +1 -0
  375. package/lib/MessageStream.mjs +591 -0
  376. package/lib/MessageStream.mjs.map +1 -0
  377. package/lib/beta-parser.d.mts +37 -0
  378. package/lib/beta-parser.d.mts.map +1 -0
  379. package/lib/beta-parser.d.ts +37 -0
  380. package/lib/beta-parser.d.ts.map +1 -0
  381. package/lib/beta-parser.js +79 -0
  382. package/lib/beta-parser.js.map +1 -0
  383. package/lib/beta-parser.mjs +75 -0
  384. package/lib/beta-parser.mjs.map +1 -0
  385. package/lib/parser.d.mts +32 -0
  386. package/lib/parser.d.mts.map +1 -0
  387. package/lib/parser.d.ts +32 -0
  388. package/lib/parser.d.ts.map +1 -0
  389. package/lib/parser.js +66 -0
  390. package/lib/parser.js.map +1 -0
  391. package/lib/parser.mjs +62 -0
  392. package/lib/parser.mjs.map +1 -0
  393. package/lib/stainless-helper-header.d.mts +34 -0
  394. package/lib/stainless-helper-header.d.mts.map +1 -0
  395. package/lib/stainless-helper-header.d.ts +34 -0
  396. package/lib/stainless-helper-header.d.ts.map +1 -0
  397. package/lib/stainless-helper-header.js +70 -0
  398. package/lib/stainless-helper-header.js.map +1 -0
  399. package/lib/stainless-helper-header.mjs +63 -0
  400. package/lib/stainless-helper-header.mjs.map +1 -0
  401. package/lib/tools/BetaRunnableTool.d.mts +12 -0
  402. package/lib/tools/BetaRunnableTool.d.mts.map +1 -0
  403. package/lib/tools/BetaRunnableTool.d.ts +12 -0
  404. package/lib/tools/BetaRunnableTool.d.ts.map +1 -0
  405. package/lib/tools/BetaRunnableTool.js +3 -0
  406. package/lib/tools/BetaRunnableTool.js.map +1 -0
  407. package/lib/tools/BetaRunnableTool.mjs +2 -0
  408. package/lib/tools/BetaRunnableTool.mjs.map +1 -0
  409. package/lib/tools/BetaToolRunner.d.mts +141 -0
  410. package/lib/tools/BetaToolRunner.d.mts.map +1 -0
  411. package/lib/tools/BetaToolRunner.d.ts +141 -0
  412. package/lib/tools/BetaToolRunner.d.ts.map +1 -0
  413. package/lib/tools/BetaToolRunner.js +381 -0
  414. package/lib/tools/BetaToolRunner.js.map +1 -0
  415. package/lib/tools/BetaToolRunner.mjs +377 -0
  416. package/lib/tools/BetaToolRunner.mjs.map +1 -0
  417. package/lib/tools/CompactionControl.d.mts +30 -0
  418. package/lib/tools/CompactionControl.d.mts.map +1 -0
  419. package/lib/tools/CompactionControl.d.ts +30 -0
  420. package/lib/tools/CompactionControl.d.ts.map +1 -0
  421. package/lib/tools/CompactionControl.js +28 -0
  422. package/lib/tools/CompactionControl.js.map +1 -0
  423. package/lib/tools/CompactionControl.mjs +25 -0
  424. package/lib/tools/CompactionControl.mjs.map +1 -0
  425. package/lib/tools/ToolError.d.mts +33 -0
  426. package/lib/tools/ToolError.d.mts.map +1 -0
  427. package/lib/tools/ToolError.d.ts +33 -0
  428. package/lib/tools/ToolError.d.ts.map +1 -0
  429. package/lib/tools/ToolError.js +42 -0
  430. package/lib/tools/ToolError.js.map +1 -0
  431. package/lib/tools/ToolError.mjs +38 -0
  432. package/lib/tools/ToolError.mjs.map +1 -0
  433. package/lib/tools/ToolRunner.d.mts +132 -0
  434. package/lib/tools/ToolRunner.d.mts.map +1 -0
  435. package/lib/tools/ToolRunner.d.ts +132 -0
  436. package/lib/tools/ToolRunner.d.ts.map +1 -0
  437. package/lib/tools/ToolRunner.js +294 -0
  438. package/lib/tools/ToolRunner.js.map +1 -0
  439. package/lib/tools/ToolRunner.mjs +290 -0
  440. package/lib/tools/ToolRunner.mjs.map +1 -0
  441. package/lib/transform-json-schema.d.mts +3 -0
  442. package/lib/transform-json-schema.d.mts.map +1 -0
  443. package/lib/transform-json-schema.d.ts +3 -0
  444. package/lib/transform-json-schema.d.ts.map +1 -0
  445. package/lib/transform-json-schema.js +114 -0
  446. package/lib/transform-json-schema.js.map +1 -0
  447. package/lib/transform-json-schema.mjs +111 -0
  448. package/lib/transform-json-schema.mjs.map +1 -0
  449. package/package.json +246 -0
  450. package/pagination.d.mts +2 -0
  451. package/pagination.d.mts.map +1 -0
  452. package/pagination.d.ts +2 -0
  453. package/pagination.d.ts.map +1 -0
  454. package/pagination.js +6 -0
  455. package/pagination.js.map +1 -0
  456. package/pagination.mjs +2 -0
  457. package/pagination.mjs.map +1 -0
  458. package/resource.d.mts +2 -0
  459. package/resource.d.mts.map +1 -0
  460. package/resource.d.ts +2 -0
  461. package/resource.d.ts.map +1 -0
  462. package/resource.js +6 -0
  463. package/resource.js.map +1 -0
  464. package/resource.mjs +2 -0
  465. package/resource.mjs.map +1 -0
  466. package/resources/beta/beta.d.mts +66 -0
  467. package/resources/beta/beta.d.mts.map +1 -0
  468. package/resources/beta/beta.d.ts +66 -0
  469. package/resources/beta/beta.d.ts.map +1 -0
  470. package/resources/beta/beta.js +29 -0
  471. package/resources/beta/beta.js.map +1 -0
  472. package/resources/beta/beta.mjs +24 -0
  473. package/resources/beta/beta.mjs.map +1 -0
  474. package/resources/beta/files.d.mts +151 -0
  475. package/resources/beta/files.d.mts.map +1 -0
  476. package/resources/beta/files.d.ts +151 -0
  477. package/resources/beta/files.d.ts.map +1 -0
  478. package/resources/beta/files.js +124 -0
  479. package/resources/beta/files.js.map +1 -0
  480. package/resources/beta/files.mjs +120 -0
  481. package/resources/beta/files.mjs.map +1 -0
  482. package/resources/beta/index.d.mts +6 -0
  483. package/resources/beta/index.d.mts.map +1 -0
  484. package/resources/beta/index.d.ts +6 -0
  485. package/resources/beta/index.d.ts.map +1 -0
  486. package/resources/beta/index.js +15 -0
  487. package/resources/beta/index.js.map +1 -0
  488. package/resources/beta/index.mjs +7 -0
  489. package/resources/beta/index.mjs.map +1 -0
  490. package/resources/beta/messages/batches.d.mts +646 -0
  491. package/resources/beta/messages/batches.d.mts.map +1 -0
  492. package/resources/beta/messages/batches.d.ts +646 -0
  493. package/resources/beta/messages/batches.d.ts.map +1 -0
  494. package/resources/beta/messages/batches.js +204 -0
  495. package/resources/beta/messages/batches.js.map +1 -0
  496. package/resources/beta/messages/batches.mjs +200 -0
  497. package/resources/beta/messages/batches.mjs.map +1 -0
  498. package/resources/beta/messages/index.d.mts +4 -0
  499. package/resources/beta/messages/index.d.mts.map +1 -0
  500. package/resources/beta/messages/index.d.ts +4 -0
  501. package/resources/beta/messages/index.d.ts.map +1 -0
  502. package/resources/beta/messages/index.js +12 -0
  503. package/resources/beta/messages/index.js.map +1 -0
  504. package/resources/beta/messages/index.mjs +5 -0
  505. package/resources/beta/messages/index.mjs.map +1 -0
  506. package/resources/beta/messages/messages.d.mts +2993 -0
  507. package/resources/beta/messages/messages.d.mts.map +1 -0
  508. package/resources/beta/messages/messages.d.ts +2993 -0
  509. package/resources/beta/messages/messages.d.ts.map +1 -0
  510. package/resources/beta/messages/messages.js +163 -0
  511. package/resources/beta/messages/messages.js.map +1 -0
  512. package/resources/beta/messages/messages.mjs +156 -0
  513. package/resources/beta/messages/messages.mjs.map +1 -0
  514. package/resources/beta/messages.d.mts +2 -0
  515. package/resources/beta/messages.d.mts.map +1 -0
  516. package/resources/beta/messages.d.ts +2 -0
  517. package/resources/beta/messages.d.ts.map +1 -0
  518. package/resources/beta/messages.js +6 -0
  519. package/resources/beta/messages.js.map +1 -0
  520. package/resources/beta/messages.mjs +3 -0
  521. package/resources/beta/messages.mjs.map +1 -0
  522. package/resources/beta/models.d.mts +208 -0
  523. package/resources/beta/models.d.mts.map +1 -0
  524. package/resources/beta/models.d.ts +208 -0
  525. package/resources/beta/models.d.ts.map +1 -0
  526. package/resources/beta/models.js +60 -0
  527. package/resources/beta/models.js.map +1 -0
  528. package/resources/beta/models.mjs +56 -0
  529. package/resources/beta/models.mjs.map +1 -0
  530. package/resources/beta/skills/index.d.mts +3 -0
  531. package/resources/beta/skills/index.d.mts.map +1 -0
  532. package/resources/beta/skills/index.d.ts +3 -0
  533. package/resources/beta/skills/index.d.ts.map +1 -0
  534. package/resources/beta/skills/index.js +9 -0
  535. package/resources/beta/skills/index.js.map +1 -0
  536. package/resources/beta/skills/index.mjs +4 -0
  537. package/resources/beta/skills/index.mjs.map +1 -0
  538. package/resources/beta/skills/skills.d.mts +249 -0
  539. package/resources/beta/skills/skills.d.mts.map +1 -0
  540. package/resources/beta/skills/skills.d.ts +249 -0
  541. package/resources/beta/skills/skills.d.ts.map +1 -0
  542. package/resources/beta/skills/skills.js +98 -0
  543. package/resources/beta/skills/skills.js.map +1 -0
  544. package/resources/beta/skills/skills.mjs +93 -0
  545. package/resources/beta/skills/skills.mjs.map +1 -0
  546. package/resources/beta/skills/versions.d.mts +257 -0
  547. package/resources/beta/skills/versions.d.mts.map +1 -0
  548. package/resources/beta/skills/versions.d.ts +257 -0
  549. package/resources/beta/skills/versions.d.ts.map +1 -0
  550. package/resources/beta/skills/versions.js +100 -0
  551. package/resources/beta/skills/versions.js.map +1 -0
  552. package/resources/beta/skills/versions.mjs +96 -0
  553. package/resources/beta/skills/versions.mjs.map +1 -0
  554. package/resources/beta/skills.d.mts +2 -0
  555. package/resources/beta/skills.d.mts.map +1 -0
  556. package/resources/beta/skills.d.ts +2 -0
  557. package/resources/beta/skills.d.ts.map +1 -0
  558. package/resources/beta/skills.js +6 -0
  559. package/resources/beta/skills.js.map +1 -0
  560. package/resources/beta/skills.mjs +3 -0
  561. package/resources/beta/skills.mjs.map +1 -0
  562. package/resources/beta.d.mts +2 -0
  563. package/resources/beta.d.mts.map +1 -0
  564. package/resources/beta.d.ts +2 -0
  565. package/resources/beta.d.ts.map +1 -0
  566. package/resources/beta.js +6 -0
  567. package/resources/beta.js.map +1 -0
  568. package/resources/beta.mjs +3 -0
  569. package/resources/beta.mjs.map +1 -0
  570. package/resources/completions.d.mts +182 -0
  571. package/resources/completions.d.mts.map +1 -0
  572. package/resources/completions.d.ts +182 -0
  573. package/resources/completions.d.ts.map +1 -0
  574. package/resources/completions.js +23 -0
  575. package/resources/completions.js.map +1 -0
  576. package/resources/completions.mjs +19 -0
  577. package/resources/completions.mjs.map +1 -0
  578. package/resources/index.d.mts +6 -0
  579. package/resources/index.d.mts.map +1 -0
  580. package/resources/index.d.ts +6 -0
  581. package/resources/index.d.ts.map +1 -0
  582. package/resources/index.js +15 -0
  583. package/resources/index.js.map +1 -0
  584. package/resources/index.mjs +7 -0
  585. package/resources/index.mjs.map +1 -0
  586. package/resources/messages/batches.d.mts +304 -0
  587. package/resources/messages/batches.d.mts.map +1 -0
  588. package/resources/messages/batches.d.ts +304 -0
  589. package/resources/messages/batches.d.ts.map +1 -0
  590. package/resources/messages/batches.js +153 -0
  591. package/resources/messages/batches.js.map +1 -0
  592. package/resources/messages/batches.mjs +149 -0
  593. package/resources/messages/batches.mjs.map +1 -0
  594. package/resources/messages/index.d.mts +3 -0
  595. package/resources/messages/index.d.mts.map +1 -0
  596. package/resources/messages/index.d.ts +3 -0
  597. package/resources/messages/index.d.ts.map +1 -0
  598. package/resources/messages/index.js +9 -0
  599. package/resources/messages/index.js.map +1 -0
  600. package/resources/messages/index.mjs +4 -0
  601. package/resources/messages/index.mjs.map +1 -0
  602. package/resources/messages/messages.d.mts +2285 -0
  603. package/resources/messages/messages.d.mts.map +1 -0
  604. package/resources/messages/messages.d.ts +2285 -0
  605. package/resources/messages/messages.d.ts.map +1 -0
  606. package/resources/messages/messages.js +128 -0
  607. package/resources/messages/messages.js.map +1 -0
  608. package/resources/messages/messages.mjs +123 -0
  609. package/resources/messages/messages.mjs.map +1 -0
  610. package/resources/messages.d.mts +2 -0
  611. package/resources/messages.d.mts.map +1 -0
  612. package/resources/messages.d.ts +2 -0
  613. package/resources/messages.d.ts.map +1 -0
  614. package/resources/messages.js +6 -0
  615. package/resources/messages.js.map +1 -0
  616. package/resources/messages.mjs +3 -0
  617. package/resources/messages.mjs.map +1 -0
  618. package/resources/models.d.mts +193 -0
  619. package/resources/models.d.mts.map +1 -0
  620. package/resources/models.d.ts +193 -0
  621. package/resources/models.d.ts.map +1 -0
  622. package/resources/models.js +45 -0
  623. package/resources/models.js.map +1 -0
  624. package/resources/models.mjs +41 -0
  625. package/resources/models.mjs.map +1 -0
  626. package/resources/shared.d.mts +44 -0
  627. package/resources/shared.d.mts.map +1 -0
  628. package/resources/shared.d.ts +44 -0
  629. package/resources/shared.d.ts.map +1 -0
  630. package/resources/shared.js +4 -0
  631. package/resources/shared.js.map +1 -0
  632. package/resources/shared.mjs +3 -0
  633. package/resources/shared.mjs.map +1 -0
  634. package/resources/top-level.d.mts +2 -0
  635. package/resources/top-level.d.mts.map +1 -0
  636. package/resources/top-level.d.ts +2 -0
  637. package/resources/top-level.d.ts.map +1 -0
  638. package/resources/top-level.js +4 -0
  639. package/resources/top-level.js.map +1 -0
  640. package/resources/top-level.mjs +3 -0
  641. package/resources/top-level.mjs.map +1 -0
  642. package/resources.d.mts +2 -0
  643. package/resources.d.mts.map +1 -0
  644. package/resources.d.ts +2 -0
  645. package/resources.d.ts.map +1 -0
  646. package/resources.js +5 -0
  647. package/resources.js.map +1 -0
  648. package/resources.mjs +2 -0
  649. package/resources.mjs.map +1 -0
  650. package/src/_vendor/partial-json-parser/README.md +3 -0
  651. package/src/_vendor/partial-json-parser/parser.ts +264 -0
  652. package/src/ainative.ts +85 -0
  653. package/src/api-promise.ts +2 -0
  654. package/src/client.ts +1326 -0
  655. package/src/core/README.md +3 -0
  656. package/src/core/api-promise.ts +101 -0
  657. package/src/core/error.ts +145 -0
  658. package/src/core/pagination.ts +331 -0
  659. package/src/core/resource.ts +11 -0
  660. package/src/core/streaming.ts +348 -0
  661. package/src/core/uploads.ts +2 -0
  662. package/src/error.ts +2 -0
  663. package/src/helpers/beta/json-schema.ts +75 -0
  664. package/src/helpers/beta/mcp.ts +624 -0
  665. package/src/helpers/beta/memory.ts +28 -0
  666. package/src/helpers/beta/zod.ts +72 -0
  667. package/src/helpers/index.ts +2 -0
  668. package/src/helpers/json-schema.ts +48 -0
  669. package/src/helpers/zod.ts +58 -0
  670. package/src/index.ts +40 -0
  671. package/src/internal/README.md +3 -0
  672. package/src/internal/builtin-types.ts +93 -0
  673. package/src/internal/constants.ts +15 -0
  674. package/src/internal/decoders/jsonl.ts +48 -0
  675. package/src/internal/decoders/line.ts +135 -0
  676. package/src/internal/detect-platform.ts +196 -0
  677. package/src/internal/errors.ts +33 -0
  678. package/src/internal/headers.ts +99 -0
  679. package/src/internal/parse.ts +90 -0
  680. package/src/internal/request-options.ts +93 -0
  681. package/src/internal/shim-types.ts +26 -0
  682. package/src/internal/shims.ts +107 -0
  683. package/src/internal/stream-utils.ts +32 -0
  684. package/src/internal/to-file.ts +159 -0
  685. package/src/internal/types.ts +95 -0
  686. package/src/internal/uploads.ts +204 -0
  687. package/src/internal/utils/base64.ts +40 -0
  688. package/src/internal/utils/bytes.ts +32 -0
  689. package/src/internal/utils/env.ts +18 -0
  690. package/src/internal/utils/log.ts +127 -0
  691. package/src/internal/utils/path.ts +88 -0
  692. package/src/internal/utils/query.ts +23 -0
  693. package/src/internal/utils/sleep.ts +3 -0
  694. package/src/internal/utils/uuid.ts +17 -0
  695. package/src/internal/utils/values.ts +112 -0
  696. package/src/internal/utils.ts +9 -0
  697. package/src/lib/.keep +4 -0
  698. package/src/lib/BetaMessageStream.ts +764 -0
  699. package/src/lib/MessageStream.ts +743 -0
  700. package/src/lib/beta-parser.ts +148 -0
  701. package/src/lib/parser.ts +125 -0
  702. package/src/lib/stainless-helper-header.ts +80 -0
  703. package/src/lib/tools/BetaRunnableTool.ts +40 -0
  704. package/src/lib/tools/BetaToolRunner.ts +494 -0
  705. package/src/lib/tools/CompactionControl.ts +57 -0
  706. package/src/lib/tools/ToolError.ts +47 -0
  707. package/src/lib/tools/ToolRunner.ts +381 -0
  708. package/src/lib/transform-json-schema.ts +124 -0
  709. package/src/pagination.ts +2 -0
  710. package/src/resource.ts +2 -0
  711. package/src/resources/beta/beta.ts +603 -0
  712. package/src/resources/beta/files.ts +261 -0
  713. package/src/resources/beta/index.ts +259 -0
  714. package/src/resources/beta/messages/batches.ts +827 -0
  715. package/src/resources/beta/messages/index.ts +229 -0
  716. package/src/resources/beta/messages/messages.ts +4372 -0
  717. package/src/resources/beta/messages.ts +3 -0
  718. package/src/resources/beta/models.ts +284 -0
  719. package/src/resources/beta/skills/index.ts +26 -0
  720. package/src/resources/beta/skills/skills.ts +384 -0
  721. package/src/resources/beta/skills/versions.ts +374 -0
  722. package/src/resources/beta/skills.ts +3 -0
  723. package/src/resources/beta.ts +3 -0
  724. package/src/resources/completions.ts +230 -0
  725. package/src/resources/index.ts +206 -0
  726. package/src/resources/messages/batches.ts +396 -0
  727. package/src/resources/messages/index.ts +189 -0
  728. package/src/resources/messages/messages.ts +3361 -0
  729. package/src/resources/messages.ts +3 -0
  730. package/src/resources/models.ts +269 -0
  731. package/src/resources/shared.ts +85 -0
  732. package/src/resources/top-level.ts +3 -0
  733. package/src/resources.ts +1 -0
  734. package/src/streaming.ts +2 -0
  735. package/src/tools/memory/node.ts +392 -0
  736. package/src/tsconfig.json +11 -0
  737. package/src/uploads.ts +2 -0
  738. package/src/version.ts +1 -0
  739. package/streaming.d.mts +2 -0
  740. package/streaming.d.mts.map +1 -0
  741. package/streaming.d.ts +2 -0
  742. package/streaming.d.ts.map +1 -0
  743. package/streaming.js +6 -0
  744. package/streaming.js.map +1 -0
  745. package/streaming.mjs +2 -0
  746. package/streaming.mjs.map +1 -0
  747. package/tools/memory/node.d.mts +18 -0
  748. package/tools/memory/node.d.mts.map +1 -0
  749. package/tools/memory/node.d.ts +18 -0
  750. package/tools/memory/node.d.ts.map +1 -0
  751. package/tools/memory/node.js +324 -0
  752. package/tools/memory/node.js.map +1 -0
  753. package/tools/memory/node.mjs +318 -0
  754. package/tools/memory/node.mjs.map +1 -0
  755. package/uploads.d.mts +2 -0
  756. package/uploads.d.mts.map +1 -0
  757. package/uploads.d.ts +2 -0
  758. package/uploads.d.ts.map +1 -0
  759. package/uploads.js +6 -0
  760. package/uploads.js.map +1 -0
  761. package/uploads.mjs +2 -0
  762. package/uploads.mjs.map +1 -0
  763. package/version.d.mts +2 -0
  764. package/version.d.mts.map +1 -0
  765. package/version.d.ts +2 -0
  766. package/version.d.ts.map +1 -0
  767. package/version.js +5 -0
  768. package/version.js.map +1 -0
  769. package/version.mjs +2 -0
  770. package/version.mjs.map +1 -0
@@ -0,0 +1,494 @@
1
+ import { BetaRunnableTool } from './BetaRunnableTool';
2
+ import { ToolError } from './ToolError';
3
+ import { Anthropic } from '../..';
4
+ import { AnthropicError } from '../../core/error';
5
+ import { BetaMessage, BetaMessageParam, BetaToolUnion, MessageCreateParams } from '../../resources/beta';
6
+ import { BetaMessageStream } from '../BetaMessageStream';
7
+ import { RequestOptions } from '../../internal/request-options';
8
+ import { buildHeaders } from '../../internal/headers';
9
+ import { CompactionControl, DEFAULT_SUMMARY_PROMPT, DEFAULT_TOKEN_THRESHOLD } from './CompactionControl';
10
+ import { collectStainlessHelpers } from '../stainless-helper-header';
11
+
12
+ /**
13
+ * Just Promise.withResolvers(), which is not available in all environments.
14
+ */
15
+ function promiseWithResolvers<T>(): {
16
+ promise: Promise<T>;
17
+ resolve: (value: T) => void;
18
+ reject: (reason?: any) => void;
19
+ } {
20
+ let resolve: (value: T) => void;
21
+ let reject: (reason?: any) => void;
22
+ const promise = new Promise<T>((res, rej) => {
23
+ resolve = res;
24
+ reject = rej;
25
+ });
26
+ return { promise, resolve: resolve!, reject: reject! };
27
+ }
28
+
29
+ /**
30
+ * A ToolRunner handles the automatic conversation loop between the assistant and tools.
31
+ *
32
+ * A ToolRunner is an async iterable that yields either BetaMessage or BetaMessageStream objects
33
+ * depending on the streaming configuration.
34
+ */
35
+ export class BetaToolRunner<Stream extends boolean> {
36
+ /** Whether the async iterator has been consumed */
37
+ #consumed = false;
38
+ /** Whether parameters have been mutated since the last API call */
39
+ #mutated = false;
40
+ /** Current state containing the request parameters */
41
+ #state: { params: BetaToolRunnerParams };
42
+ #options: BetaToolRunnerRequestOptions;
43
+ /** Promise for the last message received from the assistant */
44
+ #message?: Promise<BetaMessage> | undefined;
45
+ /** Cached tool response to avoid redundant executions */
46
+ #toolResponse?: Promise<BetaMessageParam | null> | undefined;
47
+ /** Promise resolvers for waiting on completion */
48
+ #completion: {
49
+ promise: Promise<BetaMessage>;
50
+ resolve: (value: BetaMessage) => void;
51
+ reject: (reason?: any) => void;
52
+ };
53
+ /** Number of iterations (API requests) made so far */
54
+ #iterationCount = 0;
55
+
56
+ constructor(
57
+ private client: Anthropic,
58
+ params: BetaToolRunnerParams,
59
+ options?: BetaToolRunnerRequestOptions,
60
+ ) {
61
+ this.#state = {
62
+ params: {
63
+ // You can't clone the entire params since there are functions as handlers.
64
+ // You also don't really need to clone params.messages, but it probably will prevent a foot gun
65
+ // somewhere.
66
+ ...params,
67
+ messages: structuredClone(params.messages),
68
+ },
69
+ };
70
+
71
+ const helpers = collectStainlessHelpers(params.tools, params.messages);
72
+ const helperValue = ['BetaToolRunner', ...helpers].join(', ');
73
+
74
+ this.#options = {
75
+ ...options,
76
+ headers: buildHeaders([{ 'x-stainless-helper': helperValue }, options?.headers]),
77
+ };
78
+ this.#completion = promiseWithResolvers();
79
+
80
+ if (params.compactionControl?.enabled) {
81
+ console.warn(
82
+ 'Anthropic: The `compactionControl` parameter is deprecated and will be removed in a future version. ' +
83
+ 'Use server-side compaction instead by passing `edits: [{ type: "compact_20260112" }]` in the params passed to `toolRunner()`. ' +
84
+ 'See https://platform.claude.com/docs/en/build-with-claude/compaction',
85
+ );
86
+ }
87
+ }
88
+
89
+ async #checkAndCompact(): Promise<boolean> {
90
+ const compactionControl = this.#state.params.compactionControl;
91
+ if (!compactionControl || !compactionControl.enabled) {
92
+ return false;
93
+ }
94
+
95
+ let tokensUsed = 0;
96
+ if (this.#message !== undefined) {
97
+ try {
98
+ const message = await this.#message;
99
+ const totalInputTokens =
100
+ message.usage.input_tokens +
101
+ (message.usage.cache_creation_input_tokens ?? 0) +
102
+ (message.usage.cache_read_input_tokens ?? 0);
103
+ tokensUsed = totalInputTokens + message.usage.output_tokens;
104
+ } catch {
105
+ // If we can't get the message, skip compaction
106
+ return false;
107
+ }
108
+ }
109
+
110
+ const threshold = compactionControl.contextTokenThreshold ?? DEFAULT_TOKEN_THRESHOLD;
111
+
112
+ if (tokensUsed < threshold) {
113
+ return false;
114
+ }
115
+
116
+ const model = compactionControl.model ?? this.#state.params.model;
117
+ const summaryPrompt = compactionControl.summaryPrompt ?? DEFAULT_SUMMARY_PROMPT;
118
+
119
+ const messages = this.#state.params.messages;
120
+
121
+ if (messages[messages.length - 1]!.role === 'assistant') {
122
+ // Remove tool_use blocks from the last message to avoid 400 error
123
+ // (tool_use requires tool_result, which we don't have yet)
124
+ const lastMessage = messages[messages.length - 1]!;
125
+ if (Array.isArray(lastMessage.content)) {
126
+ const nonToolBlocks = lastMessage.content.filter((block) => block.type !== 'tool_use');
127
+
128
+ if (nonToolBlocks.length === 0) {
129
+ // If all blocks were tool_use, just remove the message entirely
130
+ messages.pop();
131
+ } else {
132
+ lastMessage.content = nonToolBlocks;
133
+ }
134
+ }
135
+ }
136
+
137
+ const response = await this.client.beta.messages.create(
138
+ {
139
+ model,
140
+ messages: [
141
+ ...messages,
142
+ {
143
+ role: 'user',
144
+ content: [
145
+ {
146
+ type: 'text',
147
+ text: summaryPrompt,
148
+ },
149
+ ],
150
+ },
151
+ ],
152
+ max_tokens: this.#state.params.max_tokens,
153
+ },
154
+ {
155
+ headers: { 'x-stainless-helper': 'compaction' },
156
+ },
157
+ );
158
+
159
+ if (response.content[0]?.type !== 'text') {
160
+ throw new AnthropicError('Expected text response for compaction');
161
+ }
162
+ this.#state.params.messages = [
163
+ {
164
+ role: 'user',
165
+ content: response.content,
166
+ },
167
+ ];
168
+ return true;
169
+ }
170
+
171
+ async *[Symbol.asyncIterator](): AsyncIterator<
172
+ Stream extends true ? BetaMessageStream
173
+ : Stream extends false ? BetaMessage
174
+ : BetaMessage | BetaMessageStream
175
+ > {
176
+ if (this.#consumed) {
177
+ throw new AnthropicError('Cannot iterate over a consumed stream');
178
+ }
179
+
180
+ this.#consumed = true;
181
+ this.#mutated = true;
182
+ this.#toolResponse = undefined;
183
+
184
+ try {
185
+ while (true) {
186
+ let stream;
187
+ try {
188
+ if (
189
+ this.#state.params.max_iterations &&
190
+ this.#iterationCount >= this.#state.params.max_iterations
191
+ ) {
192
+ break;
193
+ }
194
+
195
+ this.#mutated = false;
196
+ this.#toolResponse = undefined;
197
+ this.#iterationCount++;
198
+ this.#message = undefined;
199
+
200
+ const { max_iterations, compactionControl, ...params } = this.#state.params;
201
+
202
+ if (params.stream) {
203
+ stream = this.client.beta.messages.stream({ ...params }, this.#options);
204
+ this.#message = stream.finalMessage();
205
+ // Make sure that this promise doesn't throw before we get the option to do something about it.
206
+ // Error will be caught when we call await this.#message ultimately
207
+ this.#message.catch(() => {});
208
+ yield stream as any;
209
+ } else {
210
+ this.#message = this.client.beta.messages.create({ ...params, stream: false }, this.#options);
211
+ yield this.#message as any;
212
+ }
213
+
214
+ const isCompacted = await this.#checkAndCompact();
215
+ if (!isCompacted) {
216
+ if (!this.#mutated) {
217
+ const { role, content } = await this.#message;
218
+ this.#state.params.messages.push({ role, content });
219
+ }
220
+
221
+ const toolMessage = await this.#generateToolResponse(this.#state.params.messages.at(-1)!);
222
+ if (toolMessage) {
223
+ this.#state.params.messages.push(toolMessage);
224
+ } else if (!this.#mutated) {
225
+ break;
226
+ }
227
+ }
228
+ } finally {
229
+ if (stream) {
230
+ stream.abort();
231
+ }
232
+ }
233
+ }
234
+
235
+ if (!this.#message) {
236
+ throw new AnthropicError('ToolRunner concluded without a message from the server');
237
+ }
238
+
239
+ this.#completion.resolve(await this.#message);
240
+ } catch (error) {
241
+ this.#consumed = false;
242
+ // Silence unhandled promise errors
243
+ this.#completion.promise.catch(() => {});
244
+ this.#completion.reject(error);
245
+ this.#completion = promiseWithResolvers();
246
+ throw error;
247
+ }
248
+ }
249
+
250
+ /**
251
+ * Update the parameters for the next API call. This invalidates any cached tool responses.
252
+ *
253
+ * @param paramsOrMutator - Either new parameters or a function to mutate existing parameters
254
+ *
255
+ * @example
256
+ * // Direct parameter update
257
+ * runner.setMessagesParams({
258
+ * model: 'claude-haiku-4-5',
259
+ * max_tokens: 500,
260
+ * });
261
+ *
262
+ * @example
263
+ * // Using a mutator function
264
+ * runner.setMessagesParams((params) => ({
265
+ * ...params,
266
+ * max_tokens: 100,
267
+ * }));
268
+ */
269
+ setMessagesParams(params: BetaToolRunnerParams): void;
270
+ setMessagesParams(mutator: (prevParams: BetaToolRunnerParams) => BetaToolRunnerParams): void;
271
+ setMessagesParams(
272
+ paramsOrMutator: BetaToolRunnerParams | ((prevParams: BetaToolRunnerParams) => BetaToolRunnerParams),
273
+ ) {
274
+ if (typeof paramsOrMutator === 'function') {
275
+ this.#state.params = paramsOrMutator(this.#state.params);
276
+ } else {
277
+ this.#state.params = paramsOrMutator;
278
+ }
279
+ this.#mutated = true;
280
+ // Invalidate cached tool response since parameters changed
281
+ this.#toolResponse = undefined;
282
+ }
283
+
284
+ /**
285
+ * Get the tool response for the last message from the assistant.
286
+ * Avoids redundant tool executions by caching results.
287
+ *
288
+ * @returns A promise that resolves to a BetaMessageParam containing tool results, or null if no tools need to be executed
289
+ *
290
+ * @example
291
+ * const toolResponse = await runner.generateToolResponse();
292
+ * if (toolResponse) {
293
+ * console.log('Tool results:', toolResponse.content);
294
+ * }
295
+ */
296
+ async generateToolResponse() {
297
+ const message = (await this.#message) ?? this.params.messages.at(-1);
298
+ if (!message) {
299
+ return null;
300
+ }
301
+ return this.#generateToolResponse(message);
302
+ }
303
+
304
+ async #generateToolResponse(lastMessage: BetaMessageParam) {
305
+ if (this.#toolResponse !== undefined) {
306
+ return this.#toolResponse;
307
+ }
308
+ this.#toolResponse = generateToolResponse(this.#state.params, lastMessage);
309
+ return this.#toolResponse;
310
+ }
311
+
312
+ /**
313
+ * Wait for the async iterator to complete. This works even if the async iterator hasn't yet started, and
314
+ * will wait for an instance to start and go to completion.
315
+ *
316
+ * @returns A promise that resolves to the final BetaMessage when the iterator completes
317
+ *
318
+ * @example
319
+ * // Start consuming the iterator
320
+ * for await (const message of runner) {
321
+ * console.log('Message:', message.content);
322
+ * }
323
+ *
324
+ * // Meanwhile, wait for completion from another part of the code
325
+ * const finalMessage = await runner.done();
326
+ * console.log('Final response:', finalMessage.content);
327
+ */
328
+ done(): Promise<BetaMessage> {
329
+ return this.#completion.promise;
330
+ }
331
+
332
+ /**
333
+ * Returns a promise indicating that the stream is done. Unlike .done(), this will eagerly read the stream:
334
+ * * If the iterator has not been consumed, consume the entire iterator and return the final message from the
335
+ * assistant.
336
+ * * If the iterator has been consumed, waits for it to complete and returns the final message.
337
+ *
338
+ * @returns A promise that resolves to the final BetaMessage from the conversation
339
+ * @throws {AnthropicError} If no messages were processed during the conversation
340
+ *
341
+ * @example
342
+ * const finalMessage = await runner.runUntilDone();
343
+ * console.log('Final response:', finalMessage.content);
344
+ */
345
+ async runUntilDone(): Promise<BetaMessage> {
346
+ // If not yet consumed, start consuming and wait for completion
347
+ if (!this.#consumed) {
348
+ for await (const _ of this) {
349
+ // Iterator naturally populates this.#message
350
+ }
351
+ }
352
+
353
+ // If consumed but not completed, wait for completion
354
+ return this.done();
355
+ }
356
+
357
+ /**
358
+ * Get the current parameters being used by the ToolRunner.
359
+ *
360
+ * @returns A readonly view of the current ToolRunnerParams
361
+ *
362
+ * @example
363
+ * const currentParams = runner.params;
364
+ * console.log('Current model:', currentParams.model);
365
+ * console.log('Message count:', currentParams.messages.length);
366
+ */
367
+ get params(): Readonly<BetaToolRunnerParams> {
368
+ return this.#state.params as Readonly<BetaToolRunnerParams>;
369
+ }
370
+
371
+ /**
372
+ * Add one or more messages to the conversation history.
373
+ *
374
+ * @param messages - One or more BetaMessageParam objects to add to the conversation
375
+ *
376
+ * @example
377
+ * runner.pushMessages(
378
+ * { role: 'user', content: 'Also, what about the weather in NYC?' }
379
+ * );
380
+ *
381
+ * @example
382
+ * // Adding multiple messages
383
+ * runner.pushMessages(
384
+ * { role: 'user', content: 'What about NYC?' },
385
+ * { role: 'user', content: 'And Boston?' }
386
+ * );
387
+ */
388
+ pushMessages(...messages: BetaMessageParam[]) {
389
+ this.setMessagesParams((params) => ({
390
+ ...params,
391
+ messages: [...params.messages, ...messages],
392
+ }));
393
+ }
394
+
395
+ /**
396
+ * Makes the ToolRunner directly awaitable, equivalent to calling .runUntilDone()
397
+ * This allows using `await runner` instead of `await runner.runUntilDone()`
398
+ */
399
+ then<TResult1 = BetaMessage, TResult2 = never>(
400
+ onfulfilled?: ((value: BetaMessage) => TResult1 | PromiseLike<TResult1>) | undefined | null,
401
+ onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,
402
+ ): Promise<TResult1 | TResult2> {
403
+ return this.runUntilDone().then(onfulfilled, onrejected);
404
+ }
405
+ }
406
+
407
+ async function generateToolResponse(
408
+ params: BetaToolRunnerParams,
409
+ lastMessage = params.messages.at(-1),
410
+ ): Promise<BetaMessageParam | null> {
411
+ // Only process if the last message is from the assistant and has tool use blocks
412
+ if (
413
+ !lastMessage ||
414
+ lastMessage.role !== 'assistant' ||
415
+ !lastMessage.content ||
416
+ typeof lastMessage.content === 'string'
417
+ ) {
418
+ return null;
419
+ }
420
+
421
+ const toolUseBlocks = lastMessage.content.filter((content) => content.type === 'tool_use');
422
+ if (toolUseBlocks.length === 0) {
423
+ return null;
424
+ }
425
+
426
+ const toolResults = await Promise.all(
427
+ toolUseBlocks.map(async (toolUse) => {
428
+ const tool = params.tools.find((t) => ('name' in t ? t.name : t.mcp_server_name) === toolUse.name);
429
+ if (!tool || !('run' in tool)) {
430
+ return {
431
+ type: 'tool_result' as const,
432
+ tool_use_id: toolUse.id,
433
+ content: `Error: Tool '${toolUse.name}' not found`,
434
+ is_error: true,
435
+ };
436
+ }
437
+
438
+ try {
439
+ let input = toolUse.input;
440
+ if ('parse' in tool && tool.parse) {
441
+ input = tool.parse(input);
442
+ }
443
+
444
+ const result = await tool.run(input);
445
+ return {
446
+ type: 'tool_result' as const,
447
+ tool_use_id: toolUse.id,
448
+ content: result,
449
+ };
450
+ } catch (error) {
451
+ return {
452
+ type: 'tool_result' as const,
453
+ tool_use_id: toolUse.id,
454
+ content:
455
+ error instanceof ToolError ?
456
+ error.content
457
+ : `Error: ${error instanceof Error ? error.message : String(error)}`,
458
+ is_error: true,
459
+ };
460
+ }
461
+ }),
462
+ );
463
+
464
+ return {
465
+ role: 'user' as const,
466
+ content: toolResults,
467
+ };
468
+ }
469
+
470
+ // vendored from typefest just to make things look a bit nicer on hover
471
+ type Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};
472
+
473
+ /**
474
+ * Parameters for creating a ToolRunner, extending MessageCreateParams with runnable tools.
475
+ */
476
+ export type BetaToolRunnerParams = Simplify<
477
+ Omit<MessageCreateParams, 'tools'> & {
478
+ tools: (BetaToolUnion | BetaRunnableTool<any>)[];
479
+ /**
480
+ * Maximum number of iterations (API requests) to make in the tool execution loop.
481
+ * Each iteration consists of: assistant response → tool execution → tool results.
482
+ * When exceeded, the loop will terminate even if tools are still being requested.
483
+ */
484
+ max_iterations?: number;
485
+ /**
486
+ * @deprecated Use server-side compaction instead by passing
487
+ * `edits: [{ type: 'compact_20260112' }]` in the params passed to `toolRunner()`.
488
+ * See https://platform.claude.com/docs/en/build-with-claude/compaction
489
+ */
490
+ compactionControl?: CompactionControl;
491
+ }
492
+ >;
493
+
494
+ export type BetaToolRunnerRequestOptions = Pick<RequestOptions, 'headers'>;
@@ -0,0 +1,57 @@
1
+ import { Model } from '../../resources';
2
+
3
+ export const DEFAULT_TOKEN_THRESHOLD = 100_000;
4
+
5
+ export const DEFAULT_SUMMARY_PROMPT = `You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
6
+ 1. Task Overview
7
+ The user's core request and success criteria
8
+ Any clarifications or constraints they specified
9
+ 2. Current State
10
+ What has been completed so far
11
+ Files created, modified, or analyzed (with paths if relevant)
12
+ Key outputs or artifacts produced
13
+ 3. Important Discoveries
14
+ Technical constraints or requirements uncovered
15
+ Decisions made and their rationale
16
+ Errors encountered and how they were resolved
17
+ What approaches were tried that didn't work (and why)
18
+ 4. Next Steps
19
+ Specific actions needed to complete the task
20
+ Any blockers or open questions to resolve
21
+ Priority order if multiple steps remain
22
+ 5. Context to Preserve
23
+ User preferences or style requirements
24
+ Domain-specific details that aren't obvious
25
+ Any promises made to the user
26
+ Be concise but complete—err on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task.
27
+ Wrap your summary in <summary></summary> tags.`;
28
+
29
+ /**
30
+ * @deprecated Use server-side compaction instead by passing
31
+ * `edits: [{ type: 'compact_20260112' }]` in the params passed to `toolRunner()`.
32
+ * See https://platform.claude.com/docs/en/build-with-claude/compaction
33
+ */
34
+ export interface CompactionControl {
35
+ /**
36
+ * The context token threshold at which to trigger compaction.
37
+ *
38
+ * When the cumulative token count (input + output) across all messages exceeds this threshold,
39
+ * the message history will be automatically summarized and compressed.
40
+ *
41
+ * @default 100000
42
+ */
43
+ contextTokenThreshold?: number;
44
+
45
+ /**
46
+ * The model to use for generating the compaction summary.
47
+ * If not specified, defaults to the same model used for the tool runner.
48
+ */
49
+ model?: Model;
50
+
51
+ /**
52
+ * The prompt used to instruct the model on how to generate the summary.
53
+ */
54
+ summaryPrompt?: string;
55
+
56
+ enabled: boolean;
57
+ }
@@ -0,0 +1,47 @@
1
+ import { BetaToolResultContentBlockParam } from '../../resources/beta';
2
+
3
+ /**
4
+ * An error that can be thrown from a tool's `run` method to return structured
5
+ * content blocks as the error result, rather than just a string message.
6
+ *
7
+ * When the ToolRunner catches this error, it will use the `content` property
8
+ * as the tool result with `is_error: true`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const tool = {
13
+ * name: 'my_tool',
14
+ * run: async (input) => {
15
+ * if (somethingWentWrong) {
16
+ * throw new ToolError([
17
+ * { type: 'text', text: 'Error details here' },
18
+ * { type: 'image', source: { type: 'base64', data: '...', media_type: 'image/png' } },
19
+ * ]);
20
+ * }
21
+ * return 'success';
22
+ * },
23
+ * };
24
+ * ```
25
+ */
26
+ export class ToolError extends Error {
27
+ /**
28
+ * The content to return as the tool result. This will be sent back to the model
29
+ * with `is_error: true`.
30
+ */
31
+ readonly content: string | Array<BetaToolResultContentBlockParam>;
32
+
33
+ constructor(content: string | Array<BetaToolResultContentBlockParam>) {
34
+ const message =
35
+ typeof content === 'string' ? content : (
36
+ content
37
+ .map((block) => {
38
+ if (block.type === 'text') return block.text;
39
+ return `[${block.type}]`;
40
+ })
41
+ .join(' ')
42
+ );
43
+ super(message);
44
+ this.name = 'ToolError';
45
+ this.content = content;
46
+ }
47
+ }