@strands-agents/sdk 1.3.0 → 1.5.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 (462) hide show
  1. package/README.md +16 -16
  2. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  3. package/dist/src/__fixtures__/agent-helpers.js +6 -0
  4. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  5. package/dist/src/__fixtures__/register-node-defaults.d.ts +2 -0
  6. package/dist/src/__fixtures__/register-node-defaults.d.ts.map +1 -0
  7. package/dist/src/__fixtures__/register-node-defaults.js +6 -0
  8. package/dist/src/__fixtures__/register-node-defaults.js.map +1 -0
  9. package/dist/src/__fixtures__/test-sandbox.node.d.ts +15 -0
  10. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +1 -0
  11. package/dist/src/__fixtures__/test-sandbox.node.js +23 -0
  12. package/dist/src/__fixtures__/test-sandbox.node.js.map +1 -0
  13. package/dist/src/__tests__/default-slot.test.d.ts +2 -0
  14. package/dist/src/__tests__/default-slot.test.d.ts.map +1 -0
  15. package/dist/src/__tests__/default-slot.test.js +33 -0
  16. package/dist/src/__tests__/default-slot.test.js.map +1 -0
  17. package/dist/src/__tests__/mcp.test.js +14 -14
  18. package/dist/src/__tests__/mcp.test.js.map +1 -1
  19. package/dist/src/a2a/__tests__/async-lock.test.d.ts +2 -0
  20. package/dist/src/a2a/__tests__/async-lock.test.d.ts.map +1 -0
  21. package/dist/src/a2a/__tests__/async-lock.test.js +137 -0
  22. package/dist/src/a2a/__tests__/async-lock.test.js.map +1 -0
  23. package/dist/src/a2a/__tests__/executor.test.js +146 -8
  24. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  25. package/dist/src/a2a/__tests__/server.test.js +20 -0
  26. package/dist/src/a2a/__tests__/server.test.js.map +1 -1
  27. package/dist/src/a2a/async-lock.d.ts +22 -0
  28. package/dist/src/a2a/async-lock.d.ts.map +1 -0
  29. package/dist/src/a2a/async-lock.js +38 -0
  30. package/dist/src/a2a/async-lock.js.map +1 -0
  31. package/dist/src/a2a/executor.d.ts +59 -24
  32. package/dist/src/a2a/executor.d.ts.map +1 -1
  33. package/dist/src/a2a/executor.js +209 -32
  34. package/dist/src/a2a/executor.js.map +1 -1
  35. package/dist/src/a2a/index.d.ts +1 -1
  36. package/dist/src/a2a/index.d.ts.map +1 -1
  37. package/dist/src/a2a/index.js +1 -1
  38. package/dist/src/a2a/index.js.map +1 -1
  39. package/dist/src/a2a/server.d.ts +18 -2
  40. package/dist/src/a2a/server.d.ts.map +1 -1
  41. package/dist/src/a2a/server.js +13 -2
  42. package/dist/src/a2a/server.js.map +1 -1
  43. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts +2 -0
  44. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts.map +1 -0
  45. package/dist/src/agent/__tests__/agent.context-manager.test.js +107 -0
  46. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +1 -0
  47. package/dist/src/agent/__tests__/agent.test.js +195 -0
  48. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  49. package/dist/src/agent/__tests__/agent.tracer.test.node.js +14 -0
  50. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  51. package/dist/src/agent/__tests__/tool-caller.test.d.ts +2 -0
  52. package/dist/src/agent/__tests__/tool-caller.test.d.ts.map +1 -0
  53. package/dist/src/agent/__tests__/tool-caller.test.js +459 -0
  54. package/dist/src/agent/__tests__/tool-caller.test.js.map +1 -0
  55. package/dist/src/agent/agent.d.ts +194 -4
  56. package/dist/src/agent/agent.d.ts.map +1 -1
  57. package/dist/src/agent/agent.js +599 -253
  58. package/dist/src/agent/agent.js.map +1 -1
  59. package/dist/src/agent/tool-caller.d.ts +149 -0
  60. package/dist/src/agent/tool-caller.d.ts.map +1 -0
  61. package/dist/src/agent/tool-caller.js +198 -0
  62. package/dist/src/agent/tool-caller.js.map +1 -0
  63. package/dist/src/conversation-manager/__tests__/pin.test.d.ts +2 -0
  64. package/dist/src/conversation-manager/__tests__/pin.test.d.ts.map +1 -0
  65. package/dist/src/conversation-manager/__tests__/pin.test.js +119 -0
  66. package/dist/src/conversation-manager/__tests__/pin.test.js.map +1 -0
  67. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +49 -0
  68. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  69. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +58 -0
  70. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  71. package/dist/src/conversation-manager/pin-message.d.ts +45 -0
  72. package/dist/src/conversation-manager/pin-message.d.ts.map +1 -0
  73. package/dist/src/conversation-manager/pin-message.js +106 -0
  74. package/dist/src/conversation-manager/pin-message.js.map +1 -0
  75. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +7 -0
  76. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  77. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +27 -4
  78. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  79. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +7 -0
  80. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
  81. package/dist/src/conversation-manager/summarizing-conversation-manager.js +18 -4
  82. package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
  83. package/dist/src/default-slot.d.ts +6 -0
  84. package/dist/src/default-slot.d.ts.map +1 -0
  85. package/dist/src/default-slot.js +18 -0
  86. package/dist/src/default-slot.js.map +1 -0
  87. package/dist/src/errors.d.ts +25 -0
  88. package/dist/src/errors.d.ts.map +1 -1
  89. package/dist/src/errors.js +32 -0
  90. package/dist/src/errors.js.map +1 -1
  91. package/dist/src/index.d.ts +15 -3
  92. package/dist/src/index.d.ts.map +1 -1
  93. package/dist/src/index.js +10 -1
  94. package/dist/src/index.js.map +1 -1
  95. package/dist/src/index.node.d.ts +2 -0
  96. package/dist/src/index.node.d.ts.map +1 -0
  97. package/dist/src/index.node.js +9 -0
  98. package/dist/src/index.node.js.map +1 -0
  99. package/dist/src/interrupt.d.ts +5 -1
  100. package/dist/src/interrupt.d.ts.map +1 -1
  101. package/dist/src/interrupt.js +6 -0
  102. package/dist/src/interrupt.js.map +1 -1
  103. package/dist/src/interventions/handler.d.ts +1 -2
  104. package/dist/src/interventions/handler.d.ts.map +1 -1
  105. package/dist/src/interventions/registry.d.ts +2 -0
  106. package/dist/src/interventions/registry.d.ts.map +1 -1
  107. package/dist/src/interventions/registry.js +4 -0
  108. package/dist/src/interventions/registry.js.map +1 -1
  109. package/dist/src/mcp.d.ts +20 -15
  110. package/dist/src/mcp.d.ts.map +1 -1
  111. package/dist/src/mcp.js +15 -8
  112. package/dist/src/mcp.js.map +1 -1
  113. package/dist/src/memory/__tests__/memory-manager.test.d.ts +2 -0
  114. package/dist/src/memory/__tests__/memory-manager.test.d.ts.map +1 -0
  115. package/dist/src/memory/__tests__/memory-manager.test.js +493 -0
  116. package/dist/src/memory/__tests__/memory-manager.test.js.map +1 -0
  117. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts +2 -0
  118. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts.map +1 -0
  119. package/dist/src/memory/extraction/__tests__/extraction.test.js +637 -0
  120. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +1 -0
  121. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts +2 -0
  122. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts.map +1 -0
  123. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +68 -0
  124. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +1 -0
  125. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts +2 -0
  126. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts.map +1 -0
  127. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js +81 -0
  128. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js.map +1 -0
  129. package/dist/src/memory/extraction/coordinator.d.ts +128 -0
  130. package/dist/src/memory/extraction/coordinator.d.ts.map +1 -0
  131. package/dist/src/memory/extraction/coordinator.js +245 -0
  132. package/dist/src/memory/extraction/coordinator.js.map +1 -0
  133. package/dist/src/memory/extraction/model-extractor.d.ts +32 -0
  134. package/dist/src/memory/extraction/model-extractor.d.ts.map +1 -0
  135. package/dist/src/memory/extraction/model-extractor.js +118 -0
  136. package/dist/src/memory/extraction/model-extractor.js.map +1 -0
  137. package/dist/src/memory/extraction/resolve-extraction-config.d.ts +46 -0
  138. package/dist/src/memory/extraction/resolve-extraction-config.d.ts.map +1 -0
  139. package/dist/src/memory/extraction/resolve-extraction-config.js +59 -0
  140. package/dist/src/memory/extraction/resolve-extraction-config.js.map +1 -0
  141. package/dist/src/memory/extraction/triggers.d.ts +41 -0
  142. package/dist/src/memory/extraction/triggers.d.ts.map +1 -0
  143. package/dist/src/memory/extraction/triggers.js +59 -0
  144. package/dist/src/memory/extraction/triggers.js.map +1 -0
  145. package/dist/src/memory/extraction/types.d.ts +133 -0
  146. package/dist/src/memory/extraction/types.d.ts.map +1 -0
  147. package/dist/src/memory/extraction/types.js +19 -0
  148. package/dist/src/memory/extraction/types.js.map +1 -0
  149. package/dist/src/memory/index.d.ts +9 -0
  150. package/dist/src/memory/index.d.ts.map +1 -0
  151. package/dist/src/memory/index.js +5 -0
  152. package/dist/src/memory/index.js.map +1 -0
  153. package/dist/src/memory/memory-manager.d.ts +131 -0
  154. package/dist/src/memory/memory-manager.d.ts.map +1 -0
  155. package/dist/src/memory/memory-manager.js +404 -0
  156. package/dist/src/memory/memory-manager.js.map +1 -0
  157. package/dist/src/memory/types.d.ts +213 -0
  158. package/dist/src/memory/types.d.ts.map +1 -0
  159. package/dist/src/memory/types.js +2 -0
  160. package/dist/src/memory/types.js.map +1 -0
  161. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts +2 -0
  162. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts.map +1 -0
  163. package/dist/src/middleware/__tests__/agent-middleware.test.js +1207 -0
  164. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +1 -0
  165. package/dist/src/middleware/__tests__/custom-stages.test.d.ts +2 -0
  166. package/dist/src/middleware/__tests__/custom-stages.test.d.ts.map +1 -0
  167. package/dist/src/middleware/__tests__/custom-stages.test.js +97 -0
  168. package/dist/src/middleware/__tests__/custom-stages.test.js.map +1 -0
  169. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts +2 -0
  170. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts.map +1 -0
  171. package/dist/src/middleware/__tests__/middleware-interrupts.test.js +267 -0
  172. package/dist/src/middleware/__tests__/middleware-interrupts.test.js.map +1 -0
  173. package/dist/src/middleware/__tests__/registry.test.d.ts +2 -0
  174. package/dist/src/middleware/__tests__/registry.test.d.ts.map +1 -0
  175. package/dist/src/middleware/__tests__/registry.test.js +525 -0
  176. package/dist/src/middleware/__tests__/registry.test.js.map +1 -0
  177. package/dist/src/middleware/index.d.ts +5 -0
  178. package/dist/src/middleware/index.d.ts.map +1 -0
  179. package/dist/src/middleware/index.js +3 -0
  180. package/dist/src/middleware/index.js.map +1 -0
  181. package/dist/src/middleware/registry.d.ts +58 -0
  182. package/dist/src/middleware/registry.d.ts.map +1 -0
  183. package/dist/src/middleware/registry.js +107 -0
  184. package/dist/src/middleware/registry.js.map +1 -0
  185. package/dist/src/middleware/stages.d.ts +138 -0
  186. package/dist/src/middleware/stages.d.ts.map +1 -0
  187. package/dist/src/middleware/stages.js +31 -0
  188. package/dist/src/middleware/stages.js.map +1 -0
  189. package/dist/src/middleware/types.d.ts +88 -0
  190. package/dist/src/middleware/types.d.ts.map +1 -0
  191. package/dist/src/middleware/types.js +2 -0
  192. package/dist/src/middleware/types.js.map +1 -0
  193. package/dist/src/models/__tests__/anthropic.test.js +37 -7
  194. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  195. package/dist/src/models/__tests__/bedrock.test.js +181 -0
  196. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  197. package/dist/src/models/__tests__/model.test.js +46 -3
  198. package/dist/src/models/__tests__/model.test.js.map +1 -1
  199. package/dist/src/models/anthropic.d.ts.map +1 -1
  200. package/dist/src/models/anthropic.js +7 -4
  201. package/dist/src/models/anthropic.js.map +1 -1
  202. package/dist/src/models/bedrock.d.ts +26 -1
  203. package/dist/src/models/bedrock.d.ts.map +1 -1
  204. package/dist/src/models/bedrock.js +34 -9
  205. package/dist/src/models/bedrock.js.map +1 -1
  206. package/dist/src/models/defaults.d.ts.map +1 -1
  207. package/dist/src/models/defaults.js +2 -0
  208. package/dist/src/models/defaults.js.map +1 -1
  209. package/dist/src/models/model.d.ts.map +1 -1
  210. package/dist/src/models/model.js +7 -3
  211. package/dist/src/models/model.js.map +1 -1
  212. package/dist/src/models/openai/__tests__/chat.test.js +2 -10
  213. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -1
  214. package/dist/src/models/openai/__tests__/errors.test.d.ts +2 -0
  215. package/dist/src/models/openai/__tests__/errors.test.d.ts.map +1 -0
  216. package/dist/src/models/openai/__tests__/errors.test.js +30 -0
  217. package/dist/src/models/openai/__tests__/errors.test.js.map +1 -0
  218. package/dist/src/models/openai/__tests__/responses.test.js +8 -33
  219. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  220. package/dist/src/models/openai/errors.d.ts.map +1 -1
  221. package/dist/src/models/openai/errors.js +5 -3
  222. package/dist/src/models/openai/errors.js.map +1 -1
  223. package/dist/src/multiagent/__tests__/nodes.test.js +50 -0
  224. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  225. package/dist/src/multiagent/nodes.d.ts +23 -2
  226. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  227. package/dist/src/multiagent/nodes.js +18 -4
  228. package/dist/src/multiagent/nodes.js.map +1 -1
  229. package/dist/src/registry/__tests__/tool-registry.test.js +50 -1
  230. package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
  231. package/dist/src/registry/tool-registry.d.ts +13 -0
  232. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  233. package/dist/src/registry/tool-registry.js +35 -1
  234. package/dist/src/registry/tool-registry.js.map +1 -1
  235. package/dist/src/sandbox/__tests__/default.test.browser.d.ts +2 -0
  236. package/dist/src/sandbox/__tests__/default.test.browser.d.ts.map +1 -0
  237. package/dist/src/sandbox/__tests__/default.test.browser.js +11 -0
  238. package/dist/src/sandbox/__tests__/default.test.browser.js.map +1 -0
  239. package/dist/src/sandbox/__tests__/default.test.node.d.ts +2 -0
  240. package/dist/src/sandbox/__tests__/default.test.node.d.ts.map +1 -0
  241. package/dist/src/sandbox/__tests__/default.test.node.js +23 -0
  242. package/dist/src/sandbox/__tests__/default.test.node.js.map +1 -0
  243. package/dist/src/sandbox/__tests__/docker.test.node.d.ts +2 -0
  244. package/dist/src/sandbox/__tests__/docker.test.node.d.ts.map +1 -0
  245. package/dist/src/sandbox/__tests__/docker.test.node.js +89 -0
  246. package/dist/src/sandbox/__tests__/docker.test.node.js.map +1 -0
  247. package/dist/src/sandbox/__tests__/errors.test.node.d.ts +2 -0
  248. package/dist/src/sandbox/__tests__/errors.test.node.d.ts.map +1 -0
  249. package/dist/src/sandbox/__tests__/errors.test.node.js +33 -0
  250. package/dist/src/sandbox/__tests__/errors.test.node.js.map +1 -0
  251. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts +2 -0
  252. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts.map +1 -0
  253. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js +124 -0
  254. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js.map +1 -0
  255. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts +2 -0
  256. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts.map +1 -0
  257. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +298 -0
  258. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +1 -0
  259. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts +2 -0
  260. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts.map +1 -0
  261. package/dist/src/sandbox/__tests__/ssh.test.node.js +262 -0
  262. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +1 -0
  263. package/dist/src/sandbox/base.d.ts +156 -0
  264. package/dist/src/sandbox/base.d.ts.map +1 -0
  265. package/dist/src/sandbox/base.js +97 -0
  266. package/dist/src/sandbox/base.js.map +1 -0
  267. package/dist/src/sandbox/constants.d.ts +25 -0
  268. package/dist/src/sandbox/constants.d.ts.map +1 -0
  269. package/dist/src/sandbox/constants.js +27 -0
  270. package/dist/src/sandbox/constants.js.map +1 -0
  271. package/dist/src/sandbox/default.d.ts +3 -0
  272. package/dist/src/sandbox/default.d.ts.map +1 -0
  273. package/dist/src/sandbox/default.js +3 -0
  274. package/dist/src/sandbox/default.js.map +1 -0
  275. package/dist/src/sandbox/docker.d.ts +38 -0
  276. package/dist/src/sandbox/docker.d.ts.map +1 -0
  277. package/dist/src/sandbox/docker.js +59 -0
  278. package/dist/src/sandbox/docker.js.map +1 -0
  279. package/dist/src/sandbox/errors.d.ts +26 -0
  280. package/dist/src/sandbox/errors.d.ts.map +1 -0
  281. package/dist/src/sandbox/errors.js +35 -0
  282. package/dist/src/sandbox/errors.js.map +1 -0
  283. package/dist/src/sandbox/index.d.ts +5 -0
  284. package/dist/src/sandbox/index.d.ts.map +1 -0
  285. package/dist/src/sandbox/index.js +4 -0
  286. package/dist/src/sandbox/index.js.map +1 -0
  287. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts +16 -0
  288. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts.map +1 -0
  289. package/dist/src/sandbox/not-a-sandbox-local-environment.js +83 -0
  290. package/dist/src/sandbox/not-a-sandbox-local-environment.js.map +1 -0
  291. package/dist/src/sandbox/posix-shell.d.ts +53 -0
  292. package/dist/src/sandbox/posix-shell.d.ts.map +1 -0
  293. package/dist/src/sandbox/posix-shell.js +116 -0
  294. package/dist/src/sandbox/posix-shell.js.map +1 -0
  295. package/dist/src/sandbox/ssh.d.ts +56 -0
  296. package/dist/src/sandbox/ssh.d.ts.map +1 -0
  297. package/dist/src/sandbox/ssh.js +119 -0
  298. package/dist/src/sandbox/ssh.js.map +1 -0
  299. package/dist/src/sandbox/stream-process.d.ts +32 -0
  300. package/dist/src/sandbox/stream-process.d.ts.map +1 -0
  301. package/dist/src/sandbox/stream-process.js +161 -0
  302. package/dist/src/sandbox/stream-process.js.map +1 -0
  303. package/dist/src/sandbox/types.d.ts +57 -0
  304. package/dist/src/sandbox/types.d.ts.map +1 -0
  305. package/dist/src/sandbox/types.js +8 -0
  306. package/dist/src/sandbox/types.js.map +1 -0
  307. package/dist/src/telemetry/__tests__/meter.test.js +11 -0
  308. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  309. package/dist/src/telemetry/meter.d.ts +10 -6
  310. package/dist/src/telemetry/meter.d.ts.map +1 -1
  311. package/dist/src/telemetry/meter.js +16 -3
  312. package/dist/src/telemetry/meter.js.map +1 -1
  313. package/dist/src/tsconfig.tsbuildinfo +1 -1
  314. package/dist/src/types/__tests__/messages.test.js +28 -0
  315. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  316. package/dist/src/types/agent.d.ts +72 -0
  317. package/dist/src/types/agent.d.ts.map +1 -1
  318. package/dist/src/types/agent.js.map +1 -1
  319. package/dist/src/types/lifecycle-observer.d.ts +18 -0
  320. package/dist/src/types/lifecycle-observer.d.ts.map +1 -0
  321. package/dist/src/types/lifecycle-observer.js +2 -0
  322. package/dist/src/types/lifecycle-observer.js.map +1 -0
  323. package/dist/src/types/messages.d.ts +19 -3
  324. package/dist/src/types/messages.d.ts.map +1 -1
  325. package/dist/src/types/messages.js +9 -0
  326. package/dist/src/types/messages.js.map +1 -1
  327. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts +2 -0
  328. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts.map +1 -0
  329. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js +358 -0
  330. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js.map +1 -0
  331. package/dist/src/vended-interventions/hitl/hitl.d.ts +115 -0
  332. package/dist/src/vended-interventions/hitl/hitl.d.ts.map +1 -0
  333. package/dist/src/vended-interventions/hitl/hitl.js +138 -0
  334. package/dist/src/vended-interventions/hitl/hitl.js.map +1 -0
  335. package/dist/src/vended-interventions/hitl/index.d.ts +24 -0
  336. package/dist/src/vended-interventions/hitl/index.d.ts.map +1 -0
  337. package/dist/src/vended-interventions/hitl/index.js +23 -0
  338. package/dist/src/vended-interventions/hitl/index.js.map +1 -0
  339. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts +2 -0
  340. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts.map +1 -0
  341. package/dist/src/vended-interventions/steering/__tests__/handler.test.js +163 -0
  342. package/dist/src/vended-interventions/steering/__tests__/handler.test.js.map +1 -0
  343. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts +2 -0
  344. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts.map +1 -0
  345. package/dist/src/vended-interventions/steering/__tests__/llm.test.js +60 -0
  346. package/dist/src/vended-interventions/steering/__tests__/llm.test.js.map +1 -0
  347. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts +2 -0
  348. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts.map +1 -0
  349. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js +94 -0
  350. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js.map +1 -0
  351. package/dist/src/vended-interventions/steering/handlers/handler.d.ts +64 -0
  352. package/dist/src/vended-interventions/steering/handlers/handler.d.ts.map +1 -0
  353. package/dist/src/vended-interventions/steering/handlers/handler.js +71 -0
  354. package/dist/src/vended-interventions/steering/handlers/handler.js.map +1 -0
  355. package/dist/src/vended-interventions/steering/handlers/llm.d.ts +72 -0
  356. package/dist/src/vended-interventions/steering/handlers/llm.d.ts.map +1 -0
  357. package/dist/src/vended-interventions/steering/handlers/llm.js +177 -0
  358. package/dist/src/vended-interventions/steering/handlers/llm.js.map +1 -0
  359. package/dist/src/vended-interventions/steering/index.d.ts +31 -0
  360. package/dist/src/vended-interventions/steering/index.d.ts.map +1 -0
  361. package/dist/src/vended-interventions/steering/index.js +32 -0
  362. package/dist/src/vended-interventions/steering/index.js.map +1 -0
  363. package/dist/src/vended-interventions/steering/providers/context-provider.d.ts +55 -0
  364. package/dist/src/vended-interventions/steering/providers/context-provider.d.ts.map +1 -0
  365. package/dist/src/vended-interventions/steering/providers/context-provider.js +8 -0
  366. package/dist/src/vended-interventions/steering/providers/context-provider.js.map +1 -0
  367. package/dist/src/vended-interventions/steering/providers/tool-ledger.d.ts +49 -0
  368. package/dist/src/vended-interventions/steering/providers/tool-ledger.d.ts.map +1 -0
  369. package/dist/src/vended-interventions/steering/providers/tool-ledger.js +75 -0
  370. package/dist/src/vended-interventions/steering/providers/tool-ledger.js.map +1 -0
  371. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts +2 -0
  372. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts.map +1 -0
  373. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js +611 -0
  374. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js.map +1 -0
  375. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts +2 -0
  376. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts.map +1 -0
  377. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js +2 -0
  378. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js.map +1 -0
  379. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts +230 -0
  380. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts.map +1 -0
  381. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js +370 -0
  382. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js.map +1 -0
  383. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts +2 -0
  384. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts.map +1 -0
  385. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js +68 -0
  386. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js.map +1 -0
  387. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts +2 -0
  388. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts.map +1 -0
  389. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +93 -0
  390. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +1 -0
  391. package/dist/src/vended-plugins/context-offloader/index.d.ts +1 -1
  392. package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -1
  393. package/dist/src/vended-plugins/context-offloader/plugin.d.ts +4 -1
  394. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  395. package/dist/src/vended-plugins/context-offloader/plugin.js +29 -7
  396. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  397. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  398. package/dist/src/vended-plugins/context-offloader/search.js +3 -5
  399. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  400. package/dist/src/vended-plugins/context-offloader/storage.d.ts +29 -5
  401. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
  402. package/dist/src/vended-plugins/context-offloader/storage.js +75 -11
  403. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  404. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts +2 -0
  405. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts.map +1 -0
  406. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js +736 -0
  407. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js.map +1 -0
  408. package/dist/src/vended-plugins/goal/index.d.ts +21 -0
  409. package/dist/src/vended-plugins/goal/index.d.ts.map +1 -0
  410. package/dist/src/vended-plugins/goal/index.js +20 -0
  411. package/dist/src/vended-plugins/goal/index.js.map +1 -0
  412. package/dist/src/vended-plugins/goal/judge.d.ts +41 -0
  413. package/dist/src/vended-plugins/goal/judge.d.ts.map +1 -0
  414. package/dist/src/vended-plugins/goal/judge.js +92 -0
  415. package/dist/src/vended-plugins/goal/judge.js.map +1 -0
  416. package/dist/src/vended-plugins/goal/plugin.d.ts +214 -0
  417. package/dist/src/vended-plugins/goal/plugin.d.ts.map +1 -0
  418. package/dist/src/vended-plugins/goal/plugin.js +287 -0
  419. package/dist/src/vended-plugins/goal/plugin.js.map +1 -0
  420. package/dist/src/vended-plugins/index.d.ts +12 -0
  421. package/dist/src/vended-plugins/index.d.ts.map +1 -0
  422. package/dist/src/vended-plugins/index.js +12 -0
  423. package/dist/src/vended-plugins/index.js.map +1 -0
  424. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +17 -7
  425. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  426. package/dist/src/vended-plugins/skills/agent-skills.d.ts +21 -7
  427. package/dist/src/vended-plugins/skills/agent-skills.d.ts.map +1 -1
  428. package/dist/src/vended-plugins/skills/agent-skills.js +144 -77
  429. package/dist/src/vended-plugins/skills/agent-skills.js.map +1 -1
  430. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +44 -4
  431. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  432. package/dist/src/vended-tools/bash/bash.d.ts +3 -24
  433. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  434. package/dist/src/vended-tools/bash/bash.js +9 -9
  435. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  436. package/dist/src/vended-tools/bash/index.d.ts +3 -1
  437. package/dist/src/vended-tools/bash/index.d.ts.map +1 -1
  438. package/dist/src/vended-tools/bash/index.js +2 -1
  439. package/dist/src/vended-tools/bash/index.js.map +1 -1
  440. package/dist/src/vended-tools/bash/make-bash.d.ts +22 -0
  441. package/dist/src/vended-tools/bash/make-bash.d.ts.map +1 -0
  442. package/dist/src/vended-tools/bash/make-bash.js +40 -0
  443. package/dist/src/vended-tools/bash/make-bash.js.map +1 -0
  444. package/dist/src/vended-tools/bash/types.d.ts +1 -0
  445. package/dist/src/vended-tools/bash/types.d.ts.map +1 -1
  446. package/dist/src/vended-tools/bash/types.js +2 -0
  447. package/dist/src/vended-tools/bash/types.js.map +1 -1
  448. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +83 -1
  449. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  450. package/dist/src/vended-tools/file-editor/file-editor.d.ts +19 -10
  451. package/dist/src/vended-tools/file-editor/file-editor.d.ts.map +1 -1
  452. package/dist/src/vended-tools/file-editor/file-editor.js +188 -218
  453. package/dist/src/vended-tools/file-editor/file-editor.js.map +1 -1
  454. package/dist/src/vended-tools/file-editor/index.d.ts +2 -1
  455. package/dist/src/vended-tools/file-editor/index.d.ts.map +1 -1
  456. package/dist/src/vended-tools/file-editor/index.js +1 -1
  457. package/dist/src/vended-tools/file-editor/index.js.map +1 -1
  458. package/dist/src/vended-tools/index.d.ts +17 -0
  459. package/dist/src/vended-tools/index.d.ts.map +1 -0
  460. package/dist/src/vended-tools/index.js +17 -0
  461. package/dist/src/vended-tools/index.js.map +1 -0
  462. package/package.json +66 -15
