@strands-agents/sdk 0.0.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 (423) hide show
  1. package/LICENSE +175 -0
  2. package/README.md +185 -0
  3. package/dist/__fixtures__/model-test-helpers.d.ts +56 -0
  4. package/dist/__fixtures__/model-test-helpers.d.ts.map +1 -0
  5. package/dist/__fixtures__/model-test-helpers.js +85 -0
  6. package/dist/__fixtures__/model-test-helpers.js.map +1 -0
  7. package/dist/__fixtures__/tool-helpers.d.ts +15 -0
  8. package/dist/__fixtures__/tool-helpers.d.ts.map +1 -0
  9. package/dist/__fixtures__/tool-helpers.js +22 -0
  10. package/dist/__fixtures__/tool-helpers.js.map +1 -0
  11. package/dist/__tests__/errors.test.d.ts +2 -0
  12. package/dist/__tests__/errors.test.d.ts.map +1 -0
  13. package/dist/__tests__/errors.test.js +20 -0
  14. package/dist/__tests__/errors.test.js.map +1 -0
  15. package/dist/__tests__/index.test.d.ts +2 -0
  16. package/dist/__tests__/index.test.d.ts.map +1 -0
  17. package/dist/__tests__/index.test.js +27 -0
  18. package/dist/__tests__/index.test.js.map +1 -0
  19. package/dist/errors.d.ts +22 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/errors.js +25 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/index.d.ts +19 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +17 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/models/__tests__/bedrock.test.d.ts +2 -0
  28. package/dist/models/__tests__/bedrock.test.d.ts.map +1 -0
  29. package/dist/models/__tests__/bedrock.test.js +1161 -0
  30. package/dist/models/__tests__/bedrock.test.js.map +1 -0
  31. package/dist/models/__tests__/model.test.d.ts +2 -0
  32. package/dist/models/__tests__/model.test.d.ts.map +1 -0
  33. package/dist/models/__tests__/model.test.js +297 -0
  34. package/dist/models/__tests__/model.test.js.map +1 -0
  35. package/dist/models/__tests__/openai.test.d.ts +2 -0
  36. package/dist/models/__tests__/openai.test.d.ts.map +1 -0
  37. package/dist/models/__tests__/openai.test.js +1016 -0
  38. package/dist/models/__tests__/openai.test.js.map +1 -0
  39. package/dist/models/__tests__/test-utils.d.ts +10 -0
  40. package/dist/models/__tests__/test-utils.d.ts.map +1 -0
  41. package/dist/models/__tests__/test-utils.js +17 -0
  42. package/dist/models/__tests__/test-utils.js.map +1 -0
  43. package/dist/models/bedrock.d.ts +272 -0
  44. package/dist/models/bedrock.d.ts.map +1 -0
  45. package/dist/models/bedrock.js +679 -0
  46. package/dist/models/bedrock.js.map +1 -0
  47. package/dist/models/model.d.ts +89 -0
  48. package/dist/models/model.d.ts.map +1 -0
  49. package/dist/models/model.js +122 -0
  50. package/dist/models/model.js.map +1 -0
  51. package/dist/models/openai.d.ts +262 -0
  52. package/dist/models/openai.d.ts.map +1 -0
  53. package/dist/models/openai.js +625 -0
  54. package/dist/models/openai.js.map +1 -0
  55. package/dist/models/streaming.d.ts +226 -0
  56. package/dist/models/streaming.d.ts.map +1 -0
  57. package/dist/models/streaming.js +2 -0
  58. package/dist/models/streaming.js.map +1 -0
  59. package/dist/src/__fixtures__/agent-helpers.d.ts +29 -0
  60. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -0
  61. package/dist/src/__fixtures__/agent-helpers.js +19 -0
  62. package/dist/src/__fixtures__/agent-helpers.js.map +1 -0
  63. package/dist/src/__fixtures__/environment.d.ts +12 -0
  64. package/dist/src/__fixtures__/environment.d.ts.map +1 -0
  65. package/dist/src/__fixtures__/environment.js +12 -0
  66. package/dist/src/__fixtures__/environment.js.map +1 -0
  67. package/dist/src/__fixtures__/mock-hook-provider.d.ts +14 -0
  68. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -0
  69. package/dist/src/__fixtures__/mock-hook-provider.js +33 -0
  70. package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -0
  71. package/dist/src/__fixtures__/mock-message-model.d.ts +93 -0
  72. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -0
  73. package/dist/src/__fixtures__/mock-message-model.js +226 -0
  74. package/dist/src/__fixtures__/mock-message-model.js.map +1 -0
  75. package/dist/src/__fixtures__/model-test-helpers.d.ts +56 -0
  76. package/dist/src/__fixtures__/model-test-helpers.d.ts.map +1 -0
  77. package/dist/src/__fixtures__/model-test-helpers.js +85 -0
  78. package/dist/src/__fixtures__/model-test-helpers.js.map +1 -0
  79. package/dist/src/__fixtures__/tool-helpers.d.ts +37 -0
  80. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -0
  81. package/dist/src/__fixtures__/tool-helpers.js +78 -0
  82. package/dist/src/__fixtures__/tool-helpers.js.map +1 -0
  83. package/dist/src/__tests__/errors.test.d.ts +2 -0
  84. package/dist/src/__tests__/errors.test.d.ts.map +1 -0
  85. package/dist/src/__tests__/errors.test.js +64 -0
  86. package/dist/src/__tests__/errors.test.js.map +1 -0
  87. package/dist/src/__tests__/index.test.d.ts +2 -0
  88. package/dist/src/__tests__/index.test.d.ts.map +1 -0
  89. package/dist/src/__tests__/index.test.js +27 -0
  90. package/dist/src/__tests__/index.test.js.map +1 -0
  91. package/dist/src/__tests__/mcp.test.d.ts +2 -0
  92. package/dist/src/__tests__/mcp.test.d.ts.map +1 -0
  93. package/dist/src/__tests__/mcp.test.js +166 -0
  94. package/dist/src/__tests__/mcp.test.js.map +1 -0
  95. package/dist/src/agent/__tests__/agent.hook.test.d.ts +2 -0
  96. package/dist/src/agent/__tests__/agent.hook.test.d.ts.map +1 -0
  97. package/dist/src/agent/__tests__/agent.hook.test.js +250 -0
  98. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -0
  99. package/dist/src/agent/__tests__/agent.test.d.ts +2 -0
  100. package/dist/src/agent/__tests__/agent.test.d.ts.map +1 -0
  101. package/dist/src/agent/__tests__/agent.test.js +414 -0
  102. package/dist/src/agent/__tests__/agent.test.js.map +1 -0
  103. package/dist/src/agent/__tests__/printer.test.d.ts +2 -0
  104. package/dist/src/agent/__tests__/printer.test.d.ts.map +1 -0
  105. package/dist/src/agent/__tests__/printer.test.js +152 -0
  106. package/dist/src/agent/__tests__/printer.test.js.map +1 -0
  107. package/dist/src/agent/__tests__/state.test.d.ts +2 -0
  108. package/dist/src/agent/__tests__/state.test.d.ts.map +1 -0
  109. package/dist/src/agent/__tests__/state.test.js +231 -0
  110. package/dist/src/agent/__tests__/state.test.js.map +1 -0
  111. package/dist/src/agent/agent.d.ts +207 -0
  112. package/dist/src/agent/agent.d.ts.map +1 -0
  113. package/dist/src/agent/agent.js +481 -0
  114. package/dist/src/agent/agent.js.map +1 -0
  115. package/dist/src/agent/printer.d.ts +73 -0
  116. package/dist/src/agent/printer.d.ts.map +1 -0
  117. package/dist/src/agent/printer.js +145 -0
  118. package/dist/src/agent/printer.js.map +1 -0
  119. package/dist/src/agent/state.d.ts +102 -0
  120. package/dist/src/agent/state.d.ts.map +1 -0
  121. package/dist/src/agent/state.js +73 -0
  122. package/dist/src/agent/state.js.map +1 -0
  123. package/dist/src/agent/streaming.d.ts +91 -0
  124. package/dist/src/agent/streaming.d.ts.map +1 -0
  125. package/dist/src/agent/streaming.js +2 -0
  126. package/dist/src/agent/streaming.js.map +1 -0
  127. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +2 -0
  128. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +1 -0
  129. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +10 -0
  130. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -0
  131. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts +2 -0
  132. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts.map +1 -0
  133. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +35 -0
  134. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -0
  135. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts +2 -0
  136. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts.map +1 -0
  137. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +553 -0
  138. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -0
  139. package/dist/src/conversation-manager/conversation-manager.d.ts +73 -0
  140. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -0
  141. package/dist/src/conversation-manager/conversation-manager.js +24 -0
  142. package/dist/src/conversation-manager/conversation-manager.js.map +1 -0
  143. package/dist/src/conversation-manager/index.d.ts +8 -0
  144. package/dist/src/conversation-manager/index.d.ts.map +1 -0
  145. package/dist/src/conversation-manager/index.js +8 -0
  146. package/dist/src/conversation-manager/index.js.map +1 -0
  147. package/dist/src/conversation-manager/null-conversation-manager.d.ts +23 -0
  148. package/dist/src/conversation-manager/null-conversation-manager.d.ts.map +1 -0
  149. package/dist/src/conversation-manager/null-conversation-manager.js +23 -0
  150. package/dist/src/conversation-manager/null-conversation-manager.js.map +1 -0
  151. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +105 -0
  152. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -0
  153. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +212 -0
  154. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -0
  155. package/dist/src/errors.d.ts +83 -0
  156. package/dist/src/errors.d.ts.map +1 -0
  157. package/dist/src/errors.js +97 -0
  158. package/dist/src/errors.js.map +1 -0
  159. package/dist/src/hooks/__tests__/events.test.d.ts +2 -0
  160. package/dist/src/hooks/__tests__/events.test.d.ts.map +1 -0
  161. package/dist/src/hooks/__tests__/events.test.js +347 -0
  162. package/dist/src/hooks/__tests__/events.test.js.map +1 -0
  163. package/dist/src/hooks/__tests__/registry.test.d.ts +2 -0
  164. package/dist/src/hooks/__tests__/registry.test.d.ts.map +1 -0
  165. package/dist/src/hooks/__tests__/registry.test.js +154 -0
  166. package/dist/src/hooks/__tests__/registry.test.js.map +1 -0
  167. package/dist/src/hooks/events.d.ts +199 -0
  168. package/dist/src/hooks/events.d.ts.map +1 -0
  169. package/dist/src/hooks/events.js +191 -0
  170. package/dist/src/hooks/events.js.map +1 -0
  171. package/dist/src/hooks/index.d.ts +11 -0
  172. package/dist/src/hooks/index.d.ts.map +1 -0
  173. package/dist/src/hooks/index.js +11 -0
  174. package/dist/src/hooks/index.js.map +1 -0
  175. package/dist/src/hooks/registry.d.ts +65 -0
  176. package/dist/src/hooks/registry.d.ts.map +1 -0
  177. package/dist/src/hooks/registry.js +65 -0
  178. package/dist/src/hooks/registry.js.map +1 -0
  179. package/dist/src/hooks/types.d.ts +49 -0
  180. package/dist/src/hooks/types.d.ts.map +1 -0
  181. package/dist/src/hooks/types.js +2 -0
  182. package/dist/src/hooks/types.js.map +1 -0
  183. package/dist/src/index.d.ts +32 -0
  184. package/dist/src/index.d.ts.map +1 -0
  185. package/dist/src/index.js +29 -0
  186. package/dist/src/index.js.map +1 -0
  187. package/dist/src/mcp.d.ts +51 -0
  188. package/dist/src/mcp.d.ts.map +1 -0
  189. package/dist/src/mcp.js +91 -0
  190. package/dist/src/mcp.js.map +1 -0
  191. package/dist/src/models/__tests__/bedrock.test.d.ts +2 -0
  192. package/dist/src/models/__tests__/bedrock.test.d.ts.map +1 -0
  193. package/dist/src/models/__tests__/bedrock.test.js +1388 -0
  194. package/dist/src/models/__tests__/bedrock.test.js.map +1 -0
  195. package/dist/src/models/__tests__/model.test.d.ts +2 -0
  196. package/dist/src/models/__tests__/model.test.d.ts.map +1 -0
  197. package/dist/src/models/__tests__/model.test.js +342 -0
  198. package/dist/src/models/__tests__/model.test.js.map +1 -0
  199. package/dist/src/models/__tests__/openai.test.d.ts +2 -0
  200. package/dist/src/models/__tests__/openai.test.d.ts.map +1 -0
  201. package/dist/src/models/__tests__/openai.test.js +1189 -0
  202. package/dist/src/models/__tests__/openai.test.js.map +1 -0
  203. package/dist/src/models/__tests__/test-utils.d.ts +10 -0
  204. package/dist/src/models/__tests__/test-utils.d.ts.map +1 -0
  205. package/dist/src/models/__tests__/test-utils.js +17 -0
  206. package/dist/src/models/__tests__/test-utils.js.map +1 -0
  207. package/dist/src/models/bedrock.d.ts +289 -0
  208. package/dist/src/models/bedrock.d.ts.map +1 -0
  209. package/dist/src/models/bedrock.js +804 -0
  210. package/dist/src/models/bedrock.js.map +1 -0
  211. package/dist/src/models/model.d.ts +99 -0
  212. package/dist/src/models/model.d.ts.map +1 -0
  213. package/dist/src/models/model.js +169 -0
  214. package/dist/src/models/model.js.map +1 -0
  215. package/dist/src/models/openai.d.ts +262 -0
  216. package/dist/src/models/openai.d.ts.map +1 -0
  217. package/dist/src/models/openai.js +752 -0
  218. package/dist/src/models/openai.js.map +1 -0
  219. package/dist/src/models/streaming.d.ts +318 -0
  220. package/dist/src/models/streaming.d.ts.map +1 -0
  221. package/dist/src/models/streaming.js +122 -0
  222. package/dist/src/models/streaming.js.map +1 -0
  223. package/dist/src/registry/registry.d.ts +117 -0
  224. package/dist/src/registry/registry.d.ts.map +1 -0
  225. package/dist/src/registry/registry.js +298 -0
  226. package/dist/src/registry/registry.js.map +1 -0
  227. package/dist/src/registry/tool-registry.d.ts +34 -0
  228. package/dist/src/registry/tool-registry.d.ts.map +1 -0
  229. package/dist/src/registry/tool-registry.js +178 -0
  230. package/dist/src/registry/tool-registry.js.map +1 -0
  231. package/dist/src/tools/__tests__/tool.test.d.ts +2 -0
  232. package/dist/src/tools/__tests__/tool.test.d.ts.map +1 -0
  233. package/dist/src/tools/__tests__/tool.test.js +877 -0
  234. package/dist/src/tools/__tests__/tool.test.js.map +1 -0
  235. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts +2 -0
  236. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts.map +1 -0
  237. package/dist/src/tools/__tests__/zod-tool.test-d.js +227 -0
  238. package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -0
  239. package/dist/src/tools/__tests__/zod-tool.test.d.ts +2 -0
  240. package/dist/src/tools/__tests__/zod-tool.test.d.ts.map +1 -0
  241. package/dist/src/tools/__tests__/zod-tool.test.js +372 -0
  242. package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -0
  243. package/dist/src/tools/function-tool.d.ts +146 -0
  244. package/dist/src/tools/function-tool.d.ts.map +1 -0
  245. package/dist/src/tools/function-tool.js +188 -0
  246. package/dist/src/tools/function-tool.js.map +1 -0
  247. package/dist/src/tools/mcp-tool.d.ts +36 -0
  248. package/dist/src/tools/mcp-tool.d.ts.map +1 -0
  249. package/dist/src/tools/mcp-tool.js +78 -0
  250. package/dist/src/tools/mcp-tool.js.map +1 -0
  251. package/dist/src/tools/tool.d.ts +167 -0
  252. package/dist/src/tools/tool.d.ts.map +1 -0
  253. package/dist/src/tools/tool.js +68 -0
  254. package/dist/src/tools/tool.js.map +1 -0
  255. package/dist/src/tools/types.d.ts +62 -0
  256. package/dist/src/tools/types.d.ts.map +1 -0
  257. package/dist/src/tools/types.js +2 -0
  258. package/dist/src/tools/types.js.map +1 -0
  259. package/dist/src/tools/zod-tool.d.ts +70 -0
  260. package/dist/src/tools/zod-tool.d.ts.map +1 -0
  261. package/dist/src/tools/zod-tool.js +149 -0
  262. package/dist/src/tools/zod-tool.js.map +1 -0
  263. package/dist/src/types/__tests__/agent.test.d.ts +2 -0
  264. package/dist/src/types/__tests__/agent.test.d.ts.map +1 -0
  265. package/dist/src/types/__tests__/agent.test.js +155 -0
  266. package/dist/src/types/__tests__/agent.test.js.map +1 -0
  267. package/dist/src/types/__tests__/json.test.d.ts +2 -0
  268. package/dist/src/types/__tests__/json.test.d.ts.map +1 -0
  269. package/dist/src/types/__tests__/json.test.js +298 -0
  270. package/dist/src/types/__tests__/json.test.js.map +1 -0
  271. package/dist/src/types/__tests__/media.test.d.ts +2 -0
  272. package/dist/src/types/__tests__/media.test.d.ts.map +1 -0
  273. package/dist/src/types/__tests__/media.test.js +257 -0
  274. package/dist/src/types/__tests__/media.test.js.map +1 -0
  275. package/dist/src/types/__tests__/messages.test.d.ts +2 -0
  276. package/dist/src/types/__tests__/messages.test.d.ts.map +1 -0
  277. package/dist/src/types/__tests__/messages.test.js +364 -0
  278. package/dist/src/types/__tests__/messages.test.js.map +1 -0
  279. package/dist/src/types/__tests__/validation.test.d.ts +2 -0
  280. package/dist/src/types/__tests__/validation.test.d.ts.map +1 -0
  281. package/dist/src/types/__tests__/validation.test.js +30 -0
  282. package/dist/src/types/__tests__/validation.test.js.map +1 -0
  283. package/dist/src/types/agent.d.ts +57 -0
  284. package/dist/src/types/agent.d.ts.map +1 -0
  285. package/dist/src/types/agent.js +47 -0
  286. package/dist/src/types/agent.js.map +1 -0
  287. package/dist/src/types/json.d.ts +55 -0
  288. package/dist/src/types/json.d.ts.map +1 -0
  289. package/dist/src/types/json.js +72 -0
  290. package/dist/src/types/json.js.map +1 -0
  291. package/dist/src/types/media.d.ts +249 -0
  292. package/dist/src/types/media.d.ts.map +1 -0
  293. package/dist/src/types/media.js +173 -0
  294. package/dist/src/types/media.js.map +1 -0
  295. package/dist/src/types/messages.d.ts +438 -0
  296. package/dist/src/types/messages.d.ts.map +1 -0
  297. package/dist/src/types/messages.js +286 -0
  298. package/dist/src/types/messages.js.map +1 -0
  299. package/dist/src/types/validation.d.ts +10 -0
  300. package/dist/src/types/validation.d.ts.map +1 -0
  301. package/dist/src/types/validation.js +15 -0
  302. package/dist/src/types/validation.js.map +1 -0
  303. package/dist/tools/__tests__/registry.test.d.ts +2 -0
  304. package/dist/tools/__tests__/registry.test.d.ts.map +1 -0
  305. package/dist/tools/__tests__/registry.test.js +253 -0
  306. package/dist/tools/__tests__/registry.test.js.map +1 -0
  307. package/dist/tools/__tests__/tool.test.d.ts +2 -0
  308. package/dist/tools/__tests__/tool.test.d.ts.map +1 -0
  309. package/dist/tools/__tests__/tool.test.js +761 -0
  310. package/dist/tools/__tests__/tool.test.js.map +1 -0
  311. package/dist/tools/__tests__/zod-tool.test-d.d.ts +2 -0
  312. package/dist/tools/__tests__/zod-tool.test-d.d.ts.map +1 -0
  313. package/dist/tools/__tests__/zod-tool.test-d.js +227 -0
  314. package/dist/tools/__tests__/zod-tool.test-d.js.map +1 -0
  315. package/dist/tools/__tests__/zod-tool.test.d.ts +2 -0
  316. package/dist/tools/__tests__/zod-tool.test.d.ts.map +1 -0
  317. package/dist/tools/__tests__/zod-tool.test.js +342 -0
  318. package/dist/tools/__tests__/zod-tool.test.js.map +1 -0
  319. package/dist/tools/function-tool.d.ts +156 -0
  320. package/dist/tools/function-tool.d.ts.map +1 -0
  321. package/dist/tools/function-tool.js +237 -0
  322. package/dist/tools/function-tool.js.map +1 -0
  323. package/dist/tools/registry.d.ts +43 -0
  324. package/dist/tools/registry.d.ts.map +1 -0
  325. package/dist/tools/registry.js +82 -0
  326. package/dist/tools/registry.js.map +1 -0
  327. package/dist/tools/tool.d.ts +157 -0
  328. package/dist/tools/tool.d.ts.map +1 -0
  329. package/dist/tools/tool.js +2 -0
  330. package/dist/tools/tool.js.map +1 -0
  331. package/dist/tools/types.d.ts +119 -0
  332. package/dist/tools/types.d.ts.map +1 -0
  333. package/dist/tools/types.js +2 -0
  334. package/dist/tools/types.js.map +1 -0
  335. package/dist/tools/zod-tool.d.ts +70 -0
  336. package/dist/tools/zod-tool.d.ts.map +1 -0
  337. package/dist/tools/zod-tool.js +96 -0
  338. package/dist/tools/zod-tool.js.map +1 -0
  339. package/dist/types/__tests__/json.test.d.ts +2 -0
  340. package/dist/types/__tests__/json.test.d.ts.map +1 -0
  341. package/dist/types/__tests__/json.test.js +129 -0
  342. package/dist/types/__tests__/json.test.js.map +1 -0
  343. package/dist/types/__tests__/validation.test.d.ts +2 -0
  344. package/dist/types/__tests__/validation.test.d.ts.map +1 -0
  345. package/dist/types/__tests__/validation.test.js +30 -0
  346. package/dist/types/__tests__/validation.test.js.map +1 -0
  347. package/dist/types/json.d.ts +45 -0
  348. package/dist/types/json.d.ts.map +1 -0
  349. package/dist/types/json.js +17 -0
  350. package/dist/types/json.js.map +1 -0
  351. package/dist/types/messages.d.ts +160 -0
  352. package/dist/types/messages.d.ts.map +1 -0
  353. package/dist/types/messages.js +2 -0
  354. package/dist/types/messages.js.map +1 -0
  355. package/dist/types/validation.d.ts +10 -0
  356. package/dist/types/validation.d.ts.map +1 -0
  357. package/dist/types/validation.js +15 -0
  358. package/dist/types/validation.js.map +1 -0
  359. package/dist/vended_tools/bash/__tests__/bash.test.d.ts +2 -0
  360. package/dist/vended_tools/bash/__tests__/bash.test.d.ts.map +1 -0
  361. package/dist/vended_tools/bash/__tests__/bash.test.js +333 -0
  362. package/dist/vended_tools/bash/__tests__/bash.test.js.map +1 -0
  363. package/dist/vended_tools/bash/bash.d.ts +33 -0
  364. package/dist/vended_tools/bash/bash.d.ts.map +1 -0
  365. package/dist/vended_tools/bash/bash.js +264 -0
  366. package/dist/vended_tools/bash/bash.js.map +1 -0
  367. package/dist/vended_tools/bash/index.d.ts +7 -0
  368. package/dist/vended_tools/bash/index.d.ts.map +1 -0
  369. package/dist/vended_tools/bash/index.js +6 -0
  370. package/dist/vended_tools/bash/index.js.map +1 -0
  371. package/dist/vended_tools/bash/types.d.ts +65 -0
  372. package/dist/vended_tools/bash/types.d.ts.map +1 -0
  373. package/dist/vended_tools/bash/types.js +22 -0
  374. package/dist/vended_tools/bash/types.js.map +1 -0
  375. package/dist/vended_tools/file_editor/__tests__/file-editor.test.d.ts +2 -0
  376. package/dist/vended_tools/file_editor/__tests__/file-editor.test.d.ts.map +1 -0
  377. package/dist/vended_tools/file_editor/__tests__/file-editor.test.js +359 -0
  378. package/dist/vended_tools/file_editor/__tests__/file-editor.test.js.map +1 -0
  379. package/dist/vended_tools/file_editor/file-editor.d.ts +31 -0
  380. package/dist/vended_tools/file_editor/file-editor.d.ts.map +1 -0
  381. package/dist/vended_tools/file_editor/file-editor.js +353 -0
  382. package/dist/vended_tools/file_editor/file-editor.js.map +1 -0
  383. package/dist/vended_tools/file_editor/index.d.ts +6 -0
  384. package/dist/vended_tools/file_editor/index.d.ts.map +1 -0
  385. package/dist/vended_tools/file_editor/index.js +5 -0
  386. package/dist/vended_tools/file_editor/index.js.map +1 -0
  387. package/dist/vended_tools/file_editor/types.d.ts +61 -0
  388. package/dist/vended_tools/file_editor/types.d.ts.map +1 -0
  389. package/dist/vended_tools/file_editor/types.js +2 -0
  390. package/dist/vended_tools/file_editor/types.js.map +1 -0
  391. package/dist/vended_tools/http_request/__tests__/http-request.test.d.ts +2 -0
  392. package/dist/vended_tools/http_request/__tests__/http-request.test.d.ts.map +1 -0
  393. package/dist/vended_tools/http_request/__tests__/http-request.test.js +189 -0
  394. package/dist/vended_tools/http_request/__tests__/http-request.test.js.map +1 -0
  395. package/dist/vended_tools/http_request/http-request.d.ts +35 -0
  396. package/dist/vended_tools/http_request/http-request.d.ts.map +1 -0
  397. package/dist/vended_tools/http_request/http-request.js +95 -0
  398. package/dist/vended_tools/http_request/http-request.js.map +1 -0
  399. package/dist/vended_tools/http_request/index.d.ts +6 -0
  400. package/dist/vended_tools/http_request/index.d.ts.map +1 -0
  401. package/dist/vended_tools/http_request/index.js +5 -0
  402. package/dist/vended_tools/http_request/index.js.map +1 -0
  403. package/dist/vended_tools/http_request/types.d.ts +47 -0
  404. package/dist/vended_tools/http_request/types.d.ts.map +1 -0
  405. package/dist/vended_tools/http_request/types.js +2 -0
  406. package/dist/vended_tools/http_request/types.js.map +1 -0
  407. package/dist/vended_tools/notebook/__tests__/notebook.test.d.ts +2 -0
  408. package/dist/vended_tools/notebook/__tests__/notebook.test.d.ts.map +1 -0
  409. package/dist/vended_tools/notebook/__tests__/notebook.test.js +371 -0
  410. package/dist/vended_tools/notebook/__tests__/notebook.test.js.map +1 -0
  411. package/dist/vended_tools/notebook/index.d.ts +6 -0
  412. package/dist/vended_tools/notebook/index.d.ts.map +1 -0
  413. package/dist/vended_tools/notebook/index.js +5 -0
  414. package/dist/vended_tools/notebook/index.js.map +1 -0
  415. package/dist/vended_tools/notebook/notebook.d.ts +29 -0
  416. package/dist/vended_tools/notebook/notebook.d.ts.map +1 -0
  417. package/dist/vended_tools/notebook/notebook.js +215 -0
  418. package/dist/vended_tools/notebook/notebook.js.map +1 -0
  419. package/dist/vended_tools/notebook/types.d.ts +79 -0
  420. package/dist/vended_tools/notebook/types.d.ts.map +1 -0
  421. package/dist/vended_tools/notebook/types.js +2 -0
  422. package/dist/vended_tools/notebook/types.js.map +1 -0
  423. package/package.json +112 -0
