@strands-agents/sdk 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/dist/src/__fixtures__/agent-helpers.d.ts +10 -1
  2. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  3. package/dist/src/__fixtures__/agent-helpers.js +13 -2
  4. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  5. package/dist/src/__fixtures__/metrics-helpers.d.ts +25 -0
  6. package/dist/src/__fixtures__/metrics-helpers.d.ts.map +1 -0
  7. package/dist/src/__fixtures__/metrics-helpers.js +34 -0
  8. package/dist/src/__fixtures__/metrics-helpers.js.map +1 -0
  9. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
  10. package/dist/src/__fixtures__/mock-message-model.js +12 -0
  11. package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
  12. package/dist/src/__fixtures__/mock-span.d.ts +78 -0
  13. package/dist/src/__fixtures__/mock-span.d.ts.map +1 -0
  14. package/dist/src/__fixtures__/mock-span.js +93 -0
  15. package/dist/src/__fixtures__/mock-span.js.map +1 -0
  16. package/dist/src/__fixtures__/mock-storage-provider.d.ts +5 -0
  17. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -1
  18. package/dist/src/__fixtures__/mock-storage-provider.js +23 -6
  19. package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -1
  20. package/dist/src/__fixtures__/slim-types.d.ts +2 -1
  21. package/dist/src/__fixtures__/slim-types.d.ts.map +1 -1
  22. package/dist/src/__fixtures__/tool-helpers.d.ts +2 -2
  23. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  24. package/dist/src/__fixtures__/tool-helpers.js +4 -4
  25. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  26. package/dist/src/__tests__/app-state.test.d.ts +2 -0
  27. package/dist/src/__tests__/app-state.test.d.ts.map +1 -0
  28. package/dist/src/{agent/__tests__/state.test.js → __tests__/app-state.test.js} +46 -46
  29. package/dist/src/__tests__/app-state.test.js.map +1 -0
  30. package/dist/src/__tests__/mcp.test.js +129 -18
  31. package/dist/src/__tests__/mcp.test.js.map +1 -1
  32. package/dist/src/agent/__tests__/agent.test.js +119 -11
  33. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  34. package/dist/src/agent/__tests__/agent.tracer.test.d.ts +2 -0
  35. package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +1 -0
  36. package/dist/src/agent/__tests__/agent.tracer.test.js +470 -0
  37. package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -0
  38. package/dist/src/agent/agent.d.ts +79 -9
  39. package/dist/src/agent/agent.d.ts.map +1 -1
  40. package/dist/src/agent/agent.js +253 -68
  41. package/dist/src/agent/agent.js.map +1 -1
  42. package/dist/src/{agent/state.d.ts → app-state.d.ts} +7 -7
  43. package/dist/src/app-state.d.ts.map +1 -0
  44. package/dist/src/{agent/state.js → app-state.js} +6 -6
  45. package/dist/src/app-state.js.map +1 -0
  46. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +1 -1
  47. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +1 -1
  48. package/dist/src/errors.d.ts +6 -0
  49. package/dist/src/errors.d.ts.map +1 -1
  50. package/dist/src/errors.js +9 -0
  51. package/dist/src/errors.js.map +1 -1
  52. package/dist/src/hooks/__tests__/events.test.js +2 -0
  53. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  54. package/dist/src/hooks/events.d.ts +16 -0
  55. package/dist/src/hooks/events.d.ts.map +1 -1
  56. package/dist/src/hooks/events.js.map +1 -1
  57. package/dist/src/hooks/index.d.ts +1 -1
  58. package/dist/src/hooks/index.d.ts.map +1 -1
  59. package/dist/src/index.d.ts +23 -7
  60. package/dist/src/index.d.ts.map +1 -1
  61. package/dist/src/index.js +19 -2
  62. package/dist/src/index.js.map +1 -1
  63. package/dist/src/mcp.d.ts +41 -0
  64. package/dist/src/mcp.d.ts.map +1 -1
  65. package/dist/src/mcp.js +60 -6
  66. package/dist/src/mcp.js.map +1 -1
  67. package/dist/src/models/__tests__/bedrock.test.js +688 -0
  68. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  69. package/dist/src/models/__tests__/model.test.js +113 -0
  70. package/dist/src/models/__tests__/model.test.js.map +1 -1
  71. package/dist/src/models/__tests__/streaming.test.d.ts +2 -0
  72. package/dist/src/models/__tests__/streaming.test.d.ts.map +1 -0
  73. package/dist/src/models/__tests__/streaming.test.js +50 -0
  74. package/dist/src/models/__tests__/streaming.test.js.map +1 -0
  75. package/dist/src/models/bedrock.d.ts +80 -1
  76. package/dist/src/models/bedrock.d.ts.map +1 -1
  77. package/dist/src/models/bedrock.js +214 -5
  78. package/dist/src/models/bedrock.js.map +1 -1
  79. package/dist/src/models/model.d.ts +10 -0
  80. package/dist/src/models/model.d.ts.map +1 -1
  81. package/dist/src/models/model.js +58 -2
  82. package/dist/src/models/model.js.map +1 -1
  83. package/dist/src/models/streaming.d.ts +84 -3
  84. package/dist/src/models/streaming.d.ts.map +1 -1
  85. package/dist/src/models/streaming.js +26 -0
  86. package/dist/src/models/streaming.js.map +1 -1
  87. package/dist/src/multiagent/__tests__/events.test.d.ts +2 -0
  88. package/dist/src/multiagent/__tests__/events.test.d.ts.map +1 -0
  89. package/dist/src/multiagent/__tests__/events.test.js +205 -0
  90. package/dist/src/multiagent/__tests__/events.test.js.map +1 -0
  91. package/dist/src/multiagent/__tests__/graph.test.d.ts +2 -0
  92. package/dist/src/multiagent/__tests__/graph.test.d.ts.map +1 -0
  93. package/dist/src/multiagent/__tests__/graph.test.js +438 -0
  94. package/dist/src/multiagent/__tests__/graph.test.js.map +1 -0
  95. package/dist/src/multiagent/__tests__/nodes.test.js +105 -9
  96. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  97. package/dist/src/multiagent/__tests__/queue.test.d.ts +2 -0
  98. package/dist/src/multiagent/__tests__/queue.test.d.ts.map +1 -0
  99. package/dist/src/multiagent/__tests__/queue.test.js +118 -0
  100. package/dist/src/multiagent/__tests__/queue.test.js.map +1 -0
  101. package/dist/src/multiagent/__tests__/swarm.test.d.ts +2 -0
  102. package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +1 -0
  103. package/dist/src/multiagent/__tests__/swarm.test.js +241 -0
  104. package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -0
  105. package/dist/src/multiagent/base.d.ts +25 -0
  106. package/dist/src/multiagent/base.d.ts.map +1 -0
  107. package/dist/src/multiagent/base.js +2 -0
  108. package/dist/src/multiagent/base.js.map +1 -0
  109. package/dist/src/multiagent/edge.d.ts +36 -0
  110. package/dist/src/multiagent/edge.d.ts.map +1 -0
  111. package/dist/src/multiagent/edge.js +15 -0
  112. package/dist/src/multiagent/edge.js.map +1 -0
  113. package/dist/src/multiagent/events.d.ts +129 -4
  114. package/dist/src/multiagent/events.d.ts.map +1 -1
  115. package/dist/src/multiagent/events.js +140 -2
  116. package/dist/src/multiagent/events.js.map +1 -1
  117. package/dist/src/multiagent/graph.d.ts +125 -0
  118. package/dist/src/multiagent/graph.d.ts.map +1 -0
  119. package/dist/src/multiagent/graph.js +394 -0
  120. package/dist/src/multiagent/graph.js.map +1 -0
  121. package/dist/src/multiagent/index.d.ts +12 -6
  122. package/dist/src/multiagent/index.d.ts.map +1 -1
  123. package/dist/src/multiagent/index.js +6 -3
  124. package/dist/src/multiagent/index.js.map +1 -1
  125. package/dist/src/multiagent/nodes.d.ts +66 -16
  126. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  127. package/dist/src/multiagent/nodes.js +82 -24
  128. package/dist/src/multiagent/nodes.js.map +1 -1
  129. package/dist/src/multiagent/queue.d.ts +73 -0
  130. package/dist/src/multiagent/queue.d.ts.map +1 -0
  131. package/dist/src/multiagent/queue.js +72 -0
  132. package/dist/src/multiagent/queue.js.map +1 -0
  133. package/dist/src/multiagent/state.d.ts +79 -10
  134. package/dist/src/multiagent/state.d.ts.map +1 -1
  135. package/dist/src/multiagent/state.js +101 -9
  136. package/dist/src/multiagent/state.js.map +1 -1
  137. package/dist/src/multiagent/swarm.d.ts +102 -0
  138. package/dist/src/multiagent/swarm.d.ts.map +1 -0
  139. package/dist/src/multiagent/swarm.js +238 -0
  140. package/dist/src/multiagent/swarm.js.map +1 -0
  141. package/dist/src/registry/__tests__/tool-registry.test.d.ts +2 -0
  142. package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +1 -0
  143. package/dist/src/registry/__tests__/tool-registry.test.js +124 -0
  144. package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -0
  145. package/dist/src/registry/tool-registry.d.ts +32 -20
  146. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  147. package/dist/src/registry/tool-registry.js +60 -158
  148. package/dist/src/registry/tool-registry.js.map +1 -1
  149. package/dist/src/session/__tests__/file-storage.test.node.js +75 -15
  150. package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -1
  151. package/dist/src/session/__tests__/s3-storage.test.d.ts +2 -0
  152. package/dist/src/session/__tests__/s3-storage.test.d.ts.map +1 -0
  153. package/dist/src/session/__tests__/{s3-storage.test.node.js → s3-storage.test.js} +161 -75
  154. package/dist/src/session/__tests__/s3-storage.test.js.map +1 -0
  155. package/dist/src/session/__tests__/session-manager.test.d.ts +2 -0
  156. package/dist/src/session/__tests__/session-manager.test.d.ts.map +1 -0
  157. package/dist/src/session/__tests__/session-manager.test.js +461 -0
  158. package/dist/src/session/__tests__/session-manager.test.js.map +1 -0
  159. package/dist/src/session/__tests__/validation.test.js +28 -1
  160. package/dist/src/session/__tests__/validation.test.js.map +1 -1
  161. package/dist/src/session/file-storage.d.ts +53 -27
  162. package/dist/src/session/file-storage.d.ts.map +1 -1
  163. package/dist/src/session/file-storage.js +103 -52
  164. package/dist/src/session/file-storage.js.map +1 -1
  165. package/dist/src/session/index.d.ts +6 -13
  166. package/dist/src/session/index.d.ts.map +1 -1
  167. package/dist/src/session/index.js +4 -12
  168. package/dist/src/session/index.js.map +1 -1
  169. package/dist/src/session/s3-storage.d.ts +49 -20
  170. package/dist/src/session/s3-storage.d.ts.map +1 -1
  171. package/dist/src/session/s3-storage.js +120 -35
  172. package/dist/src/session/s3-storage.js.map +1 -1
  173. package/dist/src/session/session-manager.d.ts +83 -0
  174. package/dist/src/session/session-manager.d.ts.map +1 -0
  175. package/dist/src/session/session-manager.js +122 -0
  176. package/dist/src/session/session-manager.js.map +1 -0
  177. package/dist/src/session/storage.d.ts +19 -11
  178. package/dist/src/session/storage.d.ts.map +1 -1
  179. package/dist/src/session/types.d.ts +6 -18
  180. package/dist/src/session/types.d.ts.map +1 -1
  181. package/dist/src/session/validation.d.ts +7 -0
  182. package/dist/src/session/validation.d.ts.map +1 -1
  183. package/dist/src/session/validation.js +12 -0
  184. package/dist/src/session/validation.js.map +1 -1
  185. package/dist/src/structured-output/__tests__/context.test.js +13 -13
  186. package/dist/src/structured-output/__tests__/context.test.js.map +1 -1
  187. package/dist/src/structured-output/context.js +1 -1
  188. package/dist/src/structured-output/context.js.map +1 -1
  189. package/dist/src/telemetry/__tests__/config.test.d.ts +2 -0
  190. package/dist/src/telemetry/__tests__/config.test.d.ts.map +1 -0
  191. package/dist/src/telemetry/__tests__/config.test.js +40 -0
  192. package/dist/src/telemetry/__tests__/config.test.js.map +1 -0
  193. package/dist/src/telemetry/__tests__/config.test.node.d.ts +2 -0
  194. package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +1 -0
  195. package/dist/src/telemetry/__tests__/config.test.node.js +103 -0
  196. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -0
  197. package/dist/src/telemetry/__tests__/json.test.d.ts +2 -0
  198. package/dist/src/telemetry/__tests__/json.test.d.ts.map +1 -0
  199. package/dist/src/telemetry/__tests__/json.test.js +89 -0
  200. package/dist/src/telemetry/__tests__/json.test.js.map +1 -0
  201. package/dist/src/telemetry/__tests__/meter.test.d.ts +2 -0
  202. package/dist/src/telemetry/__tests__/meter.test.d.ts.map +1 -0
  203. package/dist/src/telemetry/__tests__/meter.test.js +457 -0
  204. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -0
  205. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +2 -0
  206. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +1 -0
  207. package/dist/src/telemetry/__tests__/tracer.test.node.js +611 -0
  208. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -0
  209. package/dist/src/telemetry/config.d.ts +82 -0
  210. package/dist/src/telemetry/config.d.ts.map +1 -0
  211. package/dist/src/telemetry/config.js +133 -0
  212. package/dist/src/telemetry/config.js.map +1 -0
  213. package/dist/src/telemetry/index.d.ts +34 -0
  214. package/dist/src/telemetry/index.d.ts.map +1 -0
  215. package/dist/src/telemetry/index.js +33 -0
  216. package/dist/src/telemetry/index.js.map +1 -0
  217. package/dist/src/telemetry/json.d.ts +11 -0
  218. package/dist/src/telemetry/json.d.ts.map +1 -0
  219. package/dist/src/telemetry/json.js +25 -0
  220. package/dist/src/telemetry/json.js.map +1 -0
  221. package/dist/src/telemetry/meter.d.ts +277 -0
  222. package/dist/src/telemetry/meter.d.ts.map +1 -0
  223. package/dist/src/telemetry/meter.js +292 -0
  224. package/dist/src/telemetry/meter.js.map +1 -0
  225. package/dist/src/telemetry/tracer.d.ts +219 -0
  226. package/dist/src/telemetry/tracer.d.ts.map +1 -0
  227. package/dist/src/telemetry/tracer.js +610 -0
  228. package/dist/src/telemetry/tracer.js.map +1 -0
  229. package/dist/src/telemetry/types.d.ts +101 -0
  230. package/dist/src/telemetry/types.d.ts.map +1 -0
  231. package/dist/src/telemetry/types.js +5 -0
  232. package/dist/src/{multiagent → telemetry}/types.js.map +1 -1
  233. package/dist/src/tools/__tests__/tool-factory.test.d.ts +2 -0
  234. package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +1 -0
  235. package/dist/src/tools/__tests__/tool-factory.test.js +98 -0
  236. package/dist/src/tools/__tests__/tool-factory.test.js.map +1 -0
  237. package/dist/src/tools/__tests__/zod-tool.test-d.js +1 -1
  238. package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -1
  239. package/dist/src/tools/__tests__/zod-tool.test.js +3 -4
  240. package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -1
  241. package/dist/src/tools/function-tool.d.ts +15 -2
  242. package/dist/src/tools/function-tool.d.ts.map +1 -1
  243. package/dist/src/tools/function-tool.js +24 -0
  244. package/dist/src/tools/function-tool.js.map +1 -1
  245. package/dist/src/tools/tool-factory.d.ts +22 -0
  246. package/dist/src/tools/tool-factory.d.ts.map +1 -0
  247. package/dist/src/tools/tool-factory.js +55 -0
  248. package/dist/src/tools/tool-factory.js.map +1 -0
  249. package/dist/src/tools/tool.d.ts +1 -1
  250. package/dist/src/tools/tool.js +1 -1
  251. package/dist/src/tools/zod-tool.d.ts +55 -52
  252. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  253. package/dist/src/tools/zod-tool.js +7 -61
  254. package/dist/src/tools/zod-tool.js.map +1 -1
  255. package/dist/src/tsconfig.tsbuildinfo +1 -1
  256. package/dist/src/types/__tests__/agent.test.js +11 -0
  257. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  258. package/dist/src/types/__tests__/citations.test.d.ts +2 -0
  259. package/dist/src/types/__tests__/citations.test.d.ts.map +1 -0
  260. package/dist/src/types/__tests__/citations.test.js +104 -0
  261. package/dist/src/types/__tests__/citations.test.js.map +1 -0
  262. package/dist/src/types/__tests__/messages.test.js +26 -0
  263. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  264. package/dist/src/types/agent.d.ts +10 -3
  265. package/dist/src/types/agent.d.ts.map +1 -1
  266. package/dist/src/types/agent.js +9 -0
  267. package/dist/src/types/agent.js.map +1 -1
  268. package/dist/src/types/citations.d.ts +180 -0
  269. package/dist/src/types/citations.d.ts.map +1 -0
  270. package/dist/src/types/citations.js +45 -0
  271. package/dist/src/types/citations.js.map +1 -0
  272. package/dist/src/types/messages.d.ts +9 -5
  273. package/dist/src/types/messages.d.ts.map +1 -1
  274. package/dist/src/types/messages.js +5 -1
  275. package/dist/src/types/messages.js.map +1 -1
  276. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +2 -2
  277. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  278. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  279. package/dist/src/vended-tools/bash/bash.js +1 -2
  280. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  281. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js +4 -4
  282. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +1 -1
  283. package/dist/src/vended-tools/file_editor/file-editor.js +1 -1
  284. package/dist/src/vended-tools/file_editor/file-editor.js.map +1 -1
  285. package/dist/src/vended-tools/http_request/http-request.d.ts.map +1 -1
  286. package/dist/src/vended-tools/http_request/http-request.js +1 -2
  287. package/dist/src/vended-tools/http_request/http-request.js.map +1 -1
  288. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +2 -2
  289. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  290. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  291. package/package.json +25 -4
  292. package/dist/src/agent/__tests__/state.test.d.ts +0 -2
  293. package/dist/src/agent/__tests__/state.test.d.ts.map +0 -1
  294. package/dist/src/agent/__tests__/state.test.js.map +0 -1
  295. package/dist/src/agent/state.d.ts.map +0 -1
  296. package/dist/src/agent/state.js.map +0 -1
  297. package/dist/src/multiagent/types.d.ts +0 -5
  298. package/dist/src/multiagent/types.d.ts.map +0 -1
  299. package/dist/src/multiagent/types.js +0 -2
  300. package/dist/src/registry/registry.d.ts +0 -117
  301. package/dist/src/registry/registry.d.ts.map +0 -1
  302. package/dist/src/registry/registry.js +0 -298
  303. package/dist/src/registry/registry.js.map +0 -1
  304. package/dist/src/session/__tests__/s3-storage.test.node.d.ts +0 -2
  305. package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +0 -1
  306. package/dist/src/session/__tests__/s3-storage.test.node.js.map +0 -1