@@ -7,58 +7,93 @@
7
7
  import type { ExecutionEventBus, RequestContext } from '@a2a-js/sdk/server';
8
8
  import type { AgentExecutor } from '@a2a-js/sdk/server';
9
9
  import type { InvokableAgent } from '../types/agent.js';
10
+ /** Builds a fresh agent for a given A2A `contextId`, invoked once per context. */
11
+ export type AgentFactory = (contextId: string) => InvokableAgent;
12
+ /** Default cap on concurrently tracked A2A contexts. */
13
+ export declare const DEFAULT_MAX_CONTEXTS = 1000;
14
+ /**
15
+ * Options for constructing an {@link A2AExecutor}.
16
+ *
17
+ * Provide exactly one of `agent` (deprecated) or `agentFactory`.
18
+ */
19
+ export interface A2AExecutorOptions {
20
+ /** @deprecated A single agent reused across contexts. Prefer `agentFactory`. */
21
+ agent?: InvokableAgent;
22
+ /** Callable that returns a fresh agent per `contextId`. Recommended. */
23
+ agentFactory?: AgentFactory;
24
+ /** Maximum contexts to retain; the least-recently-used is evicted beyond it. Must be at least 1. */
25
+ maxContexts?: number;
26
+ }
10
27
  /**
11
28
  * Bridges a Strands Agent into the A2A protocol as an AgentExecutor.
12
29
  *
13
30
  * Converts A2A message parts to Strands content blocks, streams the agent
14
31
  * 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.
32
+ * event bus.
17
33
  *
18
- * ## Invocation state
34
+ * Conversation state is isolated per A2A `contextId`. There are two modes:
19
35
  *
20
- * The executor populates the agent's `invocationState` with the incoming A2A
21
- * {@link RequestContext} under the reserved key `a2aRequestContext`. Hooks and
22
- * tools running inside the agent can read `event.invocationState.a2aRequestContext`
23
- * to correlate with the A2A request (taskId, contextId, user message metadata)
24
- * for logging, metrics, or audit.
36
+ * - **`agentFactory`** (recommended): returns a dedicated agent per context. Each
37
+ * context owns an independent agent under its own lock, so different contexts run
38
+ * concurrently and never share state. The factory is also where per-context
39
+ * concerns such as a `sessionManager` are wired.
40
+ * - **`agent`** (deprecated): a single agent reused across contexts, with each
41
+ * context's state swapped on/off it under a lock. Not multi-tenant safe; prefer
42
+ * `agentFactory`.
25
43
  *
26
- * Because the A2A framework (not user code) drives `execute()`, there is no
27
- * per-request path for the user to supply their own `invocationState`. If a
28
- * user hook writes to the `a2aRequestContext` key, it will be overwritten on
29
- * the next request.
44
+ * `contextId` is client-supplied and is **not** an authentication boundary: a caller
45
+ * that knows another's `contextId` can attach to that conversation. Multi-tenant
46
+ * deployments must enforce authenticated identity at the transport/gateway layer.
47
+ *
48
+ * The incoming {@link RequestContext} is forwarded to the agent's `invocationState`
49
+ * under the reserved key `a2aRequestContext` for hooks and tools to read.
30
50
  *
31
51
  * @example
32
52
  * ```typescript
33
53
  * import { Agent } from '@strands-agents/sdk'
34
54
  * import { A2AExecutor } from '@strands-agents/sdk/a2a'
35
55
  *
36
- * const agent = new Agent({ model: 'my-model' })
37
- * const executor = new A2AExecutor(agent)
56
+ * const executor = new A2AExecutor({ agentFactory: (contextId) => new Agent({ model: 'my-model' }) })
38
57
  * ```
39
58
  */
