@strands-agents/sdk 0.6.0 → 0.7.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 (370) hide show
  1. package/README.md +64 -0
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +37 -4
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +31 -4
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/metrics-helpers.d.ts +30 -0
  7. package/dist/src/__fixtures__/metrics-helpers.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/metrics-helpers.js +29 -6
  9. package/dist/src/__fixtures__/metrics-helpers.js.map +1 -1
  10. package/dist/src/__fixtures__/mock-message-model.d.ts +8 -4
  11. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
  12. package/dist/src/__fixtures__/mock-message-model.js +13 -7
  13. package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
  14. package/dist/src/__fixtures__/mock-meter.d.ts +32 -0
  15. package/dist/src/__fixtures__/mock-meter.d.ts.map +1 -0
  16. package/dist/src/__fixtures__/mock-meter.js +47 -0
  17. package/dist/src/__fixtures__/mock-meter.js.map +1 -0
  18. package/dist/src/__fixtures__/mock-plugin.d.ts +13 -0
  19. package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -0
  20. package/dist/src/__fixtures__/{mock-hook-provider.js → mock-plugin.js} +8 -5
  21. package/dist/src/__fixtures__/mock-plugin.js.map +1 -0
  22. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  23. package/dist/src/__fixtures__/tool-helpers.js +5 -2
  24. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  25. package/dist/src/__tests__/index.test.js +21 -0
  26. package/dist/src/__tests__/index.test.js.map +1 -1
  27. package/dist/src/__tests__/mcp.test.js.map +1 -1
  28. package/dist/src/__tests__/mime.test.d.ts +2 -0
  29. package/dist/src/__tests__/mime.test.d.ts.map +1 -0
  30. package/dist/src/__tests__/mime.test.js +83 -0
  31. package/dist/src/__tests__/mime.test.js.map +1 -0
  32. package/dist/src/__tests__/state-store.test.d.ts +2 -0
  33. package/dist/src/__tests__/state-store.test.d.ts.map +1 -0
  34. package/dist/src/__tests__/{app-state.test.js → state-store.test.js} +86 -51
  35. package/dist/src/__tests__/state-store.test.js.map +1 -0
  36. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts +2 -0
  37. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts.map +1 -0
  38. package/dist/src/a2a/__tests__/a2a-agent.test.js +364 -0
  39. package/dist/src/a2a/__tests__/a2a-agent.test.js.map +1 -0
  40. package/dist/src/a2a/__tests__/adapters.test.d.ts +2 -0
  41. package/dist/src/a2a/__tests__/adapters.test.d.ts.map +1 -0
  42. package/dist/src/a2a/__tests__/adapters.test.js +151 -0
  43. package/dist/src/a2a/__tests__/adapters.test.js.map +1 -0
  44. package/dist/src/a2a/__tests__/executor.test.d.ts +2 -0
  45. package/dist/src/a2a/__tests__/executor.test.d.ts.map +1 -0
  46. package/dist/src/a2a/__tests__/executor.test.js +196 -0
  47. package/dist/src/a2a/__tests__/executor.test.js.map +1 -0
  48. package/dist/src/a2a/__tests__/server.test.d.ts +2 -0
  49. package/dist/src/a2a/__tests__/server.test.d.ts.map +1 -0
  50. package/dist/src/a2a/__tests__/server.test.js +51 -0
  51. package/dist/src/a2a/__tests__/server.test.js.map +1 -0
  52. package/dist/src/a2a/__tests__/server.test.node.d.ts +2 -0
  53. package/dist/src/a2a/__tests__/server.test.node.d.ts.map +1 -0
  54. package/dist/src/a2a/__tests__/server.test.node.js +110 -0
  55. package/dist/src/a2a/__tests__/server.test.node.js.map +1 -0
  56. package/dist/src/a2a/a2a-agent.d.ts +132 -0
  57. package/dist/src/a2a/a2a-agent.d.ts.map +1 -0
  58. package/dist/src/a2a/a2a-agent.js +255 -0
  59. package/dist/src/a2a/a2a-agent.js.map +1 -0
  60. package/dist/src/a2a/adapters.d.ts +27 -0
  61. package/dist/src/a2a/adapters.d.ts.map +1 -0
  62. package/dist/src/a2a/adapters.js +175 -0
  63. package/dist/src/a2a/adapters.js.map +1 -0
  64. package/dist/src/a2a/events.d.ts +42 -0
  65. package/dist/src/a2a/events.d.ts.map +1 -0
  66. package/dist/src/a2a/events.js +35 -0
  67. package/dist/src/a2a/events.js.map +1 -0
  68. package/dist/src/a2a/executor.d.ts +57 -0
  69. package/dist/src/a2a/executor.d.ts.map +1 -0
  70. package/dist/src/a2a/executor.js +130 -0
  71. package/dist/src/a2a/executor.js.map +1 -0
  72. package/dist/src/a2a/express-server.d.ts +67 -0
  73. package/dist/src/a2a/express-server.d.ts.map +1 -0
  74. package/dist/src/a2a/express-server.js +95 -0
  75. package/dist/src/a2a/express-server.js.map +1 -0
  76. package/dist/src/a2a/index.d.ts +16 -0
  77. package/dist/src/a2a/index.d.ts.map +1 -0
  78. package/dist/src/a2a/index.js +16 -0
  79. package/dist/src/a2a/index.js.map +1 -0
  80. package/dist/src/a2a/logging.d.ts +8 -0
  81. package/dist/src/a2a/logging.d.ts.map +1 -0
  82. package/dist/src/a2a/logging.js +15 -0
  83. package/dist/src/a2a/logging.js.map +1 -0
  84. package/dist/src/a2a/server.d.ts +67 -0
  85. package/dist/src/a2a/server.d.ts.map +1 -0
  86. package/dist/src/a2a/server.js +67 -0
  87. package/dist/src/a2a/server.js.map +1 -0
  88. package/dist/src/agent/__tests__/agent.hook.test.js +87 -51
  89. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  90. package/dist/src/agent/__tests__/agent.test.js +87 -10
  91. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  92. package/dist/src/agent/__tests__/agent.tracer.test.js +10 -10
  93. package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -1
  94. package/dist/src/agent/__tests__/snapshot.test.js +11 -11
  95. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  96. package/dist/src/agent/agent.d.ts +39 -43
  97. package/dist/src/agent/agent.d.ts.map +1 -1
  98. package/dist/src/agent/agent.js +66 -40
  99. package/dist/src/agent/agent.js.map +1 -1
  100. package/dist/src/agent/snapshot.d.ts.map +1 -1
  101. package/dist/src/agent/snapshot.js +3 -2
  102. package/dist/src/agent/snapshot.js.map +1 -1
  103. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +2 -0
  104. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +1 -0
  105. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +100 -0
  106. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -0
  107. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +26 -10
  108. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
  109. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +84 -21
  110. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  111. package/dist/src/conversation-manager/conversation-manager.d.ts +87 -0
  112. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -0
  113. package/dist/src/conversation-manager/conversation-manager.js +59 -0
  114. package/dist/src/conversation-manager/conversation-manager.js.map +1 -0
  115. package/dist/src/conversation-manager/index.d.ts +1 -0
  116. package/dist/src/conversation-manager/index.d.ts.map +1 -1
  117. package/dist/src/conversation-manager/index.js +1 -0
  118. package/dist/src/conversation-manager/index.js.map +1 -1
  119. package/dist/src/conversation-manager/null-conversation-manager.d.ts +12 -8
  120. package/dist/src/conversation-manager/null-conversation-manager.d.ts.map +1 -1
  121. package/dist/src/conversation-manager/null-conversation-manager.js +13 -7
  122. package/dist/src/conversation-manager/null-conversation-manager.js.map +1 -1
  123. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +28 -19
  124. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  125. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +44 -36
  126. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  127. package/dist/src/hooks/__tests__/registry.test.js +10 -154
  128. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  129. package/dist/src/hooks/events.d.ts +44 -44
  130. package/dist/src/hooks/events.d.ts.map +1 -1
  131. package/dist/src/hooks/events.js +11 -11
  132. package/dist/src/hooks/events.js.map +1 -1
  133. package/dist/src/hooks/index.d.ts +3 -3
  134. package/dist/src/hooks/index.d.ts.map +1 -1
  135. package/dist/src/hooks/index.js +2 -2
  136. package/dist/src/hooks/registry.d.ts +1 -32
  137. package/dist/src/hooks/registry.d.ts.map +1 -1
  138. package/dist/src/hooks/registry.js +1 -47
  139. package/dist/src/hooks/registry.js.map +1 -1
  140. package/dist/src/hooks/types.d.ts +0 -31
  141. package/dist/src/hooks/types.d.ts.map +1 -1
  142. package/dist/src/index.d.ts +12 -12
  143. package/dist/src/index.d.ts.map +1 -1
  144. package/dist/src/index.js +8 -8
  145. package/dist/src/index.js.map +1 -1
  146. package/dist/src/mime.d.ts +24 -0
  147. package/dist/src/mime.d.ts.map +1 -0
  148. package/dist/src/mime.js +82 -0
  149. package/dist/src/mime.js.map +1 -0
  150. package/dist/src/models/__tests__/anthropic.test.js +78 -1
  151. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  152. package/dist/src/models/__tests__/bedrock.test.js +1844 -613
  153. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  154. package/dist/src/models/__tests__/gemini.test.js +100 -1
  155. package/dist/src/models/__tests__/gemini.test.js.map +1 -1
  156. package/dist/src/models/__tests__/model.test.js +25 -0
  157. package/dist/src/models/__tests__/model.test.js.map +1 -1
  158. package/dist/src/models/__tests__/openai.test.js +184 -32
  159. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  160. package/dist/src/models/anthropic.d.ts.map +1 -1
  161. package/dist/src/models/anthropic.js +6 -7
  162. package/dist/src/models/anthropic.js.map +1 -1
  163. package/dist/src/models/bedrock.d.ts +64 -10
  164. package/dist/src/models/bedrock.d.ts.map +1 -1
  165. package/dist/src/models/bedrock.js +202 -23
  166. package/dist/src/models/bedrock.js.map +1 -1
  167. package/dist/src/models/gemini/adapters.d.ts.map +1 -1
  168. package/dist/src/models/gemini/adapters.js +65 -14
  169. package/dist/src/models/gemini/adapters.js.map +1 -1
  170. package/dist/src/models/model.d.ts +12 -0
  171. package/dist/src/models/model.d.ts.map +1 -1
  172. package/dist/src/models/model.js +5 -9
  173. package/dist/src/models/model.js.map +1 -1
  174. package/dist/src/models/openai.d.ts +15 -0
  175. package/dist/src/models/openai.d.ts.map +1 -1
  176. package/dist/src/models/openai.js +108 -64
  177. package/dist/src/models/openai.js.map +1 -1
  178. package/dist/src/models/streaming.d.ts +5 -0
  179. package/dist/src/models/streaming.d.ts.map +1 -1
  180. package/dist/src/multiagent/__tests__/events.test.js +24 -7
  181. package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
  182. package/dist/src/multiagent/__tests__/graph.test.js +28 -13
  183. package/dist/src/multiagent/__tests__/graph.test.js.map +1 -1
  184. package/dist/src/multiagent/__tests__/nodes.test.js +28 -10
  185. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  186. package/dist/src/multiagent/__tests__/swarm.test.js +33 -10
  187. package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -1
  188. package/dist/src/multiagent/events.d.ts +48 -14
  189. package/dist/src/multiagent/events.d.ts.map +1 -1
  190. package/dist/src/multiagent/events.js +11 -3
  191. package/dist/src/multiagent/events.js.map +1 -1
  192. package/dist/src/multiagent/graph.d.ts +21 -11
  193. package/dist/src/multiagent/graph.d.ts.map +1 -1
  194. package/dist/src/multiagent/graph.js +35 -29
  195. package/dist/src/multiagent/graph.js.map +1 -1
  196. package/dist/src/multiagent/index.d.ts +3 -2
  197. package/dist/src/multiagent/index.d.ts.map +1 -1
  198. package/dist/src/multiagent/index.js.map +1 -1
  199. package/dist/src/multiagent/multiagent.d.ts +41 -0
  200. package/dist/src/multiagent/multiagent.d.ts.map +1 -0
  201. package/dist/src/multiagent/multiagent.js +2 -0
  202. package/dist/src/multiagent/multiagent.js.map +1 -0
  203. package/dist/src/multiagent/nodes.d.ts +18 -21
  204. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  205. package/dist/src/multiagent/nodes.js +27 -11
  206. package/dist/src/multiagent/nodes.js.map +1 -1
  207. package/dist/src/multiagent/plugins.d.ts +70 -0
  208. package/dist/src/multiagent/plugins.d.ts.map +1 -0
  209. package/dist/src/multiagent/plugins.js +70 -0
  210. package/dist/src/multiagent/plugins.js.map +1 -0
  211. package/dist/src/multiagent/state.d.ts +2 -2
  212. package/dist/src/multiagent/state.d.ts.map +1 -1
  213. package/dist/src/multiagent/state.js +2 -2
  214. package/dist/src/multiagent/state.js.map +1 -1
  215. package/dist/src/multiagent/swarm.d.ts +26 -16
  216. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  217. package/dist/src/multiagent/swarm.js +31 -13
  218. package/dist/src/multiagent/swarm.js.map +1 -1
  219. package/dist/src/plugins/__tests__/plugin.test.d.ts +2 -0
  220. package/dist/src/plugins/__tests__/plugin.test.d.ts.map +1 -0
  221. package/dist/src/plugins/__tests__/plugin.test.js +114 -0
  222. package/dist/src/plugins/__tests__/plugin.test.js.map +1 -0
  223. package/dist/src/plugins/__tests__/registry.test.d.ts +2 -0
  224. package/dist/src/plugins/__tests__/registry.test.d.ts.map +1 -0
  225. package/dist/src/plugins/__tests__/registry.test.js +147 -0
  226. package/dist/src/plugins/__tests__/registry.test.js.map +1 -0
  227. package/dist/src/plugins/index.d.ts +30 -0
  228. package/dist/src/plugins/index.d.ts.map +1 -0
  229. package/dist/src/plugins/index.js +30 -0
  230. package/dist/src/plugins/index.js.map +1 -0
  231. package/dist/src/plugins/plugin.d.ts +74 -0
  232. package/dist/src/plugins/plugin.d.ts.map +1 -0
  233. package/dist/src/plugins/plugin.js +8 -0
  234. package/dist/src/plugins/plugin.js.map +1 -0
  235. package/dist/src/plugins/registry.d.ts +25 -0
  236. package/dist/src/plugins/registry.d.ts.map +1 -0
  237. package/dist/src/plugins/registry.js +41 -0
  238. package/dist/src/plugins/registry.js.map +1 -0
  239. package/dist/src/session/__tests__/session-manager.test.js +74 -92
  240. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  241. package/dist/src/session/index.d.ts +0 -1
  242. package/dist/src/session/index.d.ts.map +1 -1
  243. package/dist/src/session/index.js +0 -1
  244. package/dist/src/session/index.js.map +1 -1
  245. package/dist/src/session/session-manager.d.ts +9 -5
  246. package/dist/src/session/session-manager.d.ts.map +1 -1
  247. package/dist/src/session/session-manager.js +14 -8
  248. package/dist/src/session/session-manager.js.map +1 -1
  249. package/dist/src/session/storage.d.ts +1 -1
  250. package/dist/src/session/storage.d.ts.map +1 -1
  251. package/dist/src/session/types.d.ts +2 -2
  252. package/dist/src/session/types.d.ts.map +1 -1
  253. package/dist/src/{app-state.d.ts → state-store.d.ts} +11 -11
  254. package/dist/src/state-store.d.ts.map +1 -0
  255. package/dist/src/{app-state.js → state-store.js} +8 -7
  256. package/dist/src/state-store.js.map +1 -0
  257. package/dist/src/telemetry/__tests__/config.test.js +24 -0
  258. package/dist/src/telemetry/__tests__/config.test.js.map +1 -1
  259. package/dist/src/telemetry/__tests__/config.test.node.js +56 -0
  260. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
  261. package/dist/src/telemetry/__tests__/meter.test.js +176 -9
  262. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  263. package/dist/src/telemetry/__tests__/tracer.test.node.js +123 -2
  264. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -1
  265. package/dist/src/telemetry/config.d.ts +72 -12
  266. package/dist/src/telemetry/config.d.ts.map +1 -1
  267. package/dist/src/telemetry/config.js +101 -24
  268. package/dist/src/telemetry/config.js.map +1 -1
  269. package/dist/src/telemetry/index.d.ts +10 -7
  270. package/dist/src/telemetry/index.d.ts.map +1 -1
  271. package/dist/src/telemetry/index.js +9 -6
  272. package/dist/src/telemetry/index.js.map +1 -1
  273. package/dist/src/telemetry/meter.d.ts +23 -4
  274. package/dist/src/telemetry/meter.d.ts.map +1 -1
  275. package/dist/src/telemetry/meter.js +78 -5
  276. package/dist/src/telemetry/meter.js.map +1 -1
  277. package/dist/src/telemetry/tracer.d.ts +27 -0
  278. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  279. package/dist/src/telemetry/tracer.js +80 -5
  280. package/dist/src/telemetry/tracer.js.map +1 -1
  281. package/dist/src/telemetry/types.d.ts +2 -0
  282. package/dist/src/telemetry/types.d.ts.map +1 -1
  283. package/dist/src/telemetry/utils.d.ts +10 -0
  284. package/dist/src/telemetry/utils.d.ts.map +1 -0
  285. package/dist/src/telemetry/utils.js +13 -0
  286. package/dist/src/telemetry/utils.js.map +1 -0
  287. package/dist/src/tools/__tests__/tool.test.js +22 -1
  288. package/dist/src/tools/__tests__/tool.test.js.map +1 -1
  289. package/dist/src/tools/function-tool.d.ts +11 -1
  290. package/dist/src/tools/function-tool.d.ts.map +1 -1
  291. package/dist/src/tools/function-tool.js +64 -3
  292. package/dist/src/tools/function-tool.js.map +1 -1
  293. package/dist/src/tools/tool.d.ts +2 -2
  294. package/dist/src/tools/tool.d.ts.map +1 -1
  295. package/dist/src/tsconfig.tsbuildinfo +1 -1
  296. package/dist/src/types/__tests__/media.test.js +22 -16
  297. package/dist/src/types/__tests__/media.test.js.map +1 -1
  298. package/dist/src/types/agent.d.ts +75 -7
  299. package/dist/src/types/agent.d.ts.map +1 -1
  300. package/dist/src/types/agent.js.map +1 -1
  301. package/dist/src/types/media.d.ts +27 -30
  302. package/dist/src/types/media.d.ts.map +1 -1
  303. package/dist/src/types/media.js +15 -56
  304. package/dist/src/types/media.js.map +1 -1
  305. package/dist/src/types/messages.d.ts +18 -4
  306. package/dist/src/types/messages.d.ts.map +1 -1
  307. package/dist/src/types/messages.js +22 -26
  308. package/dist/src/types/messages.js.map +1 -1
  309. package/dist/src/types/serializable.d.ts +34 -4
  310. package/dist/src/types/serializable.d.ts.map +1 -1
  311. package/dist/src/types/serializable.js +31 -2
  312. package/dist/src/types/serializable.js.map +1 -1
  313. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +5 -4
  314. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  315. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts.map +1 -0
  316. package/dist/src/vended-tools/{file_editor → file-editor}/__tests__/file-editor.test.node.js +11 -4
  317. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -0
  318. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.d.ts +1 -1
  319. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.d.ts.map +1 -1
  320. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.js +2 -2
  321. package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.js.map +1 -1
  322. package/dist/src/vended-tools/{file_editor → file-editor}/index.d.ts.map +1 -1
  323. package/dist/src/vended-tools/file-editor/index.js.map +1 -0
  324. package/dist/src/vended-tools/{file_editor → file-editor}/types.d.ts.map +1 -1
  325. package/dist/src/vended-tools/file-editor/types.js.map +1 -0
  326. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts.map +1 -0
  327. package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.js.map +1 -1
  328. package/dist/src/vended-tools/{http_request → http-request}/http-request.d.ts.map +1 -1
  329. package/dist/src/vended-tools/{http_request → http-request}/http-request.js.map +1 -1
  330. package/dist/src/vended-tools/{http_request → http-request}/index.d.ts.map +1 -1
  331. package/dist/src/vended-tools/http-request/index.js.map +1 -0
  332. package/dist/src/vended-tools/{http_request → http-request}/types.d.ts.map +1 -1
  333. package/dist/src/vended-tools/http-request/types.js.map +1 -0
  334. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +5 -4
  335. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  336. package/dist/src/vended-tools/notebook/notebook.js +2 -2
  337. package/dist/src/vended-tools/notebook/notebook.js.map +1 -1
  338. package/package.json +52 -10
  339. package/dist/src/__fixtures__/mock-hook-provider.d.ts +0 -10
  340. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +0 -1
  341. package/dist/src/__fixtures__/mock-hook-provider.js.map +0 -1
  342. package/dist/src/__tests__/app-state.test.d.ts +0 -2
  343. package/dist/src/__tests__/app-state.test.d.ts.map +0 -1
  344. package/dist/src/__tests__/app-state.test.js.map +0 -1
  345. package/dist/src/app-state.d.ts.map +0 -1
  346. package/dist/src/app-state.js.map +0 -1
  347. package/dist/src/multiagent/base.d.ts +0 -25
  348. package/dist/src/multiagent/base.d.ts.map +0 -1
  349. package/dist/src/multiagent/base.js +0 -2
  350. package/dist/src/multiagent/base.js.map +0 -1
  351. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.d.ts.map +0 -1
  352. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +0 -1
  353. package/dist/src/vended-tools/file_editor/index.js.map +0 -1
  354. package/dist/src/vended-tools/file_editor/types.js.map +0 -1
  355. package/dist/src/vended-tools/http_request/__tests__/http-request.test.d.ts.map +0 -1
  356. package/dist/src/vended-tools/http_request/index.js.map +0 -1
  357. package/dist/src/vended-tools/http_request/types.js.map +0 -1
  358. /package/dist/src/vended-tools/{file_editor → file-editor}/__tests__/file-editor.test.node.d.ts +0 -0
  359. /package/dist/src/vended-tools/{file_editor → file-editor}/index.d.ts +0 -0
  360. /package/dist/src/vended-tools/{file_editor → file-editor}/index.js +0 -0
  361. /package/dist/src/vended-tools/{file_editor → file-editor}/types.d.ts +0 -0
  362. /package/dist/src/vended-tools/{file_editor → file-editor}/types.js +0 -0
  363. /package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.d.ts +0 -0
  364. /package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.js +0 -0
  365. /package/dist/src/vended-tools/{http_request → http-request}/http-request.d.ts +0 -0
  366. /package/dist/src/vended-tools/{http_request → http-request}/http-request.js +0 -0
  367. /package/dist/src/vended-tools/{http_request → http-request}/index.d.ts +0 -0
  368. /package/dist/src/vended-tools/{http_request → http-request}/index.js +0 -0
  369. /package/dist/src/vended-tools/{http_request → http-request}/types.d.ts +0 -0
  370. /package/dist/src/vended-tools/{http_request → http-request}/types.js +0 -0
