@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
@@ -0,0 +1,107 @@
1
+ /** Compose layering: input (outermost) → output → wrap (innermost). Execution order: input → wrap → output. */
2
+ const PHASE_ORDER = { input: 0, output: 1, wrap: 2 };
3
+ /**
4
+ * Registry that stores middleware handlers keyed by stage tokens
5
+ * and composes them into execution chains with phase ordering.
6
+ */
7
+ export class MiddlewareRegistry {
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ _handlers;
10
+ constructor() {
11
+ this._handlers = new Map();
12
+ }
13
+ /**
14
+ * Register a middleware handler for a given stage (Wrap phase).
15
+ * Handlers are stored in registration order within their phase.
16
+ *
17
+ * @param stage - The stage token to register the handler for
18
+ * @param handler - The middleware handler function
19
+ */
20
+ add(stage, handler) {
21
+ const handlers = this._handlers.get(stage) ?? [];
22
+ handlers.push({ phase: 'wrap', handler });
23
+ this._handlers.set(stage, handlers);
24
+ }
25
+ /**
26
+ * Register an Input phase handler. Transforms context before the Wrap chain runs.
27
+ * Multiple Input handlers compose in registration order (each sees the previous handler's output).
28
+ * Returns the adapted handler for cleanup purposes.
29
+ */
30
+ addInput(phase, handler) {
31
+ const stage = phase._stage;
32
+ const handlers = this._handlers.get(stage) ?? [];
33
+ const adapted = async function* (context, next) {
34
+ const transformed = await handler(context);
35
+ return yield* next(transformed);
36
+ };
37
+ handlers.push({ phase: 'input', handler: adapted });
38
+ this._handlers.set(stage, handlers);
39
+ return adapted;
40
+ }
41
+ /**
42
+ * Register an Output phase handler. Transforms result after the Wrap chain completes.
43
+ * Multiple Output handlers compose in registration order (each sees the previous handler's output).
44
+ * Returns the adapted handler for cleanup purposes.
45
+ */
46
+ addOutput(phase, handler) {
47
+ const stage = phase._stage;
48
+ const handlers = this._handlers.get(stage) ?? [];
49
+ const adapted = async function* (context, next) {
50
+ const result = yield* next(context);
51
+ return await handler(result);
52
+ };
53
+ handlers.push({ phase: 'output', handler: adapted });
54
+ this._handlers.set(stage, handlers);
55
+ return adapted;
56
+ }
57
+ /**
58
+ * Remove a previously registered middleware handler for a given stage.
59
+ * Removes the first occurrence of the handler (by reference equality on the adapted handler).
60
+ *
61
+ * @param stage - The stage token to remove the handler from
62
+ * @param handler - The middleware handler function to remove
63
+ */
64
+ remove(stage, handler) {
65
+ const handlers = this._handlers.get(stage);
66
+ if (!handlers)
67
+ return;
68
+ const idx = handlers.findIndex((h) => h.handler === handler);
69
+ if (idx !== -1)
70
+ handlers.splice(idx, 1);
71
+ }
72
+ /**
73
+ * Compose all registered handlers for a stage into a single middleware chain.
74
+ * Handlers are ordered by phase (input → output → wrap), then by registration order within phase.
75
+ * First in the composed chain = outermost.
76
+ *
77
+ * @param stage - The stage token to compose handlers for
78
+ * @param terminal - The innermost function that performs actual stage execution
79
+ * @returns A single function representing the full middleware chain
80
+ */
81
+ compose(stage, terminal) {
82
+ const tagged = (this._handlers.get(stage) ?? []);
83
+ // Stable sort by phase: input first, output second, wrap last (closest to terminal)
84
+ const sorted = [...tagged].sort((a, b) => PHASE_ORDER[a.phase] - PHASE_ORDER[b.phase]);
85
+ let current = terminal;
86
+ for (let i = sorted.length - 1; i >= 0; i--) {
87
+ const handler = sorted[i].handler;
88
+ const next = current;
89
+ current = (context) => handler(context, next);
90
+ }
91
+ return current;
92
+ }
93
+ /**
94
+ * Compose and invoke the middleware chain for a stage in one call.
95
+ * Equivalent to `compose(stage, terminal)(context)` but reads more clearly at call sites.
96
+ *
97
+ * @param stage - The stage token to invoke
98
+ * @param context - The context to pass into the chain
99
+ * @param terminal - The innermost function that performs actual stage execution
100
+ * @returns An async generator yielding events and returning the stage result
101
+ */
102
+ invoke(stage, context, terminal) {
103
+ const chain = this.compose(stage, terminal);
104
+ return chain(context);
105
+ }
106
+ }
107
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/middleware/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import type { MiddlewareStage } from './types.js';
2
+ import type { LocalAgent, AgentStreamEvent, InvocationState, InvokeArgs, InvokeOptions, AgentResult } from '../types/agent.js';
3
+ import type { Message, SystemPrompt, ToolResultBlock } from '../types/messages.js';
4
+ import type { ToolSpec, ToolChoice } from '../tools/types.js';
5
+ import type { StateStore } from '../state-store.js';
6
+ import type { StreamAggregatedResult } from '../models/model.js';
7
+ import type { ToolUseData } from '../hooks/events.js';
8
+ import type { Tool } from '../tools/tool.js';
9
+ import type { InterruptParams } from '../types/interrupt.js';
10
+ import type { JSONValue } from '../types/json.js';
11
+ /**
12
+ * Result returned by `interrupt()` in middleware contexts.
13
+ * Returns an object to allow future extension (e.g., cached data, metadata)
14
+ * without a breaking change to callers.
15
+ */
16
+ export interface MiddlewareInterruptResult<T = JSONValue> {
17
+ /**
18
+ * The resolved response value from the interrupt.
19
+ * The generic `T` is a caller assertion — the actual value is whatever the user
20
+ * passed in `InterruptResponseContent.response` (a `JSONValue`). No runtime
21
+ * validation is performed; callers are responsible for ensuring the shape matches.
22
+ */
23
+ response: T;
24
+ }
25
+ /**
26
+ * Interface for middleware contexts that support interrupts.
27
+ * Unlike the hook/tool `Interruptible`, middleware interrupts return a wrapper
28
+ * object to allow non-breaking additions in the future.
29
+ */
30
+ export interface MiddlewareInterruptible {
31
+ /**
32
+ * Request a human-in-the-loop interrupt.
33
+ *
34
+ * On first execution (no prior response), throws `InterruptError` to halt the agent.
35
+ * On resume (after the user provides a response), returns the response wrapped in
36
+ * `MiddlewareInterruptResult`.
37
+ *
38
+ * @param params - Interrupt parameters (name, optional reason, optional preemptive response)
39
+ * @returns The user's response wrapped in `{ response: T }`
40
+ * @throws InterruptError when no response has been provided yet
41
+ */
42
+ interrupt<T = JSONValue>(params: InterruptParams): MiddlewareInterruptResult<T>;
43
+ }
44
+ /**
45
+ * Creates a new middleware stage token with Input/Wrap/Output phase sub-tokens.
46
+ * The returned object is frozen and used as a Map key by the registry.
47
+ *
48
+ * @param name - Human-readable name for debugging/logging
49
+ * @returns A frozen MiddlewareStage object carrying the Context/Event/Result type parameters
50
+ */
51
+ export declare function createStage<TContext, TResult, TEvent>(name: string): MiddlewareStage<TContext, TResult, TEvent>;
52
+ /**
53
+ * Context passed to model-stage middleware.
54
+ * All inputs to the model call are explicit — middleware can inspect and transform
55
+ * any of them by passing a modified context to next().
56
+ */
57
+ export interface InvokeModelContext {
58
+ /** The agent instance (escape hatch for advanced use cases). */
59
+ readonly agent: LocalAgent;
60
+ /** The messages to send to the model. */
61
+ readonly messages: readonly Message[];
62
+ /** System prompt to guide the model's behavior. */
63
+ readonly systemPrompt?: SystemPrompt;
64
+ /** Tool specifications available to the model. */
65
+ readonly toolSpecs: readonly ToolSpec[];
66
+ /** Controls how the model selects tools. */
67
+ readonly toolChoice?: ToolChoice;
68
+ /** Runtime state for stateful model providers. */
69
+ readonly modelState: StateStore;
70
+ /** Per-invocation state shared across hooks and tools. */
71
+ readonly invocationState: InvocationState;
72
+ }
73
+ /**
74
+ * Result from model-stage middleware.
75
+ * The return value of the async generator.
76
+ */
77
+ export interface InvokeModelResult {
78
+ /** The aggregated result from the model stream. */
79
+ readonly result: StreamAggregatedResult;
80
+ }
81
+ /**
82
+ * Context passed to tool-stage middleware.
83
+ * Contains everything needed to understand and potentially modify the tool call.
84
+ */
85
+ export interface ExecuteToolContext extends MiddlewareInterruptible {
86
+ /** The agent instance (escape hatch for advanced use cases). */
87
+ readonly agent: LocalAgent;
88
+ /** The resolved tool implementation, or undefined if not found. */
89
+ readonly tool: Tool | undefined;
90
+ /** The tool use request (name, toolUseId, input). */
91
+ readonly toolUse: ToolUseData;
92
+ /** Per-invocation state shared across hooks and tools. */
93
+ readonly invocationState: InvocationState;
94
+ }
95
+ /**
96
+ * Result from tool-stage middleware.
97
+ * The return value of the async generator.
98
+ */
99
+ export interface ExecuteToolResult {
100
+ /** The tool result block from execution. */
101
+ readonly result: ToolResultBlock;
102
+ }
103
+ /**
104
+ * Context passed to agent-stream-stage middleware.
105
+ * Wraps the entire agent output stream at the outermost interception point.
106
+ */
107
+ export interface AgentStreamContext extends MiddlewareInterruptible {
108
+ /** The agent instance (escape hatch for advanced use cases). */
109
+ readonly agent: LocalAgent;
110
+ /** The invocation arguments passed to agent.stream(). */
111
+ readonly args: InvokeArgs;
112
+ /** Per-invocation options (cancel signal, structured output, etc.). */
113
+ readonly options?: InvokeOptions;
114
+ }
115
+ /**
116
+ * Result from agent-stream-stage middleware.
117
+ * The return value of the async generator.
118
+ */
119
+ export interface AgentStreamResult {
120
+ /** The final agent result from the stream. */
121
+ readonly result: AgentResult;
122
+ }
123
+ /**
124
+ * Built-in stage wrapping core model invocation.
125
+ * Middleware registered for this stage can rate-limit, cache, or transform model inputs.
126
+ */
127
+ export declare const InvokeModelStage: MiddlewareStage<InvokeModelContext, InvokeModelResult, AgentStreamEvent>;
128
+ /**
129
+ * Built-in stage wrapping individual tool execution.
130
+ * Middleware registered for this stage can add telemetry, validate inputs, or mock responses.
131
+ */
132
+ export declare const ExecuteToolStage: MiddlewareStage<ExecuteToolContext, ExecuteToolResult, AgentStreamEvent>;
133
+ /**
134
+ * Built-in stage wrapping the entire agent output stream.
135
+ * Middleware registered for this stage can filter, transform, or inject events.
136
+ */
137
+ export declare const AgentStreamStage: MiddlewareStage<AgentStreamContext, AgentStreamResult, AgentStreamEvent>;
138
+ //# sourceMappingURL=stages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../../../src/middleware/stages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Creates a new middleware stage token with Input/Wrap/Output phase sub-tokens.
3
+ * The returned object is frozen and used as a Map key by the registry.
4
+ *
5
+ * @param name - Human-readable name for debugging/logging
6
+ * @returns A frozen MiddlewareStage object carrying the Context/Event/Result type parameters
7
+ */
8
+ export function createStage(name) {
9
+ // Partially constructed; all required fields are assigned via Object.assign before Object.freeze below.
10
+ const stage = { name };
11
+ const input = Object.freeze({ _phase: 'input', _stage: stage });
12
+ const wrap = Object.freeze({ _phase: 'wrap', _stage: stage });
13
+ const output = Object.freeze({ _phase: 'output', _stage: stage });
14
+ return Object.freeze(Object.assign(stage, { Input: input, Wrap: wrap, Output: output }));
15
+ }
16
+ /**
17
+ * Built-in stage wrapping core model invocation.
18
+ * Middleware registered for this stage can rate-limit, cache, or transform model inputs.
19
+ */
20
+ export const InvokeModelStage = createStage('invokeModel');
21
+ /**
22
+ * Built-in stage wrapping individual tool execution.
23
+ * Middleware registered for this stage can add telemetry, validate inputs, or mock responses.
24
+ */
25
+ export const ExecuteToolStage = createStage('executeTool');
26
+ /**
27
+ * Built-in stage wrapping the entire agent output stream.
28
+ * Middleware registered for this stage can filter, transform, or inject events.
29
+ */
30
+ export const AgentStreamStage = createStage('agentStream');
31
+ //# sourceMappingURL=stages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stages.js","sourceRoot":"","sources":["../../../src/middleware/stages.ts"],"names":[],"mappings":"AAqDA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAA4B,IAAY;IACjE,wGAAwG;IACxG,MAAM,KAAK,GAAG,EAAE,IAAI,EAAgD,CAAA;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAe,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AAC1F,CAAC;AA+ED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAA0D,aAAa,CAAC,CAAA;AAEnH;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAA0D,aAAa,CAAC,CAAA;AAEnH;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAA0D,aAAa,CAAC,CAAA"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * A stage token that identifies a middleware interception point.
3
+ * Stages are created via `createStage()` and carry their Context/Event/Result types
4
+ * as generics, enabling full type inference at registration sites.
5
+ *
6
+ * Third parties can create custom stages — the SDK does not maintain a closed set.
7
+ */
8
+ export interface MiddlewareStage<TContext, TResult, TEvent> {
9
+ /** Human-readable name for debugging and logging. */
10
+ readonly name: string;
11
+ /** @internal Phantom field for type inference. Never accessed at runtime. */
12
+ readonly _types?: {
13
+ context: TContext;
14
+ event: TEvent;
15
+ result: TResult;
16
+ };
17
+ /** Phase sub-token: transform context before execution. */
18
+ readonly Input: MiddlewareInputPhase<TContext, TResult, TEvent>;
19
+ /** Phase sub-token: full async generator wrap (before + call next + after). */
20
+ readonly Wrap: MiddlewareWrapPhase<TContext, TResult, TEvent>;
21
+ /** Phase sub-token: transform result after execution. */
22
+ readonly Output: MiddlewareOutputPhase<TContext, TResult, TEvent>;
23
+ }
24
+ /** Phase ordering. Compose layering: input (outermost) → output → wrap (innermost). Execution order: input → wrap → output. */
25
+ export type MiddlewarePhaseKind = 'input' | 'wrap' | 'output';
26
+ /** Phase sub-token for Input handlers. */
27
+ export interface MiddlewareInputPhase<TContext, TResult, TEvent> {
28
+ /** @internal */
29
+ readonly _phase: 'input';
30
+ /** @internal Back-reference to parent stage. */
31
+ readonly _stage: MiddlewareStage<TContext, TResult, TEvent>;
32
+ }
33
+ /** Phase sub-token for Wrap handlers. */
34
+ export interface MiddlewareWrapPhase<TContext, TResult, TEvent> {
35
+ /** @internal */
36
+ readonly _phase: 'wrap';
37
+ /** @internal Back-reference to parent stage. */
38
+ readonly _stage: MiddlewareStage<TContext, TResult, TEvent>;
39
+ }
40
+ /** Phase sub-token for Output handlers. */
41
+ export interface MiddlewareOutputPhase<TContext, TResult, TEvent> {
42
+ /** @internal */
43
+ readonly _phase: 'output';
44
+ /** @internal Back-reference to parent stage. */
45
+ readonly _stage: MiddlewareStage<TContext, TResult, TEvent>;
46
+ }
47
+ /** Union of all phase sub-tokens. */
48
+ export type MiddlewarePhase<TContext, TResult, TEvent> = MiddlewareInputPhase<TContext, TResult, TEvent> | MiddlewareWrapPhase<TContext, TResult, TEvent> | MiddlewareOutputPhase<TContext, TResult, TEvent>;
49
+ /**
50
+ * The `next` function passed to middleware.
51
+ * Returns an async generator that yields events of type TEvent and returns the stage result.
52
+ * Middleware can choose not to call `next` to short-circuit execution.
53
+ */
54
+ export type MiddlewareNext<TContext, TResult, TEvent> = (context: TContext) => AsyncGenerator<TEvent, TResult, undefined>;
55
+ /**
56
+ * A middleware handler function (Wrap phase).
57
+ * Receives the context and a `next` function to call the next layer.
58
+ * Must be an async generator that yields TEvent and returns TResult.
59
+ * Middleware can yield its own events, forward events from next, or suppress them.
60
+ */
61
+ export type MiddlewareHandler<TContext, TResult, TEvent> = (context: TContext, next: MiddlewareNext<TContext, TResult, TEvent>) => AsyncGenerator<TEvent, TResult, undefined>;
62
+ /** Handler for Input phase — transforms context before execution. */
63
+ export type MiddlewareInputHandler<TContext> = (context: TContext) => TContext | Promise<TContext>;
64
+ /** Handler for Output phase — transforms result after execution. */
65
+ export type MiddlewareOutputHandler<TResult> = (result: TResult) => TResult | Promise<TResult>;
66
+ /**
67
+ * Extracts the `MiddlewareHandler` type from a stage token.
68
+ * Use this to type middleware methods or properties without repeating the generic parameters.
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * class MyPlugin implements Plugin {
73
+ * private _handler: MiddlewareHandlerOf<typeof InvokeModelStage> = async function* (context, next) { ... }
74
+ * }
75
+ * ```
76
+ */
77
+ export type MiddlewareHandlerOf<S> = S extends MiddlewareStage<infer C, infer R, infer E> ? MiddlewareHandler<C, R, E> : never;
78
+ /**
79
+ * Extracts the `MiddlewareNext` type from a stage token.
80
+ * Use this to type the `next` parameter in standalone middleware methods.
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * private async *_handler(context: ..., next: MiddlewareNextOf<typeof AgentStreamStage>) { ... }
85
+ * ```
86
+ */
87
+ export type MiddlewareNextOf<S> = S extends MiddlewareStage<infer C, infer R, infer E> ? MiddlewareNext<C, R, E> : never;
88
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":""}
@@ -4,7 +4,7 @@ import { isNode } from '../../__fixtures__/environment.js';
4
4
  import { AnthropicModel } from '../anthropic.js';
