@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,342 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { z } from 'zod';
3
+ import { tool } from '../zod-tool';
4
+ import { createMockContext } from '../../__fixtures__/tool-helpers';
5
+ import { collectGenerator } from '../../__fixtures__/model-test-helpers';
6
+ describe('tool', () => {
7
+ describe('tool creation and properties', () => {
8
+ it('creates tool with correct properties', () => {
9
+ const myTool = tool({
10
+ name: 'testTool',
11
+ description: 'Test description',
12
+ inputSchema: z.object({ value: z.string() }),
13
+ callback: (input) => input.value,
14
+ });
15
+ expect(myTool.toolName).toBe('testTool');
16
+ expect(myTool.description).toBe('Test description');
17
+ expect(myTool.toolSpec).toEqual({
18
+ name: 'testTool',
19
+ description: 'Test description',
20
+ inputSchema: {
21
+ type: 'object',
22
+ properties: {
23
+ value: { type: 'string' },
24
+ },
25
+ required: ['value'],
26
+ additionalProperties: false,
27
+ },
28
+ });
29
+ });
30
+ it('handles optional description', () => {
31
+ const myTool = tool({
32
+ name: 'testTool',
33
+ inputSchema: z.object({ value: z.string() }),
34
+ callback: (input) => input.value,
35
+ });
36
+ expect(myTool.toolName).toBe('testTool');
37
+ expect(myTool.description).toBe('');
38
+ });
39
+ });
40
+ describe('invoke() method', () => {
41
+ describe('basic return types', () => {
42
+ it('handles synchronous callback', async () => {
43
+ const myTool = tool({
44
+ name: 'sync',
45
+ description: 'Synchronous tool',
46
+ inputSchema: z.object({ a: z.number(), b: z.number() }),
47
+ callback: (input) => input.a + input.b,
48
+ });
49
+ const result = await myTool.invoke({ a: 5, b: 3 });
50
+ expect(result).toBe(8);
51
+ });
52
+ it('handles promise callback', async () => {
53
+ const myTool = tool({
54
+ name: 'async',
55
+ description: 'Async tool',
56
+ inputSchema: z.object({ value: z.string() }),
57
+ callback: async (input) => `Result: ${input.value}`,
58
+ });
59
+ const result = await myTool.invoke({ value: 'test' });
60
+ expect(result).toBe('Result: test');
61
+ });
62
+ it('handles async generator callback', async () => {
63
+ const myTool = tool({
64
+ name: 'generator',
65
+ description: 'Generator tool',
66
+ inputSchema: z.object({ count: z.number() }),
67
+ callback: async function* (input) {
68
+ for (let i = 1; i <= input.count; i++) {
69
+ yield i;
70
+ }
71
+ return 0;
72
+ },
73
+ });
74
+ const result = await myTool.invoke({ count: 3 });
75
+ expect(result).toBe(3);
76
+ });
77
+ });
78
+ describe('validation', () => {
79
+ it('throws on invalid input', async () => {
80
+ const myTool = tool({
81
+ name: 'validator',
82
+ description: 'Validates input',
83
+ inputSchema: z.object({ age: z.number().min(0).max(120) }),
84
+ callback: (input) => input.age,
85
+ });
86
+ await expect(myTool.invoke({ age: -1 })).rejects.toThrow();
87
+ await expect(myTool.invoke({ age: 150 })).rejects.toThrow();
88
+ });
89
+ it('validates required fields', async () => {
90
+ const myTool = tool({
91
+ name: 'required',
92
+ description: 'Required fields',
93
+ inputSchema: z.object({
94
+ name: z.string(),
95
+ email: z.string().email(),
96
+ }),
97
+ callback: (input) => `${input.name}: ${input.email}`,
98
+ });
99
+ await expect(myTool.invoke({ name: 'John' })).rejects.toThrow();
100
+ await expect(myTool.invoke({ email: 'invalid-email' })).rejects.toThrow();
101
+ });
102
+ });
103
+ describe('context handling', () => {
104
+ it('passes context to callback', async () => {
105
+ const callback = vi.fn((input, context) => {
106
+ expect(context).toBeDefined();
107
+ expect(context?.invocationState).toBeDefined();
108
+ return input.value;
109
+ });
110
+ const myTool = tool({
111
+ name: 'context',
112
+ description: 'Uses context',
113
+ inputSchema: z.object({ value: z.string() }),
114
+ callback,
115
+ });
116
+ const mockContext = createMockContext({ value: 'test' }, { userId: 'user-123' });
117
+ await myTool.invoke({ value: 'test' }, mockContext);
118
+ expect(callback).toHaveBeenCalled();
119
+ });
120
+ });
121
+ });
122
+ describe('stream() method', () => {
123
+ describe('basic return types', () => {
124
+ it('streams synchronous callback result', async () => {
125
+ const myTool = tool({
126
+ name: 'sync',
127
+ description: 'Synchronous tool',
128
+ inputSchema: z.object({ value: z.string() }),
129
+ callback: (input) => input.value,
130
+ });
131
+ const context = createMockContext({ value: 'hello' });
132
+ const { items: events, result } = await collectGenerator(myTool.stream(context));
133
+ expect(events).toHaveLength(0); // No stream events for sync
134
+ expect(result.status).toBe('success');
135
+ expect(result.content).toHaveLength(1);
136
+ expect(result.content[0]).toEqual({ type: 'toolResultTextContent', text: 'hello' });
137
+ });
138
+ it('streams promise callback result', async () => {
139
+ const myTool = tool({
140
+ name: 'async',
141
+ description: 'Async tool',
142
+ inputSchema: z.object({ value: z.number() }),
143
+ callback: async (input) => input.value * 2,
144
+ });
145
+ const context = createMockContext({ value: 21 });
146
+ const { items: events, result } = await collectGenerator(myTool.stream(context));
147
+ expect(events).toHaveLength(0); // No stream events for promise
148
+ expect(result.status).toBe('success');
149
+ expect(result.content).toHaveLength(1);
150
+ expect(result.content[0]).toEqual({ type: 'toolResultTextContent', text: '42' });
151
+ });
152
+ it('streams async generator callback results', async () => {
153
+ const myTool = tool({
154
+ name: 'generator',
155
+ description: 'Generator tool',
156
+ inputSchema: z.object({ count: z.number() }),
157
+ callback: async function* (input) {
158
+ for (let i = 1; i <= input.count; i++) {
159
+ yield `Step ${i}`;
160
+ }
161
+ return 0;
162
+ },
163
+ });
164
+ const context = createMockContext({ count: 3 });
165
+ const { items: events, result } = await collectGenerator(myTool.stream(context));
166
+ expect(events).toHaveLength(3);
167
+ const eventData = events.map((e) => e.data);
168
+ expect(eventData).toEqual(['Step 1', 'Step 2', 'Step 3']);
169
+ expect(result.status).toBe('success');
170
+ });
171
+ });
172
+ describe('validation', () => {
173
+ it('returns error result on validation failure', async () => {
174
+ const myTool = tool({
175
+ name: 'validator',
176
+ description: 'Validates input',
177
+ inputSchema: z.object({ age: z.number().min(0) }),
178
+ callback: (input) => input.age,
179
+ });
180
+ const context = createMockContext({ age: -5 });
181
+ const { items: events, result } = await collectGenerator(myTool.stream(context));
182
+ expect(events).toHaveLength(0);
183
+ expect(result.status).toBe('error');
184
+ expect(result.content.length).toBeGreaterThan(0);
185
+ const firstContent = result.content[0];
186
+ if (firstContent && firstContent.type === 'toolResultTextContent') {
187
+ expect(firstContent.text).toContain('age');
188
+ }
189
+ });
190
+ it('returns error result on missing required fields', async () => {
191
+ const myTool = tool({
192
+ name: 'required',
193
+ description: 'Required fields',
194
+ inputSchema: z.object({
195
+ name: z.string(),
196
+ value: z.number(),
197
+ }),
198
+ callback: (input) => `${input.name}: ${input.value}`,
199
+ });
200
+ const context = createMockContext({ name: 'test' });
201
+ const { items: events, result } = await collectGenerator(myTool.stream(context));
202
+ expect(events).toHaveLength(0);
203
+ expect(result.status).toBe('error');
204
+ });
205
+ });
206
+ describe('error handling', () => {
207
+ it('catches callback errors and returns error result', async () => {
208
+ const myTool = tool({
209
+ name: 'error',
210
+ description: 'Throws error',
211
+ inputSchema: z.object({ value: z.string() }),
212
+ callback: () => {
213
+ throw new Error('Callback error');
214
+ },
215
+ });
216
+ const context = createMockContext({ value: 'test' });
217
+ const { items: events, result } = await collectGenerator(myTool.stream(context));
218
+ expect(events).toHaveLength(0);
219
+ expect(result.status).toBe('error');
220
+ expect(result.content.length).toBeGreaterThan(0);
221
+ const firstContent = result.content[0];
222
+ if (firstContent && firstContent.type === 'toolResultTextContent') {
223
+ expect(firstContent.text).toBe('Error: Callback error');
224
+ }
225
+ });
226
+ it('catches async callback errors', async () => {
227
+ const myTool = tool({
228
+ name: 'asyncError',
229
+ description: 'Throws async error',
230
+ inputSchema: z.object({ value: z.string() }),
231
+ callback: async () => {
232
+ throw new Error('Async error');
233
+ },
234
+ });
235
+ const context = createMockContext({ value: 'test' });
236
+ const { items: events, result } = await collectGenerator(myTool.stream(context));
237
+ expect(events).toHaveLength(0);
238
+ expect(result.status).toBe('error');
239
+ expect(result.content.length).toBeGreaterThan(0);
240
+ const firstContent = result.content[0];
241
+ if (firstContent && firstContent.type === 'toolResultTextContent') {
242
+ expect(firstContent.text).toBe('Error: Async error');
243
+ }
244
+ });
245
+ });
246
+ });
247
+ describe('complex scenarios', () => {
248
+ it('handles nested object schemas', async () => {
249
+ const myTool = tool({
250
+ name: 'nested',
251
+ description: 'Nested objects',
252
+ inputSchema: z.object({
253
+ user: z.object({
254
+ name: z.string(),
255
+ age: z.number(),
256
+ }),
257
+ metadata: z.object({
258
+ timestamp: z.number(),
259
+ }),
260
+ }),
261
+ callback: (input) => `${input.user.name} (${input.user.age})`,
262
+ });
263
+ const result = await myTool.invoke({
264
+ user: { name: 'Alice', age: 30 },
265
+ metadata: { timestamp: Date.now() },
266
+ });
267
+ expect(result).toBe('Alice (30)');
268
+ });
269
+ it('handles enum schemas', async () => {
270
+ const myTool = tool({
271
+ name: 'calculator',
272
+ description: 'Basic calculator',
273
+ inputSchema: z.object({
274
+ operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
275
+ a: z.number(),
276
+ b: z.number(),
277
+ }),
278
+ callback: (input) => {
279
+ switch (input.operation) {
280
+ case 'add':
281
+ return input.a + input.b;
282
+ case 'subtract':
283
+ return input.a - input.b;
284
+ case 'multiply':
285
+ return input.a * input.b;
286
+ case 'divide':
287
+ return input.a / input.b;
288
+ }
289
+ },
290
+ });
291
+ expect(await myTool.invoke({ operation: 'add', a: 5, b: 3 })).toBe(8);
292
+ expect(await myTool.invoke({ operation: 'multiply', a: 4, b: 7 })).toBe(28);
293
+ });
294
+ it('handles optional fields', async () => {
295
+ const myTool = tool({
296
+ name: 'greeting',
297
+ description: 'Generates greeting',
298
+ inputSchema: z.object({
299
+ name: z.string(),
300
+ title: z.string().optional(),
301
+ }),
302
+ callback: (input) => {
303
+ return input.title ? `${input.title} ${input.name}` : input.name;
304
+ },
305
+ });
306
+ expect(await myTool.invoke({ name: 'Smith' })).toBe('Smith');
307
+ expect(await myTool.invoke({ name: 'Smith', title: 'Dr.' })).toBe('Dr. Smith');
308
+ });
309
+ it('handles array schemas', async () => {
310
+ const myTool = tool({
311
+ name: 'sum',
312
+ description: 'Sums numbers',
313
+ inputSchema: z.object({
314
+ numbers: z.array(z.number()),
315
+ }),
316
+ callback: (input) => input.numbers.reduce((a, b) => a + b, 0),
317
+ });
318
+ expect(await myTool.invoke({ numbers: [1, 2, 3, 4, 5] })).toBe(15);
319
+ });
320
+ });
321
+ describe('JSON schema generation', () => {
322
+ it('generates valid JSON schema from Zod schema', () => {
323
+ const myTool = tool({
324
+ name: 'test',
325
+ description: 'Test tool',
326
+ inputSchema: z.object({
327
+ name: z.string(),
328
+ age: z.number(),
329
+ email: z.string().email(),
330
+ }),
331
+ callback: () => 'result',
332
+ });
333
+ const schema = myTool.toolSpec.inputSchema;
334
+ expect(schema.type).toBe('object');
335
+ expect(schema.properties).toBeDefined();
336
+ expect(schema.required).toContain('name');
337
+ expect(schema.required).toContain('age');
338
+ expect(schema.required).toContain('email');
339
+ });
340
+ });
341
+ });
342
+ //# sourceMappingURL=zod-tool.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-tool.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/zod-tool.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ import type { Tool, ToolContext, ToolStreamEvent } from './tool';
2
+ import type { ToolSpec, ToolResult } from './types';
3
+ import type { JSONSchema, JSONValue } from '../types/json';
4
+ /**
5
+ * Callback function for FunctionTool implementations.
6
+ * The callback can return values in multiple ways, and FunctionTool handles the conversion to ToolResult.
7
+ *
8
+ * @param input - The input parameters conforming to the tool's inputSchema
9
+ * @param toolContext - The tool execution context with invocation state
10
+ * @returns Can return:
11
+ * - AsyncGenerator: Each yielded value becomes a ToolStreamEvent, final value wrapped in ToolResult
12
+ * - Promise: Resolved value is wrapped in ToolResult
13
+ * - Synchronous value: Value is wrapped in ToolResult
14
+ * - If an error is thrown, it's handled and returned as an error ToolResult
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Async generator example
19
+ * async function* calculator(input: unknown, context: ToolContext) {
20
+ * yield 'Calculating...'
21
+ * const result = input.a + input.b
22
+ * yield `Result: ${result}`
23
+ * return result
24
+ * }
25
+ *
26
+ * // Promise example
27
+ * async function fetchData(input: unknown, context: ToolContext) {
28
+ * const response = await fetch(input.url)
29
+ * return await response.json()
30
+ * }
31
+ *
32
+ * // Synchronous example
33
+ * function multiply(input: unknown, context: ToolContext) {
34
+ * return input.a * input.b
35
+ * }
36
+ * ```
37
+ */
38
+ export type FunctionToolCallback = (input: unknown, toolContext: ToolContext) => AsyncGenerator<JSONValue, JSONValue, never> | Promise<JSONValue> | JSONValue;
39
+ /**
40
+ * Configuration options for creating a FunctionTool.
41
+ */
42
+ export interface FunctionToolConfig {
43
+ /** The unique name of the tool */
44
+ name: string;
45
+ /** Human-readable description of the tool's purpose */
46
+ description: string;
47
+ /** JSON Schema defining the expected input structure */
48
+ inputSchema: JSONSchema;
49
+ /** Function that implements the tool logic */
50
+ callback: FunctionToolCallback;
51
+ }
52
+ /**
53
+ * A Tool implementation that wraps a callback function and handles all ToolResult conversion.
54
+ *
55
+ * FunctionTool allows creating tools from existing functions without needing to manually
56
+ * handle ToolResult formatting or error handling. It supports multiple callback patterns:
57
+ * - Async generators for streaming responses
58
+ * - Promises for async operations
59
+ * - Synchronous functions for immediate results
60
+ *
61
+ * All return values are automatically wrapped in ToolResult, and errors are caught and
62
+ * returned as error ToolResults.
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * // Create a tool with streaming
67
+ * const streamingTool = new FunctionTool({
68
+ * name: 'processor',
69
+ * description: 'Processes data with progress updates',
70
+ * inputSchema: { type: 'object', properties: { data: { type: 'string' } } },
71
+ * callback: async function* (input: any) {
72
+ * yield 'Starting processing...'
73
+ * // Do some work
74
+ * yield 'Halfway done...'
75
+ * // More work
76
+ * return 'Processing complete!'
77
+ * }
78
+ * })
79
+ * ```
80
+ */
81
+ export declare class FunctionTool implements Tool {
82
+ /**
83
+ * The unique name of the tool.
84
+ */
85
+ readonly toolName: string;
86
+ /**
87
+ * Human-readable description of what the tool does.
88
+ */
89
+ readonly description: string;
90
+ /**
91
+ * OpenAPI JSON specification for the tool.
92
+ */
93
+ readonly toolSpec: ToolSpec;
94
+ /**
95
+ * The callback function that implements the tool's logic.
96
+ */
97
+ private readonly _callback;
98
+ /**
99
+ * Creates a new FunctionTool instance.
100
+ *
101
+ * @param config - Configuration object for the tool
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const tool = new FunctionTool({
106
+ * name: 'greeter',
107
+ * description: 'Greets a person by name',
108
+ * inputSchema: {
109
+ * type: 'object',
110
+ * properties: { name: { type: 'string' } },
111
+ * required: ['name']
112
+ * },
113
+ * callback: (input: any) => `Hello, ${input.name}!`
114
+ * })
115
+ * ```
116
+ */
117
+ constructor(config: FunctionToolConfig);
118
+ /**
119
+ * Executes the tool with streaming support.
120
+ * Handles all callback patterns (async generator, promise, sync) and converts results to ToolResult.
121
+ *
122
+ * @param toolContext - Context information including the tool use request and invocation state
123
+ * @returns Async generator that yields ToolStreamEvents and returns a ToolResult
124
+ */
125
+ stream(toolContext: ToolContext): AsyncGenerator<ToolStreamEvent, ToolResult, unknown>;
126
+ /**
127
+ * Wraps a value in a ToolResult with success status.
128
+ *
129
+ * Due to AWS Bedrock limitations (only accepts objects as JSON content), the following
130
+ * rules are applied:
131
+ * - Strings → toolResultTextContent
132
+ * - Numbers, Booleans → toolResultTextContent (converted to string)
133
+ * - null, undefined → toolResultTextContent (special string representation)
134
+ * - Objects → toolResultJsonContent (with deep copy)
135
+ * - Arrays → toolResultJsonContent wrapped in \{ $value: array \} (with deep copy)
136
+ *
137
+ * @param value - The value to wrap (can be any type)
138
+ * @param toolUseId - The tool use ID for the ToolResult
139
+ * @returns A ToolResult containing the value
140
+ */
141
+ private _wrapInToolResult;
142
+ /**
143
+ * Creates an error ToolResult from an error object.
144
+ * Ensures all errors are normalized to Error objects and includes the original error
145
+ * in the ToolResult for inspection by hooks, error handlers, and event loop.
146
+ *
147
+ * TODO: Implement consistent logging format as defined in #30
148
+ * This error should be logged to the caller using the established logging pattern.
149
+ *
150
+ * @param error - The error that occurred (can be Error object or any thrown value)
151
+ * @param toolUseId - The tool use ID for the ToolResult
152
+ * @returns A ToolResult with error status, error message content, and original error object
153
+ */
154
+ private _createErrorResult;
155
+ }
156
+ //# sourceMappingURL=function-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-tool.d.ts","sourceRoot":"","sources":["../../src/tools/function-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,WAAW,KACrB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;AAEjF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,WAAW,EAAE,UAAU,CAAA;IACvB,8CAA8C;IAC9C,QAAQ,EAAE,oBAAoB,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,YAAa,YAAW,IAAI;IACvC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAE5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAE3B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAEhD;;;;;;;;;;;;;;;;;;OAkBG;gBACS,MAAM,EAAE,kBAAkB;IAWtC;;;;;;OAMG;IACI,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,cAAc,CAAC,eAAe,EAAE,UAAU,EAAE,OAAO,CAAC;IAuC7F;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,iBAAiB;IA8EzB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,kBAAkB;CAgB3B"}