40
59
  export declare class A2AExecutor implements AgentExecutor {
41
- private _agent;
60
+ private readonly _agentFactory?;
61
+ private readonly _maxContexts;
62
+ /** Serializes single-agent mode: only one request may use the shared agent at a time. */
63
+ private readonly _sharedAgentLock;
64
+ private readonly _contexts;
65
+ private readonly _agent?;
66
+ private readonly _templateSnapshot?;
67
+ private readonly _snapshots;
42
68
  /**
43
69
  * Creates a new A2AExecutor.
44
70
  *
45
- * @param agent - The agent to execute for incoming A2A requests
71
+ * Provide exactly one of `agent` (deprecated) or `agentFactory`.
72
+ *
73
+ * @param options - Executor options: `agent` or `agentFactory`, plus optional `maxContexts`.
46
74
  */
47
- constructor(agent: InvokableAgent);
75
+ constructor(options?: A2AExecutorOptions);
76
+ /** Snapshot an agent's session state. */
77
+ private _captureState;
78
+ /** Load a snapshot into an agent, restoring its session state. */
79
+ private _restoreState;
80
+ /** Evict least-recently-used contexts beyond `maxContexts`. */
81
+ private _evictExcessContexts;
82
+ /** Return the dedicated agent and lock for a context, creating it on first use (factory mode). */
83
+ private _acquireContextAgent;
48
84
  /**
49
85
  * Executes the agent in response to an A2A message.
50
86
  *
51
- * Converts A2A message parts to Strands content blocks, then streams the
52
- * agent execution. Text deltas are streamed incrementally into a single
53
- * artifact; non-text content blocks (images, videos, documents) are each
54
- * published as separate complete artifacts. A final artifact with
55
- * `lastChunk: true` signals the end of the text artifact, followed by a
56
- * completed status update.
57
- *
58
87
  * @param context - The A2A request context containing the user message
59
88
  * @param eventBus - The event bus for publishing A2A artifact and status events
60
89
  */
61
90
  execute(context: RequestContext, eventBus: ExecutionEventBus): Promise<void>;
91
+ /** Factory mode: run against this context's dedicated agent, serialized only per context. */
92
+ private _runWithContextAgent;
93
+ /** Single-agent mode: swap this context's snapshot on/off the shared agent under a lock. */
94
+ private _runWithSharedAgent;
95
+ /** Streams one agent invocation and translates its events to A2A artifact updates. */
96
+ private _streamAgent;
62
97
  /**
63
98
  * Cancels a running task. Not supported by this executor.
64
99
  *
@@ -1 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;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;IAoFlF;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/E"}
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,EAAc,MAAM,mBAAmB,CAAA;AASnE,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,CAAA;AAEhE,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,OAAO,CAAA;AAQxC;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,wEAAwE;IACxE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,WAAY,YAAW,aAAa;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAErC,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IAGnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAG5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IAEzD;;;;;;OAMG;gBACS,OAAO,GAAE,kBAAuB;IAiC5C,yCAAyC;IACzC,OAAO,CAAC,aAAa;IAIrB,kEAAkE;IAClE,OAAO,CAAC,aAAa;IAIrB,+DAA+D;IAC/D,OAAO,CAAC,oBAAoB;IAS5B,kGAAkG;IAClG,OAAO,CAAC,oBAAoB;IAc5B;;;;;OAKG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlF,6FAA6F;YAC/E,oBAAoB;IAUlC,4FAA4F;YAC9E,mBAAmB;IAmBjC,sFAAsF;YACxE,YAAY;IA6E1B;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/E"}
@@ -4,61 +4,190 @@
4
4
  * Implements the AgentExecutor interface from `@a2a-js/sdk/server` to allow
5
5
  * a Strands Agent to handle A2A JSON-RPC requests.
6
6
  */
7
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
8
+ if (value !== null && value !== void 0) {
9
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
10
+ var dispose, inner;
11
+ if (async) {
12
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
13
+ dispose = value[Symbol.asyncDispose];
14
+ }
15
+ if (dispose === void 0) {
16
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
17
+ dispose = value[Symbol.dispose];
18
+ if (async) inner = dispose;
19
+ }
20
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
21
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
22
+ env.stack.push({ value: value, dispose: dispose, async: async });
23
+ }
24
+ else if (async) {
25
+ env.stack.push({ async: true });
26
+ }
27
+ return value;
28
+ };
29
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
30
+ return function (env) {
31
+ function fail(e) {
32
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
33
+ env.hasError = true;
34
+ }
35
+ var r, s = 0;
36
+ function next() {
37
+ while (r = env.stack.pop()) {
38
+ try {
39
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
40
+ if (r.dispose) {
41
+ var result = r.dispose.call(r.value);
42
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
43
+ }
44
+ else s |= 1;
45
+ }
46
+ catch (e) {
47
+ fail(e);
48
+ }
49
+ }
50
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
51
+ if (env.hasError) throw env.error;
52
+ }
53
+ return next();
54
+ };
55
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
56
+ var e = new Error(message);
57
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
58
+ });
7
59
  import { A2AError } from '@a2a-js/sdk/server';