5
5
  import { ContextWindowOverflowError, ModelThrottledError } from '../../errors.js';
6
6
  import { collectIterator } from '../../__fixtures__/model-test-helpers.js';
7
- import { Message, TextBlock, CachePointBlock, GuardContentBlock, ToolResultBlock, JsonBlock, } from '../../types/messages.js';
7
+ import { Message, TextBlock, CachePointBlock, GuardContentBlock, ToolResultBlock, JsonBlock, ReasoningBlock, } from '../../types/messages.js';
8
8
  import { ImageBlock, DocumentBlock, VideoBlock } from '../../types/media.js';
9
9
  import { warnOnce } from '../../logging/warn-once.js';
10
10
  /**
@@ -303,17 +303,32 @@ describe('AnthropicModel', () => {
303
303
  const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
304
304
  await expect(collectIterator(provider.stream(messages))).rejects.toThrow('API Error');
305
305
  });
306
+ it('maps overload error to ContextWindowOverflowError', async () => {
307
+ const mockClient = createMockClient(async function* () {
308
+ yield { type: 'ping' }; // Satisfy linter require-yield
309
+ throw new Error('prompt is too long');
310
+ });
311
+ const provider = new AnthropicModel({ client: mockClient });
312
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
313
+ await expect(collectIterator(provider.stream(messages))).rejects.toThrow(ContextWindowOverflowError);
314
+ });
306
315
  it.each([
307
- 'PROMPT IS TOO LONG: request exceeds context window',
308
- 'max_tokens exceeded',
309
- 'input too long',
310
316
  'input is too long',
311
317
  'input length exceeds context window',
312
318
  'input and output tokens exceed your context limit',
313
- ])('maps context overflow error "%s" to ContextWindowOverflowError', async (message) => {
319
+ ])('maps overflow phrase %p to ContextWindowOverflowError', async (phrase) => {
314
320
  const mockClient = createMockClient(async function* () {
315
- yield { type: 'ping' }; // Satisfy linter require-yield
316
- throw new Error(message);
321
+ yield { type: 'ping' };
322
+ throw new Error(phrase);
323
+ });
324
+ const provider = new AnthropicModel({ client: mockClient });
325
+ const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
326
+ await expect(collectIterator(provider.stream(messages))).rejects.toThrow(ContextWindowOverflowError);
327
+ });
328
+ it('matches overflow phrases case-insensitively', async () => {
329
+ const mockClient = createMockClient(async function* () {
330
+ yield { type: 'ping' };
331
+ throw new Error('PROMPT IS TOO LONG: 200000 tokens');
317
332
  });
318
333
  const provider = new AnthropicModel({ client: mockClient });
319
334
  const messages = [new Message({ role: 'user', content: [new TextBlock('Hi')] })];
@@ -384,6 +399,21 @@ describe('AnthropicModel', () => {
384
399
  });
385
400
  expect(captured.request.tool_choice).toEqual({ type: 'auto' });
386
401
  });
402
+ it('formats a signature-only reasoning block', async () => {
403
+ const { captured, mockClient } = setupCapture();
404
+ const provider = new AnthropicModel({ client: mockClient });
405
+ const messages = [
406
+ new Message({
407
+ role: 'assistant',
408
+ content: [new ReasoningBlock({ signature: 'sig-abc' }), new TextBlock('answer')],
409
+ }),
410
+ ];
411
+ await collectIterator(provider.stream(messages));
412
+ expect(captured.request.messages[0].content).toEqual([
413
+ { type: 'thinking', thinking: '', signature: 'sig-abc' },
414
+ { type: 'text', text: 'answer' },
415
+ ]);
416
+ });
387
417
  describe('Prompt Caching (Lookahead logic)', () => {
388
418
  it('attaches cache control to message content block followed by cache point', async () => {
389
419
  const { captured, mockClient } = setupCapture();