@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,481 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { AgentResult, BedrockModel, McpClient, Message, TextBlock, ToolResultBlock, } from '../index.js';
54
+ import { systemPromptFromData } from '../types/messages.js';
55
+ import { normalizeError, ConcurrentInvocationError } from '../errors.js';
56
+ import { ToolRegistry } from '../registry/tool-registry.js';
57
+ import { AgentState } from './state.js';
58
+ import { AgentPrinter, getDefaultAppender } from './printer.js';
59
+ import { SlidingWindowConversationManager } from '../conversation-manager/sliding-window-conversation-manager.js';
60
+ import { HookRegistryImplementation } from '../hooks/registry.js';
61
+ import { HookEvent, AfterInvocationEvent, AfterModelCallEvent, AfterToolCallEvent, AfterToolsEvent, BeforeInvocationEvent, BeforeModelCallEvent, BeforeToolCallEvent, BeforeToolsEvent, MessageAddedEvent, ModelStreamEventHook, } from '../hooks/events.js';
62
+ /**
63
+ * Orchestrates the interaction between a model, a set of tools, and MCP clients.
64
+ * The Agent is responsible for managing the lifecycle of tools and clients
65
+ * and invoking the core decision-making loop.
66
+ */
67
+ export class Agent {
68
+ /**
69
+ * The conversation history of messages between user and assistant.
70
+ */
71
+ messages;
72
+ /**
73
+ * Agent state storage accessible to tools and application logic.
74
+ * State is not passed to the model during inference.
75
+ */
76
+ state;
77
+ /**
78
+ * Conversation manager for handling message history and context overflow.
79
+ */
80
+ conversationManager;
81
+ /**
82
+ * Hook registry for managing event callbacks.
83
+ * Hooks enable observing and extending agent behavior.
84
+ */
85
+ hooks;
86
+ /**
87
+ * The model provider used by the agent for inference.
88
+ */
89
+ model;
90
+ _toolRegistry;
91
+ _mcpClients;
92
+ _systemPrompt;
93
+ _initialized;
94
+ _isInvoking = false;
95
+ _printer;
96
+ /**
97
+ * Creates an instance of the Agent.
98
+ * @param config - The configuration for the agent.
99
+ */
100
+ constructor(config) {
101
+ // Initialize public fields
102
+ this.messages = (config?.messages ?? []).map((msg) => (msg instanceof Message ? msg : Message.fromMessageData(msg)));
103
+ this.state = new AgentState(config?.state);
104
+ this.conversationManager = config?.conversationManager ?? new SlidingWindowConversationManager({ windowSize: 40 });
105
+ // Initialize hooks and register conversation manager hooks
106
+ this.hooks = new HookRegistryImplementation();
107
+ this.hooks.addHook(this.conversationManager);
108
+ this.hooks.addAllHooks(config?.hooks ?? []);
109
+ this.model = config?.model ?? new BedrockModel();
110
+ const { tools, mcpClients } = flattenTools(config?.tools ?? []);
111
+ this._toolRegistry = new ToolRegistry(tools);
112
+ this._mcpClients = mcpClients;
113
+ if (config?.systemPrompt !== undefined) {
114
+ this._systemPrompt = systemPromptFromData(config.systemPrompt);
115
+ }
116
+ // Create printer if printer is enabled (default: true)
117
+ const printer = config?.printer ?? true;
118
+ if (printer) {
119
+ this._printer = new AgentPrinter(getDefaultAppender());
120
+ }
121
+ this._initialized = false;
122
+ }
123
+ async initialize() {
124
+ if (this._initialized) {
125
+ return;
126
+ }
127
+ await Promise.all(this._mcpClients.map(async (client) => {
128
+ const tools = await client.listTools();
129
+ this._toolRegistry.addAll(tools);
130
+ }));
131
+ this._initialized = true;
132
+ }
133
+ /**
134
+ * Acquires a lock to prevent concurrent invocations.
135
+ * Returns a Disposable that releases the lock when disposed.
136
+ */
137
+ acquireLock() {
138
+ if (this._isInvoking) {
139
+ throw new ConcurrentInvocationError('Agent is already processing an invocation. Wait for the current invoke() or stream() call to complete before invoking again.');
140
+ }
141
+ this._isInvoking = true;
142
+ return {
143
+ [Symbol.dispose]: () => {
144
+ this._isInvoking = false;
145
+ },
146
+ };
147
+ }
148
+ /**
149
+ * The tools this agent can use.
150
+ */
151
+ get tools() {
152
+ return this._toolRegistry.values();
153
+ }
154
+ /**
155
+ * The tool registry for managing the agent's tools.
156
+ */
157
+ get toolRegistry() {
158
+ return this._toolRegistry;
159
+ }
160
+ /**
161
+ * Invokes the agent and returns the final result.
162
+ *
163
+ * This is a convenience method that consumes the stream() method and returns
164
+ * only the final AgentResult. Use stream() if you need access to intermediate
165
+ * streaming events.
166
+ *
167
+ * @param args - Arguments for invoking the agent
168
+ * @returns Promise that resolves to the final AgentResult
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * const agent = new Agent({ model, tools })
173
+ * const result = await agent.invoke('What is 2 + 2?')
174
+ * console.log(result.lastMessage) // Agent's response
175
+ * ```
176
+ */
177
+ async invoke(args) {
178
+ const gen = this.stream(args);
179
+ let result = await gen.next();
180
+ while (!result.done) {
181
+ result = await gen.next();
182
+ }
183
+ return result.value;
184
+ }
185
+ /**
186
+ * Streams the agent execution, yielding events and returning the final result.
187
+ *
188
+ * The agent loop manages the conversation flow by:
189
+ * 1. Streaming model responses and yielding all events
190
+ * 2. Executing tools when the model requests them
191
+ * 3. Continuing the loop until the model completes without tool use
192
+ *
193
+ * Use this method when you need access to intermediate streaming events.
194
+ * For simple request/response without streaming, use invoke() instead.
195
+ *
196
+ * An explicit goal of this method is to always leave the message array in a way that
197
+ * the agent can be reinvoked with a user prompt after this method completes. To that end
198
+ * assistant messages containing tool uses are only added after tool execution succeeds
199
+ * with valid toolResponses
200
+ *
201
+ * @param args - Arguments for invoking the agent
202
+ * @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * const agent = new Agent({ model, tools })
207
+ *
208
+ * for await (const event of agent.stream('Hello')) {
209
+ * console.log('Event:', event.type)
210
+ * }
211
+ * // Messages array is mutated in place and contains the full conversation
212
+ * ```
213
+ */
214
+ async *stream(args) {
215
+ const env_1 = { stack: [], error: void 0, hasError: false };
216
+ try {
217
+ const _lock = __addDisposableResource(env_1, this.acquireLock(), false);
218
+ await this.initialize();
219
+ // Delegate to _stream and process events through printer and hooks
220
+ const streamGenerator = this._stream(args);
221
+ let result = await streamGenerator.next();
222
+ while (!result.done) {
223
+ const event = result.value;
224
+ // Invoke hook callbacks for Hook Events (except MessageAddedEvent which invokes in _appendMessage)
225
+ if (event instanceof HookEvent && !(event instanceof MessageAddedEvent)) {
226
+ await this.hooks.invokeCallbacks(event);
227
+ }
228
+ this._printer?.processEvent(event);
229
+ yield event;
230
+ result = await streamGenerator.next();
231
+ }
232
+ // Yield final result as last event
233
+ yield result.value;
234
+ return result.value;
235
+ }
236
+ catch (e_1) {
237
+ env_1.error = e_1;
238
+ env_1.hasError = true;
239
+ }
240
+ finally {
241
+ __disposeResources(env_1);
242
+ }
243
+ }
244
+ /**
245
+ * Internal implementation of the agent streaming logic.
246
+ * Separated to centralize printer event processing in the public stream method.
247
+ *
248
+ * @param args - Arguments for invoking the agent
249
+ * @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
250
+ */
251
+ async *_stream(args) {
252
+ let currentArgs = args;
253
+ // Emit event before the loop starts
254
+ yield new BeforeInvocationEvent({ agent: this });
255
+ try {
256
+ // Main agent loop - continues until model stops without requesting tools
257
+ while (true) {
258
+ const modelResult = yield* this.invokeModel(currentArgs);
259
+ currentArgs = undefined; // Only pass args on first invocation
260
+ if (modelResult.stopReason !== 'toolUse') {
261
+ // Loop terminates - no tool use requested
262
+ // Add assistant message now that we're returning
263
+ yield await this._appendMessage(modelResult.message);
264
+ return new AgentResult({
265
+ stopReason: modelResult.stopReason,
266
+ lastMessage: modelResult.message,
267
+ });
268
+ }
269
+ // Execute tools sequentially
270
+ const toolResultMessage = yield* this.executeTools(modelResult.message, this._toolRegistry);
271
+ // Add assistant message with tool uses right before adding tool results
272
+ // This ensures we don't have dangling tool use messages if tool execution fails
273
+ yield await this._appendMessage(modelResult.message);
274
+ yield await this._appendMessage(toolResultMessage);
275
+ // Continue loop
276
+ }
277
+ }
278
+ finally {
279
+ // Always emit final event
280
+ yield new AfterInvocationEvent({ agent: this });
281
+ }
282
+ }
283
+ /**
284
+ * Invokes the model provider and streams all events.
285
+ *
286
+ * @param args - Optional arguments for invoking the model
287
+ * @returns Object containing the assistant message and stop reason
288
+ */
289
+ async *invokeModel(args) {
290
+ if (args !== undefined && typeof args === 'string') {
291
+ // Add user message from args
292
+ yield await this._appendMessage(new Message({
293
+ role: 'user',
294
+ content: [new TextBlock(args)],
295
+ }));
296
+ }
297
+ const toolSpecs = this._toolRegistry.values().map((tool) => tool.toolSpec);
298
+ const streamOptions = { toolSpecs };
299
+ if (this._systemPrompt !== undefined) {
300
+ streamOptions.systemPrompt = this._systemPrompt;
301
+ }
302
+ yield new BeforeModelCallEvent({ agent: this });
303
+ try {
304
+ const { message, stopReason } = yield* this._streamFromModel(this.messages, streamOptions);
305
+ yield new AfterModelCallEvent({ agent: this, stopData: { message, stopReason } });
306
+ return { message, stopReason };
307
+ }
308
+ catch (error) {
309
+ const modelError = normalizeError(error);
310
+ // Create error event
311
+ const errorEvent = new AfterModelCallEvent({ agent: this, error: modelError });
312
+ // Yield error event - stream will invoke hooks
313
+ yield errorEvent;
314
+ // After yielding, hooks have been invoked and may have set retryModelCall
315
+ if (errorEvent.retryModelCall) {
316
+ return yield* this.invokeModel(args);
317
+ }
318
+ // Re-throw error
319
+ throw error;
320
+ }
321
+ }
322
+ /**
323
+ * Streams events from the model and fires ModelStreamEventHook for each event.
324
+ *
325
+ * @param messages - Messages to send to the model
326
+ * @param streamOptions - Options for streaming
327
+ * @returns Object containing the assistant message and stop reason
328
+ */
329
+ async *_streamFromModel(messages, streamOptions) {
330
+ const streamGenerator = this.model.streamAggregated(messages, streamOptions);
331
+ let result = await streamGenerator.next();
332
+ while (!result.done) {
333
+ const event = result.value;
334
+ // Yield hook event for observability
335
+ yield new ModelStreamEventHook({ agent: this, event });
336
+ // Yield the actual model event
337
+ yield event;
338
+ result = await streamGenerator.next();
339
+ }
340
+ // result.done is true, result.value contains the return value
341
+ return result.value;
342
+ }
343
+ /**
344
+ * Executes tools sequentially and streams all tool events.
345
+ *
346
+ * @param assistantMessage - The assistant message containing tool use blocks
347
+ * @param toolRegistry - Registry containing available tools
348
+ * @returns User message containing tool results
349
+ */
350
+ async *executeTools(assistantMessage, toolRegistry) {
351
+ yield new BeforeToolsEvent({ agent: this, message: assistantMessage });
352
+ // Extract tool use blocks from assistant message
353
+ const toolUseBlocks = assistantMessage.content.filter((block) => block.type === 'toolUseBlock');
354
+ if (toolUseBlocks.length === 0) {
355
+ // No tool use blocks found even though stopReason is toolUse
356
+ throw new Error('Model indicated toolUse but no tool use blocks found in message');
357
+ }
358
+ const toolResultBlocks = [];
359
+ for (const toolUseBlock of toolUseBlocks) {
360
+ const toolResultBlock = yield* this.executeTool(toolUseBlock, toolRegistry);
361
+ toolResultBlocks.push(toolResultBlock);
362
+ // Yield the tool result block as it's created
363
+ yield toolResultBlock;
364
+ }
365
+ // Create user message with tool results
366
+ const toolResultMessage = new Message({
367
+ role: 'user',
368
+ content: toolResultBlocks,
369
+ });
370
+ yield new AfterToolsEvent({ agent: this, message: toolResultMessage });
371
+ return toolResultMessage;
372
+ }
373
+ /**
374
+ * Executes a single tool and returns the result.
375
+ * If the tool is not found or fails to return a result, returns an error ToolResult
376
+ * instead of throwing an exception. This allows the agent loop to continue and
377
+ * let the model handle the error gracefully.
378
+ *
379
+ * @param toolUseBlock - Tool use block to execute
380
+ * @param toolRegistry - Registry containing available tools
381
+ * @returns Tool result block
382
+ */
383
+ async *executeTool(toolUseBlock, toolRegistry) {
384
+ const tool = toolRegistry.find((t) => t.name === toolUseBlock.name);
385
+ // Create toolUse object for hook events
386
+ const toolUse = {
387
+ name: toolUseBlock.name,
388
+ toolUseId: toolUseBlock.toolUseId,
389
+ input: toolUseBlock.input,
390
+ };
391
+ yield new BeforeToolCallEvent({ agent: this, toolUse, tool });
392
+ if (!tool) {
393
+ // Tool not found - return error result instead of throwing
394
+ const errorResult = new ToolResultBlock({
395
+ toolUseId: toolUseBlock.toolUseId,
396
+ status: 'error',
397
+ content: [new TextBlock(`Tool '${toolUseBlock.name}' not found in registry`)],
398
+ });
399
+ yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: errorResult });
400
+ return errorResult;
401
+ }
402
+ // Execute tool and collect result
403
+ const toolContext = {
404
+ toolUse: {
405
+ name: toolUseBlock.name,
406
+ toolUseId: toolUseBlock.toolUseId,
407
+ input: toolUseBlock.input,
408
+ },
409
+ agent: this,
410
+ };
411
+ try {
412
+ const toolGenerator = tool.stream(toolContext);
413
+ // Use yield* to delegate to the tool generator and capture the return value
414
+ const toolResult = yield* toolGenerator;
415
+ if (!toolResult) {
416
+ // Tool didn't return a result - return error result instead of throwing
417
+ const errorResult = new ToolResultBlock({
418
+ toolUseId: toolUseBlock.toolUseId,
419
+ status: 'error',
420
+ content: [new TextBlock(`Tool '${toolUseBlock.name}' did not return a result`)],
421
+ });
422
+ yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: errorResult });
423
+ return errorResult;
424
+ }
425
+ yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: toolResult });
426
+ // Tool already returns ToolResultBlock directly
427
+ return toolResult;
428
+ }
429
+ catch (error) {
430
+ // Tool execution failed with error
431
+ const toolError = normalizeError(error);
432
+ const errorResult = new ToolResultBlock({
433
+ toolUseId: toolUseBlock.toolUseId,
434
+ status: 'error',
435
+ content: [new TextBlock(toolError.message)],
436
+ error: toolError,
437
+ });
438
+ yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: errorResult, error: toolError });
439
+ return errorResult;
440
+ }
441
+ }
442
+ /**
443
+ * Appends a message to the conversation history, invokes MessageAddedEvent hook,
444
+ * and returns the event for yielding.
445
+ *
446
+ * @param message - The message to append
447
+ * @returns MessageAddedEvent to be yielded (hook already invoked)
448
+ */
449
+ async _appendMessage(message) {
450
+ this.messages.push(message);
451
+ const event = new MessageAddedEvent({ agent: this, message });
452
+ // Invoke hooks immediately for message tracking
453
+ await this.hooks.invokeCallbacks(event);
454
+ // Return event for yielding (stream will skip hook invocation for MessageAddedEvent)
455
+ return event;
456
+ }
457
+ }
458
+ /**
459
+ * Recursively flattens nested arrays of tools into a single flat array.
460
+ * @param tools - Tools or nested arrays of tools
461
+ * @returns Flat array of tools and MCP clients
462
+ */
463
+ function flattenTools(toolList) {
464
+ const tools = [];
465
+ const mcpClients = [];
466
+ for (const item of toolList) {
467
+ if (Array.isArray(item)) {
468
+ const { tools: nestedTools, mcpClients: nestedMcpClients } = flattenTools(item);
469
+ tools.push(...nestedTools);
470
+ mcpClients.push(...nestedMcpClients);
471
+ }
472
+ else if (item instanceof McpClient) {
473
+ mcpClients.push(item);
474
+ }
475
+ else {
476
+ tools.push(item);
477
+ }
478
+ }
479
+ return { tools, mcpClients };
480
+ }
481
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import type { AgentStreamEvent } from '../types/agent.js';
2
+ /**
3
+ * Creates a default appender function for the current environment.
4
+ * Uses process.stdout.write in Node.js and console.log in browsers.
5
+ * @returns Appender function that writes text to the output destination
6
+ */
7
+ export declare function getDefaultAppender(): (text: string) => void;
8
+ /**
9
+ * Interface for printing agent activity to a destination.
10
+ * Implementations can output to stdout, console, HTML elements, etc.
11
+ */
12
+ export interface Printer {
13
+ /**
14
+ * Write content to the output destination.
15
+ * @param content - The content to write
16
+ */
17
+ write(content: string): void;
18
+ /**
19
+ * Process a streaming event from the agent.
20
+ * @param event - The event to process
21
+ */
22
+ processEvent(event: AgentStreamEvent): void;
23
+ }
24
+ /**
25
+ * Default implementation of the Printer interface.
26
+ * Outputs text, reasoning, and tool execution activity to the configured appender.
27
+ */
28
+ export declare class AgentPrinter implements Printer {
29
+ private readonly _appender;
30
+ private _inReasoningBlock;
31
+ private _toolCount;
32
+ private _needReasoningIndent;
33
+ /**
34
+ * Creates a new AgentPrinter.
35
+ * @param appender - Function that writes text to the output destination
36
+ */
37
+ constructor(appender: (text: string) => void);
38
+ /**
39
+ * Write content to the output destination.
40
+ * @param content - The content to write
41
+ */
42
+ write(content: string): void;
43
+ /**
44
+ * Process a streaming event from the agent.
45
+ * Handles text deltas, reasoning content, and tool execution events.
46
+ * @param event - The event to process
47
+ */
48
+ processEvent(event: AgentStreamEvent): void;
49
+ /**
50
+ * Handle content block delta events (text or reasoning).
51
+ */
52
+ private handleContentBlockDelta;
53
+ /**
54
+ * Write reasoning text with proper indentation after newlines.
55
+ */
56
+ private writeReasoningText;
57
+ /**
58
+ * Handle content block start events.
59
+ * Detects tool use starts.
60
+ */
61
+ private handleContentBlockStart;
62
+ /**
63
+ * Handle content block stop events.
64
+ * Closes reasoning blocks if we were in one.
65
+ */
66
+ private handleContentBlockStop;
67
+ /**
68
+ * Handle tool result events.
69
+ * Outputs completion status.
70
+ */
71
+ private handleToolResult;
72
+ }
73
+ //# sourceMappingURL=printer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printer.d.ts","sourceRoot":"","sources":["../../../src/agent/printer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAO3D;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAE5B;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC5C;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,oBAAoB,CAAiB;IAE7C;;;OAGG;gBACS,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAI5C;;;OAGG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC;;;;OAIG;IACI,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAwBlD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAOzB"}