@strands-agents/sdk 1.7.0 → 1.8.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 (659) hide show
  1. package/dist/src/agent/agent.d.ts +1 -1
  2. package/dist/src/agent/agent.d.ts.map +1 -1
  3. package/dist/src/agent/agent.js +1 -1
  4. package/dist/src/agent/agent.js.map +1 -1
  5. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +3 -3
  6. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts.map +1 -1
  7. package/dist/src/index.d.ts +1 -1
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +1 -1
  10. package/dist/src/index.js.map +1 -1
  11. package/dist/src/index.node.d.ts.map +1 -1
  12. package/dist/src/index.node.js +3 -0
  13. package/dist/src/index.node.js.map +1 -1
  14. package/dist/src/interventions/actions.d.ts.map +1 -1
  15. package/dist/src/interventions/actions.js.map +1 -1
  16. package/dist/src/{mcp.d.ts → mcp/client.d.ts} +13 -4
  17. package/dist/src/mcp/client.d.ts.map +1 -0
  18. package/dist/src/{mcp.js → mcp/client.js} +15 -3
  19. package/dist/src/mcp/client.js.map +1 -0
  20. package/dist/src/mcp/config.d.ts +52 -0
  21. package/dist/src/mcp/config.d.ts.map +1 -0
  22. package/dist/src/mcp/config.js +12 -0
  23. package/dist/src/mcp/config.js.map +1 -0
  24. package/dist/src/mcp/config.node.d.ts +16 -0
  25. package/dist/src/mcp/config.node.d.ts.map +1 -0
  26. package/dist/src/mcp/config.node.js +145 -0
  27. package/dist/src/mcp/config.node.js.map +1 -0
  28. package/dist/src/mcp/index.d.ts +3 -0
  29. package/dist/src/mcp/index.d.ts.map +1 -0
  30. package/dist/src/mcp/index.js +2 -0
  31. package/dist/src/mcp/index.js.map +1 -0
  32. package/dist/src/models/model.d.ts.map +1 -1
  33. package/dist/src/models/model.js +2 -1
  34. package/dist/src/models/model.js.map +1 -1
  35. package/dist/src/multiagent/graph.d.ts +7 -0
  36. package/dist/src/multiagent/graph.d.ts.map +1 -1
  37. package/dist/src/multiagent/graph.js +22 -1
  38. package/dist/src/multiagent/graph.js.map +1 -1
  39. package/dist/src/multiagent/nodes.d.ts +5 -0
  40. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  41. package/dist/src/multiagent/nodes.js +15 -0
  42. package/dist/src/multiagent/nodes.js.map +1 -1
  43. package/dist/src/multiagent/state.d.ts.map +1 -1
  44. package/dist/src/multiagent/state.js.map +1 -1
  45. package/dist/src/tools/function-tool.d.ts +1 -1
  46. package/dist/src/tools/function-tool.d.ts.map +1 -1
  47. package/dist/src/tools/function-tool.js +4 -12
  48. package/dist/src/tools/function-tool.js.map +1 -1
  49. package/dist/src/tools/mcp-tool.d.ts +2 -1
  50. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  51. package/dist/src/tools/mcp-tool.js +1 -0
  52. package/dist/src/tools/mcp-tool.js.map +1 -1
  53. package/dist/src/tools/tool-factory.d.ts +1 -1
  54. package/dist/src/tools/tool-factory.d.ts.map +1 -1
  55. package/dist/src/tools/types.d.ts +4 -0
  56. package/dist/src/tools/types.d.ts.map +1 -1
  57. package/dist/src/tools/zod-tool.d.ts +4 -2
  58. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  59. package/dist/src/tools/zod-tool.js.map +1 -1
  60. package/dist/src/tsconfig.tsbuildinfo +1 -1
  61. package/dist/src/types/media.d.ts.map +1 -1
  62. package/dist/src/types/media.js.map +1 -1
  63. package/dist/src/types/messages.d.ts.map +1 -1
  64. package/dist/src/types/messages.js.map +1 -1
  65. package/dist/src/vended-memory-stores/local/index.d.ts +2 -0
  66. package/dist/src/vended-memory-stores/local/index.d.ts.map +1 -0
  67. package/dist/src/vended-memory-stores/local/index.js +2 -0
  68. package/dist/src/vended-memory-stores/local/index.js.map +1 -0
  69. package/dist/src/vended-memory-stores/local/store.d.ts +122 -0
  70. package/dist/src/vended-memory-stores/local/store.d.ts.map +1 -0
  71. package/dist/src/vended-memory-stores/local/store.js +281 -0
  72. package/dist/src/vended-memory-stores/local/store.js.map +1 -0
  73. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  74. package/dist/src/vended-plugins/context-offloader/search.js +4 -2
  75. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  76. package/dist/src/vended-plugins/context-offloader/storage.js +1 -1
  77. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  78. package/dist/src/vended-plugins/skills/skill.d.ts.map +1 -1
  79. package/dist/src/vended-plugins/skills/skill.js.map +1 -1
  80. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  81. package/package.json +21 -14
  82. package/dist/src/__fixtures__/agent-helpers.d.ts +0 -136
  83. package/dist/src/__fixtures__/agent-helpers.d.ts.map +0 -1
  84. package/dist/src/__fixtures__/agent-helpers.js +0 -156
  85. package/dist/src/__fixtures__/agent-helpers.js.map +0 -1
  86. package/dist/src/__fixtures__/environment.d.ts +0 -12
  87. package/dist/src/__fixtures__/environment.d.ts.map +0 -1
  88. package/dist/src/__fixtures__/environment.js +0 -12
  89. package/dist/src/__fixtures__/environment.js.map +0 -1
  90. package/dist/src/__fixtures__/metrics-helpers.d.ts +0 -55
  91. package/dist/src/__fixtures__/metrics-helpers.d.ts.map +0 -1
  92. package/dist/src/__fixtures__/metrics-helpers.js +0 -57
  93. package/dist/src/__fixtures__/metrics-helpers.js.map +0 -1
  94. package/dist/src/__fixtures__/mock-message-model.d.ts +0 -103
  95. package/dist/src/__fixtures__/mock-message-model.d.ts.map +0 -1
  96. package/dist/src/__fixtures__/mock-message-model.js +0 -245
  97. package/dist/src/__fixtures__/mock-message-model.js.map +0 -1
  98. package/dist/src/__fixtures__/mock-meter.d.ts +0 -32
  99. package/dist/src/__fixtures__/mock-meter.d.ts.map +0 -1
  100. package/dist/src/__fixtures__/mock-meter.js +0 -47
  101. package/dist/src/__fixtures__/mock-meter.js.map +0 -1
  102. package/dist/src/__fixtures__/mock-plugin.d.ts +0 -13
  103. package/dist/src/__fixtures__/mock-plugin.d.ts.map +0 -1
  104. package/dist/src/__fixtures__/mock-plugin.js +0 -35
  105. package/dist/src/__fixtures__/mock-plugin.js.map +0 -1
  106. package/dist/src/__fixtures__/mock-span.d.ts +0 -78
  107. package/dist/src/__fixtures__/mock-span.d.ts.map +0 -1
  108. package/dist/src/__fixtures__/mock-span.js +0 -93
  109. package/dist/src/__fixtures__/mock-span.js.map +0 -1
  110. package/dist/src/__fixtures__/mock-storage-provider.d.ts +0 -42
  111. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +0 -1
  112. package/dist/src/__fixtures__/mock-storage-provider.js +0 -122
  113. package/dist/src/__fixtures__/mock-storage-provider.js.map +0 -1
  114. package/dist/src/__fixtures__/model-test-helpers.d.ts +0 -56
  115. package/dist/src/__fixtures__/model-test-helpers.d.ts.map +0 -1
  116. package/dist/src/__fixtures__/model-test-helpers.js +0 -85
  117. package/dist/src/__fixtures__/model-test-helpers.js.map +0 -1
  118. package/dist/src/__fixtures__/register-node-defaults.d.ts +0 -2
  119. package/dist/src/__fixtures__/register-node-defaults.d.ts.map +0 -1
  120. package/dist/src/__fixtures__/register-node-defaults.js +0 -6
  121. package/dist/src/__fixtures__/register-node-defaults.js.map +0 -1
  122. package/dist/src/__fixtures__/slim-types.d.ts +0 -51
  123. package/dist/src/__fixtures__/slim-types.d.ts.map +0 -1
  124. package/dist/src/__fixtures__/slim-types.js +0 -6
  125. package/dist/src/__fixtures__/slim-types.js.map +0 -1
  126. package/dist/src/__fixtures__/test-sandbox.node.d.ts +0 -15
  127. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +0 -1
  128. package/dist/src/__fixtures__/test-sandbox.node.js +0 -23
  129. package/dist/src/__fixtures__/test-sandbox.node.js.map +0 -1
  130. package/dist/src/__fixtures__/tool-helpers.d.ts +0 -45
  131. package/dist/src/__fixtures__/tool-helpers.d.ts.map +0 -1
  132. package/dist/src/__fixtures__/tool-helpers.js +0 -101
  133. package/dist/src/__fixtures__/tool-helpers.js.map +0 -1
  134. package/dist/src/__tests__/default-slot.test.d.ts +0 -2
  135. package/dist/src/__tests__/default-slot.test.d.ts.map +0 -1
  136. package/dist/src/__tests__/default-slot.test.js +0 -33
  137. package/dist/src/__tests__/default-slot.test.js.map +0 -1
  138. package/dist/src/__tests__/errors.test.d.ts +0 -2
  139. package/dist/src/__tests__/errors.test.d.ts.map +0 -1
  140. package/dist/src/__tests__/errors.test.js +0 -170
  141. package/dist/src/__tests__/errors.test.js.map +0 -1
  142. package/dist/src/__tests__/index.test.d.ts +0 -2
  143. package/dist/src/__tests__/index.test.d.ts.map +0 -1
  144. package/dist/src/__tests__/index.test.js +0 -48
  145. package/dist/src/__tests__/index.test.js.map +0 -1
  146. package/dist/src/__tests__/interrupt.test.d.ts +0 -2
  147. package/dist/src/__tests__/interrupt.test.d.ts.map +0 -1
  148. package/dist/src/__tests__/interrupt.test.js +0 -264
  149. package/dist/src/__tests__/interrupt.test.js.map +0 -1
  150. package/dist/src/__tests__/mcp.test.d.ts +0 -2
  151. package/dist/src/__tests__/mcp.test.d.ts.map +0 -1
  152. package/dist/src/__tests__/mcp.test.js +0 -1003
  153. package/dist/src/__tests__/mcp.test.js.map +0 -1
  154. package/dist/src/__tests__/mime.test.d.ts +0 -2
  155. package/dist/src/__tests__/mime.test.d.ts.map +0 -1
  156. package/dist/src/__tests__/mime.test.js +0 -83
  157. package/dist/src/__tests__/mime.test.js.map +0 -1
  158. package/dist/src/__tests__/state-store.test.d.ts +0 -2
  159. package/dist/src/__tests__/state-store.test.d.ts.map +0 -1
  160. package/dist/src/__tests__/state-store.test.js +0 -285
  161. package/dist/src/__tests__/state-store.test.js.map +0 -1
  162. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts +0 -2
  163. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts.map +0 -1
  164. package/dist/src/a2a/__tests__/a2a-agent.test.js +0 -383
  165. package/dist/src/a2a/__tests__/a2a-agent.test.js.map +0 -1
  166. package/dist/src/a2a/__tests__/adapters.test.d.ts +0 -2
  167. package/dist/src/a2a/__tests__/adapters.test.d.ts.map +0 -1
  168. package/dist/src/a2a/__tests__/adapters.test.js +0 -151
  169. package/dist/src/a2a/__tests__/adapters.test.js.map +0 -1
  170. package/dist/src/a2a/__tests__/async-lock.test.d.ts +0 -2
  171. package/dist/src/a2a/__tests__/async-lock.test.d.ts.map +0 -1
  172. package/dist/src/a2a/__tests__/async-lock.test.js +0 -137
  173. package/dist/src/a2a/__tests__/async-lock.test.js.map +0 -1
  174. package/dist/src/a2a/__tests__/events.test.d.ts +0 -2
  175. package/dist/src/a2a/__tests__/events.test.d.ts.map +0 -1
  176. package/dist/src/a2a/__tests__/events.test.js +0 -68
  177. package/dist/src/a2a/__tests__/events.test.js.map +0 -1
  178. package/dist/src/a2a/__tests__/executor.test.d.ts +0 -2
  179. package/dist/src/a2a/__tests__/executor.test.d.ts.map +0 -1
  180. package/dist/src/a2a/__tests__/executor.test.js +0 -345
  181. package/dist/src/a2a/__tests__/executor.test.js.map +0 -1
  182. package/dist/src/a2a/__tests__/server.test.d.ts +0 -2
  183. package/dist/src/a2a/__tests__/server.test.d.ts.map +0 -1
  184. package/dist/src/a2a/__tests__/server.test.js +0 -71
  185. package/dist/src/a2a/__tests__/server.test.js.map +0 -1
  186. package/dist/src/a2a/__tests__/server.test.node.d.ts +0 -2
  187. package/dist/src/a2a/__tests__/server.test.node.d.ts.map +0 -1
  188. package/dist/src/a2a/__tests__/server.test.node.js +0 -110
  189. package/dist/src/a2a/__tests__/server.test.node.js.map +0 -1
  190. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +0 -2
  191. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +0 -1
  192. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +0 -23
  193. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +0 -1
  194. package/dist/src/agent/__tests__/agent-as-tool.test.d.ts +0 -2
  195. package/dist/src/agent/__tests__/agent-as-tool.test.d.ts.map +0 -1
  196. package/dist/src/agent/__tests__/agent-as-tool.test.js +0 -347
  197. package/dist/src/agent/__tests__/agent-as-tool.test.js.map +0 -1
  198. package/dist/src/agent/__tests__/agent.cancel.test.d.ts +0 -2
  199. package/dist/src/agent/__tests__/agent.cancel.test.d.ts.map +0 -1
  200. package/dist/src/agent/__tests__/agent.cancel.test.js +0 -337
  201. package/dist/src/agent/__tests__/agent.cancel.test.js.map +0 -1
  202. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +0 -2
  203. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +0 -1
  204. package/dist/src/agent/__tests__/agent.concurrent.test.js +0 -488
  205. package/dist/src/agent/__tests__/agent.concurrent.test.js.map +0 -1
  206. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts +0 -2
  207. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts.map +0 -1
  208. package/dist/src/agent/__tests__/agent.context-manager.test.js +0 -106
  209. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +0 -1
  210. package/dist/src/agent/__tests__/agent.hook.test.d.ts +0 -2
  211. package/dist/src/agent/__tests__/agent.hook.test.d.ts.map +0 -1
  212. package/dist/src/agent/__tests__/agent.hook.test.js +0 -1332
  213. package/dist/src/agent/__tests__/agent.hook.test.js.map +0 -1
  214. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts +0 -2
  215. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts.map +0 -1
  216. package/dist/src/agent/__tests__/agent.interrupt.test.js +0 -779
  217. package/dist/src/agent/__tests__/agent.interrupt.test.js.map +0 -1
  218. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +0 -2
  219. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +0 -1
  220. package/dist/src/agent/__tests__/agent.invocation-state.test.js +0 -219
  221. package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +0 -1
  222. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts +0 -2
  223. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts.map +0 -1
  224. package/dist/src/agent/__tests__/agent.model-retry.test.js +0 -161
  225. package/dist/src/agent/__tests__/agent.model-retry.test.js.map +0 -1
  226. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +0 -2
  227. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +0 -1
  228. package/dist/src/agent/__tests__/agent.stateful-model.test.js +0 -169
  229. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +0 -1
  230. package/dist/src/agent/__tests__/agent.test.d.ts +0 -2
  231. package/dist/src/agent/__tests__/agent.test.d.ts.map +0 -1
  232. package/dist/src/agent/__tests__/agent.test.js +0 -1624
  233. package/dist/src/agent/__tests__/agent.test.js.map +0 -1
  234. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts +0 -2
  235. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts.map +0 -1
  236. package/dist/src/agent/__tests__/agent.tracer.test.node.js +0 -535
  237. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +0 -1
  238. package/dist/src/agent/__tests__/printer.test.d.ts +0 -2
  239. package/dist/src/agent/__tests__/printer.test.d.ts.map +0 -1
  240. package/dist/src/agent/__tests__/printer.test.js +0 -188
  241. package/dist/src/agent/__tests__/printer.test.js.map +0 -1
  242. package/dist/src/agent/__tests__/snapshot.test.d.ts +0 -2
  243. package/dist/src/agent/__tests__/snapshot.test.d.ts.map +0 -1
  244. package/dist/src/agent/__tests__/snapshot.test.js +0 -442
  245. package/dist/src/agent/__tests__/snapshot.test.js.map +0 -1
  246. package/dist/src/agent/__tests__/tool-caller.test.d.ts +0 -2
  247. package/dist/src/agent/__tests__/tool-caller.test.d.ts.map +0 -1
  248. package/dist/src/agent/__tests__/tool-caller.test.js +0 -459
  249. package/dist/src/agent/__tests__/tool-caller.test.js.map +0 -1
  250. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts +0 -2
  251. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts.map +0 -1
  252. package/dist/src/conversation-manager/__tests__/agentic-context.test.js +0 -332
  253. package/dist/src/conversation-manager/__tests__/agentic-context.test.js.map +0 -1
  254. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts +0 -2
  255. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts.map +0 -1
  256. package/dist/src/conversation-manager/__tests__/context-compression.test.js +0 -176
  257. package/dist/src/conversation-manager/__tests__/context-compression.test.js.map +0 -1
  258. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +0 -2
  259. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +0 -1
  260. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +0 -321
  261. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +0 -1
  262. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts +0 -2
  263. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts.map +0 -1
  264. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +0 -64
  265. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +0 -1
  266. package/dist/src/conversation-manager/__tests__/pin.test.d.ts +0 -2
  267. package/dist/src/conversation-manager/__tests__/pin.test.d.ts.map +0 -1
  268. package/dist/src/conversation-manager/__tests__/pin.test.js +0 -119
  269. package/dist/src/conversation-manager/__tests__/pin.test.js.map +0 -1
  270. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts +0 -2
  271. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts.map +0 -1
  272. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +0 -1080
  273. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +0 -1
  274. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.d.ts +0 -2
  275. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.d.ts.map +0 -1
  276. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +0 -400
  277. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +0 -1
  278. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts +0 -2
  279. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts.map +0 -1
  280. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js +0 -138
  281. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js.map +0 -1
  282. package/dist/src/hooks/__tests__/events.test.d.ts +0 -2
  283. package/dist/src/hooks/__tests__/events.test.d.ts.map +0 -1
  284. package/dist/src/hooks/__tests__/events.test.js +0 -1060
  285. package/dist/src/hooks/__tests__/events.test.js.map +0 -1
  286. package/dist/src/hooks/__tests__/registry.test.d.ts +0 -2
  287. package/dist/src/hooks/__tests__/registry.test.d.ts.map +0 -1
  288. package/dist/src/hooks/__tests__/registry.test.js +0 -325
  289. package/dist/src/hooks/__tests__/registry.test.js.map +0 -1
  290. package/dist/src/injection/__tests__/message-injection.test.d.ts +0 -2
  291. package/dist/src/injection/__tests__/message-injection.test.d.ts.map +0 -1
  292. package/dist/src/injection/__tests__/message-injection.test.js +0 -200
  293. package/dist/src/injection/__tests__/message-injection.test.js.map +0 -1
  294. package/dist/src/interventions/__tests__/handler.test.d.ts +0 -2
  295. package/dist/src/interventions/__tests__/handler.test.d.ts.map +0 -1
  296. package/dist/src/interventions/__tests__/handler.test.js +0 -35
  297. package/dist/src/interventions/__tests__/handler.test.js.map +0 -1
  298. package/dist/src/interventions/__tests__/registry.test.d.ts +0 -2
  299. package/dist/src/interventions/__tests__/registry.test.d.ts.map +0 -1
  300. package/dist/src/interventions/__tests__/registry.test.js +0 -692
  301. package/dist/src/interventions/__tests__/registry.test.js.map +0 -1
  302. package/dist/src/logging/__tests__/logger.test.d.ts +0 -2
  303. package/dist/src/logging/__tests__/logger.test.d.ts.map +0 -1
  304. package/dist/src/logging/__tests__/logger.test.js +0 -70
  305. package/dist/src/logging/__tests__/logger.test.js.map +0 -1
  306. package/dist/src/logging/__tests__/warn-once.test.d.ts +0 -2
  307. package/dist/src/logging/__tests__/warn-once.test.d.ts.map +0 -1
  308. package/dist/src/logging/__tests__/warn-once.test.js +0 -30
  309. package/dist/src/logging/__tests__/warn-once.test.js.map +0 -1
  310. package/dist/src/mcp.d.ts.map +0 -1
  311. package/dist/src/mcp.js.map +0 -1
  312. package/dist/src/memory/__tests__/memory-manager.test.d.ts +0 -2
  313. package/dist/src/memory/__tests__/memory-manager.test.d.ts.map +0 -1
  314. package/dist/src/memory/__tests__/memory-manager.test.js +0 -679
  315. package/dist/src/memory/__tests__/memory-manager.test.js.map +0 -1
  316. package/dist/src/memory/__tests__/memory-tracing.test.d.ts +0 -2
  317. package/dist/src/memory/__tests__/memory-tracing.test.d.ts.map +0 -1
  318. package/dist/src/memory/__tests__/memory-tracing.test.js +0 -250
  319. package/dist/src/memory/__tests__/memory-tracing.test.js.map +0 -1
  320. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts +0 -2
  321. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts.map +0 -1
  322. package/dist/src/memory/extraction/__tests__/extraction.test.js +0 -639
  323. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +0 -1
  324. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts +0 -2
  325. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts.map +0 -1
  326. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +0 -104
  327. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +0 -1
  328. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts +0 -2
  329. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts.map +0 -1
  330. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js +0 -81
  331. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js.map +0 -1
  332. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts +0 -2
  333. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts.map +0 -1
  334. package/dist/src/middleware/__tests__/agent-middleware.test.js +0 -1206
  335. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +0 -1
  336. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts +0 -2
  337. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts.map +0 -1
  338. package/dist/src/middleware/__tests__/copy-on-input.test.js +0 -379
  339. package/dist/src/middleware/__tests__/copy-on-input.test.js.map +0 -1
  340. package/dist/src/middleware/__tests__/custom-stages.test.d.ts +0 -2
  341. package/dist/src/middleware/__tests__/custom-stages.test.d.ts.map +0 -1
  342. package/dist/src/middleware/__tests__/custom-stages.test.js +0 -97
  343. package/dist/src/middleware/__tests__/custom-stages.test.js.map +0 -1
  344. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts +0 -2
  345. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts.map +0 -1
  346. package/dist/src/middleware/__tests__/middleware-interrupts.test.js +0 -267
  347. package/dist/src/middleware/__tests__/middleware-interrupts.test.js.map +0 -1
  348. package/dist/src/middleware/__tests__/registry.test.d.ts +0 -2
  349. package/dist/src/middleware/__tests__/registry.test.d.ts.map +0 -1
  350. package/dist/src/middleware/__tests__/registry.test.js +0 -525
  351. package/dist/src/middleware/__tests__/registry.test.js.map +0 -1
  352. package/dist/src/models/__tests__/anthropic.test.d.ts +0 -2
  353. package/dist/src/models/__tests__/anthropic.test.d.ts.map +0 -1
  354. package/dist/src/models/__tests__/anthropic.test.js +0 -793
  355. package/dist/src/models/__tests__/anthropic.test.js.map +0 -1
  356. package/dist/src/models/__tests__/bedrock.test.d.ts +0 -2
  357. package/dist/src/models/__tests__/bedrock.test.d.ts.map +0 -1
  358. package/dist/src/models/__tests__/bedrock.test.js +0 -3964
  359. package/dist/src/models/__tests__/bedrock.test.js.map +0 -1
  360. package/dist/src/models/__tests__/defaults.test.d.ts +0 -2
  361. package/dist/src/models/__tests__/defaults.test.d.ts.map +0 -1
  362. package/dist/src/models/__tests__/defaults.test.js +0 -36
  363. package/dist/src/models/__tests__/defaults.test.js.map +0 -1
  364. package/dist/src/models/__tests__/google.test.d.ts +0 -2
  365. package/dist/src/models/__tests__/google.test.d.ts.map +0 -1
  366. package/dist/src/models/__tests__/google.test.js +0 -1145
  367. package/dist/src/models/__tests__/google.test.js.map +0 -1
  368. package/dist/src/models/__tests__/model.test.d.ts +0 -2
  369. package/dist/src/models/__tests__/model.test.d.ts.map +0 -1
  370. package/dist/src/models/__tests__/model.test.js +0 -921
  371. package/dist/src/models/__tests__/model.test.js.map +0 -1
  372. package/dist/src/models/__tests__/streaming.test.d.ts +0 -2
  373. package/dist/src/models/__tests__/streaming.test.d.ts.map +0 -1
  374. package/dist/src/models/__tests__/streaming.test.js +0 -50
  375. package/dist/src/models/__tests__/streaming.test.js.map +0 -1
  376. package/dist/src/models/__tests__/test-utils.d.ts +0 -10
  377. package/dist/src/models/__tests__/test-utils.d.ts.map +0 -1
  378. package/dist/src/models/__tests__/test-utils.js +0 -17
  379. package/dist/src/models/__tests__/test-utils.js.map +0 -1
  380. package/dist/src/models/__tests__/vercel.test.d.ts +0 -2
  381. package/dist/src/models/__tests__/vercel.test.d.ts.map +0 -1
  382. package/dist/src/models/__tests__/vercel.test.js +0 -740
  383. package/dist/src/models/__tests__/vercel.test.js.map +0 -1
  384. package/dist/src/models/openai/__tests__/chat.test.d.ts +0 -2
  385. package/dist/src/models/openai/__tests__/chat.test.d.ts.map +0 -1
  386. package/dist/src/models/openai/__tests__/chat.test.js +0 -1586
  387. package/dist/src/models/openai/__tests__/chat.test.js.map +0 -1
  388. package/dist/src/models/openai/__tests__/errors.test.d.ts +0 -2
  389. package/dist/src/models/openai/__tests__/errors.test.d.ts.map +0 -1
  390. package/dist/src/models/openai/__tests__/errors.test.js +0 -39
  391. package/dist/src/models/openai/__tests__/errors.test.js.map +0 -1
  392. package/dist/src/models/openai/__tests__/mantle.test.d.ts +0 -2
  393. package/dist/src/models/openai/__tests__/mantle.test.d.ts.map +0 -1
  394. package/dist/src/models/openai/__tests__/mantle.test.js +0 -189
  395. package/dist/src/models/openai/__tests__/mantle.test.js.map +0 -1
  396. package/dist/src/models/openai/__tests__/responses.test.d.ts +0 -2
  397. package/dist/src/models/openai/__tests__/responses.test.d.ts.map +0 -1
  398. package/dist/src/models/openai/__tests__/responses.test.js +0 -709
  399. package/dist/src/models/openai/__tests__/responses.test.js.map +0 -1
  400. package/dist/src/multiagent/__tests__/events.test.d.ts +0 -2
  401. package/dist/src/multiagent/__tests__/events.test.d.ts.map +0 -1
  402. package/dist/src/multiagent/__tests__/events.test.js +0 -493
  403. package/dist/src/multiagent/__tests__/events.test.js.map +0 -1
  404. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +0 -2
  405. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +0 -1
  406. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +0 -95
  407. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +0 -1
  408. package/dist/src/multiagent/__tests__/graph.test.d.ts +0 -2
  409. package/dist/src/multiagent/__tests__/graph.test.d.ts.map +0 -1
  410. package/dist/src/multiagent/__tests__/graph.test.js +0 -698
  411. package/dist/src/multiagent/__tests__/graph.test.js.map +0 -1
  412. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts +0 -2
  413. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts.map +0 -1
  414. package/dist/src/multiagent/__tests__/graph.tracer.test.js +0 -218
  415. package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +0 -1
  416. package/dist/src/multiagent/__tests__/interrupts.test.d.ts +0 -2
  417. package/dist/src/multiagent/__tests__/interrupts.test.d.ts.map +0 -1
  418. package/dist/src/multiagent/__tests__/interrupts.test.js +0 -390
  419. package/dist/src/multiagent/__tests__/interrupts.test.js.map +0 -1
  420. package/dist/src/multiagent/__tests__/nodes.test.d.ts +0 -2
  421. package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +0 -1
  422. package/dist/src/multiagent/__tests__/nodes.test.js +0 -321
  423. package/dist/src/multiagent/__tests__/nodes.test.js.map +0 -1
  424. package/dist/src/multiagent/__tests__/queue.test.d.ts +0 -2
  425. package/dist/src/multiagent/__tests__/queue.test.d.ts.map +0 -1
  426. package/dist/src/multiagent/__tests__/queue.test.js +0 -118
  427. package/dist/src/multiagent/__tests__/queue.test.js.map +0 -1
  428. package/dist/src/multiagent/__tests__/snapshot.test.d.ts +0 -2
  429. package/dist/src/multiagent/__tests__/snapshot.test.d.ts.map +0 -1
  430. package/dist/src/multiagent/__tests__/snapshot.test.js +0 -161
  431. package/dist/src/multiagent/__tests__/snapshot.test.js.map +0 -1
  432. package/dist/src/multiagent/__tests__/state.test.d.ts +0 -2
  433. package/dist/src/multiagent/__tests__/state.test.d.ts.map +0 -1
  434. package/dist/src/multiagent/__tests__/state.test.js +0 -526
  435. package/dist/src/multiagent/__tests__/state.test.js.map +0 -1
  436. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +0 -2
  437. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +0 -1
  438. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +0 -56
  439. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +0 -1
  440. package/dist/src/multiagent/__tests__/swarm.test.d.ts +0 -2
  441. package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +0 -1
  442. package/dist/src/multiagent/__tests__/swarm.test.js +0 -477
  443. package/dist/src/multiagent/__tests__/swarm.test.js.map +0 -1
  444. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts +0 -2
  445. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts.map +0 -1
  446. package/dist/src/multiagent/__tests__/swarm.tracer.test.js +0 -235
  447. package/dist/src/multiagent/__tests__/swarm.tracer.test.js.map +0 -1
  448. package/dist/src/plugins/__tests__/plugin.test.d.ts +0 -2
  449. package/dist/src/plugins/__tests__/plugin.test.d.ts.map +0 -1
  450. package/dist/src/plugins/__tests__/plugin.test.js +0 -114
  451. package/dist/src/plugins/__tests__/plugin.test.js.map +0 -1
  452. package/dist/src/plugins/__tests__/registry.test.d.ts +0 -2
  453. package/dist/src/plugins/__tests__/registry.test.d.ts.map +0 -1
  454. package/dist/src/plugins/__tests__/registry.test.js +0 -147
  455. package/dist/src/plugins/__tests__/registry.test.js.map +0 -1
  456. package/dist/src/registry/__tests__/tool-registry.test.d.ts +0 -2
  457. package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +0 -1
  458. package/dist/src/registry/__tests__/tool-registry.test.js +0 -210
  459. package/dist/src/registry/__tests__/tool-registry.test.js.map +0 -1
  460. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts +0 -2
  461. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts.map +0 -1
  462. package/dist/src/retry/__tests__/backoff-strategy.test.js +0 -116
  463. package/dist/src/retry/__tests__/backoff-strategy.test.js.map +0 -1
  464. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts +0 -2
  465. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts.map +0 -1
  466. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js +0 -225
  467. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js.map +0 -1
  468. package/dist/src/sandbox/__tests__/default.test.browser.d.ts +0 -2
  469. package/dist/src/sandbox/__tests__/default.test.browser.d.ts.map +0 -1
  470. package/dist/src/sandbox/__tests__/default.test.browser.js +0 -11
  471. package/dist/src/sandbox/__tests__/default.test.browser.js.map +0 -1
  472. package/dist/src/sandbox/__tests__/default.test.node.d.ts +0 -2
  473. package/dist/src/sandbox/__tests__/default.test.node.d.ts.map +0 -1
  474. package/dist/src/sandbox/__tests__/default.test.node.js +0 -23
  475. package/dist/src/sandbox/__tests__/default.test.node.js.map +0 -1
  476. package/dist/src/sandbox/__tests__/docker.test.node.d.ts +0 -2
  477. package/dist/src/sandbox/__tests__/docker.test.node.d.ts.map +0 -1
  478. package/dist/src/sandbox/__tests__/docker.test.node.js +0 -89
  479. package/dist/src/sandbox/__tests__/docker.test.node.js.map +0 -1
  480. package/dist/src/sandbox/__tests__/errors.test.node.d.ts +0 -2
  481. package/dist/src/sandbox/__tests__/errors.test.node.d.ts.map +0 -1
  482. package/dist/src/sandbox/__tests__/errors.test.node.js +0 -33
  483. package/dist/src/sandbox/__tests__/errors.test.node.js.map +0 -1
  484. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts +0 -2
  485. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts.map +0 -1
  486. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js +0 -124
  487. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js.map +0 -1
  488. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts +0 -2
  489. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts.map +0 -1
  490. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +0 -298
  491. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +0 -1
  492. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts +0 -2
  493. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts.map +0 -1
  494. package/dist/src/sandbox/__tests__/ssh.test.node.js +0 -262
  495. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +0 -1
  496. package/dist/src/session/__tests__/file-storage.test.node.d.ts +0 -2
  497. package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +0 -1
  498. package/dist/src/session/__tests__/file-storage.test.node.js +0 -278
  499. package/dist/src/session/__tests__/file-storage.test.node.js.map +0 -1
  500. package/dist/src/session/__tests__/s3-storage.test.d.ts +0 -2
  501. package/dist/src/session/__tests__/s3-storage.test.d.ts.map +0 -1
  502. package/dist/src/session/__tests__/s3-storage.test.js +0 -461
  503. package/dist/src/session/__tests__/s3-storage.test.js.map +0 -1
  504. package/dist/src/session/__tests__/session-manager.test.d.ts +0 -2
  505. package/dist/src/session/__tests__/session-manager.test.d.ts.map +0 -1
  506. package/dist/src/session/__tests__/session-manager.test.js +0 -832
  507. package/dist/src/session/__tests__/session-manager.test.js.map +0 -1
  508. package/dist/src/session/__tests__/validation.test.d.ts +0 -2
  509. package/dist/src/session/__tests__/validation.test.d.ts.map +0 -1
  510. package/dist/src/session/__tests__/validation.test.js +0 -47
  511. package/dist/src/session/__tests__/validation.test.js.map +0 -1
  512. package/dist/src/telemetry/__tests__/config.test.d.ts +0 -2
  513. package/dist/src/telemetry/__tests__/config.test.d.ts.map +0 -1
  514. package/dist/src/telemetry/__tests__/config.test.js +0 -64
  515. package/dist/src/telemetry/__tests__/config.test.js.map +0 -1
  516. package/dist/src/telemetry/__tests__/config.test.node.d.ts +0 -2
  517. package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +0 -1
  518. package/dist/src/telemetry/__tests__/config.test.node.js +0 -164
  519. package/dist/src/telemetry/__tests__/config.test.node.js.map +0 -1
  520. package/dist/src/telemetry/__tests__/json.test.d.ts +0 -2
  521. package/dist/src/telemetry/__tests__/json.test.d.ts.map +0 -1
  522. package/dist/src/telemetry/__tests__/json.test.js +0 -89
  523. package/dist/src/telemetry/__tests__/json.test.js.map +0 -1
  524. package/dist/src/telemetry/__tests__/local-trace.test.d.ts +0 -2
  525. package/dist/src/telemetry/__tests__/local-trace.test.d.ts.map +0 -1
  526. package/dist/src/telemetry/__tests__/local-trace.test.js +0 -158
  527. package/dist/src/telemetry/__tests__/local-trace.test.js.map +0 -1
  528. package/dist/src/telemetry/__tests__/meter.test.d.ts +0 -2
  529. package/dist/src/telemetry/__tests__/meter.test.d.ts.map +0 -1
  530. package/dist/src/telemetry/__tests__/meter.test.js +0 -695
  531. package/dist/src/telemetry/__tests__/meter.test.js.map +0 -1
  532. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +0 -2
  533. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +0 -1
  534. package/dist/src/telemetry/__tests__/tracer.test.node.js +0 -958
  535. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +0 -1
  536. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts +0 -2
  537. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts.map +0 -1
  538. package/dist/src/tools/__tests__/structured-output-tool.test.js +0 -84
  539. package/dist/src/tools/__tests__/structured-output-tool.test.js.map +0 -1
  540. package/dist/src/tools/__tests__/tool-factory.test.d.ts +0 -2
  541. package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +0 -1
  542. package/dist/src/tools/__tests__/tool-factory.test.js +0 -98
  543. package/dist/src/tools/__tests__/tool-factory.test.js.map +0 -1
  544. package/dist/src/tools/__tests__/tool.test.d.ts +0 -2
  545. package/dist/src/tools/__tests__/tool.test.d.ts.map +0 -1
  546. package/dist/src/tools/__tests__/tool.test.js +0 -1043
  547. package/dist/src/tools/__tests__/tool.test.js.map +0 -1
  548. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts +0 -2
  549. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts.map +0 -1
  550. package/dist/src/tools/__tests__/zod-tool.test-d.js +0 -227
  551. package/dist/src/tools/__tests__/zod-tool.test-d.js.map +0 -1
  552. package/dist/src/tools/__tests__/zod-tool.test.d.ts +0 -2
  553. package/dist/src/tools/__tests__/zod-tool.test.d.ts.map +0 -1
  554. package/dist/src/tools/__tests__/zod-tool.test.js +0 -563
  555. package/dist/src/tools/__tests__/zod-tool.test.js.map +0 -1
  556. package/dist/src/types/__tests__/agent.test.d.ts +0 -2
  557. package/dist/src/types/__tests__/agent.test.d.ts.map +0 -1
  558. package/dist/src/types/__tests__/agent.test.js +0 -476
  559. package/dist/src/types/__tests__/agent.test.js.map +0 -1
  560. package/dist/src/types/__tests__/citations.test.d.ts +0 -2
  561. package/dist/src/types/__tests__/citations.test.d.ts.map +0 -1
  562. package/dist/src/types/__tests__/citations.test.js +0 -104
  563. package/dist/src/types/__tests__/citations.test.js.map +0 -1
  564. package/dist/src/types/__tests__/json.test.d.ts +0 -2
  565. package/dist/src/types/__tests__/json.test.d.ts.map +0 -1
  566. package/dist/src/types/__tests__/json.test.js +0 -298
  567. package/dist/src/types/__tests__/json.test.js.map +0 -1
  568. package/dist/src/types/__tests__/media.test.d.ts +0 -2
  569. package/dist/src/types/__tests__/media.test.d.ts.map +0 -1
  570. package/dist/src/types/__tests__/media.test.js +0 -478
  571. package/dist/src/types/__tests__/media.test.js.map +0 -1
  572. package/dist/src/types/__tests__/messages.test.d.ts +0 -2
  573. package/dist/src/types/__tests__/messages.test.d.ts.map +0 -1
  574. package/dist/src/types/__tests__/messages.test.js +0 -681
  575. package/dist/src/types/__tests__/messages.test.js.map +0 -1
  576. package/dist/src/types/__tests__/validation.test.d.ts +0 -2
  577. package/dist/src/types/__tests__/validation.test.d.ts.map +0 -1
  578. package/dist/src/types/__tests__/validation.test.js +0 -30
  579. package/dist/src/types/__tests__/validation.test.js.map +0 -1
  580. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts +0 -2
  581. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts.map +0 -1
  582. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js +0 -756
  583. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js.map +0 -1
  584. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts +0 -2
  585. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts.map +0 -1
  586. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js +0 -358
  587. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js.map +0 -1
  588. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts +0 -2
  589. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts.map +0 -1
  590. package/dist/src/vended-interventions/steering/__tests__/handler.test.js +0 -163
  591. package/dist/src/vended-interventions/steering/__tests__/handler.test.js.map +0 -1
  592. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts +0 -2
  593. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts.map +0 -1
  594. package/dist/src/vended-interventions/steering/__tests__/llm.test.js +0 -60
  595. package/dist/src/vended-interventions/steering/__tests__/llm.test.js.map +0 -1
  596. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts +0 -2
  597. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts.map +0 -1
  598. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js +0 -94
  599. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js.map +0 -1
  600. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.d.ts +0 -2
  601. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.d.ts.map +0 -1
  602. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.js +0 -758
  603. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.js.map +0 -1
  604. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts +0 -2
  605. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts.map +0 -1
  606. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js +0 -96
  607. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js.map +0 -1
  608. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts +0 -2
  609. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts.map +0 -1
  610. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js +0 -68
  611. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js.map +0 -1
  612. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts +0 -2
  613. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts.map +0 -1
  614. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +0 -539
  615. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +0 -1
  616. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts +0 -2
  617. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts.map +0 -1
  618. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +0 -97
  619. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +0 -1
  620. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts +0 -2
  621. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts.map +0 -1
  622. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js +0 -149
  623. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js.map +0 -1
  624. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts +0 -2
  625. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts.map +0 -1
  626. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +0 -216
  627. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +0 -1
  628. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts +0 -2
  629. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts.map +0 -1
  630. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js +0 -78
  631. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js.map +0 -1
  632. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts +0 -2
  633. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts.map +0 -1
  634. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js +0 -736
  635. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js.map +0 -1
  636. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.d.ts +0 -2
  637. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.d.ts.map +0 -1
  638. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +0 -482
  639. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +0 -1
  640. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.d.ts +0 -2
  641. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.d.ts.map +0 -1
  642. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.js +0 -476
  643. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.js.map +0 -1
  644. package/dist/src/vended-tools/bash/__tests__/bash.test.node.d.ts +0 -2
  645. package/dist/src/vended-tools/bash/__tests__/bash.test.node.d.ts.map +0 -1
  646. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +0 -390
  647. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +0 -1
  648. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts +0 -2
  649. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts.map +0 -1
  650. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +0 -452
  651. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +0 -1
  652. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts +0 -2
  653. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts.map +0 -1
  654. package/dist/src/vended-tools/http-request/__tests__/http-request.test.js +0 -189
  655. package/dist/src/vended-tools/http-request/__tests__/http-request.test.js.map +0 -1
  656. package/dist/src/vended-tools/notebook/__tests__/notebook.test.d.ts +0 -2
  657. package/dist/src/vended-tools/notebook/__tests__/notebook.test.d.ts.map +0 -1
  658. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +0 -388
  659. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +0 -1