@@ -1,4 +1,6 @@
1
- import type { InvokableTool, ToolContext } from './tool.js';
1
+ import type { InvokableTool, ToolContext, ToolStreamGenerator } from './tool.js';
2
+ import { Tool } from './tool.js';
3
+ import type { ToolSpec } from './types.js';
2
4
  import type { JSONValue } from '../types/json.js';
3
5
  import { z } from 'zod';
4
6
  /**
@@ -11,7 +13,7 @@ type ZodInferred<TInput> = TInput extends z.ZodType ? z.infer<TInput> : never;
11
13
  * @typeParam TInput - Zod schema type for input validation
12
14
  * @typeParam TReturn - Return type of the callback function
13
15
  */
14
- export interface ToolConfig<TInput extends z.ZodType | undefined, TReturn extends JSONValue = JSONValue> {
16
+ export interface ZodToolConfig<TInput extends z.ZodType | undefined, TReturn extends JSONValue = JSONValue> {
15
17
  /** The name of the tool */
16
18
  name: string;
17
19
  /** A description of what the tool does (optional) */
@@ -31,56 +33,57 @@ export interface ToolConfig<TInput extends z.ZodType | undefined, TReturn extend
31
33
  callback: (input: ZodInferred<TInput>, context?: ToolContext) => AsyncGenerator<unknown, TReturn, never> | Promise<TReturn> | TReturn;
32
34
  }
33
35
  /**
34
- * Creates an InvokableTool from a Zod schema and callback function.
35
- *
36
- * The tool() function validates input against the schema and generates JSON schema
37
- * for model providers using Zod v4's built-in z.toJSONSchema() method.
38
- *
39
- * @example
40
- * ```typescript
41
- * import { tool } from '@strands-agents/sdk'
42
- * import { z } from 'zod'
43
- *
44
- * // Tool with input parameters
45
- * const calculator = tool({
46
- * name: 'calculator',
47
- * description: 'Performs basic arithmetic',
48
- * inputSchema: z.object({
49
- * operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
50
- * a: z.number(),
51
- * b: z.number()
52
- * }),
53
- * callback: (input) => {
54
- * switch (input.operation) {
55
- * case 'add': return input.a + input.b
56
- * case 'subtract': return input.a - input.b
57
- * case 'multiply': return input.a * input.b
58
- * case 'divide': return input.a / input.b
59
- * }
60
- * }
61
- * })
62
- *
63
- * // Tool without input (omit inputSchema)
64
- * const getStatus = tool({
65
- * name: 'getStatus',
66
- * description: 'Gets system status',
67
- * callback: () => ({ status: 'operational', uptime: 99.9 })
68
- * })
69
- *
70
- * // Direct invocation
71
- * const result = await calculator.invoke({ operation: 'add', a: 5, b: 3 })
72
- *
73
- * // Agent usage
74
- * for await (const event of calculator.stream(context)) {
75
- * console.log(event)
76
- * }
77
- * ```
78
- *
79
- * @typeParam TInput - Zod schema type for input validation
80
- * @typeParam TReturn - Return type of the callback function
81
- * @param config - Tool configuration
82
- * @returns An InvokableTool that implements the Tool interface with invoke() method
36
+ * Zod-based tool implementation.
37
+ * Extends Tool abstract class and implements InvokableTool interface.
83
38
  */
84
- export declare function tool<TInput extends z.ZodType | undefined, TReturn extends JSONValue = JSONValue>(config: ToolConfig<TInput, TReturn>): InvokableTool<ZodInferred<TInput>, TReturn>;
39
+ export declare class ZodTool<TInput extends z.ZodType | undefined, TReturn extends JSONValue = JSONValue> extends Tool implements InvokableTool<ZodInferred<TInput>, TReturn> {
40
+ /**
41
+ * Internal FunctionTool for delegating stream operations.
42
+ */
43
+ private readonly _functionTool;
44
+ /**
45
+ * Zod schema for input validation.
46
+ * Note: undefined is normalized to z.void() in constructor, so this is always defined.
47
+ */
48
+ private readonly _inputSchema;
49
+ /**
50
+ * User callback function.
51
+ */
52
+ private readonly _callback;
53
+ constructor(config: ZodToolConfig<TInput, TReturn>);
54
+ /**
55
+ * The unique name of the tool.
56
+ */
57
+ get name(): string;
58
+ /**
59
+ * Human-readable description of what the tool does.
60
+ */
61
+ get description(): string;
62
+ /**
63
+ * OpenAPI JSON specification for the tool.
64
+ */
65
+ get toolSpec(): ToolSpec;
66
+ /**
67
+ * Executes the tool with streaming support.
68
+ * Delegates to internal FunctionTool implementation.
69
+ *
70
+ * @param toolContext - Context information including the tool use request and invocation state
71
+ * @returns Async generator that yields ToolStreamEvents and returns a ToolResultBlock
72
+ */
73
+ stream(toolContext: ToolContext): ToolStreamGenerator;
74
+ /**
75
+ * Invokes the tool directly with type-safe input and returns the unwrapped result.
76
+ *
77
+ * Unlike stream(), this method:
78
+ * - Returns the raw result (not wrapped in ToolResult)
79
+ * - Consumes async generators and returns only the final value
80
+ * - Lets errors throw naturally (not wrapped in error ToolResult)
81
+ *
82
+ * @param input - The input parameters for the tool
83
+ * @param context - Optional tool execution context
84
+ * @returns The unwrapped result
85
+ */
86
+ invoke(input: ZodInferred<TInput>, context?: ToolContext): Promise<TReturn>;
87
+ }
85
88
  export {};
86
89
  //# sourceMappingURL=zod-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/zod-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAuB,MAAM,WAAW,CAAA;AAGhF,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EAAE,CAAC,EAAW,MAAM,KAAK,CAAA;AAGhC;;GAEG;AACH,KAAK,WAAW,CAAC,MAAM,IAAI,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;AAE7E;;;;;GAKG;AACH,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS;IACrG,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IAEZ,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;;;OAMG;IACH,QAAQ,EAAE,CACR,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,OAAO,CAAC,EAAE,WAAW,KAClB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;CAC1E;AAwID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS,EAC9F,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAE7C"}
1
+ {"version":3,"file":"zod-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/zod-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EAAE,CAAC,EAAW,MAAM,KAAK,CAAA;AAGhC;;GAEG;AACH,KAAK,WAAW,CAAC,MAAM,IAAI,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;AAE7E;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS;IACxG,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAA;IAEZ,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;;;;OAMG;IACH,QAAQ,EAAE,CACR,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,OAAO,CAAC,EAAE,WAAW,KAClB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;CAC1E;AAED;;;GAGG;AACH,qBAAa,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,EAAE,OAAO,SAAS,SAAS,GAAG,SAAS,CAC9F,SAAQ,IACR,YAAW,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEtD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW;IAExC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAG+C;gBAE7D,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IAyClD;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;IAIrD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBlF"}
@@ -3,10 +3,10 @@ import { FunctionTool } from './function-tool.js';
3
3
  import { z, ZodVoid } from 'zod';
4
4
  import { zodSchemaToJsonSchema } from '../utils/zod.js';
5
5
  /**
6
- * Internal implementation of a Zod-based tool.
6
+ * Zod-based tool implementation.
7
7
  * Extends Tool abstract class and implements InvokableTool interface.
8
8
  */
9
- class ZodTool extends Tool {
9
+ export class ZodTool extends Tool {
10
10
  /**
11
11
  * Internal FunctionTool for delegating stream operations.
12
12
  */
@@ -98,12 +98,12 @@ class ZodTool extends Tool {
98
98
  const result = this._callback(validatedInput, context);
99
99
  // Handle different return types
100
100
  if (result && typeof result === 'object' && Symbol.asyncIterator in result) {
101
- // AsyncGenerator - consume all yielded values and return the last one
102
- let lastValue = undefined;
103
- for await (const value of result) {
104
- lastValue = value;
101
+ const generator = result;
102
+ let iterResult = await generator.next();
103
+ while (!iterResult.done) {
104
+ iterResult = await generator.next();
105
105
  }
106
- return lastValue;
106
+ return iterResult.value;
107
107
  }
108
108
  else {
109
109
  // Regular value or Promise - return directly
@@ -111,58 +111,4 @@ class ZodTool extends Tool {
111
111
  }
112
112
  }
113
113
  }
114
- /**
115
- * Creates an InvokableTool from a Zod schema and callback function.
116
- *
117
- * The tool() function validates input against the schema and generates JSON schema
118
- * for model providers using Zod v4's built-in z.toJSONSchema() method.
119
- *
120
- * @example
121
- * ```typescript
122
- * import { tool } from '@strands-agents/sdk'
123
- * import { z } from 'zod'
124
- *
125
- * // Tool with input parameters
126
- * const calculator = tool({
127
- * name: 'calculator',
128
- * description: 'Performs basic arithmetic',
129
- * inputSchema: z.object({
130
- * operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
131
- * a: z.number(),
132
- * b: z.number()
133
- * }),
134
- * callback: (input) => {
135
- * switch (input.operation) {
136
- * case 'add': return input.a + input.b
137
- * case 'subtract': return input.a - input.b
138
- * case 'multiply': return input.a * input.b
139
- * case 'divide': return input.a / input.b
140
- * }
141
- * }
142
- * })
143
- *
144
- * // Tool without input (omit inputSchema)
145
- * const getStatus = tool({
146
- * name: 'getStatus',
147
- * description: 'Gets system status',
148
- * callback: () => ({ status: 'operational', uptime: 99.9 })
149
- * })
150
- *
151
- * // Direct invocation
152
- * const result = await calculator.invoke({ operation: 'add', a: 5, b: 3 })
153
- *
154
- * // Agent usage
155
- * for await (const event of calculator.stream(context)) {
156
- * console.log(event)
157
- * }
158
- * ```
159
- *
160
- * @typeParam TInput - Zod schema type for input validation
161
- * @typeParam TReturn - Return type of the callback function
162
- * @param config - Tool configuration
163
- * @returns An InvokableTool that implements the Tool interface with invoke() method
164
- */
165
- export function tool(config) {
166
- return new ZodTool(config);
167
- }
168
114
  //# sourceMappingURL=zod-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zod-tool.js","sourceRoot":"","sources":["../../../src/tools/zod-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zod-tool.js","sourceRoot":"","sources":["../../../src/tools/zod-tool.ts"],"names":[],"mappings":"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"}