@@ -0,0 +1,188 @@
1
+ import { createErrorResult, Tool } from './tool.js';
2
+ import { ToolStreamEvent } from './tool.js';
3
+ import { deepCopy } from '../types/json.js';
4
+ import { JsonBlock, TextBlock, ToolResultBlock } from '../types/messages.js';
5
+ /**
6
+ * A Tool implementation that wraps a callback function and handles all ToolResultBlock conversion.
7
+ *
8
+ * FunctionTool allows creating tools from existing functions without needing to manually
9
+ * handle ToolResultBlock formatting or error handling. It supports multiple callback patterns:
10
+ * - Async generators for streaming responses
11
+ * - Promises for async operations
12
+ * - Synchronous functions for immediate results
13
+ *
14
+ * All return values are automatically wrapped in ToolResultBlock, and errors are caught and
15
+ * returned as error ToolResultBlocks.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Create a tool with streaming
20
+ * const streamingTool = new FunctionTool({
21
+ * name: 'processor',
22
+ * description: 'Processes data with progress updates',
23
+ * inputSchema: { type: 'object', properties: { data: { type: 'string' } } },
24
+ * callback: async function* (input: any) {
25
+ * yield 'Starting processing...'
26
+ * // Do some work
27
+ * yield 'Halfway done...'
28
+ * // More work
29
+ * return 'Processing complete!'
30
+ * }
31
+ * })
32
+ * ```
33
+ */
34
+ export class FunctionTool extends Tool {
35
+ /**
36
+ * The unique name of the tool.
37
+ */
38
+ name;
39
+ /**
40
+ * Human-readable description of what the tool does.
41
+ */
42
+ description;
43
+ /**
44
+ * OpenAPI JSON specification for the tool.
45
+ */
46
+ toolSpec;
47
+ /**
48
+ * The callback function that implements the tool's logic.
49
+ */
50
+ _callback;
51
+ /**
52
+ * Creates a new FunctionTool instance.
53
+ *
54
+ * @param config - Configuration object for the tool
55
+ *
56
+ * @example
57
+ * ```typescript
58
+ * const tool = new FunctionTool({
59
+ * name: 'greeter',
60
+ * description: 'Greets a person by name',
61
+ * inputSchema: {
62
+ * type: 'object',
63
+ * properties: { name: { type: 'string' } },
64
+ * required: ['name']
65
+ * },
66
+ * callback: (input: any) => `Hello, ${input.name}!`
67
+ * })
68
+ * ```
69
+ */
70
+ constructor(config) {
71
+ super();
72
+ this.name = config.name;
73
+ this.description = config.description;
74
+ this.toolSpec = {
75
+ name: config.name,
76
+ description: config.description,
77
+ inputSchema: config.inputSchema,
78
+ };
79
+ this._callback = config.callback;
80
+ }
81
+ /**
82
+ * Executes the tool with streaming support.
83
+ * Handles all callback patterns (async generator, promise, sync) and converts results to ToolResultBlock.
84
+ *
85
+ * @param toolContext - Context information including the tool use request and invocation state
86
+ * @returns Async generator that yields ToolStreamEvents and returns a ToolResultBlock
87
+ */
88
+ async *stream(toolContext) {
89
+ const { toolUse } = toolContext;
90
+ try {
91
+ const result = this._callback(toolUse.input, toolContext);
92
+ // Check if result is an async generator
93
+ if (result && typeof result === 'object' && Symbol.asyncIterator in result) {
94
+ // Handle async generator: yield each value as ToolStreamEvent, wrap final value in ToolResultBlock
95
+ const generator = result;
96
+ // Iterate through all yielded values
97
+ let iterResult = await generator.next();
98
+ while (!iterResult.done) {
99
+ // Each yielded value becomes a ToolStreamEvent
100
+ yield new ToolStreamEvent({
101
+ data: iterResult.value,
102
+ });
103
+ iterResult = await generator.next();
104
+ }
105
+ // The generator's return value (when done = true) is wrapped in ToolResultBlock
106
+ return this._wrapInToolResult(iterResult.value, toolUse.toolUseId);
107
+ }
108
+ else if (result instanceof Promise) {
109
+ // Handle promise: await and wrap in ToolResultBlock
110
+ const value = await result;
111
+ return this._wrapInToolResult(value, toolUse.toolUseId);
112
+ }
113
+ else {
114
+ // Handle synchronous value: wrap in ToolResultBlock
115
+ return this._wrapInToolResult(result, toolUse.toolUseId);
116
+ }
117
+ }
118
+ catch (error) {
119
+ // Handle any errors and yield as error ToolResultBlock
120
+ return createErrorResult(error, toolUse.toolUseId);
121
+ }
122
+ }
123
+ /**
124
+ * Wraps a value in a ToolResultBlock with success status.
125
+ *
126
+ * Due to AWS Bedrock limitations (only accepts objects as JSON content), the following
127
+ * rules are applied:
128
+ * - Strings → TextBlock
129
+ * - Numbers, Booleans → TextBlock (converted to string)
130
+ * - null, undefined → TextBlock (special string representation)
131
+ * - Objects → JsonBlock (with deep copy)
132
+ * - Arrays → JsonBlock wrapped in \{ $value: array \} (with deep copy)
133
+ *
134
+ * @param value - The value to wrap (can be any type)
135
+ * @param toolUseId - The tool use ID for the ToolResultBlock
136
+ * @returns A ToolResultBlock containing the value
137
+ */
138
+ _wrapInToolResult(value, toolUseId) {
139
+ try {
140
+ // Handle null with special string representation as text content
141
+ if (value === null) {
142
+ return new ToolResultBlock({
143
+ toolUseId,
144
+ status: 'success',
145
+ content: [new TextBlock('<null>')],
146
+ });
147
+ }
148
+ // Handle undefined with special string representation as text content
149
+ if (value === undefined) {
150
+ return new ToolResultBlock({
151
+ toolUseId,
152
+ status: 'success',
153
+ content: [new TextBlock('<undefined>')],
154
+ });
155
+ }
156
+ // Handle primitives (strings, numbers, booleans) as text content
157
+ // Bedrock doesn't accept primitives as JSON content, so we convert all to strings
158
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
159
+ return new ToolResultBlock({
160
+ toolUseId,
161
+ status: 'success',
162
+ content: [new TextBlock(String(value))],
163
+ });
164
+ }
165
+ // Handle arrays by wrapping in object { $value: array }
166
+ if (Array.isArray(value)) {
167
+ const copiedValue = deepCopy(value);
168
+ return new ToolResultBlock({
169
+ toolUseId,
170
+ status: 'success',
171
+ content: [new JsonBlock({ json: { $value: copiedValue } })],
172
+ });
173
+ }
174
+ // Handle objects as JSON content with deep copy
175
+ const copiedValue = deepCopy(value);
176
+ return new ToolResultBlock({
177
+ toolUseId,
178
+ status: 'success',
179
+ content: [new JsonBlock({ json: copiedValue })],
180
+ });
181
+ }
182
+ catch (error) {
183
+ // If deep copy fails (circular references, non-serializable values), return error result
184
+ return createErrorResult(error, toolUseId);
185
+ }
186
+ }
187
+ }
188
+ //# sourceMappingURL=function-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-tool.js","sourceRoot":"","sources":["../../../src/tools/function-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Tool, type ToolContext, type ToolStreamGenerator } from './tool.js';
2
+ import type { ToolSpec } from './types.js';
3
+ import type { JSONSchema } from '../types/json.js';
4
+ import type { McpClient } from '../mcp.js';
5
+ export interface McpToolConfig {
6
+ name: string;
7
+ description: string;
8
+ inputSchema: JSONSchema;
9
+ client: McpClient;
10
+ }
11
+ /**
12
+ * A Tool implementation that proxies calls to a remote MCP server.
13
+ *
14
+ * Unlike FunctionTool, which wraps local logic, McpTool delegates execution
15
+ * to the connected McpClient and translates the SDK's response format
16
+ * directly into ToolResultBlocks.
17
+ */
18
+ export declare class McpTool extends Tool {
19
+ readonly name: string;
20
+ readonly description: string;
21
+ readonly toolSpec: ToolSpec;
22
+ private readonly mcpClient;
23
+ constructor(config: McpToolConfig);
24
+ stream(toolContext: ToolContext): ToolStreamGenerator;
25
+ /**
26
+ * Type Guard: Checks if value matches the expected MCP SDK result shape.
27
+ * \{ content: unknown[]; isError?: boolean \}
28
+ */
29
+ private _isMcpToolResult;
30
+ /**
31
+ * Type Guard: Checks if an item is a Text content block.
32
+ * \{ type: 'text'; text: string \}
33
+ */
34
+ private _isMcpTextContent;
35
+ }
36
+ //# sourceMappingURL=mcp-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/mcp-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB,MAAM,EAAE,SAAS,CAAA;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;gBAEzB,MAAM,EAAE,aAAa;IAa1B,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;IAiC5D;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAS1B"}
@@ -0,0 +1,78 @@
1
+ import { createErrorResult, Tool } from './tool.js';
2
+ import { JsonBlock, TextBlock, ToolResultBlock } from '../types/messages.js';
3
+ /**
4
+ * A Tool implementation that proxies calls to a remote MCP server.
5
+ *
6
+ * Unlike FunctionTool, which wraps local logic, McpTool delegates execution
7
+ * to the connected McpClient and translates the SDK's response format
8
+ * directly into ToolResultBlocks.
9
+ */
10
+ export class McpTool extends Tool {
11
+ name;
12
+ description;
13
+ toolSpec;
14
+ mcpClient;
15
+ constructor(config) {
16
+ super();
17
+ this.name = config.name;
18
+ this.description = config.description;
19
+ this.toolSpec = {
20
+ name: config.name,
21
+ description: config.description,
22
+ inputSchema: config.inputSchema,
23
+ };
24
+ this.mcpClient = config.client;
25
+ }
26
+ // eslint-disable-next-line require-yield
27
+ async *stream(toolContext) {
28
+ const { toolUseId, input } = toolContext.toolUse;
29
+ try {
30
+ // Input is validated by MCP Client before invocation
31
+ const rawResult = await this.mcpClient.callTool(this, input);
32
+ if (!this._isMcpToolResult(rawResult)) {
33
+ throw new Error('Invalid tool result from MCP Client: missing content array');
34
+ }
35
+ const content = rawResult.content.map((item) => {
36
+ if (this._isMcpTextContent(item)) {
37
+ return new TextBlock(item.text);
38
+ }
39
+ return new JsonBlock({ json: item });
40
+ });
41
+ if (content.length === 0) {
42
+ content.push(new TextBlock('Tool execution completed successfully with no output.'));
43
+ }
44
+ return new ToolResultBlock({
45
+ toolUseId,
46
+ status: rawResult.isError ? 'error' : 'success',
47
+ content,
48
+ });
49
+ }
50
+ catch (error) {
51
+ return createErrorResult(error, toolUseId);
52
+ }
53
+ }
54
+ /**
55
+ * Type Guard: Checks if value matches the expected MCP SDK result shape.
56
+ * \{ content: unknown[]; isError?: boolean \}
57
+ */
58
+ _isMcpToolResult(value) {
59
+ if (typeof value !== 'object' || value === null) {
60
+ return false;
61
+ }
62
+ // Safe cast to generic record to check properties
63
+ const record = value;
64
+ return Array.isArray(record.content);
65
+ }
66
+ /**
67
+ * Type Guard: Checks if an item is a Text content block.
68
+ * \{ type: 'text'; text: string \}
69
+ */
70
+ _isMcpTextContent(value) {
71
+ if (typeof value !== 'object' || value === null) {
72
+ return false;
73
+ }
74
+ const record = value;
75
+ return record.type === 'text' && typeof record.text === 'string';
76
+ }
77
+ }
78
+ //# sourceMappingURL=mcp-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tool.js","sourceRoot":"","sources":["../../../src/tools/mcp-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAA8C,MAAM,WAAW,CAAA;AAG/F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAU5E;;;;;;GAMG;AACH,MAAM,OAAO,OAAQ,SAAQ,IAAI;IACtB,IAAI,CAAQ;IACZ,WAAW,CAAQ;IACnB,QAAQ,CAAU;IACV,SAAS,CAAW;IAErC,YAAY,MAAqB;QAC/B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;QACrC,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;IAChC,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAwB;QACpC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAA;QAEhD,IAAI,CAAC;YACH,qDAAqD;YACrD,MAAM,SAAS,GAAY,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAkB,CAAC,CAAA;YAElF,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC/E,CAAC;YAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE;gBACtD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACjC,CAAC;gBAED,OAAO,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,IAAiB,EAAE,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;YAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC,CAAA;YACtF,CAAC;YAED,OAAO,IAAI,eAAe,CAAC;gBACzB,SAAS;gBACT,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBAC/C,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,KAAc;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,kDAAkD;QAClD,MAAM,MAAM,GAAG,KAAgC,CAAA;QAE/C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,KAAc;QACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,KAAgC,CAAA;QAE/C,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAA;IAClE,CAAC;CACF"}
@@ -0,0 +1,167 @@
1
+ import type { ToolSpec, ToolUse } from './types.js';
2
+ import { ToolResultBlock } from '../types/messages.js';
3
+ import type { AgentData } from '../types/agent.js';
4
+ export type { ToolSpec } from './types.js';
5
+ /**
6
+ * Context provided to tool implementations during execution.
7
+ * Contains framework-level state and information from the agent invocation.
8
+ */
9
+ export interface ToolContext {
10
+ /**
11
+ * The tool use request that triggered this tool execution.
12
+ * Contains the tool name, toolUseId, and input parameters.
13
+ */
14
+ toolUse: ToolUse;
15
+ /**
16
+ * The agent instance that is executing this tool.
17
+ * Provides access to agent state and other agent-level information.
18
+ */
19
+ agent: AgentData;
20
+ }
21
+ /**
22
+ * Data for a tool stream event.
23
+ */
24
+ export interface ToolStreamEventData {
25
+ /**
26
+ * Discriminator for tool stream events.
27
+ */
28
+ type: 'toolStreamEvent';
29
+ /**
30
+ * Caller-provided data for the progress update.
31
+ * Can be any type of data the tool wants to report.
32
+ */
33
+ data?: unknown;
34
+ }
35
+ /**
36
+ * Event yielded during tool execution to report streaming progress.
37
+ * Tools can yield zero or more of these events before returning the final ToolResult.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const streamEvent = new ToolStreamEvent({
42
+ * data: 'Processing step 1...'
43
+ * })
44
+ *
45
+ * // Or with structured data
46
+ * const streamEvent = new ToolStreamEvent({
47
+ * data: { progress: 50, message: 'Halfway complete' }
48
+ * })
49
+ * ```
50
+ */
51
+ export declare class ToolStreamEvent implements ToolStreamEventData {
52
+ /**
53
+ * Discriminator for tool stream events.
54
+ */
55
+ readonly type: "toolStreamEvent";
56
+ /**
57
+ * Caller-provided data for the progress update.
58
+ * Can be any type of data the tool wants to report.
59
+ */
60
+ readonly data?: unknown;
61
+ constructor(eventData: {
62
+ data?: unknown;
63
+ });
64
+ }
65
+ /**
66
+ * Type alias for the async generator returned by tool stream methods.
67
+ * Yields ToolStreamEvents during execution and returns a ToolResultBlock.
68
+ */
69
+ export type ToolStreamGenerator = AsyncGenerator<ToolStreamEvent, ToolResultBlock, undefined>;
70
+ /**
71
+ * Interface for tool implementations.
72
+ * Tools are used by agents to interact with their environment and perform specific actions.
73
+ *
74
+ * The Tool interface provides a streaming execution model where tools can yield
75
+ * progress events during execution before returning a final result.
76
+ *
77
+ * Most implementations should use FunctionTool rather than implementing this interface directly.
78
+ */
79
+ export declare abstract class Tool {
80
+ /**
81
+ * The unique name of the tool.
82
+ * This MUST match the name in the toolSpec.
83
+ */
84
+ abstract name: string;
85
+ /**
86
+ * Human-readable description of what the tool does.
87
+ * This helps the model understand when to use the tool.
88
+ *
89
+ * This MUST match the description in the toolSpec.description.
90
+ */
91
+ abstract description: string;
92
+ /**
93
+ * OpenAPI JSON specification for the tool.
94
+ * Defines the tool's name, description, and input schema.
95
+ */
96
+ abstract toolSpec: ToolSpec;
97
+ /**
98
+ * Executes the tool with streaming support.
99
+ * Yields zero or more ToolStreamEvents during execution, then returns
100
+ * exactly one ToolResultBlock as the final value.
101
+ *
102
+ * @param toolContext - Context information including the tool use request and invocation state
103
+ * @returns Async generator that yields ToolStreamEvents and returns a ToolResultBlock
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const context = {
108
+ * toolUse: {
109
+ * name: 'calculator',
110
+ * toolUseId: 'calc-123',
111
+ * input: { operation: 'add', a: 5, b: 3 }
112
+ * },
113
+ * }
114
+ *
115
+ * // The return value is only accessible via explicit .next() calls
116
+ * const generator = tool.stream(context)
117
+ * for await (const event of generator) {
118
+ * // Only yields are captured here
119
+ * console.log('Progress:', event.data)
120
+ * }
121
+ * // Or manually handle the return value:
122
+ * let result = await generator.next()
123
+ * while (!result.done) {
124
+ * console.log('Progress:', result.value.data)
125
+ * result = await generator.next()
126
+ * }
127
+ * console.log('Final result:', result.value.status)
128
+ * ```
129
+ */
130
+ abstract stream(toolContext: ToolContext): ToolStreamGenerator;
131
+ }
132
+ /**
133
+ * Extended tool interface that supports direct invocation with type-safe input and output.
134
+ * This interface is useful for testing and standalone tool execution.
135
+ *
136
+ * @typeParam TInput - Type for the tool's input parameters
137
+ * @typeParam TReturn - Type for the tool's return value
138
+ */
139
+ export interface InvokableTool<TInput, TReturn> extends Tool {
140
+ /**
141
+ * Invokes the tool directly with type-safe input and returns the unwrapped result.
142
+ *
143
+ * Unlike stream(), this method:
144
+ * - Returns the raw result (not wrapped in ToolResult)
145
+ * - Consumes async generators and returns only the final value
146
+ * - Lets errors throw naturally (not wrapped in error ToolResult)
147
+ *
148
+ * @param input - The input parameters for the tool
149
+ * @param context - Optional tool execution context
150
+ * @returns The unwrapped result
151
+ */
152
+ invoke(input: TInput, context?: ToolContext): Promise<TReturn>;
153
+ }
154
+ /**
155
+ * Creates an error ToolResultBlock from an error object.
156
+ * Ensures all errors are normalized to Error objects and includes the original error
157
+ * in the ToolResultBlock for inspection by hooks, error handlers, and event loop.
158
+ *
159
+ * TODO: Implement consistent logging format as defined in #30
160
+ * This error should be logged to the caller using the established logging pattern.
161
+ *
162
+ * @param error - The error that occurred (can be Error object or any thrown value)
163
+ * @param toolUseId - The tool use ID for the ToolResultBlock
164
+ * @returns A ToolResultBlock with error status, error message content, and original error object
165
+ */
166
+ export declare function createErrorResult(error: unknown, toolUseId: string): ToolResultBlock;
167
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/tools/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAa,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAEhB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IAEvB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IACzD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAS;IAE1C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;gBAEX,SAAS,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;CAK1C;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;AAE7F;;;;;;;;GAQG;AACH,8BAAsB,IAAI;IACxB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;CAC/D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAE,SAAQ,IAAI;IAC1D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAUpF"}
@@ -0,0 +1,68 @@
1
+ import { TextBlock, ToolResultBlock } from '../types/messages.js';
2
+ import { normalizeError } from '../errors.js';
3
+ /**
4
+ * Event yielded during tool execution to report streaming progress.
5
+ * Tools can yield zero or more of these events before returning the final ToolResult.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const streamEvent = new ToolStreamEvent({
10
+ * data: 'Processing step 1...'
11
+ * })
12
+ *
13
+ * // Or with structured data
14
+ * const streamEvent = new ToolStreamEvent({
15
+ * data: { progress: 50, message: 'Halfway complete' }
16
+ * })
17
+ * ```
18
+ */
19
+ export class ToolStreamEvent {
20
+ /**
21
+ * Discriminator for tool stream events.
22
+ */
23
+ type = 'toolStreamEvent';
24
+ /**
25
+ * Caller-provided data for the progress update.
26
+ * Can be any type of data the tool wants to report.
27
+ */
28
+ data;
29
+ constructor(eventData) {
30
+ if (eventData.data !== undefined) {
31
+ this.data = eventData.data;
32
+ }
33
+ }
34
+ }
35
+ /**
36
+ * Interface for tool implementations.
37
+ * Tools are used by agents to interact with their environment and perform specific actions.
38
+ *
39
+ * The Tool interface provides a streaming execution model where tools can yield
40
+ * progress events during execution before returning a final result.
41
+ *
42
+ * Most implementations should use FunctionTool rather than implementing this interface directly.
43
+ */
44
+ export class Tool {
45
+ }
46
+ /**
47
+ * Creates an error ToolResultBlock from an error object.
48
+ * Ensures all errors are normalized to Error objects and includes the original error
49
+ * in the ToolResultBlock for inspection by hooks, error handlers, and event loop.
50
+ *
51
+ * TODO: Implement consistent logging format as defined in #30
52
+ * This error should be logged to the caller using the established logging pattern.
53
+ *
54
+ * @param error - The error that occurred (can be Error object or any thrown value)
55
+ * @param toolUseId - The tool use ID for the ToolResultBlock
56
+ * @returns A ToolResultBlock with error status, error message content, and original error object
57
+ */
58
+ export function createErrorResult(error, toolUseId) {
59
+ // Ensure error is an Error object (wrap non-Error values)
60
+ const errorObject = normalizeError(error);
61
+ return new ToolResultBlock({
62
+ toolUseId,
63
+ status: 'error',
64
+ content: [new TextBlock(`Error: ${errorObject.message}`)],
65
+ error: errorObject,
66
+ });
67
+ }
68
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/tools/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAsC7C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACM,IAAI,GAAG,iBAA0B,CAAA;IAE1C;;;OAGG;IACM,IAAI,CAAU;IAEvB,YAAY,SAA6B;QACvC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;QAC5B,CAAC;IACH,CAAC;CACF;AAQD;;;;;;;;GAQG;AACH,MAAM,OAAgB,IAAI;CAqDzB;AAyBD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,SAAiB;IACjE,0DAA0D;IAC1D,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IAEzC,OAAO,IAAI,eAAe,CAAC;QACzB,SAAS;QACT,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,KAAK,EAAE,WAAW;KACnB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { JSONSchema, JSONValue } from '../types/json.js';
2
+ /**
3
+ * Status of a tool execution.
4
+ * Indicates whether the tool executed successfully or encountered an error.
5
+ */
6
+ export type ToolResultStatus = 'success' | 'error';
7
+ /**
8
+ * Specification for a tool that can be used by the model.
9
+ * Defines the tool's name, description, and input schema.
10
+ */
11
+ export interface ToolSpec {
12
+ /**
13
+ * The unique name of the tool.
14
+ */
15
+ name: string;
16
+ /**
17
+ * A description of what the tool does.
18
+ * This helps the model understand when to use the tool.
19
+ */
20
+ description: string;
21
+ /**
22
+ * JSON Schema defining the expected input structure for the tool.
23
+ */
24
+ inputSchema: JSONSchema;
25
+ }
26
+ /**
27
+ * Represents a tool usage request from the model.
28
+ * The model generates this when it wants to use a tool.
29
+ */
30
+ export interface ToolUse {
31
+ /**
32
+ * The name of the tool to execute.
33
+ */
34
+ name: string;
35
+ /**
36
+ * Unique identifier for this tool use instance.
37
+ * Used to match tool results back to their requests.
38
+ */
39
+ toolUseId: string;
40
+ /**
41
+ * The input parameters for the tool.
42
+ * Must be JSON-serializable.
43
+ */
44
+ input: JSONValue;
45
+ }
46
+ /**
47
+ * Specifies how the model should choose which tool to use.
48
+ *
49
+ * - `{ auto: {} }` - Let the model decide whether to use a tool
50
+ * - `{ any: {} }` - Force the model to use one of the available tools
51
+ * - `{ tool: { name: 'name' } }` - Force the model to use a specific tool
52
+ */
53
+ export type ToolChoice = {
54
+ auto: Record<string, never>;
55
+ } | {
56
+ any: Record<string, never>;
57
+ } | {
58
+ tool: {
59
+ name: string;
60
+ };
61
+ };
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE7D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAA;AAElD;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,UAAU,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":""}