@@ -1,639 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { MemoryManager } from '../../memory-manager.js';
3
- import { InvocationTrigger, IntervalTrigger } from '../triggers.js';
4
- import { ExtractionCoordinator, SAVE_FAILURES_BEFORE_BACKOFF, BACKOFF_PROBE_INTERVAL, } from '../coordinator.js';
5
- import { resolveExtractionConfig } from '../resolve-extraction-config.js';
6
- import { Tracer } from '../../../telemetry/tracer.js';
7
- import { Message, TextBlock, ToolUseBlock } from '../../../types/messages.js';
8
- import { AfterInvocationEvent, MessageAddedEvent } from '../../../hooks/events.js';
9
- import { createMockAgent } from '../../../__fixtures__/agent-helpers.js';
10
- import { MockMessageModel } from '../../../__fixtures__/mock-message-model.js';
11
- /**
12
- * Builds a writable store with an extraction config. `sink` chooses which write method(s) it has,
13
- * letting tests target each route (extractor → `add`; no extractor → `addMessages`) and the
14
- * construction-time sink validation.
15
- */
16
- function createExtractionStore(name, extraction, sink = 'both', options) {
17
- const store = {
18
- name,
19
- writable: true,
20
- extraction,
21
- search: vi.fn().mockResolvedValue(options?.entries ?? []),
22
- add: vi.fn().mockResolvedValue(undefined),
23
- addMessages: vi.fn().mockResolvedValue(undefined),
24
- };
25
- if (sink === 'add')
26
- delete store.addMessages;
27
- if (sink === 'addMessages')
28
- delete store.add;
29
- return store;
30
- }
31
- /** Wraps a store into the {@link ExtractionBinding} pair the coordinator takes, resolving its config. */
32
- function asExtractionStore(store) {
33
- return { store, config: resolveExtractionConfig(store.extraction, store) };
34
- }
35
- function userMsg(text) {
36
- return new Message({ role: 'user', content: [new TextBlock(text)] });
37
- }
38
- /** Drives the lifecycle: adds messages, then fires the AfterInvocationEvent hook(s). */
39
- async function addMessages(agent, ...messages) {
40
- for (const message of messages) {
41
- await invokeAll(agent, new MessageAddedEvent({ agent, message, invocationState: {} }));
42
- }
43
- }
44
- async function invokeAll(agent, event) {
45
- const hooks = agent.trackedHooks.filter((h) => h.eventType === event.constructor);
46
- for (const hook of hooks) {
47
- await hook.callback(event);
48
- }
49
- }
50
- /**
51
- * Fires the AfterInvocationEvent hook(s), then flushes the manager so the fire-and-forget background
52
- * extraction has completed before assertions run.
53
- */
54
- async function fireInvocation(agent, mm) {
55
- await invokeAll(agent, new AfterInvocationEvent({ agent, invocationState: {} }));
56
- await mm.flush();
57
- }
58
- describe('MemoryManager extraction', () => {
59
- describe('constructor validation', () => {
60
- it('throws when an extraction store is not writable', () => {
61
- const store = {
62
- name: 's',
63
- writable: false,
64
- search: vi.fn(),
65
- extraction: { trigger: [new InvocationTrigger()] },
66
- };
67
- expect(() => new MemoryManager({ stores: [store] })).toThrow('not writable');
68
- });
69
- it('throws when an extraction config has no triggers', () => {
70
- const store = createExtractionStore('s', { trigger: [] });
71
- expect(() => new MemoryManager({ stores: [store] })).toThrow('no triggers');
72
- });
73
- it('allows a store writable only via addMessages', () => {
74
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
75
- expect(() => new MemoryManager({ stores: [store] })).not.toThrow();
76
- });
77
- it('throws when a writable store has neither add nor addMessages', () => {
78
- const store = { name: 's', writable: true, search: vi.fn() };
79
- expect(() => new MemoryManager({ stores: [store] })).toThrow('no add or addMessages');
80
- });
81
- it('rejects addToolConfig targeting an addMessages-only store', () => {
82
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
83
- expect(() => new MemoryManager({ stores: [store], addToolConfig: true })).toThrow('no writable stores implement add');
84
- });
85
- it('throws when extraction has an extractor but the store has no add', () => {
86
- const extractor = { extract: vi.fn() };
87
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()], extractor }, 'addMessages');
88
- expect(() => new MemoryManager({ stores: [store] })).toThrow('has an extractor but no add method');
89
- });
90
- });
91
- describe('config resolution', () => {
92
- it('enables extraction with defaults via the boolean shorthand', async () => {
93
- // `extraction: true` on an addMessages-capable store -> passthrough (no implicit model call).
94
- const store = createExtractionStore('s', true, 'addMessages');
95
- const mm = new MemoryManager({ stores: [store] });
96
- const agent = createMockAgent();
97
- await mm.initAgent(agent);
98
- await addMessages(agent, userMsg('remember this'));
99
- // The default trigger fires every DEFAULT_EXTRACTION_TRIGGER_TURNS turns; flush forces the write.
100
- await mm.flush();
101
- expect(store.addMessages).toHaveBeenCalledTimes(1);
102
- });
103
- it('treats extraction: false as disabled (no hooks, no writes)', async () => {
104
- const store = createExtractionStore('s', false, 'addMessages');
105
- const mm = new MemoryManager({ stores: [store] });
106
- const agent = createMockAgent();
107
- await mm.initAgent(agent);
108
- await addMessages(agent, userMsg('ignored'));
109
- await mm.flush();
110
- expect(store.addMessages).not.toHaveBeenCalled();
111
- expect(agent.trackedHooks.filter((h) => h.eventType === AfterInvocationEvent)).toHaveLength(0);
112
- });
113
- it('defaults an add-only store to a ModelExtractor (extractor route)', async () => {
114
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'add');
115
- // The default ModelExtractor calls the agent's model; the mock returns a JSON array of facts.
116
- const model = new MockMessageModel();
117
- model.addTurn({ type: 'textBlock', text: '[{"content":"a durable fact"}]' });
118
- const mm = new MemoryManager({ stores: [store] });
119
- const agent = createMockAgent({ extra: { model: model } });
120
- await mm.initAgent(agent);
121
- await addMessages(agent, userMsg('I like dark mode'));
122
- await fireInvocation(agent, mm);
123
- expect(store.add).toHaveBeenCalledWith('a durable fact', undefined);
124
- });
125
- it('defaults a both-sinks store to the passthrough (no implicit model call)', async () => {
126
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'both');
127
- const mm = new MemoryManager({ stores: [store] });
128
- const agent = createMockAgent();
129
- await mm.initAgent(agent);
130
- await addMessages(agent, userMsg('hi'));
131
- await fireInvocation(agent, mm);
132
- expect(store.addMessages).toHaveBeenCalledTimes(1);
133
- expect(store.add).not.toHaveBeenCalled();
134
- });
135
- });
136
- describe('no-extractor passthrough', () => {
137
- it('hands the raw MessageData batch to addMessages, roles preserved', async () => {
138
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
139
- const mm = new MemoryManager({ stores: [store] });
140
- const agent = createMockAgent();
141
- await mm.initAgent(agent);
142
- await addMessages(agent, userMsg('I prefer dark mode'), new Message({ role: 'assistant', content: [new TextBlock('Noted')] }));
143
- await fireInvocation(agent, mm);
144
- expect(store.addMessages).toHaveBeenCalledTimes(1);
145
- const batch = store.addMessages.mock.calls[0][0];
146
- expect(batch).toHaveLength(2);
147
- expect(batch[0].role).toBe('user');
148
- expect(batch[1].role).toBe('assistant');
149
- });
150
- });
151
- describe('addMessages context (per-message seqs)', () => {
152
- it('passes sequenceNumbers index-aligned with the filtered batch', async () => {
153
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
154
- const mm = new MemoryManager({ stores: [store] });
155
- const agent = createMockAgent();
156
- await mm.initAgent(agent);
157
- await addMessages(agent, userMsg('first'), userMsg('second'));
158
- await fireInvocation(agent, mm);
159
- const batch = store.addMessages.mock.calls[0][0];
160
- const ctx = store.addMessages.mock.calls[0][1];
161
- // Assert the whole context so an unexpected field added to the envelope later is caught.
162
- expect(ctx).toEqual({ sequenceNumbers: [0, 1] });
163
- expect(ctx.sequenceNumbers).toHaveLength(batch.length);
164
- });
165
- it('keeps a message seq when a message before it is filtered to empty (gap)', async () => {
166
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
167
- const mm = new MemoryManager({ stores: [store] });
168
- const agent = createMockAgent();
169
- await mm.initAgent(agent);
170
- // seq 0 (kept), seq 1 (tool-only, filtered to empty and dropped), seq 2 (kept).
171
- const toolOnly = new Message({
172
- role: 'assistant',
173
- content: [new ToolUseBlock({ name: 't', toolUseId: '1', input: {} })],
174
- });
175
- await addMessages(agent, userMsg('a'), toolOnly, userMsg('b'));
176
- await fireInvocation(agent, mm);
177
- const batch = store.addMessages.mock.calls[0][0];
178
- const ctx = store.addMessages.mock.calls[0][1];
179
- expect(batch).toHaveLength(2);
180
- // The dropped message leaves a gap: 1 is missing, the surviving messages keep their own seqs.
181
- expect(ctx).toEqual({ sequenceNumbers: [0, 2] });
182
- });
183
- it('re-fires the same seqs for a multi-message batch whose save failed (stable across retries)', async () => {
184
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
185
- store.addMessages.mockRejectedValueOnce(new Error('backend down'));
186
- const mm = new MemoryManager({ stores: [store] });
187
- const agent = createMockAgent();
188
- await mm.initAgent(agent);
189
- await addMessages(agent, userMsg('first'), userMsg('second'));
190
- await fireInvocation(agent, mm); // fails, mark rolled back
191
- await fireInvocation(agent, mm); // retries the same batch
192
- expect(store.addMessages).toHaveBeenCalledTimes(2);
193
- const first = store.addMessages.mock.calls[0][1];
194
- const second = store.addMessages.mock.calls[1][1];
195
- expect(first).toEqual({ sequenceNumbers: [0, 1] });
196
- // The retry carries the identical context in order, not a fresh renumbering.
197
- expect(second).toEqual(first);
198
- });
199
- it('anchors the seq to the message, not the batch position', async () => {
200
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
201
- const mm = new MemoryManager({ stores: [store] });
202
- const agent = createMockAgent();
203
- await mm.initAgent(agent);
204
- // First turn (seq 0) saves cleanly; second turn (seq 1) fails then retries.
205
- await addMessages(agent, userMsg('turn one'));
206
- await fireInvocation(agent, mm);
207
- store.addMessages.mockRejectedValueOnce(new Error('backend down'));
208
- await addMessages(agent, userMsg('turn two'));
209
- await fireInvocation(agent, mm); // fails, rolled back
210
- await fireInvocation(agent, mm); // retries turn two
211
- expect(store.addMessages).toHaveBeenCalledTimes(3);
212
- const retried = store.addMessages.mock.calls[2][1];
213
- // Retried batch carries the message's original seq (1), not a renumbered 0.
214
- expect(retried).toEqual({ sequenceNumbers: [1] });
215
- });
216
- it('gives each store index-aligned seqs from the shared buffer', async () => {
217
- const a = createExtractionStore('a', { trigger: [new InvocationTrigger()] }, 'addMessages');
218
- const b = createExtractionStore('b', { trigger: [new InvocationTrigger()] }, 'addMessages');
219
- const mm = new MemoryManager({ stores: [a, b] });
220
- const agent = createMockAgent();
221
- await mm.initAgent(agent);
222
- await addMessages(agent, userMsg('first'), userMsg('second'));
223
- await fireInvocation(agent, mm);
224
- const ctxA = a.addMessages.mock.calls[0][1];
225
- const ctxB = b.addMessages.mock.calls[0][1];
226
- expect(ctxA).toEqual({ sequenceNumbers: [0, 1] });
227
- expect(ctxB).toEqual({ sequenceNumbers: [0, 1] });
228
- });
229
- it('does not pass sequenceNumbers on the extractor route', async () => {
230
- const extractor = { extract: vi.fn().mockResolvedValue([{ content: 'fact' }]) };
231
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()], extractor }, 'both');
232
- const mm = new MemoryManager({ stores: [store] });
233
- const agent = createMockAgent();
234
- await mm.initAgent(agent);
235
- await addMessages(agent, userMsg('something happened'));
236
- await fireInvocation(agent, mm);
237
- expect(store.addMessages).not.toHaveBeenCalled();
238
- // The extractor receives (messages, context); the context is the extractor envelope only
239
- // (defaultModel + tracer), with no sequenceNumbers — that field is for the addMessages route.
240
- expect(extractor.extract).toHaveBeenCalledTimes(1);
241
- const extractArgs = extractor.extract.mock.calls[0];
242
- expect(extractArgs).toHaveLength(2);
243
- expect(extractArgs[1]).not.toHaveProperty('sequenceNumbers');
244
- expect(extractArgs[1]).toHaveProperty('defaultModel');
245
- });
246
- });
247
- describe('extractor route', () => {
248
- it('calls the extractor and writes each entry via add', async () => {
249
- const extractor = {
250
- extract: vi.fn().mockResolvedValue([{ content: 'fact one' }, { content: 'fact two', metadata: { k: 'v' } }]),
251
- };
252
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()], extractor }, 'both');
253
- const mm = new MemoryManager({ stores: [store] });
254
- const agent = createMockAgent();
255
- await mm.initAgent(agent);
256
- await addMessages(agent, userMsg('something happened'));
257
- await fireInvocation(agent, mm);
258
- expect(extractor.extract).toHaveBeenCalledTimes(1);
259
- expect(store.add).toHaveBeenCalledTimes(2);
260
- expect(store.add.mock.calls[0][0]).toBe('fact one');
261
- expect(store.add.mock.calls[1][0]).toBe('fact two');
262
- expect(store.add.mock.calls[1][1]).toEqual({ k: 'v' });
263
- // Extractor route never uses the batch sink.
264
- expect(store.addMessages).not.toHaveBeenCalled();
265
- });
266
- it('passes the agent model as defaultModel to the extractor', async () => {
267
- const extractor = { extract: vi.fn().mockResolvedValue([]) };
268
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()], extractor });
269
- const mm = new MemoryManager({ stores: [store] });
270
- const fakeModel = { id: 'model' };
271
- const agent = createMockAgent({ extra: { model: fakeModel } });
272
- await mm.initAgent(agent);
273
- await addMessages(agent, userMsg('hi'));
274
- await fireInvocation(agent, mm);
275
- expect(extractor.extract).toHaveBeenCalledWith(expect.any(Array), expect.objectContaining({ defaultModel: fakeModel }));
276
- });
277
- it('writes entries concurrently rather than serially', async () => {
278
- // Both add() calls should be in flight before either resolves -> the second is invoked while
279
- // the first is still pending (would be impossible with a serial await loop).
280
- let firstInvokedDuringSecond = false;
281
- let secondStarted = false;
282
- const extractor = {
283
- extract: vi.fn().mockResolvedValue([{ content: 'a' }, { content: 'b' }]),
284
- };
285
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()], extractor }, 'add');
286
- let firstResolve;
287
- store.add
288
- .mockImplementationOnce(() => new Promise((resolve) => {
289
- firstResolve = () => {
290
- firstInvokedDuringSecond = secondStarted;
291
- resolve();
292
- };
293
- }))
294
- .mockImplementationOnce(() => {
295
- secondStarted = true;
296
- firstResolve();
297
- return Promise.resolve();
298
- });
299
- const mm = new MemoryManager({ stores: [store] });
300
- const agent = createMockAgent();
301
- await mm.initAgent(agent);
302
- await addMessages(agent, userMsg('x'));
303
- await fireInvocation(agent, mm);
304
- expect(store.add).toHaveBeenCalledTimes(2);
305
- expect(firstInvokedDuringSecond).toBe(true);
306
- });
307
- it('rolls back and retries the whole batch if any entry write fails', async () => {
308
- const extractor = {
309
- extract: vi.fn().mockResolvedValue([{ content: 'a' }, { content: 'b' }]),
310
- };
311
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()], extractor }, 'add');
312
- // First batch: second entry fails -> AggregateError -> mark rolled back.
313
- store.add.mockResolvedValueOnce(undefined).mockRejectedValueOnce(new Error('write failed'));
314
- const mm = new MemoryManager({ stores: [store] });
315
- const agent = createMockAgent();
316
- await mm.initAgent(agent);
317
- await addMessages(agent, userMsg('x'));
318
- await fireInvocation(agent, mm); // fails, rolled back
319
- await fireInvocation(agent, mm); // retries the same batch
320
- // 2 writes first attempt + 2 on retry.
321
- expect(store.add).toHaveBeenCalledTimes(4);
322
- expect(extractor.extract).toHaveBeenCalledTimes(2);
323
- });
324
- });
325
- describe('message filter', () => {
326
- it('drops toolUse/toolResult blocks by default and empties', async () => {
327
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
328
- const mm = new MemoryManager({ stores: [store] });
329
- const agent = createMockAgent();
330
- await mm.initAgent(agent);
331
- const toolOnly = new Message({
332
- role: 'assistant',
333
- content: [new ToolUseBlock({ name: 't', toolUseId: '1', input: {} })],
334
- });
335
- await addMessages(agent, userMsg('keep me'), toolOnly);
336
- await fireInvocation(agent, mm);
337
- const batch = store.addMessages.mock.calls[0][0];
338
- // tool-only message dropped entirely; text message kept.
339
- expect(batch).toHaveLength(1);
340
- expect(batch[0].role).toBe('user');
341
- });
342
- it('honors a custom filter', async () => {
343
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()], filter: { exclude: ['text'] } }, 'addMessages');
344
- const mm = new MemoryManager({ stores: [store] });
345
- const agent = createMockAgent();
346
- await mm.initAgent(agent);
347
- await addMessages(agent, userMsg('this is text and should be excluded'));
348
- await fireInvocation(agent, mm);
349
- // The only message was text, excluded -> emptied -> nothing to write.
350
- expect(store.addMessages).not.toHaveBeenCalled();
351
- });
352
- });
353
- describe('high-water-mark dedup', () => {
354
- it('processes only messages added since the last fire', async () => {
355
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
356
- const mm = new MemoryManager({ stores: [store] });
357
- const agent = createMockAgent();
358
- await mm.initAgent(agent);
359
- await addMessages(agent, userMsg('turn one'));
360
- await fireInvocation(agent, mm);
361
- await addMessages(agent, userMsg('turn two'));
362
- await fireInvocation(agent, mm);
363
- expect(store.addMessages).toHaveBeenCalledTimes(2);
364
- expect(store.addMessages.mock.calls[0][0]).toHaveLength(1);
365
- const second = store.addMessages.mock.calls[1][0];
366
- expect(second).toHaveLength(1);
367
- expect(second[0].content[0].text).toBe('turn two');
368
- });
369
- it('does nothing when no new messages since the mark', async () => {
370
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
371
- const mm = new MemoryManager({ stores: [store] });
372
- const agent = createMockAgent();
373
- await mm.initAgent(agent);
374
- await addMessages(agent, userMsg('only turn'));
375
- await fireInvocation(agent, mm);
376
- await fireInvocation(agent, mm); // no new messages
377
- expect(store.addMessages).toHaveBeenCalledTimes(1);
378
- });
379
- it('retries the same messages on the next fire if a write fails', async () => {
380
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
381
- store.addMessages.mockRejectedValueOnce(new Error('backend down'));
382
- const mm = new MemoryManager({ stores: [store] });
383
- const agent = createMockAgent();
384
- await mm.initAgent(agent);
385
- await addMessages(agent, userMsg('important'));
386
- await fireInvocation(agent, mm); // fails, mark rolled back
387
- await fireInvocation(agent, mm); // retries
388
- expect(store.addMessages).toHaveBeenCalledTimes(2);
389
- expect(store.addMessages.mock.calls[1][0]).toHaveLength(1);
390
- });
391
- });
392
- describe('backing off and recovering from a failing store', () => {
393
- /** Runs one turn: adds a message, fires the trigger, flushes. */
394
- async function turn(agent, mm, text) {
395
- await addMessages(agent, userMsg(text));
396
- await fireInvocation(agent, mm);
397
- }
398
- /** A coordinator with one always-failing store, driven via process() for exact attempt counts. */
399
- function failingCoordinator() {
400
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
401
- store.addMessages.mockRejectedValue(new Error('backend down'));
402
- const coordinator = new ExtractionCoordinator([asExtractionStore(store)], {}, new Tracer());
403
- return { coordinator, store };
404
- }
405
- it('backs off to periodic probes after SAVE_FAILURES_BEFORE_BACKOFF failures in a row', async () => {
406
- const { coordinator, store } = failingCoordinator();
407
- // Each call buffers a message and requests a save; every save fails. Run enough backed-off
408
- // requests for exactly two probe intervals.
409
- const PROBES = 2;
410
- for (let i = 0; i < SAVE_FAILURES_BEFORE_BACKOFF + BACKOFF_PROBE_INTERVAL * PROBES; i++) {
411
- coordinator.record(userMsg(`m${i}`).toJSON());
412
- await coordinator.process(store);
413
- }
414
- // Attempts every request until backoff, then only every BACKOFF_PROBE_INTERVAL-th request.
415
- expect(store.addMessages).toHaveBeenCalledTimes(SAVE_FAILURES_BEFORE_BACKOFF + PROBES);
416
- });
417
- it('recovers and saves the buffered backlog when the store comes back', async () => {
418
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
419
- store.addMessages.mockRejectedValue(new Error('down'));
420
- const mm = new MemoryManager({ stores: [store] });
421
- const agent = createMockAgent();
422
- await mm.initAgent(agent);
423
- // Enter backoff.
424
- for (let i = 0; i < SAVE_FAILURES_BEFORE_BACKOFF; i++) {
425
- await turn(agent, mm, `down${i}`);
426
- }
427
- // Store recovers; run probe-interval turns so a probe lands and succeeds.
428
- store.addMessages.mockReset();
429
- store.addMessages.mockResolvedValue(undefined);
430
- for (let i = 0; i < BACKOFF_PROBE_INTERVAL; i++) {
431
- await turn(agent, mm, `up${i}`);
432
- }
433
- // The recovering probe saved, and its batch includes the messages buffered during the outage.
434
- expect(store.addMessages).toHaveBeenCalled();
435
- const saved = store.addMessages.mock.calls.flatMap((c) => c[0]);
436
- const texts = saved.flatMap((m) => m.content.map((b) => ('text' in b ? b.text : '')));
437
- expect(texts).toContain('down0');
438
- expect(texts).toContain('up0');
439
- });
440
- it('a healthy store keeps saving every request while a sibling is backed off', async () => {
441
- const bad = createExtractionStore('bad', { trigger: [new InvocationTrigger()] }, 'addMessages');
442
- bad.addMessages.mockRejectedValue(new Error('down'));
443
- const good = createExtractionStore('good', { trigger: [new InvocationTrigger()] }, 'addMessages');
444
- const coordinator = new ExtractionCoordinator([asExtractionStore(bad), asExtractionStore(good)], {}, new Tracer());
445
- const PROBES = 2;
446
- const requests = SAVE_FAILURES_BEFORE_BACKOFF + BACKOFF_PROBE_INTERVAL * PROBES;
447
- for (let i = 0; i < requests; i++) {
448
- coordinator.record(userMsg(`m${i}`).toJSON());
449
- await coordinator.process(bad);
450
- await coordinator.process(good);
451
- }
452
- // Good store saves every request; bad store stops at backoff + its probes.
453
- expect(good.addMessages).toHaveBeenCalledTimes(requests);
454
- expect(bad.addMessages).toHaveBeenCalledTimes(SAVE_FAILURES_BEFORE_BACKOFF + PROBES);
455
- });
456
- it('flush resolves even when a store is failing', async () => {
457
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
458
- store.addMessages.mockRejectedValue(new Error('down'));
459
- const mm = new MemoryManager({ stores: [store] });
460
- const agent = createMockAgent();
461
- await mm.initAgent(agent);
462
- await addMessages(agent, userMsg('x'));
463
- await expect(fireInvocation(agent, mm)).resolves.toBeUndefined();
464
- await expect(mm.flush()).resolves.toBeUndefined();
465
- });
466
- it('flush bypasses backoff and writes the backlog of a recovered store', async () => {
467
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
468
- store.addMessages.mockRejectedValue(new Error('down'));
469
- const coordinator = new ExtractionCoordinator([asExtractionStore(store)], {}, new Tracer());
470
- // Drive the store into backoff.
471
- for (let i = 0; i < SAVE_FAILURES_BEFORE_BACKOFF; i++) {
472
- coordinator.record(userMsg(`down${i}`).toJSON());
473
- await coordinator.process(store);
474
- }
475
- // Store recovers and a final message arrives, but no probe has landed yet.
476
- store.addMessages.mockReset();
477
- store.addMessages.mockResolvedValue(undefined);
478
- coordinator.record(userMsg('final').toJSON());
479
- // A single flush must write the backlog despite backoff (not be probe-gated to a no-op).
480
- await coordinator.flush();
481
- expect(store.addMessages).toHaveBeenCalledTimes(1);
482
- const saved = store.addMessages.mock.calls[0][0].flatMap((m) => m.content.map((b) => ('text' in b ? b.text : '')));
483
- expect(saved).toContain('final');
484
- expect(saved).toContain('down0');
485
- });
486
- it('a fully-filtered (empty) turn does not reset the failure streak', async () => {
487
- // A no-extractor store; the default filter drops tool blocks. A turn of only tool blocks
488
- // filters to empty, so the backend is never called - it must not be mistaken for a recovery and
489
- // clear the prior failures. We prove that by showing backoff still engages at the threshold.
490
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
491
- store.addMessages.mockRejectedValue(new Error('down'));
492
- const coordinator = new ExtractionCoordinator([asExtractionStore(store)], {}, new Tracer());
493
- // One short of backoff.
494
- for (let i = 0; i < SAVE_FAILURES_BEFORE_BACKOFF - 1; i++) {
495
- coordinator.record(userMsg(`m${i}`).toJSON());
496
- await coordinator.process(store);
497
- }
498
- // An all-tool-blocks turn filters to empty: backend not called, streak not reset.
499
- const toolOnly = new Message({
500
- role: 'assistant',
501
- content: [new ToolUseBlock({ name: 't', toolUseId: '1', input: {} })],
502
- });
503
- coordinator.record(toolOnly.toJSON());
504
- await coordinator.process(store);
505
- // The Nth real failure now tips into backoff (it would not if the empty turn had reset to 0).
506
- coordinator.record(userMsg('nth').toJSON());
507
- await coordinator.process(store);
508
- // Backed off: the next request is probe-gated, so the backend isn't called immediately.
509
- store.addMessages.mockClear();
510
- coordinator.record(userMsg('after').toJSON());
511
- await coordinator.process(store);
512
- expect(store.addMessages).not.toHaveBeenCalled();
513
- });
514
- });
515
- describe('triggers', () => {
516
- it('IntervalTrigger fires every N invocations', async () => {
517
- const store = createExtractionStore('s', { trigger: [new IntervalTrigger({ turns: 2 })] }, 'addMessages');
518
- const mm = new MemoryManager({ stores: [store] });
519
- const agent = createMockAgent();
520
- await mm.initAgent(agent);
521
- // Fire the raw hook (not the flushing helper) so we observe interval gating, not flush's
522
- // force-completion.
523
- await addMessages(agent, userMsg('a'));
524
- await invokeAll(agent, new AfterInvocationEvent({ agent, invocationState: {} })); // count 1, no fire
525
- expect(store.addMessages).not.toHaveBeenCalled();
526
- await addMessages(agent, userMsg('b'));
527
- await fireInvocation(agent, mm); // count 2, fire (+ flush drains it)
528
- expect(store.addMessages).toHaveBeenCalledTimes(1);
529
- expect(store.addMessages.mock.calls[0][0]).toHaveLength(2);
530
- });
531
- it('IntervalTrigger rejects non-positive turns', () => {
532
- expect(() => new IntervalTrigger({ turns: 0 })).toThrow('positive integer');
533
- });
534
- it('accepts a single trigger (not wrapped in an array)', async () => {
535
- const store = createExtractionStore('s', { trigger: new InvocationTrigger() }, 'addMessages');
536
- const mm = new MemoryManager({ stores: [store] });
537
- const agent = createMockAgent();
538
- await mm.initAgent(agent);
539
- await addMessages(agent, userMsg('hi'));
540
- await fireInvocation(agent, mm);
541
- expect(store.addMessages).toHaveBeenCalledTimes(1);
542
- });
543
- it('composes multiple triggers (extraction fires on any)', async () => {
544
- // Both an interval(every 2) and an invocation(every turn): the invocation trigger fires turn 1.
545
- const store = createExtractionStore('s', { trigger: [new IntervalTrigger({ turns: 2 }), new InvocationTrigger()] }, 'addMessages');
546
- const mm = new MemoryManager({ stores: [store] });
547
- const agent = createMockAgent();
548
- await mm.initAgent(agent);
549
- await addMessages(agent, userMsg('a'));
550
- await fireInvocation(agent, mm);
551
- // Invocation trigger fired on turn 1 even though interval would not have.
552
- expect(store.addMessages).toHaveBeenCalledTimes(1);
553
- });
554
- it('does not register hooks when no store has extraction', async () => {
555
- const store = { name: 's', writable: true, search: vi.fn(), add: vi.fn() };
556
- const mm = new MemoryManager({ stores: [store] });
557
- const agent = createMockAgent();
558
- await mm.initAgent(agent);
559
- expect(agent.trackedHooks).toHaveLength(0);
560
- });
561
- });
562
- describe('background execution', () => {
563
- it('does not block the AfterInvocationEvent hook on the store write', async () => {
564
- // A store whose write hangs until we release it. If extraction blocked the loop, awaiting the
565
- // hook would never resolve while the write is pending.
566
- let release;
567
- const blocked = new Promise((resolve) => {
568
- release = resolve;
569
- });
570
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
571
- store.addMessages.mockReturnValue(blocked);
572
- const mm = new MemoryManager({ stores: [store] });
573
- const agent = createMockAgent();
574
- await mm.initAgent(agent);
575
- await addMessages(agent, userMsg('hello'));
576
- // Fire the hook directly (not via the flushing helper) — it must resolve while the write hangs.
577
- await invokeAll(agent, new AfterInvocationEvent({ agent, invocationState: {} }));
578
- expect(store.addMessages).toHaveBeenCalledTimes(1);
579
- // The write is still pending; releasing it lets flush() resolve.
580
- release();
581
- await mm.flush();
582
- });
583
- it('flush awaits the in-flight extraction write', async () => {
584
- let resolved = false;
585
- let release;
586
- const blocked = new Promise((resolve) => {
587
- release = () => {
588
- resolved = true;
589
- resolve();
590
- };
591
- });
592
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
593
- store.addMessages.mockReturnValue(blocked);
594
- const mm = new MemoryManager({ stores: [store] });
595
- const agent = createMockAgent();
596
- await mm.initAgent(agent);
597
- await addMessages(agent, userMsg('hello'));
598
- await invokeAll(agent, new AfterInvocationEvent({ agent, invocationState: {} }));
599
- const flushed = mm.flush();
600
- release();
601
- await flushed;
602
- expect(resolved).toBe(true);
603
- });
604
- it('flush is a no-op when extraction is not configured', async () => {
605
- const store = { name: 's', writable: true, search: vi.fn(), add: vi.fn() };
606
- const mm = new MemoryManager({ stores: [store] });
607
- mm.initAgent(createMockAgent());
608
- await expect(mm.flush()).resolves.toBeUndefined();
609
- });
610
- it('flush force-extracts a buffered tail whose trigger never fired', async () => {
611
- // IntervalTrigger(5) but the session ends after 2 turns -> the trigger never fires. flush()
612
- // must still extract the buffered messages rather than lose them on graceful shutdown.
613
- const store = createExtractionStore('s', { trigger: [new IntervalTrigger({ turns: 5 })] }, 'addMessages');
614
- const mm = new MemoryManager({ stores: [store] });
615
- const agent = createMockAgent();
616
- await mm.initAgent(agent);
617
- await addMessages(agent, userMsg('a'));
618
- await invokeAll(agent, new AfterInvocationEvent({ agent, invocationState: {} })); // count 1, no fire
619
- await addMessages(agent, userMsg('b'));
620
- await invokeAll(agent, new AfterInvocationEvent({ agent, invocationState: {} })); // count 2, no fire
621
- expect(store.addMessages).not.toHaveBeenCalled();
622
- await mm.flush();
623
- expect(store.addMessages).toHaveBeenCalledTimes(1);
624
- expect(store.addMessages.mock.calls[0][0]).toHaveLength(2);
625
- });
626
- it('flush does not re-extract messages already processed by a fired trigger', async () => {
627
- const store = createExtractionStore('s', { trigger: [new InvocationTrigger()] }, 'addMessages');
628
- const mm = new MemoryManager({ stores: [store] });
629
- const agent = createMockAgent();
630
- await mm.initAgent(agent);
631
- await addMessages(agent, userMsg('a'));
632
- await fireInvocation(agent, mm); // invocation trigger already extracted + flushed
633
- expect(store.addMessages).toHaveBeenCalledTimes(1);
634
- await mm.flush(); // nothing fresh -> no-op
635
- expect(store.addMessages).toHaveBeenCalledTimes(1);
636
- });
637
- });
638
- });
639
- //# sourceMappingURL=extraction.test.js.map