@strands-agents/sdk 1.7.0 → 1.9.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 (686) hide show
  1. package/dist/src/agent/agent.d.ts +32 -2
  2. package/dist/src/agent/agent.d.ts.map +1 -1
  3. package/dist/src/agent/agent.js +92 -4
  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/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  8. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +2 -0
  9. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  10. package/dist/src/errors.d.ts +7 -0
  11. package/dist/src/errors.d.ts.map +1 -1
  12. package/dist/src/errors.js +10 -0
  13. package/dist/src/errors.js.map +1 -1
  14. package/dist/src/experimental/checkpoint.d.ts +118 -0
  15. package/dist/src/experimental/checkpoint.d.ts.map +1 -0
  16. package/dist/src/experimental/checkpoint.js +108 -0
  17. package/dist/src/experimental/checkpoint.js.map +1 -0
  18. package/dist/src/experimental/index.d.ts +10 -0
  19. package/dist/src/experimental/index.d.ts.map +1 -0
  20. package/dist/src/experimental/index.js +9 -0
  21. package/dist/src/experimental/index.js.map +1 -0
  22. package/dist/src/index.d.ts +1 -1
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +1 -1
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/index.node.d.ts.map +1 -1
  27. package/dist/src/index.node.js +3 -0
  28. package/dist/src/index.node.js.map +1 -1
  29. package/dist/src/injection/message-injection.d.ts.map +1 -1
  30. package/dist/src/injection/message-injection.js +2 -0
  31. package/dist/src/injection/message-injection.js.map +1 -1
  32. package/dist/src/interventions/actions.d.ts.map +1 -1
  33. package/dist/src/interventions/actions.js.map +1 -1
  34. package/dist/src/{mcp.d.ts → mcp/client.d.ts} +13 -4
  35. package/dist/src/mcp/client.d.ts.map +1 -0
  36. package/dist/src/{mcp.js → mcp/client.js} +15 -3
  37. package/dist/src/mcp/client.js.map +1 -0
  38. package/dist/src/mcp/config.d.ts +52 -0
  39. package/dist/src/mcp/config.d.ts.map +1 -0
  40. package/dist/src/mcp/config.js +12 -0
  41. package/dist/src/mcp/config.js.map +1 -0
  42. package/dist/src/mcp/config.node.d.ts +16 -0
  43. package/dist/src/mcp/config.node.d.ts.map +1 -0
  44. package/dist/src/mcp/config.node.js +145 -0
  45. package/dist/src/mcp/config.node.js.map +1 -0
  46. package/dist/src/mcp/index.d.ts +3 -0
  47. package/dist/src/mcp/index.d.ts.map +1 -0
  48. package/dist/src/mcp/index.js +2 -0
  49. package/dist/src/mcp/index.js.map +1 -0
  50. package/dist/src/models/model.d.ts.map +1 -1
  51. package/dist/src/models/model.js +2 -1
  52. package/dist/src/models/model.js.map +1 -1
  53. package/dist/src/multiagent/graph.d.ts +7 -0
  54. package/dist/src/multiagent/graph.d.ts.map +1 -1
  55. package/dist/src/multiagent/graph.js +22 -1
  56. package/dist/src/multiagent/graph.js.map +1 -1
  57. package/dist/src/multiagent/multiagent.d.ts +2 -1
  58. package/dist/src/multiagent/multiagent.d.ts.map +1 -1
  59. package/dist/src/multiagent/multiagent.js.map +1 -1
  60. package/dist/src/multiagent/nodes.d.ts +5 -0
  61. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  62. package/dist/src/multiagent/nodes.js +15 -0
  63. package/dist/src/multiagent/nodes.js.map +1 -1
  64. package/dist/src/multiagent/state.d.ts.map +1 -1
  65. package/dist/src/multiagent/state.js.map +1 -1
  66. package/dist/src/tools/function-tool.d.ts +1 -1
  67. package/dist/src/tools/function-tool.d.ts.map +1 -1
  68. package/dist/src/tools/function-tool.js +4 -12
  69. package/dist/src/tools/function-tool.js.map +1 -1
  70. package/dist/src/tools/mcp-tool.d.ts +2 -1
  71. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  72. package/dist/src/tools/mcp-tool.js +1 -0
  73. package/dist/src/tools/mcp-tool.js.map +1 -1
  74. package/dist/src/tools/tool-factory.d.ts +1 -1
  75. package/dist/src/tools/tool-factory.d.ts.map +1 -1
  76. package/dist/src/tools/types.d.ts +4 -0
  77. package/dist/src/tools/types.d.ts.map +1 -1
  78. package/dist/src/tools/zod-tool.d.ts +4 -2
  79. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  80. package/dist/src/tools/zod-tool.js.map +1 -1
  81. package/dist/src/tsconfig.tsbuildinfo +1 -1
  82. package/dist/src/types/agent.d.ts +18 -1
  83. package/dist/src/types/agent.d.ts.map +1 -1
  84. package/dist/src/types/agent.js +12 -0
  85. package/dist/src/types/agent.js.map +1 -1
  86. package/dist/src/types/media.d.ts.map +1 -1
  87. package/dist/src/types/media.js.map +1 -1
  88. package/dist/src/types/messages.d.ts +22 -1
  89. package/dist/src/types/messages.d.ts.map +1 -1
  90. package/dist/src/types/messages.js +22 -0
  91. package/dist/src/types/messages.js.map +1 -1
  92. package/dist/src/vended-memory-stores/test-memory-store/index.d.ts +2 -0
  93. package/dist/src/vended-memory-stores/test-memory-store/index.d.ts.map +1 -0
  94. package/dist/src/vended-memory-stores/test-memory-store/index.js +2 -0
  95. package/dist/src/vended-memory-stores/test-memory-store/index.js.map +1 -0
  96. package/dist/src/vended-memory-stores/test-memory-store/store.d.ts +122 -0
  97. package/dist/src/vended-memory-stores/test-memory-store/store.d.ts.map +1 -0
  98. package/dist/src/vended-memory-stores/test-memory-store/store.js +281 -0
  99. package/dist/src/vended-memory-stores/test-memory-store/store.js.map +1 -0
  100. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  101. package/dist/src/vended-plugins/context-offloader/search.js +4 -2
  102. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  103. package/dist/src/vended-plugins/context-offloader/storage.js +1 -1
  104. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  105. package/dist/src/vended-plugins/skills/skill.d.ts.map +1 -1
  106. package/dist/src/vended-plugins/skills/skill.js.map +1 -1
  107. package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
  108. package/package.json +41 -30
  109. package/dist/src/__fixtures__/agent-helpers.d.ts +0 -136
  110. package/dist/src/__fixtures__/agent-helpers.d.ts.map +0 -1
  111. package/dist/src/__fixtures__/agent-helpers.js +0 -156
  112. package/dist/src/__fixtures__/agent-helpers.js.map +0 -1
  113. package/dist/src/__fixtures__/environment.d.ts +0 -12
  114. package/dist/src/__fixtures__/environment.d.ts.map +0 -1
  115. package/dist/src/__fixtures__/environment.js +0 -12
  116. package/dist/src/__fixtures__/environment.js.map +0 -1
  117. package/dist/src/__fixtures__/metrics-helpers.d.ts +0 -55
  118. package/dist/src/__fixtures__/metrics-helpers.d.ts.map +0 -1
  119. package/dist/src/__fixtures__/metrics-helpers.js +0 -57
  120. package/dist/src/__fixtures__/metrics-helpers.js.map +0 -1
  121. package/dist/src/__fixtures__/mock-message-model.d.ts +0 -103
  122. package/dist/src/__fixtures__/mock-message-model.d.ts.map +0 -1
  123. package/dist/src/__fixtures__/mock-message-model.js +0 -245
  124. package/dist/src/__fixtures__/mock-message-model.js.map +0 -1
  125. package/dist/src/__fixtures__/mock-meter.d.ts +0 -32
  126. package/dist/src/__fixtures__/mock-meter.d.ts.map +0 -1
  127. package/dist/src/__fixtures__/mock-meter.js +0 -47
  128. package/dist/src/__fixtures__/mock-meter.js.map +0 -1
  129. package/dist/src/__fixtures__/mock-plugin.d.ts +0 -13
  130. package/dist/src/__fixtures__/mock-plugin.d.ts.map +0 -1
  131. package/dist/src/__fixtures__/mock-plugin.js +0 -35
  132. package/dist/src/__fixtures__/mock-plugin.js.map +0 -1
  133. package/dist/src/__fixtures__/mock-span.d.ts +0 -78
  134. package/dist/src/__fixtures__/mock-span.d.ts.map +0 -1
  135. package/dist/src/__fixtures__/mock-span.js +0 -93
  136. package/dist/src/__fixtures__/mock-span.js.map +0 -1
  137. package/dist/src/__fixtures__/mock-storage-provider.d.ts +0 -42
  138. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +0 -1
  139. package/dist/src/__fixtures__/mock-storage-provider.js +0 -122
  140. package/dist/src/__fixtures__/mock-storage-provider.js.map +0 -1
  141. package/dist/src/__fixtures__/model-test-helpers.d.ts +0 -56
  142. package/dist/src/__fixtures__/model-test-helpers.d.ts.map +0 -1
  143. package/dist/src/__fixtures__/model-test-helpers.js +0 -85
  144. package/dist/src/__fixtures__/model-test-helpers.js.map +0 -1
  145. package/dist/src/__fixtures__/register-node-defaults.d.ts +0 -2
  146. package/dist/src/__fixtures__/register-node-defaults.d.ts.map +0 -1
  147. package/dist/src/__fixtures__/register-node-defaults.js +0 -6
  148. package/dist/src/__fixtures__/register-node-defaults.js.map +0 -1
  149. package/dist/src/__fixtures__/slim-types.d.ts +0 -51
  150. package/dist/src/__fixtures__/slim-types.d.ts.map +0 -1
  151. package/dist/src/__fixtures__/slim-types.js +0 -6
  152. package/dist/src/__fixtures__/slim-types.js.map +0 -1
  153. package/dist/src/__fixtures__/test-sandbox.node.d.ts +0 -15
  154. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +0 -1
  155. package/dist/src/__fixtures__/test-sandbox.node.js +0 -23
  156. package/dist/src/__fixtures__/test-sandbox.node.js.map +0 -1
  157. package/dist/src/__fixtures__/tool-helpers.d.ts +0 -45
  158. package/dist/src/__fixtures__/tool-helpers.d.ts.map +0 -1
  159. package/dist/src/__fixtures__/tool-helpers.js +0 -101
  160. package/dist/src/__fixtures__/tool-helpers.js.map +0 -1
  161. package/dist/src/__tests__/default-slot.test.d.ts +0 -2
  162. package/dist/src/__tests__/default-slot.test.d.ts.map +0 -1
  163. package/dist/src/__tests__/default-slot.test.js +0 -33
  164. package/dist/src/__tests__/default-slot.test.js.map +0 -1
  165. package/dist/src/__tests__/errors.test.d.ts +0 -2
  166. package/dist/src/__tests__/errors.test.d.ts.map +0 -1
  167. package/dist/src/__tests__/errors.test.js +0 -170
  168. package/dist/src/__tests__/errors.test.js.map +0 -1
  169. package/dist/src/__tests__/index.test.d.ts +0 -2
  170. package/dist/src/__tests__/index.test.d.ts.map +0 -1
  171. package/dist/src/__tests__/index.test.js +0 -48
  172. package/dist/src/__tests__/index.test.js.map +0 -1
  173. package/dist/src/__tests__/interrupt.test.d.ts +0 -2
  174. package/dist/src/__tests__/interrupt.test.d.ts.map +0 -1
  175. package/dist/src/__tests__/interrupt.test.js +0 -264
  176. package/dist/src/__tests__/interrupt.test.js.map +0 -1
  177. package/dist/src/__tests__/mcp.test.d.ts +0 -2
  178. package/dist/src/__tests__/mcp.test.d.ts.map +0 -1
  179. package/dist/src/__tests__/mcp.test.js +0 -1003
  180. package/dist/src/__tests__/mcp.test.js.map +0 -1
  181. package/dist/src/__tests__/mime.test.d.ts +0 -2
  182. package/dist/src/__tests__/mime.test.d.ts.map +0 -1
  183. package/dist/src/__tests__/mime.test.js +0 -83
  184. package/dist/src/__tests__/mime.test.js.map +0 -1
  185. package/dist/src/__tests__/state-store.test.d.ts +0 -2
  186. package/dist/src/__tests__/state-store.test.d.ts.map +0 -1
  187. package/dist/src/__tests__/state-store.test.js +0 -285
  188. package/dist/src/__tests__/state-store.test.js.map +0 -1
  189. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts +0 -2
  190. package/dist/src/a2a/__tests__/a2a-agent.test.d.ts.map +0 -1
  191. package/dist/src/a2a/__tests__/a2a-agent.test.js +0 -383
  192. package/dist/src/a2a/__tests__/a2a-agent.test.js.map +0 -1
  193. package/dist/src/a2a/__tests__/adapters.test.d.ts +0 -2
  194. package/dist/src/a2a/__tests__/adapters.test.d.ts.map +0 -1
  195. package/dist/src/a2a/__tests__/adapters.test.js +0 -151
  196. package/dist/src/a2a/__tests__/adapters.test.js.map +0 -1
  197. package/dist/src/a2a/__tests__/async-lock.test.d.ts +0 -2
  198. package/dist/src/a2a/__tests__/async-lock.test.d.ts.map +0 -1
  199. package/dist/src/a2a/__tests__/async-lock.test.js +0 -137
  200. package/dist/src/a2a/__tests__/async-lock.test.js.map +0 -1
  201. package/dist/src/a2a/__tests__/events.test.d.ts +0 -2
  202. package/dist/src/a2a/__tests__/events.test.d.ts.map +0 -1
  203. package/dist/src/a2a/__tests__/events.test.js +0 -68
  204. package/dist/src/a2a/__tests__/events.test.js.map +0 -1
  205. package/dist/src/a2a/__tests__/executor.test.d.ts +0 -2
  206. package/dist/src/a2a/__tests__/executor.test.d.ts.map +0 -1
  207. package/dist/src/a2a/__tests__/executor.test.js +0 -345
  208. package/dist/src/a2a/__tests__/executor.test.js.map +0 -1
  209. package/dist/src/a2a/__tests__/server.test.d.ts +0 -2
  210. package/dist/src/a2a/__tests__/server.test.d.ts.map +0 -1
  211. package/dist/src/a2a/__tests__/server.test.js +0 -71
  212. package/dist/src/a2a/__tests__/server.test.js.map +0 -1
  213. package/dist/src/a2a/__tests__/server.test.node.d.ts +0 -2
  214. package/dist/src/a2a/__tests__/server.test.node.d.ts.map +0 -1
  215. package/dist/src/a2a/__tests__/server.test.node.js +0 -110
  216. package/dist/src/a2a/__tests__/server.test.node.js.map +0 -1
  217. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +0 -2
  218. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +0 -1
  219. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +0 -23
  220. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +0 -1
  221. package/dist/src/agent/__tests__/agent-as-tool.test.d.ts +0 -2
  222. package/dist/src/agent/__tests__/agent-as-tool.test.d.ts.map +0 -1
  223. package/dist/src/agent/__tests__/agent-as-tool.test.js +0 -347
  224. package/dist/src/agent/__tests__/agent-as-tool.test.js.map +0 -1
  225. package/dist/src/agent/__tests__/agent.cancel.test.d.ts +0 -2
  226. package/dist/src/agent/__tests__/agent.cancel.test.d.ts.map +0 -1
  227. package/dist/src/agent/__tests__/agent.cancel.test.js +0 -337
  228. package/dist/src/agent/__tests__/agent.cancel.test.js.map +0 -1
  229. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +0 -2
  230. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +0 -1
  231. package/dist/src/agent/__tests__/agent.concurrent.test.js +0 -488
  232. package/dist/src/agent/__tests__/agent.concurrent.test.js.map +0 -1
  233. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts +0 -2
  234. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts.map +0 -1
  235. package/dist/src/agent/__tests__/agent.context-manager.test.js +0 -106
  236. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +0 -1
  237. package/dist/src/agent/__tests__/agent.hook.test.d.ts +0 -2
  238. package/dist/src/agent/__tests__/agent.hook.test.d.ts.map +0 -1
  239. package/dist/src/agent/__tests__/agent.hook.test.js +0 -1332
  240. package/dist/src/agent/__tests__/agent.hook.test.js.map +0 -1
  241. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts +0 -2
  242. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts.map +0 -1
  243. package/dist/src/agent/__tests__/agent.interrupt.test.js +0 -779
  244. package/dist/src/agent/__tests__/agent.interrupt.test.js.map +0 -1
  245. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +0 -2
  246. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +0 -1
  247. package/dist/src/agent/__tests__/agent.invocation-state.test.js +0 -219
  248. package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +0 -1
  249. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts +0 -2
  250. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts.map +0 -1
  251. package/dist/src/agent/__tests__/agent.model-retry.test.js +0 -161
  252. package/dist/src/agent/__tests__/agent.model-retry.test.js.map +0 -1
  253. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +0 -2
  254. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +0 -1
  255. package/dist/src/agent/__tests__/agent.stateful-model.test.js +0 -169
  256. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +0 -1
  257. package/dist/src/agent/__tests__/agent.test.d.ts +0 -2
  258. package/dist/src/agent/__tests__/agent.test.d.ts.map +0 -1
  259. package/dist/src/agent/__tests__/agent.test.js +0 -1624
  260. package/dist/src/agent/__tests__/agent.test.js.map +0 -1
  261. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts +0 -2
  262. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts.map +0 -1
  263. package/dist/src/agent/__tests__/agent.tracer.test.node.js +0 -535
  264. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +0 -1
  265. package/dist/src/agent/__tests__/printer.test.d.ts +0 -2
  266. package/dist/src/agent/__tests__/printer.test.d.ts.map +0 -1
  267. package/dist/src/agent/__tests__/printer.test.js +0 -188
  268. package/dist/src/agent/__tests__/printer.test.js.map +0 -1
  269. package/dist/src/agent/__tests__/snapshot.test.d.ts +0 -2
  270. package/dist/src/agent/__tests__/snapshot.test.d.ts.map +0 -1
  271. package/dist/src/agent/__tests__/snapshot.test.js +0 -442
  272. package/dist/src/agent/__tests__/snapshot.test.js.map +0 -1
  273. package/dist/src/agent/__tests__/tool-caller.test.d.ts +0 -2
  274. package/dist/src/agent/__tests__/tool-caller.test.d.ts.map +0 -1
  275. package/dist/src/agent/__tests__/tool-caller.test.js +0 -459
  276. package/dist/src/agent/__tests__/tool-caller.test.js.map +0 -1
  277. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts +0 -2
  278. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts.map +0 -1
  279. package/dist/src/conversation-manager/__tests__/agentic-context.test.js +0 -332
  280. package/dist/src/conversation-manager/__tests__/agentic-context.test.js.map +0 -1
  281. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts +0 -2
  282. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts.map +0 -1
  283. package/dist/src/conversation-manager/__tests__/context-compression.test.js +0 -176
  284. package/dist/src/conversation-manager/__tests__/context-compression.test.js.map +0 -1
  285. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +0 -2
  286. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +0 -1
  287. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +0 -321
  288. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +0 -1
  289. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts +0 -2
  290. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts.map +0 -1
  291. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +0 -64
  292. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +0 -1
  293. package/dist/src/conversation-manager/__tests__/pin.test.d.ts +0 -2
  294. package/dist/src/conversation-manager/__tests__/pin.test.d.ts.map +0 -1
  295. package/dist/src/conversation-manager/__tests__/pin.test.js +0 -119
  296. package/dist/src/conversation-manager/__tests__/pin.test.js.map +0 -1
  297. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts +0 -2
  298. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts.map +0 -1
  299. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +0 -1080
  300. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +0 -1
  301. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.d.ts +0 -2
  302. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.d.ts.map +0 -1
  303. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +0 -400
  304. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +0 -1
  305. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts +0 -2
  306. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts.map +0 -1
  307. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js +0 -138
  308. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js.map +0 -1
  309. package/dist/src/hooks/__tests__/events.test.d.ts +0 -2
  310. package/dist/src/hooks/__tests__/events.test.d.ts.map +0 -1
  311. package/dist/src/hooks/__tests__/events.test.js +0 -1060
  312. package/dist/src/hooks/__tests__/events.test.js.map +0 -1
  313. package/dist/src/hooks/__tests__/registry.test.d.ts +0 -2
  314. package/dist/src/hooks/__tests__/registry.test.d.ts.map +0 -1
  315. package/dist/src/hooks/__tests__/registry.test.js +0 -325
  316. package/dist/src/hooks/__tests__/registry.test.js.map +0 -1
  317. package/dist/src/injection/__tests__/message-injection.test.d.ts +0 -2
  318. package/dist/src/injection/__tests__/message-injection.test.d.ts.map +0 -1
  319. package/dist/src/injection/__tests__/message-injection.test.js +0 -200
  320. package/dist/src/injection/__tests__/message-injection.test.js.map +0 -1
  321. package/dist/src/interventions/__tests__/handler.test.d.ts +0 -2
  322. package/dist/src/interventions/__tests__/handler.test.d.ts.map +0 -1
  323. package/dist/src/interventions/__tests__/handler.test.js +0 -35
  324. package/dist/src/interventions/__tests__/handler.test.js.map +0 -1
  325. package/dist/src/interventions/__tests__/registry.test.d.ts +0 -2
  326. package/dist/src/interventions/__tests__/registry.test.d.ts.map +0 -1
  327. package/dist/src/interventions/__tests__/registry.test.js +0 -692
  328. package/dist/src/interventions/__tests__/registry.test.js.map +0 -1
  329. package/dist/src/logging/__tests__/logger.test.d.ts +0 -2
  330. package/dist/src/logging/__tests__/logger.test.d.ts.map +0 -1
  331. package/dist/src/logging/__tests__/logger.test.js +0 -70
  332. package/dist/src/logging/__tests__/logger.test.js.map +0 -1
  333. package/dist/src/logging/__tests__/warn-once.test.d.ts +0 -2
  334. package/dist/src/logging/__tests__/warn-once.test.d.ts.map +0 -1
  335. package/dist/src/logging/__tests__/warn-once.test.js +0 -30
  336. package/dist/src/logging/__tests__/warn-once.test.js.map +0 -1
  337. package/dist/src/mcp.d.ts.map +0 -1
  338. package/dist/src/mcp.js.map +0 -1
  339. package/dist/src/memory/__tests__/memory-manager.test.d.ts +0 -2
  340. package/dist/src/memory/__tests__/memory-manager.test.d.ts.map +0 -1
  341. package/dist/src/memory/__tests__/memory-manager.test.js +0 -679
  342. package/dist/src/memory/__tests__/memory-manager.test.js.map +0 -1
  343. package/dist/src/memory/__tests__/memory-tracing.test.d.ts +0 -2
  344. package/dist/src/memory/__tests__/memory-tracing.test.d.ts.map +0 -1
  345. package/dist/src/memory/__tests__/memory-tracing.test.js +0 -250
  346. package/dist/src/memory/__tests__/memory-tracing.test.js.map +0 -1
  347. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts +0 -2
  348. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts.map +0 -1
  349. package/dist/src/memory/extraction/__tests__/extraction.test.js +0 -639
  350. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +0 -1
  351. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts +0 -2
  352. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts.map +0 -1
  353. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +0 -104
  354. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +0 -1
  355. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts +0 -2
  356. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts.map +0 -1
  357. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js +0 -81
  358. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js.map +0 -1
  359. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts +0 -2
  360. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts.map +0 -1
  361. package/dist/src/middleware/__tests__/agent-middleware.test.js +0 -1206
  362. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +0 -1
  363. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts +0 -2
  364. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts.map +0 -1
  365. package/dist/src/middleware/__tests__/copy-on-input.test.js +0 -379
  366. package/dist/src/middleware/__tests__/copy-on-input.test.js.map +0 -1
  367. package/dist/src/middleware/__tests__/custom-stages.test.d.ts +0 -2
  368. package/dist/src/middleware/__tests__/custom-stages.test.d.ts.map +0 -1
  369. package/dist/src/middleware/__tests__/custom-stages.test.js +0 -97
  370. package/dist/src/middleware/__tests__/custom-stages.test.js.map +0 -1
  371. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts +0 -2
  372. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts.map +0 -1
  373. package/dist/src/middleware/__tests__/middleware-interrupts.test.js +0 -267
  374. package/dist/src/middleware/__tests__/middleware-interrupts.test.js.map +0 -1
  375. package/dist/src/middleware/__tests__/registry.test.d.ts +0 -2
  376. package/dist/src/middleware/__tests__/registry.test.d.ts.map +0 -1
  377. package/dist/src/middleware/__tests__/registry.test.js +0 -525
  378. package/dist/src/middleware/__tests__/registry.test.js.map +0 -1
  379. package/dist/src/models/__tests__/anthropic.test.d.ts +0 -2
  380. package/dist/src/models/__tests__/anthropic.test.d.ts.map +0 -1
  381. package/dist/src/models/__tests__/anthropic.test.js +0 -793
  382. package/dist/src/models/__tests__/anthropic.test.js.map +0 -1
  383. package/dist/src/models/__tests__/bedrock.test.d.ts +0 -2
  384. package/dist/src/models/__tests__/bedrock.test.d.ts.map +0 -1
  385. package/dist/src/models/__tests__/bedrock.test.js +0 -3964
  386. package/dist/src/models/__tests__/bedrock.test.js.map +0 -1
  387. package/dist/src/models/__tests__/defaults.test.d.ts +0 -2
  388. package/dist/src/models/__tests__/defaults.test.d.ts.map +0 -1
  389. package/dist/src/models/__tests__/defaults.test.js +0 -36
  390. package/dist/src/models/__tests__/defaults.test.js.map +0 -1
  391. package/dist/src/models/__tests__/google.test.d.ts +0 -2
  392. package/dist/src/models/__tests__/google.test.d.ts.map +0 -1
  393. package/dist/src/models/__tests__/google.test.js +0 -1145
  394. package/dist/src/models/__tests__/google.test.js.map +0 -1
  395. package/dist/src/models/__tests__/model.test.d.ts +0 -2
  396. package/dist/src/models/__tests__/model.test.d.ts.map +0 -1
  397. package/dist/src/models/__tests__/model.test.js +0 -921
  398. package/dist/src/models/__tests__/model.test.js.map +0 -1
  399. package/dist/src/models/__tests__/streaming.test.d.ts +0 -2
  400. package/dist/src/models/__tests__/streaming.test.d.ts.map +0 -1
  401. package/dist/src/models/__tests__/streaming.test.js +0 -50
  402. package/dist/src/models/__tests__/streaming.test.js.map +0 -1
  403. package/dist/src/models/__tests__/test-utils.d.ts +0 -10
  404. package/dist/src/models/__tests__/test-utils.d.ts.map +0 -1
  405. package/dist/src/models/__tests__/test-utils.js +0 -17
  406. package/dist/src/models/__tests__/test-utils.js.map +0 -1
  407. package/dist/src/models/__tests__/vercel.test.d.ts +0 -2
  408. package/dist/src/models/__tests__/vercel.test.d.ts.map +0 -1
  409. package/dist/src/models/__tests__/vercel.test.js +0 -740
  410. package/dist/src/models/__tests__/vercel.test.js.map +0 -1
  411. package/dist/src/models/openai/__tests__/chat.test.d.ts +0 -2
  412. package/dist/src/models/openai/__tests__/chat.test.d.ts.map +0 -1
  413. package/dist/src/models/openai/__tests__/chat.test.js +0 -1586
  414. package/dist/src/models/openai/__tests__/chat.test.js.map +0 -1
  415. package/dist/src/models/openai/__tests__/errors.test.d.ts +0 -2
  416. package/dist/src/models/openai/__tests__/errors.test.d.ts.map +0 -1
  417. package/dist/src/models/openai/__tests__/errors.test.js +0 -39
  418. package/dist/src/models/openai/__tests__/errors.test.js.map +0 -1
  419. package/dist/src/models/openai/__tests__/mantle.test.d.ts +0 -2
  420. package/dist/src/models/openai/__tests__/mantle.test.d.ts.map +0 -1
  421. package/dist/src/models/openai/__tests__/mantle.test.js +0 -189
  422. package/dist/src/models/openai/__tests__/mantle.test.js.map +0 -1
  423. package/dist/src/models/openai/__tests__/responses.test.d.ts +0 -2
  424. package/dist/src/models/openai/__tests__/responses.test.d.ts.map +0 -1
  425. package/dist/src/models/openai/__tests__/responses.test.js +0 -709
  426. package/dist/src/models/openai/__tests__/responses.test.js.map +0 -1
  427. package/dist/src/multiagent/__tests__/events.test.d.ts +0 -2
  428. package/dist/src/multiagent/__tests__/events.test.d.ts.map +0 -1
  429. package/dist/src/multiagent/__tests__/events.test.js +0 -493
  430. package/dist/src/multiagent/__tests__/events.test.js.map +0 -1
  431. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +0 -2
  432. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +0 -1
  433. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +0 -95
  434. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +0 -1
  435. package/dist/src/multiagent/__tests__/graph.test.d.ts +0 -2
  436. package/dist/src/multiagent/__tests__/graph.test.d.ts.map +0 -1
  437. package/dist/src/multiagent/__tests__/graph.test.js +0 -698
  438. package/dist/src/multiagent/__tests__/graph.test.js.map +0 -1
  439. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts +0 -2
  440. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts.map +0 -1
  441. package/dist/src/multiagent/__tests__/graph.tracer.test.js +0 -218
  442. package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +0 -1
  443. package/dist/src/multiagent/__tests__/interrupts.test.d.ts +0 -2
  444. package/dist/src/multiagent/__tests__/interrupts.test.d.ts.map +0 -1
  445. package/dist/src/multiagent/__tests__/interrupts.test.js +0 -390
  446. package/dist/src/multiagent/__tests__/interrupts.test.js.map +0 -1
  447. package/dist/src/multiagent/__tests__/nodes.test.d.ts +0 -2
  448. package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +0 -1
  449. package/dist/src/multiagent/__tests__/nodes.test.js +0 -321
  450. package/dist/src/multiagent/__tests__/nodes.test.js.map +0 -1
  451. package/dist/src/multiagent/__tests__/queue.test.d.ts +0 -2
  452. package/dist/src/multiagent/__tests__/queue.test.d.ts.map +0 -1
  453. package/dist/src/multiagent/__tests__/queue.test.js +0 -118
  454. package/dist/src/multiagent/__tests__/queue.test.js.map +0 -1
  455. package/dist/src/multiagent/__tests__/snapshot.test.d.ts +0 -2
  456. package/dist/src/multiagent/__tests__/snapshot.test.d.ts.map +0 -1
  457. package/dist/src/multiagent/__tests__/snapshot.test.js +0 -161
  458. package/dist/src/multiagent/__tests__/snapshot.test.js.map +0 -1
  459. package/dist/src/multiagent/__tests__/state.test.d.ts +0 -2
  460. package/dist/src/multiagent/__tests__/state.test.d.ts.map +0 -1
  461. package/dist/src/multiagent/__tests__/state.test.js +0 -526
  462. package/dist/src/multiagent/__tests__/state.test.js.map +0 -1
  463. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +0 -2
  464. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +0 -1
  465. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +0 -56
  466. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +0 -1
  467. package/dist/src/multiagent/__tests__/swarm.test.d.ts +0 -2
  468. package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +0 -1
  469. package/dist/src/multiagent/__tests__/swarm.test.js +0 -477
  470. package/dist/src/multiagent/__tests__/swarm.test.js.map +0 -1
  471. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts +0 -2
  472. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts.map +0 -1
  473. package/dist/src/multiagent/__tests__/swarm.tracer.test.js +0 -235
  474. package/dist/src/multiagent/__tests__/swarm.tracer.test.js.map +0 -1
  475. package/dist/src/plugins/__tests__/plugin.test.d.ts +0 -2
  476. package/dist/src/plugins/__tests__/plugin.test.d.ts.map +0 -1
  477. package/dist/src/plugins/__tests__/plugin.test.js +0 -114
  478. package/dist/src/plugins/__tests__/plugin.test.js.map +0 -1
  479. package/dist/src/plugins/__tests__/registry.test.d.ts +0 -2
  480. package/dist/src/plugins/__tests__/registry.test.d.ts.map +0 -1
  481. package/dist/src/plugins/__tests__/registry.test.js +0 -147
  482. package/dist/src/plugins/__tests__/registry.test.js.map +0 -1
  483. package/dist/src/registry/__tests__/tool-registry.test.d.ts +0 -2
  484. package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +0 -1
  485. package/dist/src/registry/__tests__/tool-registry.test.js +0 -210
  486. package/dist/src/registry/__tests__/tool-registry.test.js.map +0 -1
  487. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts +0 -2
  488. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts.map +0 -1
  489. package/dist/src/retry/__tests__/backoff-strategy.test.js +0 -116
  490. package/dist/src/retry/__tests__/backoff-strategy.test.js.map +0 -1
  491. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts +0 -2
  492. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts.map +0 -1
  493. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js +0 -225
  494. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js.map +0 -1
  495. package/dist/src/sandbox/__tests__/default.test.browser.d.ts +0 -2
  496. package/dist/src/sandbox/__tests__/default.test.browser.d.ts.map +0 -1
  497. package/dist/src/sandbox/__tests__/default.test.browser.js +0 -11
  498. package/dist/src/sandbox/__tests__/default.test.browser.js.map +0 -1
  499. package/dist/src/sandbox/__tests__/default.test.node.d.ts +0 -2
  500. package/dist/src/sandbox/__tests__/default.test.node.d.ts.map +0 -1
  501. package/dist/src/sandbox/__tests__/default.test.node.js +0 -23
  502. package/dist/src/sandbox/__tests__/default.test.node.js.map +0 -1
  503. package/dist/src/sandbox/__tests__/docker.test.node.d.ts +0 -2
  504. package/dist/src/sandbox/__tests__/docker.test.node.d.ts.map +0 -1
  505. package/dist/src/sandbox/__tests__/docker.test.node.js +0 -89
  506. package/dist/src/sandbox/__tests__/docker.test.node.js.map +0 -1
  507. package/dist/src/sandbox/__tests__/errors.test.node.d.ts +0 -2
  508. package/dist/src/sandbox/__tests__/errors.test.node.d.ts.map +0 -1
  509. package/dist/src/sandbox/__tests__/errors.test.node.js +0 -33
  510. package/dist/src/sandbox/__tests__/errors.test.node.js.map +0 -1
  511. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts +0 -2
  512. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts.map +0 -1
  513. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js +0 -124
  514. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js.map +0 -1
  515. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts +0 -2
  516. package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts.map +0 -1
  517. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +0 -298
  518. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +0 -1
  519. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts +0 -2
  520. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts.map +0 -1
  521. package/dist/src/sandbox/__tests__/ssh.test.node.js +0 -262
  522. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +0 -1
  523. package/dist/src/session/__tests__/file-storage.test.node.d.ts +0 -2
  524. package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +0 -1
  525. package/dist/src/session/__tests__/file-storage.test.node.js +0 -278
  526. package/dist/src/session/__tests__/file-storage.test.node.js.map +0 -1
  527. package/dist/src/session/__tests__/s3-storage.test.d.ts +0 -2
  528. package/dist/src/session/__tests__/s3-storage.test.d.ts.map +0 -1
  529. package/dist/src/session/__tests__/s3-storage.test.js +0 -461
  530. package/dist/src/session/__tests__/s3-storage.test.js.map +0 -1
  531. package/dist/src/session/__tests__/session-manager.test.d.ts +0 -2
  532. package/dist/src/session/__tests__/session-manager.test.d.ts.map +0 -1
  533. package/dist/src/session/__tests__/session-manager.test.js +0 -832
  534. package/dist/src/session/__tests__/session-manager.test.js.map +0 -1
  535. package/dist/src/session/__tests__/validation.test.d.ts +0 -2
  536. package/dist/src/session/__tests__/validation.test.d.ts.map +0 -1
  537. package/dist/src/session/__tests__/validation.test.js +0 -47
  538. package/dist/src/session/__tests__/validation.test.js.map +0 -1
  539. package/dist/src/telemetry/__tests__/config.test.d.ts +0 -2
  540. package/dist/src/telemetry/__tests__/config.test.d.ts.map +0 -1
  541. package/dist/src/telemetry/__tests__/config.test.js +0 -64
  542. package/dist/src/telemetry/__tests__/config.test.js.map +0 -1
  543. package/dist/src/telemetry/__tests__/config.test.node.d.ts +0 -2
  544. package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +0 -1
  545. package/dist/src/telemetry/__tests__/config.test.node.js +0 -164
  546. package/dist/src/telemetry/__tests__/config.test.node.js.map +0 -1
  547. package/dist/src/telemetry/__tests__/json.test.d.ts +0 -2
  548. package/dist/src/telemetry/__tests__/json.test.d.ts.map +0 -1
  549. package/dist/src/telemetry/__tests__/json.test.js +0 -89
  550. package/dist/src/telemetry/__tests__/json.test.js.map +0 -1
  551. package/dist/src/telemetry/__tests__/local-trace.test.d.ts +0 -2
  552. package/dist/src/telemetry/__tests__/local-trace.test.d.ts.map +0 -1
  553. package/dist/src/telemetry/__tests__/local-trace.test.js +0 -158
  554. package/dist/src/telemetry/__tests__/local-trace.test.js.map +0 -1
  555. package/dist/src/telemetry/__tests__/meter.test.d.ts +0 -2
  556. package/dist/src/telemetry/__tests__/meter.test.d.ts.map +0 -1
  557. package/dist/src/telemetry/__tests__/meter.test.js +0 -695
  558. package/dist/src/telemetry/__tests__/meter.test.js.map +0 -1
  559. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +0 -2
  560. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +0 -1
  561. package/dist/src/telemetry/__tests__/tracer.test.node.js +0 -958
  562. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +0 -1
  563. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts +0 -2
  564. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts.map +0 -1
  565. package/dist/src/tools/__tests__/structured-output-tool.test.js +0 -84
  566. package/dist/src/tools/__tests__/structured-output-tool.test.js.map +0 -1
  567. package/dist/src/tools/__tests__/tool-factory.test.d.ts +0 -2
  568. package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +0 -1
  569. package/dist/src/tools/__tests__/tool-factory.test.js +0 -98
  570. package/dist/src/tools/__tests__/tool-factory.test.js.map +0 -1
  571. package/dist/src/tools/__tests__/tool.test.d.ts +0 -2
  572. package/dist/src/tools/__tests__/tool.test.d.ts.map +0 -1
  573. package/dist/src/tools/__tests__/tool.test.js +0 -1043
  574. package/dist/src/tools/__tests__/tool.test.js.map +0 -1
  575. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts +0 -2
  576. package/dist/src/tools/__tests__/zod-tool.test-d.d.ts.map +0 -1
  577. package/dist/src/tools/__tests__/zod-tool.test-d.js +0 -227
  578. package/dist/src/tools/__tests__/zod-tool.test-d.js.map +0 -1
  579. package/dist/src/tools/__tests__/zod-tool.test.d.ts +0 -2
  580. package/dist/src/tools/__tests__/zod-tool.test.d.ts.map +0 -1
  581. package/dist/src/tools/__tests__/zod-tool.test.js +0 -563
  582. package/dist/src/tools/__tests__/zod-tool.test.js.map +0 -1
  583. package/dist/src/types/__tests__/agent.test.d.ts +0 -2
  584. package/dist/src/types/__tests__/agent.test.d.ts.map +0 -1
  585. package/dist/src/types/__tests__/agent.test.js +0 -476
  586. package/dist/src/types/__tests__/agent.test.js.map +0 -1
  587. package/dist/src/types/__tests__/citations.test.d.ts +0 -2
  588. package/dist/src/types/__tests__/citations.test.d.ts.map +0 -1
  589. package/dist/src/types/__tests__/citations.test.js +0 -104
  590. package/dist/src/types/__tests__/citations.test.js.map +0 -1
  591. package/dist/src/types/__tests__/json.test.d.ts +0 -2
  592. package/dist/src/types/__tests__/json.test.d.ts.map +0 -1
  593. package/dist/src/types/__tests__/json.test.js +0 -298
  594. package/dist/src/types/__tests__/json.test.js.map +0 -1
  595. package/dist/src/types/__tests__/media.test.d.ts +0 -2
  596. package/dist/src/types/__tests__/media.test.d.ts.map +0 -1
  597. package/dist/src/types/__tests__/media.test.js +0 -478
  598. package/dist/src/types/__tests__/media.test.js.map +0 -1
  599. package/dist/src/types/__tests__/messages.test.d.ts +0 -2
  600. package/dist/src/types/__tests__/messages.test.d.ts.map +0 -1
  601. package/dist/src/types/__tests__/messages.test.js +0 -681
  602. package/dist/src/types/__tests__/messages.test.js.map +0 -1
  603. package/dist/src/types/__tests__/validation.test.d.ts +0 -2
  604. package/dist/src/types/__tests__/validation.test.d.ts.map +0 -1
  605. package/dist/src/types/__tests__/validation.test.js +0 -30
  606. package/dist/src/types/__tests__/validation.test.js.map +0 -1
  607. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts +0 -2
  608. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts.map +0 -1
  609. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js +0 -756
  610. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js.map +0 -1
  611. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts +0 -2
  612. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts.map +0 -1
  613. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js +0 -358
  614. package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js.map +0 -1
  615. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts +0 -2
  616. package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts.map +0 -1
  617. package/dist/src/vended-interventions/steering/__tests__/handler.test.js +0 -163
  618. package/dist/src/vended-interventions/steering/__tests__/handler.test.js.map +0 -1
  619. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts +0 -2
  620. package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts.map +0 -1
  621. package/dist/src/vended-interventions/steering/__tests__/llm.test.js +0 -60
  622. package/dist/src/vended-interventions/steering/__tests__/llm.test.js.map +0 -1
  623. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts +0 -2
  624. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts.map +0 -1
  625. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js +0 -94
  626. package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js.map +0 -1
  627. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.d.ts +0 -2
  628. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.d.ts.map +0 -1
  629. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.js +0 -758
  630. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.node.js.map +0 -1
  631. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts +0 -2
  632. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts.map +0 -1
  633. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js +0 -96
  634. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js.map +0 -1
  635. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts +0 -2
  636. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts.map +0 -1
  637. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js +0 -68
  638. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js.map +0 -1
  639. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts +0 -2
  640. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts.map +0 -1
  641. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +0 -539
  642. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +0 -1
  643. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts +0 -2
  644. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts.map +0 -1
  645. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +0 -97
  646. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +0 -1
  647. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts +0 -2
  648. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.d.ts.map +0 -1
  649. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js +0 -149
  650. package/dist/src/vended-plugins/context-offloader/__tests__/search.test.js.map +0 -1
  651. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts +0 -2
  652. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts.map +0 -1
  653. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +0 -216
  654. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +0 -1
  655. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts +0 -2
  656. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts.map +0 -1
  657. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js +0 -78
  658. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js.map +0 -1
  659. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts +0 -2
  660. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts.map +0 -1
  661. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js +0 -736
  662. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js.map +0 -1
  663. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.d.ts +0 -2
  664. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.d.ts.map +0 -1
  665. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +0 -482
  666. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +0 -1
  667. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.d.ts +0 -2
  668. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.d.ts.map +0 -1
  669. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.js +0 -476
  670. package/dist/src/vended-plugins/skills/__tests__/skill.test.node.js.map +0 -1
  671. package/dist/src/vended-tools/bash/__tests__/bash.test.node.d.ts +0 -2
  672. package/dist/src/vended-tools/bash/__tests__/bash.test.node.d.ts.map +0 -1
  673. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +0 -390
  674. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +0 -1
  675. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts +0 -2
  676. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts.map +0 -1
  677. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +0 -452
  678. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +0 -1
  679. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts +0 -2
  680. package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts.map +0 -1
  681. package/dist/src/vended-tools/http-request/__tests__/http-request.test.js +0 -189
  682. package/dist/src/vended-tools/http-request/__tests__/http-request.test.js.map +0 -1
  683. package/dist/src/vended-tools/notebook/__tests__/notebook.test.d.ts +0 -2
  684. package/dist/src/vended-tools/notebook/__tests__/notebook.test.d.ts.map +0 -1
  685. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +0 -388
  686. 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