@@ -0,0 +1,255 @@
1
+ /**
2
+ * A2A agent that wraps a remote A2A agent as an InvokableAgent.
3
+ *
4
+ * Implements the InvokableAgent interface so it can be used anywhere a local Agent
5
+ * can be used. The remote agent is invoked via the A2A protocol.
6
+ * The A2A protocol is experimental, so breaking changes in the underlying SDK
7
+ * may require breaking changes in this module.
8
+ */
9
+ import { ClientFactory } from '@a2a-js/sdk/client';
10
+ import { AgentResult } from '../types/agent.js';
11
+ import { Message, TextBlock } from '../types/messages.js';
12
+ import { A2AStreamUpdateEvent, A2AResultEvent } from './events.js';
13
+ import { logger } from '../logging/logger.js';
14
+ import { logExperimentalWarning } from './logging.js';
15
+ /**
16
+ * Wraps a remote A2A agent as an InvokableAgent.
17
+ *
18
+ * Implements `InvokableAgent` so it can be used polymorphically with local `Agent` instances.
19
+ * On invocation, the agent lazily connects to the remote endpoint via the A2A protocol
20
+ * and returns the response as an `AgentResult`.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { A2AAgent } from '@strands-agents/sdk/a2a'
25
+ *
26
+ * const remoteAgent = new A2AAgent({ url: 'http://localhost:9000' })
27
+ * const result = await remoteAgent.invoke('Hello, remote agent!')
28
+ * console.log(result.toString())
29
+ * ```
30
+ */
31
+ export class A2AAgent {
32
+ _config;
33
+ _client;
34
+ _agentCard;
35
+ /**
36
+ * The unique identifier of the agent instance.
37
+ */
38
+ id;
39
+ /**
40
+ * The name of the agent.
41
+ * If not provided in config, populated from the agent card after connection.
42
+ */
43
+ name;
44
+ /**
45
+ * Optional description of what the agent does.
46
+ * If not provided in config, populated from the agent card after connection.
47
+ */
48
+ description;
49
+ /**
50
+ * Creates a new A2AAgent.
51
+ *
52
+ * @param config - Configuration for connecting to the remote agent
53
+ */
54
+ constructor(config) {
55
+ this._config = config;
56
+ this.id = config.id ?? config.url;
57
+ if (config.name !== undefined)
58
+ this.name = config.name;
59
+ if (config.description !== undefined)
60
+ this.description = config.description;
61
+ }
62
+ /**
63
+ * Invokes the remote agent and returns the final result.
64
+ *
65
+ * Built on top of `stream()` — consumes the full event stream and returns the final result.
66
+ *
67
+ * @param args - Arguments for invoking the agent
68
+ * @param options - Optional invocation options (unused for remote agents)
69
+ * @returns Promise that resolves to the AgentResult
70
+ */
71
+ async invoke(args, options) {
72
+ const gen = this.stream(args, options);
73
+ let next = await gen.next();
74
+ while (!next.done) {
75
+ next = await gen.next();
76
+ }
77
+ return next.value;
78
+ }
79
+ /**
80
+ * Streams the remote agent execution, yielding A2A events as they arrive.
81
+ *
82
+ * Yields `A2AStreamUpdateEvent` for each raw A2A protocol event (Message, Task,
83
+ * TaskStatusUpdateEvent, TaskArtifactUpdateEvent), followed by an `A2AResultEvent`
84
+ * containing the final result built from the last complete event.
85
+ *
86
+ * @param args - Arguments for invoking the agent
87
+ * @param _options - Optional invocation options (unused for remote agents)
88
+ * @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
89
+ */
90
+ async *stream(args, _options) {
91
+ const client = await this._getClient();
92
+ const text = this._extractTextFromArgs(args);
93
+ let lastEvent;
94
+ let lastCompleteEvent;
95
+ const artifactTexts = new Map();
96
+ const eventStream = client.sendMessageStream({
97
+ message: {
98
+ kind: 'message',
99
+ messageId: globalThis.crypto.randomUUID(),
100
+ role: 'user',
101
+ parts: [{ kind: 'text', text }],
102
+ },
103
+ });
104
+ for await (const event of eventStream) {
105
+ lastEvent = event;
106
+ if (this._isCompleteEvent(event)) {
107
+ lastCompleteEvent = event;
108
+ }
109
+ if (event.kind === 'artifact-update') {
110
+ const id = event.artifact.artifactId;
111
+ if (!event.append) {
112
+ artifactTexts.set(id, []);
113
+ }
114
+ const chunks = artifactTexts.get(id) ?? [];
115
+ const chunkText = this._textFromParts(event.artifact.parts);
116
+ if (chunkText) {
117
+ chunks.push(chunkText);
118
+ artifactTexts.set(id, chunks);
119
+ }
120
+ }
121
+ yield new A2AStreamUpdateEvent(event);
122
+ }
123
+ const finalEvent = lastCompleteEvent ?? lastEvent;
124
+ const accumulatedText = [...artifactTexts.values()].map((chunks) => chunks.join('')).join('\n');
125
+ const result = this._buildResult(finalEvent, accumulatedText);
126
+ yield new A2AResultEvent({ result });
127
+ return result;
128
+ }
129
+ /**
130
+ * Returns the cached A2A SDK client, creating one lazily on first use.
131
+ * Also fetches and caches the agent card for name/description.
132
+ *
133
+ * @returns The A2A SDK client
134
+ */
135
+ async _getClient() {
136
+ if (this._client) {
137
+ return this._client;
138
+ }
139
+ logExperimentalWarning();
140
+ const factory = new ClientFactory();
141
+ const client = await factory.createFromUrl(this._config.url, this._config.agentCardPath);
142
+ this._agentCard = await client.getAgentCard();
143
+ if (this.name === undefined && this._agentCard?.name) {
144
+ ;
145
+ this.name = this._agentCard.name;
146
+ }
147
+ if (this.description === undefined && this._agentCard?.description) {
148
+ ;
149
+ this.description = this._agentCard.description;
150
+ }
151
+ this._client = client;
152
+ return client;
153
+ }
154
+ /**
155
+ * Extracts a text string from InvokeArgs for sending to the remote agent.
156
+ *
157
+ * @param args - The invocation arguments
158
+ * @returns The extracted text string
159
+ */
160
+ _extractTextFromArgs(args) {
161
+ if (typeof args === 'string')
162
+ return args;
163
+ if (!Array.isArray(args) || args.length === 0)
164
+ return '';
165
+ // Message[] or MessageData[] — find last user message's content
166
+ if ('role' in args[0]) {
167
+ const messages = args;
168
+ const lastUser = messages
169
+ .slice()
170
+ .reverse()
171
+ .find((m) => m.role === 'user');
172
+ if (!lastUser)
173
+ return '';
174
+ args = lastUser instanceof Message ? lastUser.content : lastUser.content;
175
+ }
176
+ // ContentBlock[] or ContentBlockData[] — join text from all text blocks
177
+ const blocks = args;
178
+ const nonTextCount = blocks.filter((b) => ('type' in b ? b.type !== 'textBlock' : !('text' in b))).length;
179
+ if (nonTextCount > 0) {
180
+ logger.info(`non_text_blocks=<${nonTextCount}> | stripping non-text content blocks, a2a only supports text`);
181
+ }
182
+ return blocks
183
+ .filter((b) => ('type' in b ? b.type === 'textBlock' : 'text' in b))
184
+ .map((b) => b.text)
185
+ .join('\n');
186
+ }
187
+ /**
188
+ * Checks whether an A2A streaming event represents a complete response.
189
+ *
190
+ * @param event - The A2A streaming event
191
+ * @returns True if the event is a terminal/complete event
192
+ */
193
+ _isCompleteEvent(event) {
194
+ if (event.kind === 'message')
195
+ return true;
196
+ if (event.kind === 'task')
197
+ return true;
198
+ if (event.kind === 'artifact-update')
199
+ return event.lastChunk === true;
200
+ if (event.kind === 'status-update')
201
+ return event.status.state === 'completed';
202
+ return false;
203
+ }
204
+ /**
205
+ * Builds an AgentResult from the final A2A streaming event.
206
+ *
207
+ * @param event - The final A2A event, or undefined if no events were received
208
+ * @returns The constructed AgentResult
209
+ */
210
+ _buildResult(event, accumulatedText) {
211
+ const text = this._extractTextFromEvent(event) || accumulatedText || '';
212
+ const lastMessage = new Message({
213
+ role: 'assistant',
214
+ content: [new TextBlock(text)],
215
+ });
216
+ return new AgentResult({ stopReason: 'endTurn', lastMessage });
217
+ }
218
+ /**
219
+ * Extracts text content from an A2A streaming event.
220
+ *
221
+ * @param event - The A2A streaming event
222
+ * @returns Extracted text content
223
+ */
224
+ _extractTextFromEvent(event) {
225
+ if (!event)
226
+ return '';
227
+ if (event.kind === 'message') {
228
+ return this._textFromParts(event.parts);
229
+ }
230
+ if (event.kind === 'task') {
231
+ const parts = event.artifacts?.flatMap((a) => a.parts) ?? [];
232
+ return this._textFromParts(parts) || this._textFromParts(event.status?.message?.parts ?? []);
233
+ }
234
+ if (event.kind === 'artifact-update') {
235
+ return this._textFromParts(event.artifact.parts);
236
+ }
237
+ if (event.kind === 'status-update' && event.status.message) {
238
+ return this._textFromParts(event.status.message.parts);
239
+ }
240
+ return '';
241
+ }
242
+ /**
243
+ * Joins text from A2A parts, filtering out non-text parts.
244
+ *
245
+ * @param parts - Array of A2A parts
246
+ * @returns Joined text content
247
+ */
248
+ _textFromParts(parts) {
249
+ return parts
250
+ .filter((p) => p.kind === 'text')
251
+ .map((p) => p.text)
252
+ .join('\n');
253
+ }
254
+ }
255
+ //# sourceMappingURL=a2a-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-agent.js","sourceRoot":"","sources":["../../../src/a2a/a2a-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Conversion utilities between Strands SDK content blocks and A2A protocol parts.
3
+ *
4
+ * Supports text, images, videos, documents, and structured data.
5
+ */
6
+ import type { Part } from '@a2a-js/sdk';
7
+ import type { ContentBlock } from '../types/messages.js';
8
+ /**
9
+ * Converts A2A protocol parts to Strands SDK content blocks.
10
+ *
11
+ * Handles text, file (image/video/document), and structured data parts,
12
+ * @param parts - Array of A2A protocol parts
13
+ * @returns Array of Strands content blocks
14
+ */
15
+ export declare function partsToContentBlocks(parts: Part[]): ContentBlock[];
16
+ /**
17
+ * Converts Strands SDK content blocks to A2A protocol parts.
18
+ *
19
+ * Supports text, image, video, and document blocks. Image and video blocks
20
+ * with byte sources are encoded as base64 file parts; URL-based sources
21
+ * become URI file parts. Unsupported block types are silently skipped.
22
+ *
23
+ * @param blocks - Array of Strands content blocks
24
+ * @returns Array of A2A parts
25
+ */
26
+ export declare function contentBlocksToParts(blocks: ContentBlock[]): Part[];
27
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../src/a2a/adapters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAA8B,MAAM,aAAa,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAOxD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAsBlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAuBnE"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Conversion utilities between Strands SDK content blocks and A2A protocol parts.
3
+ *
4
+ * Supports text, images, videos, documents, and structured data.
5
+ */
6
+ import { TextBlock } from '../types/messages.js';
7
+ import { toMimeType, toMediaFormat } from '../mime.js';
8
+ import { ImageBlock, VideoBlock, DocumentBlock, decodeBase64, encodeBase64 } from '../types/media.js';
9
+ import { logger } from '../logging/logger.js';
10
+ /**
11
+ * Converts A2A protocol parts to Strands SDK content blocks.
12
+ *
13
+ * Handles text, file (image/video/document), and structured data parts,
14
+ * @param parts - Array of A2A protocol parts
15
+ * @returns Array of Strands content blocks
16
+ */
17
+ export function partsToContentBlocks(parts) {
18
+ const blocks = [];
19
+ for (const part of parts) {
20
+ try {
21
+ switch (part.kind) {
22
+ case 'text':
23
+ blocks.push(new TextBlock(part.text));
24
+ break;
25
+ case 'file':
26
+ blocks.push(_convertFilePart(part.file));
27
+ break;
28
+ case 'data':
29
+ blocks.push(new TextBlock(`[Structured Data]\n${JSON.stringify(part.data, null, 2)}`));
30
+ break;
31
+ }
32
+ }
33
+ catch {
34
+ logger.warn(`part_kind=<${part.kind}> | failed to convert A2A part to content block`);
35
+ }
36
+ }
37
+ return blocks;
38
+ }
39
+ /**
40
+ * Converts Strands SDK content blocks to A2A protocol parts.
41
+ *
42
+ * Supports text, image, video, and document blocks. Image and video blocks
43
+ * with byte sources are encoded as base64 file parts; URL-based sources
44
+ * become URI file parts. Unsupported block types are silently skipped.
45
+ *
46
+ * @param blocks - Array of Strands content blocks
47
+ * @returns Array of A2A parts
48
+ */
49
+ export function contentBlocksToParts(blocks) {
50
+ const parts = [];
51
+ for (const block of blocks) {
52
+ switch (block.type) {
53
+ case 'textBlock':
54
+ parts.push({ kind: 'text', text: block.text });
55
+ break;
56
+ case 'imageBlock':
57
+ case 'videoBlock': {
58
+ const filePart = _mediaBlockToFilePart(block);
59
+ if (filePart)
60
+ parts.push(filePart);
61
+ break;
62
+ }
63
+ case 'documentBlock': {
64
+ const filePart = _documentBlockToFilePart(block);
65
+ if (filePart)
66
+ parts.push(filePart);
67
+ break;
68
+ }
69
+ }
70
+ }
71
+ return parts;
72
+ }
73
+ /**
74
+ * Converts an A2A FilePart to the appropriate Strands content block.
75
+ *
76
+ * @param file - The file object from a FilePart (either bytes or URI based)
77
+ * @returns ContentBlock for the file
78
+ */
79
+ function _convertFilePart(file) {
80
+ if ('bytes' in file) {
81
+ const decoded = decodeBase64(file.bytes);
82
+ const fileType = _getFileType(file.mimeType);
83
+ const format = _getFormat(file.mimeType, fileType);
84
+ if (fileType === 'image') {
85
+ return new ImageBlock({ format: format, source: { bytes: decoded } });
86
+ }
87
+ if (fileType === 'video') {
88
+ return new VideoBlock({ format: format, source: { bytes: decoded } });
89
+ }
90
+ // Document or unknown — treat as document
91
+ return new DocumentBlock({
92
+ name: file.name ?? 'document',
93
+ format: format,
94
+ source: { bytes: decoded },
95
+ });
96
+ }
97
+ const name = file.name ?? 'file';
98
+ return new TextBlock(`[File: ${name} (${file.uri})]`);
99
+ }
100
+ /**
101
+ * Classifies a MIME type into a file category.
102
+ *
103
+ * @param mimeType - The MIME type string
104
+ * @returns The file type category
105
+ */
106
+ function _getFileType(mimeType) {
107
+ if (!mimeType) {
108
+ return 'unknown';
109
+ }
110
+ const lower = mimeType.toLowerCase();
111
+ if (lower.startsWith('image/'))
112
+ return 'image';
113
+ if (lower.startsWith('video/'))
114
+ return 'video';
115
+ if (lower.startsWith('text/') || lower.startsWith('application/'))
116
+ return 'document';
117
+ return 'unknown';
118
+ }
119
+ /**
120
+ * Resolves a MIME type to a Strands media format using the reverse MIME_TYPES lookup.
121
+ * Falls back to the MIME subtype for unrecognized types.
122
+ *
123
+ * @param mimeType - The MIME type string
124
+ * @param fileType - The classified file type
125
+ * @returns The format string
126
+ */
127
+ function _getFormat(mimeType, fileType) {
128
+ if (!mimeType) {
129
+ return fileType === 'image' ? 'png' : fileType === 'video' ? 'mp4' : 'txt';
130
+ }
131
+ const lower = mimeType.toLowerCase();
132
+ // Use the reverse lookup (handles complex types like application/vnd.ms-excel → xls)
133
+ const known = toMediaFormat(lower);
134
+ if (known) {
135
+ return known;
136
+ }
137
+ // Fallback: extract subtype from MIME (e.g., image/tiff → tiff)
138
+ if (lower.includes('/')) {
139
+ return lower.split('/').pop();
140
+ }
141
+ return 'txt';
142
+ }
143
+ /**
144
+ * Converts an ImageBlock or VideoBlock to an A2A FilePart.
145
+ *
146
+ * @param block - The image or video block
147
+ * @returns A2A FilePart, or undefined if the source type is unsupported
148
+ */
149
+ function _mediaBlockToFilePart(block) {
150
+ const mimeType = toMimeType(block.format);
151
+ if (block.source.type === 'imageSourceBytes' || block.source.type === 'videoSourceBytes') {
152
+ return { kind: 'file', file: { bytes: encodeBase64(block.source.bytes), mimeType } };
153
+ }
154
+ if (block.source.type === 'imageSourceUrl') {
155
+ return { kind: 'file', file: { uri: block.source.url, mimeType } };
156
+ }
157
+ return undefined;
158
+ }
159
+ /**
160
+ * Converts a DocumentBlock to an A2A FilePart.
161
+ *
162
+ * @param block - The document block
163
+ * @returns A2A FilePart, or undefined if the source type is unsupported
164
+ */
165
+ function _documentBlockToFilePart(block) {
166
+ const mimeType = toMimeType(block.format);
167
+ if (block.source.type === 'documentSourceBytes') {
168
+ return { kind: 'file', file: { bytes: encodeBase64(block.source.bytes), mimeType, name: block.name } };
169
+ }
170
+ if (block.source.type === 'documentSourceText') {
171
+ return { kind: 'text', text: block.source.text };
172
+ }
173
+ return undefined;
174
+ }
175
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../src/a2a/adapters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,MAAM,GAAmB,EAAE,CAAA;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,MAAM;oBACT,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;oBACrC,MAAK;gBACP,KAAK,MAAM;oBACT,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;oBACxC,MAAK;gBACP,KAAK,MAAM;oBACT,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACtF,MAAK;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,iDAAiD,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACzD,MAAM,KAAK,GAAW,EAAE,CAAA;IAExB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,WAAW;gBACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC9C,MAAK;YACP,KAAK,YAAY,CAAC;YAClB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;gBAC7C,IAAI,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAClC,MAAK;YACP,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;gBAChD,IAAI,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAClC,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAiC;IACzD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAElD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,MAAqB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QACtF,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,MAAqB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QACtF,CAAC;QAED,0CAA0C;QAC1C,OAAO,IAAI,aAAa,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU;YAC7B,MAAM,EAAE,MAAwB;YAChC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC3B,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAA;IAChC,OAAO,IAAI,SAAS,CAAC,UAAU,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,QAA4B;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACpC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,UAAU,CAAA;IACpF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,QAA4B,EAAE,QAAgB;IAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;IAC5E,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEpC,qFAAqF;IACrF,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAA;IACd,CAAC;IAED,gEAAgE;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAA;IAChC,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,KAA8B;IAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAE,CAAA;IAE1C,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACzF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAA;IACtF,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAA;IACpE,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAAoB;IACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAE,CAAA;IAE1C,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAChD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA;IACxG,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAClD,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * A2A-specific stream events yielded by A2AAgent.stream().
3
+ */
4
+ import type { Message, Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent } from '@a2a-js/sdk';
5
+ import { StreamEvent } from '../hooks/events.js';
6
+ import type { AgentResultEvent } from '../hooks/events.js';
7
+ /**
8
+ * Union of raw A2A protocol event types received during streaming.
9
+ */
10
+ export type A2AEventData = Message | Task | TaskStatusUpdateEvent | TaskArtifactUpdateEvent;
11
+ /**
12
+ * Event wrapping a raw A2A protocol streaming event.
13
+ *
14
+ * Yielded by `A2AAgent.stream()` for each event received from the remote agent.
15
+ * The `event` property contains the raw A2A SDK event data, discriminated by `kind`:
16
+ * - `'message'` — A2A Message
17
+ * - `'task'` — A2A Task
18
+ * - `'status-update'` — TaskStatusUpdateEvent
19
+ * - `'artifact-update'` — TaskArtifactUpdateEvent
20
+ */
21
+ export declare class A2AStreamUpdateEvent extends StreamEvent {
22
+ readonly type: "a2aStreamUpdateEvent";
23
+ readonly event: A2AEventData;
24
+ constructor(event: A2AEventData);
25
+ }
26
+ /**
27
+ * Event triggered as the final event in the A2A agent stream.
28
+ * Wraps the agent result containing the stop reason and last message.
29
+ */
30
+ export declare class A2AResultEvent extends StreamEvent {
31
+ readonly type: "a2aResultEvent";
32
+ readonly result: AgentResultEvent['result'];
33
+ constructor(data: Pick<AgentResultEvent, 'result'>);
34
+ }
35
+ /**
36
+ * Union of all events yielded by `A2AAgent.stream()`.
37
+ *
38
+ * Includes raw A2A protocol events ({@link A2AStreamUpdateEvent}) and the final
39
+ * result event ({@link A2AResultEvent}).
40
+ */
41
+ export type A2AStreamEvent = A2AStreamUpdateEvent | A2AResultEvent;
42
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/a2a/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,IAAI,GAAG,qBAAqB,GAAG,uBAAuB,CAAA;AAE3F;;;;;;;;;GASG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,QAAQ,CAAC,IAAI,EAAG,sBAAsB,CAAS;IAC/C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;gBAEhB,KAAK,EAAE,YAAY;CAIhC;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAS;IACzC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;gBAE/B,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;CAInD;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,cAAc,CAAA"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A2A-specific stream events yielded by A2AAgent.stream().
3
+ */
4
+ import { StreamEvent } from '../hooks/events.js';
5
+ /**
6
+ * Event wrapping a raw A2A protocol streaming event.
7
+ *
8
+ * Yielded by `A2AAgent.stream()` for each event received from the remote agent.
9
+ * The `event` property contains the raw A2A SDK event data, discriminated by `kind`:
10
+ * - `'message'` — A2A Message
11
+ * - `'task'` — A2A Task
12
+ * - `'status-update'` — TaskStatusUpdateEvent
13
+ * - `'artifact-update'` — TaskArtifactUpdateEvent
14
+ */
15
+ export class A2AStreamUpdateEvent extends StreamEvent {
16
+ type = 'a2aStreamUpdateEvent';
17
+ event;
18
+ constructor(event) {
19
+ super();
20
+ this.event = event;
21
+ }
22
+ }
23
+ /**
24
+ * Event triggered as the final event in the A2A agent stream.
25
+ * Wraps the agent result containing the stop reason and last message.
26
+ */
27
+ export class A2AResultEvent extends StreamEvent {
28
+ type = 'a2aResultEvent';
29
+ result;
30
+ constructor(data) {
31
+ super();
32
+ this.result = data.result;
33
+ }
34
+ }
35
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/a2a/events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAQhD;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IAC1C,IAAI,GAAG,sBAA+B,CAAA;IACtC,KAAK,CAAc;IAE5B,YAAY,KAAmB;QAC7B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,WAAW;IACpC,IAAI,GAAG,gBAAyB,CAAA;IAChC,MAAM,CAA4B;IAE3C,YAAY,IAAsC;QAChD,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC3B,CAAC;CACF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * A2A executor that bridges a Strands Agent into the A2A protocol.
3
+ *
4
+ * Implements the AgentExecutor interface from `@a2a-js/sdk/server` to allow
5
+ * a Strands Agent to handle A2A JSON-RPC requests.
6
+ */
7
+ import type { ExecutionEventBus, RequestContext } from '@a2a-js/sdk/server';
8
+ import type { AgentExecutor } from '@a2a-js/sdk/server';
9
+ import type { InvokableAgent } from '../types/agent.js';
10
+ /**
11
+ * Bridges a Strands Agent into the A2A protocol as an AgentExecutor.
12
+ *
13
+ * Converts A2A message parts to Strands content blocks, streams the agent
14
+ * execution, and publishes text deltas as artifact updates through the A2A
15
+ * event bus. Text chunks are appended to a single artifact as they arrive,
16
+ * implementing A2A-compliant streaming behavior.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { Agent } from '@strands-agents/sdk'
21
+ * import { A2AExecutor } from '@strands-agents/sdk/a2a'
22
+ *
23
+ * const agent = new Agent({ model: 'my-model' })
24
+ * const executor = new A2AExecutor(agent)
25
+ * ```
26
+ */
27
+ export declare class A2AExecutor implements AgentExecutor {
28
+ private _agent;
29
+ /**
30
+ * Creates a new A2AExecutor.
31
+ *
32
+ * @param agent - The agent to execute for incoming A2A requests
33
+ */
34
+ constructor(agent: InvokableAgent);
35
+ /**
36
+ * Executes the agent in response to an A2A message.
37
+ *
38
+ * Converts A2A message parts to Strands content blocks, then streams the
39
+ * agent execution. Text deltas are streamed incrementally into a single
40
+ * artifact; non-text content blocks (images, videos, documents) are each
41
+ * published as separate complete artifacts. A final artifact with
42
+ * `lastChunk: true` signals the end of the text artifact, followed by a
43
+ * completed status update.
44
+ *
45
+ * @param context - The A2A request context containing the user message
46
+ * @param eventBus - The event bus for publishing A2A artifact and status events
47
+ */
48
+ execute(context: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
49
+ /**
50
+ * Cancels a running task. Not supported by this executor.
51
+ *
52
+ * @param taskId - The ID of the task to cancel
53
+ * @param eventBus - The event bus for publishing status events
54
+ */
55
+ cancelTask(_taskId: string, _eventBus: ExecutionEventBus): Promise<void>;
56
+ }
57
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/a2a/executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMvD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAY,YAAW,aAAa;IAC/C,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;;OAIG;gBACS,KAAK,EAAE,cAAc;IAIjC;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+ElF;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/E"}