8
60
  import { ModelStreamUpdateEvent, ContentBlockEvent } from '../hooks/events.js';
9
61
  import { contentBlocksToParts, partsToContentBlocks } from './adapters.js';
10
62
  import { normalizeError } from '../errors.js';
11
63
  import { logger } from '../logging/logger.js';
64
+ import { AsyncLock } from './async-lock.js';
65
+ /** Default cap on concurrently tracked A2A contexts. */
66
+ export const DEFAULT_MAX_CONTEXTS = 1000;
67
+ /** Narrows to a {@link SnapshotAgent}, throwing if the agent lacks snapshot support. */
68
+ function asSnapshotAgent(agent) {
69
+ const candidate = agent;
70
+ if (typeof candidate.takeSnapshot !== 'function' || typeof candidate.loadSnapshot !== 'function') {
71
+ throw new Error('A2AExecutor requires an Agent that supports snapshots (takeSnapshot/loadSnapshot). ' +
72
+ 'Pass a Strands Agent instance.');
73
+ }
74
+ return agent;
75
+ }
76
+ /** Whether the agent has a configured `sessionManager` (a field not declared on {@link InvokableAgent}). */
77
+ function hasSessionManager(agent) {
78
+ return agent.sessionManager !== undefined;
79
+ }
12
80
  /**
13
81
  * Bridges a Strands Agent into the A2A protocol as an AgentExecutor.
14
82
  *
15
83
  * Converts A2A message parts to Strands content blocks, streams the agent
16
84
  * execution, and publishes text deltas as artifact updates through the A2A
17
- * event bus. Text chunks are appended to a single artifact as they arrive,
18
- * implementing A2A-compliant streaming behavior.
85
+ * event bus.
86
+ *
87
+ * Conversation state is isolated per A2A `contextId`. There are two modes:
19
88
  *
20
- * ## Invocation state
89
+ * - **`agentFactory`** (recommended): returns a dedicated agent per context. Each
90
+ * context owns an independent agent under its own lock, so different contexts run
91
+ * concurrently and never share state. The factory is also where per-context
92
+ * concerns such as a `sessionManager` are wired.
93
+ * - **`agent`** (deprecated): a single agent reused across contexts, with each
94
+ * context's state swapped on/off it under a lock. Not multi-tenant safe; prefer
95
+ * `agentFactory`.
21
96
  *
22
- * The executor populates the agent's `invocationState` with the incoming A2A
23
- * {@link RequestContext} under the reserved key `a2aRequestContext`. Hooks and
24
- * tools running inside the agent can read `event.invocationState.a2aRequestContext`
25
- * to correlate with the A2A request (taskId, contextId, user message metadata)
26
- * for logging, metrics, or audit.
97
+ * `contextId` is client-supplied and is **not** an authentication boundary: a caller
98
+ * that knows another's `contextId` can attach to that conversation. Multi-tenant
99
+ * deployments must enforce authenticated identity at the transport/gateway layer.
27
100
  *
28
- * Because the A2A framework (not user code) drives `execute()`, there is no
29
- * per-request path for the user to supply their own `invocationState`. If a
30
- * user hook writes to the `a2aRequestContext` key, it will be overwritten on
31
- * the next request.
101
+ * The incoming {@link RequestContext} is forwarded to the agent's `invocationState`
102
+ * under the reserved key `a2aRequestContext` for hooks and tools to read.
32
103
  *
33
104
  * @example
34
105
  * ```typescript
35
106
  * import { Agent } from '@strands-agents/sdk'
36
107
  * import { A2AExecutor } from '@strands-agents/sdk/a2a'
37
108
  *
38
- * const agent = new Agent({ model: 'my-model' })
39
- * const executor = new A2AExecutor(agent)
109
+ * const executor = new A2AExecutor({ agentFactory: (contextId) => new Agent({ model: 'my-model' }) })
40
110
  * ```
41
111
  */
42
112
  export class A2AExecutor {
113
+ _agentFactory;
114
+ _maxContexts;
115
+ /** Serializes single-agent mode: only one request may use the shared agent at a time. */
116
+ _sharedAgentLock = new AsyncLock();
117
+ // Factory mode: a dedicated agent and lock per context.
118
+ _contexts = new Map();
119
+ // Single-agent mode: one shared agent, swapping each context's snapshot on/off it.
43
120
  _agent;
121
+ _templateSnapshot;
122
+ _snapshots = new Map();
44
123
  /**
45
124
  * Creates a new A2AExecutor.
46
125
  *
47
- * @param agent - The agent to execute for incoming A2A requests
126
+ * Provide exactly one of `agent` (deprecated) or `agentFactory`.
127
+ *
128
+ * @param options - Executor options: `agent` or `agentFactory`, plus optional `maxContexts`.
48
129
  */
49
- constructor(agent) {
50
- this._agent = agent;
130
+ constructor(options = {}) {
131
+ const { agent, agentFactory, maxContexts = DEFAULT_MAX_CONTEXTS } = options;
132
+ if (maxContexts < 1) {
133
+ throw new Error(`maxContexts must be at least 1, got ${maxContexts}`);
134
+ }
135
+ if ((agent === undefined) === (agentFactory === undefined)) {
136
+ throw new Error("Provide exactly one of 'agent' or 'agentFactory'.");
137
+ }
138
+ this._maxContexts = maxContexts;
139
+ if (agentFactory !== undefined) {
140
+ this._agentFactory = agentFactory;
141
+ }
142
+ else {
143
+ const sharedAgent = asSnapshotAgent(agent);
144
+ if (hasSessionManager(sharedAgent)) {
145
+ throw new Error("A single 'agent' with a sessionManager is not supported: the session manager " +
146
+ "persists every context's messages into one interleaved session. Use " +
147
+ "'agentFactory' to build a per-context agent with its own sessionManager.");
148
+ }
149
+ logger.warn("Passing a single 'agent' to A2AExecutor is deprecated and will be removed in a future " +
150
+ 'version. A single agent serializes all requests; pass an agentFactory (a callable taking ' +
151
+ 'the contextId) instead to isolate conversations per context.');
152
+ this._agent = sharedAgent;
153
+ this._templateSnapshot = this._captureState(sharedAgent);
154
+ }
155
+ }
156
+ /** Snapshot an agent's session state. */
157
+ _captureState(agent) {
158
+ return agent.takeSnapshot({ preset: 'session' });
159
+ }
160
+ /** Load a snapshot into an agent, restoring its session state. */
161
+ _restoreState(agent, snapshot) {
162
+ agent.loadSnapshot(snapshot);
163
+ }
164
+ /** Evict least-recently-used contexts beyond `maxContexts`. */
165
+ _evictExcessContexts() {
166
+ const contexts = this._agentFactory !== undefined ? this._contexts : this._snapshots;
167
+ while (contexts.size > this._maxContexts) {
168
+ const evictedId = contexts.keys().next().value;
169
+ contexts.delete(evictedId);
170
+ logger.debug(`context_id=<${evictedId}> | evicted least-recently-used A2A context`);
171
+ }
172
+ }
173
+ /** Return the dedicated agent and lock for a context, creating it on first use (factory mode). */
174
+ _acquireContextAgent(contextId) {
175
+ let entry = this._contexts.get(contextId);
176
+ if (entry === undefined) {
177
+ entry = { agent: this._agentFactory(contextId), lock: new AsyncLock() };
178
+ this._contexts.set(contextId, entry);
179
+ this._evictExcessContexts();
180
+ }
181
+ else {
182
+ // Move to most-recently-used end.
183
+ this._contexts.delete(contextId);
184
+ this._contexts.set(contextId, entry);
185
+ }
186
+ return entry;
51
187
  }
52
188
  /**
53
189
  * Executes the agent in response to an A2A message.
54
190
  *
55
- * Converts A2A message parts to Strands content blocks, then streams the
56
- * agent execution. Text deltas are streamed incrementally into a single
57
- * artifact; non-text content blocks (images, videos, documents) are each
58
- * published as separate complete artifacts. A final artifact with
59
- * `lastChunk: true` signals the end of the text artifact, followed by a
60
- * completed status update.
61
- *
62
191
  * @param context - The A2A request context containing the user message
63
192
  * @param eventBus - The event bus for publishing A2A artifact and status events
64
193
  */
@@ -68,16 +197,64 @@ export class A2AExecutor {
68
197
  if (contentBlocks.length === 0) {
69
198
  throw A2AError.invalidRequest('No content blocks available');
70
199
  }
71
- // Publish initial task event to register the task with the ResultManager.
72
- // Without this, artifact and status events are ignored as "unknown task".
200
+ // Register the task with the ResultManager; without this, later events are ignored as "unknown task".
73
201
  eventBus.publish({ kind: 'task', id: taskId, contextId, status: { state: 'working' } });
202
+ if (this._agentFactory !== undefined) {
203
+ await this._runWithContextAgent(context, contentBlocks, eventBus);
204
+ }
205
+ else {
206
+ await this._runWithSharedAgent(context, contentBlocks, eventBus);
207
+ }
208
+ }
209
+ /** Factory mode: run against this context's dedicated agent, serialized only per context. */
210
+ async _runWithContextAgent(context, contentBlocks, eventBus) {
211
+ const env_1 = { stack: [], error: void 0, hasError: false };
212
+ try {
213
+ const { agent, lock } = this._acquireContextAgent(context.contextId);
214
+ const _release = __addDisposableResource(env_1, await lock.acquire(), false);
215
+ await this._streamAgent(agent, context, contentBlocks, eventBus);
216
+ }
217
+ catch (e_1) {
218
+ env_1.error = e_1;
219
+ env_1.hasError = true;
220
+ }
221
+ finally {
222
+ __disposeResources(env_1);
223
+ }
224
+ }
225
+ /** Single-agent mode: swap this context's snapshot on/off the shared agent under a lock. */
226
+ async _runWithSharedAgent(context, contentBlocks, eventBus) {
227
+ const env_2 = { stack: [], error: void 0, hasError: false };
228
+ try {
229
+ const agent = this._agent;
230
+ const _release = __addDisposableResource(env_2, await this._sharedAgentLock.acquire(), false);
231
+ this._restoreState(agent, this._snapshots.get(context.contextId) ?? this._templateSnapshot);
232
+ try {
233
+ await this._streamAgent(agent, context, contentBlocks, eventBus);
234
+ }
235
+ finally {
236
+ // Persist updated history (even on error), evict, then reset the agent for the next caller.
237
+ this._snapshots.delete(context.contextId);
238
+ this._snapshots.set(context.contextId, this._captureState(agent));
239
+ this._evictExcessContexts();
240
+ this._restoreState(agent, this._templateSnapshot);
241
+ }
242
+ }
243
+ catch (e_2) {
244
+ env_2.error = e_2;
245
+ env_2.hasError = true;
246
+ }
247
+ finally {
248
+ __disposeResources(env_2);
249
+ }
250
+ }
251
+ /** Streams one agent invocation and translates its events to A2A artifact updates. */
252
+ async _streamAgent(agent, context, contentBlocks, eventBus) {
253
+ const { taskId, contextId } = context;
74
254
  const artifactId = globalThis.crypto.randomUUID();
75
255
  let isFirstChunk = true;
76
256
  try {
77
- // Forward the A2A RequestContext to the agent under a reserved key so
78
- // hooks and tools can correlate with the A2A request (taskId, contextId,
79
- // user message metadata).
80
- const stream = this._agent.stream(contentBlocks, {
257
+ const stream = agent.stream(contentBlocks, {
81
258
  invocationState: { a2aRequestContext: context },
82
259
  });
83
260
  let next = await stream.next();
@@ -125,8 +302,8 @@ export class A2AExecutor {
125
302
  // If no deltas were streamed, publish the full result; otherwise empty to close the artifact
126
303
  parts: [{ kind: 'text', text: isFirstChunk && next.value ? next.value.toString() : '' }],
127
304
  },
128
- append: !isFirstChunk, // false for new artifact, true to append to streamed chunks
129
- lastChunk: true, // Always true — this runs after the stream loop ends
305
+ append: !isFirstChunk,
306
+ lastChunk: true,
130
307
  });
131
308
  eventBus.publish({ kind: 'status-update', taskId, contextId, status: { state: 'completed' }, final: true });
132
309
  }
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/a2a/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/a2a/executor.ts"],"names":[],"mappings":"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"}
@@ -11,5 +11,5 @@
11
11
  export { A2AServer, type A2AServerConfig } from './server.js';
12
12
  export { A2AAgent, type A2AAgentConfig } from './a2a-agent.js';
13
13
  export { A2AStreamUpdateEvent, A2AResultEvent, type A2AEventData, type A2AStreamEvent } from './events.js';
14
- export { A2AExecutor } from './executor.js';
14
+ export { A2AExecutor, type AgentFactory, type A2AExecutorOptions, DEFAULT_MAX_CONTEXTS } from './executor.js';
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA"}
@@ -11,5 +11,5 @@
11
11
  export { A2AServer } from './server.js';
12
12
  export { A2AAgent } from './a2a-agent.js';
13
13
  export { A2AStreamUpdateEvent, A2AResultEvent } from './events.js';
14
- export { A2AExecutor } from './executor.js';
14
+ export { A2AExecutor, DEFAULT_MAX_CONTEXTS } from './executor.js';
15
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAwB,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAA0C,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAwB,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAA0C,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAE,WAAW,EAA8C,oBAAoB,EAAE,MAAM,eAAe,CAAA"}
@@ -10,12 +10,28 @@
10
10
  import type { AgentCard, AgentSkill } from '@a2a-js/sdk';
11
11
  import type { TaskStore, A2ARequestHandler } from '@a2a-js/sdk/server';
12
12
  import type { InvokableAgent } from '../types/agent.js';
13
+ import { type AgentFactory } from './executor.js';
13
14
  /**
14
15
  * Configuration options for creating an A2AServer.
16
+ *
17
+ * Provide exactly one of `agent` (deprecated) or `agentFactory`.
15
18
  */
16
19
  export interface A2AServerConfig {
17
- /** The Strands Agent to serve via A2A protocol */
18
- agent: InvokableAgent;
20
+ /** @deprecated The Strands Agent to serve via A2A protocol. Prefer `agentFactory`. */
21
+ agent?: InvokableAgent;
22
+ /**
23
+ * Callable that takes a `contextId` and returns a dedicated agent per A2A context.
24
+ * Contexts run concurrently and the factory is where per-context concerns such as a
25
+ * context-scoped `sessionManager` are wired. At construction it is invoked once with a
26
+ * placeholder context id to derive the agent card metadata, so it should not
27
+ * unconditionally allocate expensive resources.
28
+ */
29
+ agentFactory?: AgentFactory;
30
+ /**
31
+ * Maximum number of per-context agents to retain concurrently (factory mode);
32
+ * the least-recently-used is evicted beyond this. Must be at least 1.
33
+ */
34
+ maxContexts?: number;
19
35
  /** Human-readable name for the agent */
20
36
  name: string;
21
37
  /** Optional description of the agent's purpose */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,KAAK,EAAE,cAAc,CAAA;IACrB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,SAAS;IACpB,SAAS,CAAC,UAAU,EAAE,SAAS,CAAA;IAC/B,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAA;IAE5C;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAsBnC;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;CACF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AAK9D;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,SAAS;IACpB,SAAS,CAAC,UAAU,EAAE,SAAS,CAAA;IAC/B,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAA;IAE5C;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAiCnC;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;CACF"}
@@ -9,6 +9,8 @@
9
9
  */
10
10
  import { DefaultRequestHandler, InMemoryTaskStore } from '@a2a-js/sdk/server';
11
11
  import { A2AExecutor } from './executor.js';
12
+ /** Placeholder context id used to build a representative agent for card metadata in factory mode. */
13
+ const AGENT_CARD_CONTEXT_ID = '__agent_card__';
12
14
  /**
13
15
  * Base A2A server that manages agent card and request handler setup.
14
16
  *
@@ -39,10 +41,15 @@ export class A2AServer {
39
41
  * @param config - Configuration for the server
40
42
  */
41
43
  constructor(config) {
44
+ if ((config.agent === undefined) === (config.agentFactory === undefined)) {
45
+ throw new Error("Provide exactly one of 'agent' or 'agentFactory'.");
46
+ }
42
47
  const httpUrl = config.httpUrl ?? '';
48
+ // Build a representative agent for card metadata (via the factory in factory mode).
49
+ const cardAgent = config.agent ?? config.agentFactory(AGENT_CARD_CONTEXT_ID);
43
50
  this._agentCard = {
44
51
  name: config.name,
45
- description: config.description ?? '',
52
+ description: config.description ?? cardAgent.description ?? '',
46
53
  version: config.version ?? '0.0.1',
47
54
  protocolVersion: '0.2.0',
48
55
  url: httpUrl,
@@ -54,7 +61,11 @@ export class A2AServer {
54
61
  },
55
62
  };
56
63
  const taskStore = config.taskStore ?? new InMemoryTaskStore();
57
- const executor = new A2AExecutor(config.agent);
64
+ const executor = new A2AExecutor({
65
+ ...(config.agent !== undefined && { agent: config.agent }),
66
+ ...(config.agentFactory !== undefined && { agentFactory: config.agentFactory }),
67
+ ...(config.maxContexts !== undefined && { maxContexts: config.maxContexts }),
68
+ });
58
69
  this._requestHandler = new DefaultRequestHandler(this._agentCard, taskStore, executor);
59
70
  }
60
71
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAsB3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,SAAS;IACV,UAAU,CAAW;IACrB,eAAe,CAAmB;IAE5C;;;;OAIG;IACH,YAAY,MAAuB;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;QAEpC,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;YAClC,eAAe,EAAE,OAAO;YACxB,GAAG,EAAE,OAAO;YACZ,iBAAiB,EAAE,CAAC,YAAY,CAAC;YACjC,kBAAkB,EAAE,CAAC,YAAY,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI;aAChB;SACF,CAAA;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,iBAAiB,EAAE,CAAA;QAC7D,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IACxF,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE7E,OAAO,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAA;AAE9D,qGAAqG;AACrG,MAAM,qBAAqB,GAAG,gBAAgB,CAAA;AAqC9C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,SAAS;IACV,UAAU,CAAW;IACrB,eAAe,CAAmB;IAE5C;;;;OAIG;IACH,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;QAEpC,oFAAoF;QACpF,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAa,CAAC,qBAAqB,CAAC,CAAA;QAE7E,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,IAAI,EAAE;YAC9D,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;YAClC,eAAe,EAAE,OAAO;YACxB,GAAG,EAAE,OAAO;YACZ,iBAAiB,EAAE,CAAC,YAAY,CAAC;YACjC,kBAAkB,EAAE,CAAC,YAAY,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI;aAChB;SACF,CAAA;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,iBAAiB,EAAE,CAAA;QAC7D,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1D,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;YAC/E,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;SAC7E,CAAC,CAAA;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IACxF,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent.context-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.context-manager.test.d.ts","sourceRoot":"","sources":["../../../../src/agent/__tests__/agent.context-manager.test.ts"],"names":[],"mappings":""}