@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,679 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { z } from 'zod';
3
- import { Agent } from '../../agent/agent.js';
4
- import { MemoryManager } from '../memory-manager.js';
5
- import { tool } from '../../tools/tool-factory.js';
6
- import { logger } from '../../logging/logger.js';
7
- import { Message, TextBlock, ToolUseBlock, ToolResultBlock } from '../../types/messages.js';
8
- import { InvokeModelStage } from '../../middleware/index.js';
9
- import { createMockAgent } from '../../__fixtures__/agent-helpers.js';
10
- function createMockStore(name, options) {
11
- const store = {
12
- name,
13
- writable: !!options?.writable,
14
- ...(options?.description && { description: options.description }),
15
- ...(options?.maxSearchResults != null && { maxSearchResults: options.maxSearchResults }),
16
- search: vi.fn().mockResolvedValue(options?.entries ?? []),
17
- };
18
- if (options?.writable) {
19
- store.add = vi.fn().mockResolvedValue(undefined);
20
- }
21
- if (options?.tools) {
22
- store.getTools = vi.fn().mockReturnValue(options.tools);
23
- }
24
- return store;
25
- }
26
- function createNamedTool(name) {
27
- return tool({
28
- name,
29
- description: `test tool ${name}`,
30
- inputSchema: z.object({}),
31
- callback: () => 'ok',
32
- });
33
- }
34
- describe('MemoryManager', () => {
35
- describe('constructor', () => {
36
- it('throws when stores array is empty', () => {
37
- expect(() => new MemoryManager({ stores: [] })).toThrow('at least one store is required');
38
- });
39
- it('creates instance with valid config', () => {
40
- const mm = new MemoryManager({ stores: [createMockStore('test')] });
41
- expect(mm.name).toBe('strands:memory-manager');
42
- });
43
- it('throws when two stores share a name', () => {
44
- expect(() => new MemoryManager({ stores: [createMockStore('dup'), createMockStore('dup')] })).toThrow("duplicate store name 'dup'");
45
- });
46
- it('throws when a store is writable but has no add method', () => {
47
- const broken = { name: 'broken', writable: true, search: vi.fn().mockResolvedValue([]) };
48
- expect(() => new MemoryManager({ stores: [broken] })).toThrow("store 'broken' is writable but has no add or addMessages method");
49
- });
50
- it('throws when addToolConfig is enabled but no stores are writable', () => {
51
- expect(() => new MemoryManager({
52
- stores: [createMockStore('a')],
53
- addToolConfig: true,
54
- })).toThrow('addToolConfig is enabled but no writable stores implement add');
55
- });
56
- it('allows addToolConfig true with a single writable store', () => {
57
- const mm = new MemoryManager({
58
- stores: [createMockStore('a', { writable: true })],
59
- addToolConfig: true,
60
- });
61
- expect(mm.getTools().map((t) => t.name)).toContain('add_memory');
62
- });
63
- it('allows addToolConfig true with multiple writable stores', () => {
64
- const mm = new MemoryManager({
65
- stores: [createMockStore('a', { writable: true }), createMockStore('b', { writable: true })],
66
- addToolConfig: true,
67
- });
68
- expect(mm.getTools().map((t) => t.name)).toContain('add_memory');
69
- });
70
- it('throws when addToolConfig.stores names a non-existent store', () => {
71
- expect(() => new MemoryManager({
72
- stores: [createMockStore('a', { writable: true })],
73
- addToolConfig: { stores: ['nonexistent'] },
74
- })).toThrow("addToolConfig store 'nonexistent' not found");
75
- });
76
- it('throws when addToolConfig.stores names a non-writable store', () => {
77
- expect(() => new MemoryManager({
78
- stores: [createMockStore('a', { writable: true }), createMockStore('readonly')],
79
- addToolConfig: { stores: ['readonly'] },
80
- })).toThrow("addToolConfig store 'readonly' is not writable");
81
- });
82
- it('accepts MemoryStore instances (not just names) in addToolConfig.stores', async () => {
83
- const personal = createMockStore('personal', { writable: true });
84
- const team = createMockStore('team', { writable: true });
85
- // Pass the store instance instead of its name; resolves by name to scope the tool to it.
86
- const mm = new MemoryManager({ stores: [personal, team], addToolConfig: { stores: [personal] } });
87
- const addTool = mm.getTools().find((t) => t.name === 'add_memory');
88
- await addTool.invoke({ entries: ['fact'] });
89
- expect(personal.add).toHaveBeenCalledWith('fact', undefined);
90
- expect(team.add).not.toHaveBeenCalled();
91
- });
92
- it('throws when an addToolConfig.stores instance is not a configured store', () => {
93
- const configured = createMockStore('configured', { writable: true });
94
- const stray = createMockStore('stray', { writable: true });
95
- expect(() => new MemoryManager({
96
- stores: [configured],
97
- addToolConfig: { stores: [stray] },
98
- })).toThrow("addToolConfig store 'stray' not found");
99
- });
100
- });
101
- describe('getTools', () => {
102
- it('registers search tool by default', () => {
103
- const mm = new MemoryManager({ stores: [createMockStore('test')] });
104
- const tools = mm.getTools();
105
- expect(tools).toHaveLength(1);
106
- expect(tools[0].name).toBe('search_memory');
107
- });
108
- it('registers add tool when addToolConfig is enabled', () => {
109
- const mm = new MemoryManager({
110
- stores: [createMockStore('test', { writable: true })],
111
- addToolConfig: true,
112
- });
113
- const tools = mm.getTools();
114
- expect(tools.map((t) => t.name)).toStrictEqual(['search_memory', 'add_memory']);
115
- });
116
- it('does not register add tool by default', () => {
117
- const mm = new MemoryManager({ stores: [createMockStore('test', { writable: true })] });
118
- const tools = mm.getTools();
119
- expect(tools.map((t) => t.name)).toStrictEqual(['search_memory']);
120
- });
121
- it('returns empty array when searchToolConfig is false and addToolConfig is false', () => {
122
- const mm = new MemoryManager({
123
- stores: [createMockStore('test', { writable: true })],
124
- searchToolConfig: false,
125
- addToolConfig: false,
126
- });
127
- expect(mm.getTools()).toStrictEqual([]);
128
- });
129
- it('uses custom tool names from MemoryToolConfig', () => {
130
- const mm = new MemoryManager({
131
- stores: [createMockStore('test', { writable: true })],
132
- searchToolConfig: { name: 'recall' },
133
- addToolConfig: { name: 'remember' },
134
- });
135
- const tools = mm.getTools();
136
- expect(tools.map((t) => t.name)).toStrictEqual(['recall', 'remember']);
137
- });
138
- it('includes store descriptions in search tool description', () => {
139
- const store = createMockStore('personal', { description: 'User preferences' });
140
- const mm = new MemoryManager({ stores: [store] });
141
- const tools = mm.getTools();
142
- expect(tools[0].description).toContain('personal: User preferences');
143
- expect(tools[0].description).toContain('target one or more memory stores by name');
144
- });
145
- it('includes store descriptions in add tool description', () => {
146
- const store = createMockStore('notes', { writable: true, description: 'Personal notes' });
147
- const mm = new MemoryManager({ stores: [store], addToolConfig: true });
148
- const tools = mm.getTools();
149
- const addTool = tools.find((t) => t.name === 'add_memory');
150
- expect(addTool.description).toContain('notes: Personal notes');
151
- expect(addTool.description).toContain('target a specific store by name');
152
- });
153
- it('aggregates tools provided by stores via getTools', () => {
154
- const store = createMockStore('kb', { tools: [createNamedTool('kb_query')] });
155
- const mm = new MemoryManager({ stores: [store] });
156
- expect(mm.getTools().map((t) => t.name)).toStrictEqual(['search_memory', 'kb_query']);
157
- });
158
- it('aggregates store tools across multiple stores alongside the manager tools', () => {
159
- const a = createMockStore('a', { writable: true, tools: [createNamedTool('a_tool')] });
160
- const b = createMockStore('b', { tools: [createNamedTool('b_tool')] });
161
- const mm = new MemoryManager({ stores: [a, b], addToolConfig: true });
162
- expect(mm.getTools().map((t) => t.name)).toStrictEqual(['search_memory', 'add_memory', 'a_tool', 'b_tool']);
163
- });
164
- it('includes store tools even when the manager registers no tools of its own', () => {
165
- const store = createMockStore('kb', { tools: [createNamedTool('kb_query')] });
166
- const mm = new MemoryManager({ stores: [store], searchToolConfig: false });
167
- expect(mm.getTools().map((t) => t.name)).toStrictEqual(['kb_query']);
168
- });
169
- });
170
- describe('search', () => {
171
- it('queries all stores and concatenates results', async () => {
172
- const store1 = createMockStore('a', { entries: [{ content: 'fact one' }] });
173
- const store2 = createMockStore('b', { entries: [{ content: 'fact two' }] });
174
- const mm = new MemoryManager({ stores: [store1, store2] });
175
- const results = await mm.search('query');
176
- expect(results).toStrictEqual([
177
- { content: 'fact one', storeName: 'a' },
178
- { content: 'fact two', storeName: 'b' },
179
- ]);
180
- });
181
- it("resolves a store's per-instance maxSearchResults when the caller omits it", async () => {
182
- const store = createMockStore('a', { maxSearchResults: 5 });
183
- const mm = new MemoryManager({ stores: [store] });
184
- await mm.search('query');
185
- expect(store.search).toHaveBeenCalledWith('query', { maxSearchResults: 5 });
186
- });
187
- it('forwards an explicit maxSearchResults override to each store', async () => {
188
- const store = createMockStore('a', { maxSearchResults: 5 });
189
- const mm = new MemoryManager({ stores: [store] });
190
- await mm.search('query', { maxSearchResults: 2 });
191
- expect(store.search).toHaveBeenCalledWith('query', { maxSearchResults: 2 });
192
- });
193
- it('falls back to the SDK default when neither caller nor store specifies a limit', async () => {
194
- const store = createMockStore('a');
195
- const mm = new MemoryManager({ stores: [store] });
196
- await mm.search('query');
197
- expect(store.search).toHaveBeenCalledWith('query', { maxSearchResults: 3 });
198
- });
199
- it('filters to named stores when options.stores is provided', async () => {
200
- const store1 = createMockStore('personal', { entries: [{ content: 'personal fact' }] });
201
- const store2 = createMockStore('team', { entries: [{ content: 'team fact' }] });
202
- const mm = new MemoryManager({ stores: [store1, store2] });
203
- const results = await mm.search('query', { stores: ['personal'] });
204
- expect(results).toStrictEqual([{ content: 'personal fact', storeName: 'personal' }]);
205
- expect(store2.search).not.toHaveBeenCalled();
206
- });
207
- it('gracefully handles store failures', async () => {
208
- const store1 = {
209
- name: 'failing',
210
- writable: false,
211
- search: vi.fn().mockRejectedValue(new Error('network error')),
212
- };
213
- const store2 = createMockStore('ok', { entries: [{ content: 'fact' }] });
214
- const mm = new MemoryManager({ stores: [store1, store2] });
215
- const results = await mm.search('query');
216
- expect(results).toStrictEqual([{ content: 'fact', storeName: 'ok' }]);
217
- });
218
- it('searches all stores when stores option is omitted', async () => {
219
- const store1 = createMockStore('a', { entries: [{ content: 'fact one' }] });
220
- const store2 = createMockStore('b', { entries: [{ content: 'fact two' }] });
221
- const mm = new MemoryManager({ stores: [store1, store2] });
222
- const results = await mm.search('query');
223
- expect(results).toStrictEqual([
224
- { content: 'fact one', storeName: 'a' },
225
- { content: 'fact two', storeName: 'b' },
226
- ]);
227
- });
228
- it('searches no stores when stores option is an empty array', async () => {
229
- const store1 = createMockStore('a', { entries: [{ content: 'fact one' }] });
230
- const store2 = createMockStore('b', { entries: [{ content: 'fact two' }] });
231
- const mm = new MemoryManager({ stores: [store1, store2] });
232
- const results = await mm.search('query', { stores: [] });
233
- expect(results).toStrictEqual([]);
234
- expect(store1.search).not.toHaveBeenCalled();
235
- expect(store2.search).not.toHaveBeenCalled();
236
- });
237
- it('throws a not-found error when a named store does not exist', async () => {
238
- const store = createMockStore('personal', { entries: [{ content: 'fact' }] });
239
- const mm = new MemoryManager({ stores: [store] });
240
- await expect(mm.search('query', { stores: ['nonexistent'] })).rejects.toThrow("store 'nonexistent' not found");
241
- expect(store.search).not.toHaveBeenCalled();
242
- });
243
- });
244
- describe('add', () => {
245
- it('writes to all writable stores', async () => {
246
- const store1 = createMockStore('a', { writable: true });
247
- const store2 = createMockStore('b', { writable: true });
248
- const mm = new MemoryManager({ stores: [store1, store2] });
249
- await mm.add('user likes coffee');
250
- expect(store1.add).toHaveBeenCalledWith('user likes coffee', undefined);
251
- expect(store2.add).toHaveBeenCalledWith('user likes coffee', undefined);
252
- });
253
- it('passes metadata to stores', async () => {
254
- const store = createMockStore('a', { writable: true });
255
- const mm = new MemoryManager({ stores: [store] });
256
- await mm.add('fact', { metadata: { source: 'user' } });
257
- expect(store.add).toHaveBeenCalledWith('fact', { source: 'user' });
258
- });
259
- it('filters to named stores when options.stores is provided', async () => {
260
- const store1 = createMockStore('personal', { writable: true });
261
- const store2 = createMockStore('team', { writable: true });
262
- const mm = new MemoryManager({ stores: [store1, store2] });
263
- await mm.add('my preference', { stores: ['personal'] });
264
- expect(store1.add).toHaveBeenCalledWith('my preference', undefined);
265
- expect(store2.add).not.toHaveBeenCalled();
266
- });
267
- it('dedupes duplicate store names so each store is written once', async () => {
268
- const store = createMockStore('personal', { writable: true });
269
- const mm = new MemoryManager({ stores: [store] });
270
- await mm.add('fact', { stores: ['personal', 'personal'] });
271
- expect(store.add).toHaveBeenCalledTimes(1);
272
- });
273
- it('throws when no writable stores match', async () => {
274
- const mm = new MemoryManager({ stores: [createMockStore('a')] });
275
- await expect(mm.add('fact')).rejects.toThrow('no writable store matched');
276
- });
277
- it('throws a not-found error when a named store does not exist', async () => {
278
- const mm = new MemoryManager({ stores: [createMockStore('a', { writable: true })] });
279
- await expect(mm.add('fact', { stores: ['nonexistent'] })).rejects.toThrow("store 'nonexistent' not found");
280
- });
281
- it('throws a read-only error when a named store cannot be written', async () => {
282
- const mm = new MemoryManager({ stores: [createMockStore('readonly')] });
283
- await expect(mm.add('fact', { stores: ['readonly'] })).rejects.toThrow("store 'readonly' is read-only");
284
- });
285
- it('awaits writes and throws AggregateError naming the failed store on partial failure', async () => {
286
- const failing = {
287
- name: 'failing',
288
- writable: true,
289
- search: vi.fn().mockResolvedValue([]),
290
- add: vi.fn().mockRejectedValue(new Error('write error')),
291
- };
292
- const ok = createMockStore('ok', { writable: true });
293
- const mm = new MemoryManager({ stores: [failing, ok] });
294
- // The method always awaits: a partial failure (failing rejects, ok succeeds) throws.
295
- await expect(mm.add('fact')).rejects.toThrow('store writes failed: failing');
296
- expect(ok.add).toHaveBeenCalledWith('fact', undefined);
297
- });
298
- it('dispatches writes to all targeted stores', async () => {
299
- const store1 = createMockStore('a', { writable: true });
300
- const store2 = createMockStore('b', { writable: true });
301
- const mm = new MemoryManager({ stores: [store1, store2] });
302
- await mm.add('fact');
303
- expect(store1.add).toHaveBeenCalledWith('fact', undefined);
304
- expect(store2.add).toHaveBeenCalledWith('fact', undefined);
305
- });
306
- });
307
- describe('tool store scoping', () => {
308
- function searchTool(mm) {
309
- return mm.getTools().find((t) => t.name === 'search_memory');
310
- }
311
- function addTool(mm) {
312
- return mm.getTools().find((t) => t.name === 'add_memory');
313
- }
314
- it('search tool queries all stores when model omits stores', async () => {
315
- const personal = createMockStore('personal', { entries: [{ content: 'personal fact' }] });
316
- const team = createMockStore('team', { entries: [{ content: 'team fact' }] });
317
- const mm = new MemoryManager({ stores: [personal, team] });
318
- await searchTool(mm).invoke({ query: 'q' });
319
- expect(personal.search).toHaveBeenCalled();
320
- expect(team.search).toHaveBeenCalled();
321
- });
322
- it('search tool treats an empty stores array as omitted (searches all)', async () => {
323
- const personal = createMockStore('personal', { entries: [{ content: 'personal fact' }] });
324
- const team = createMockStore('team', { entries: [{ content: 'team fact' }] });
325
- const mm = new MemoryManager({ stores: [personal, team] });
326
- await searchTool(mm).invoke({ query: 'q', stores: [] });
327
- expect(personal.search).toHaveBeenCalled();
328
- expect(team.search).toHaveBeenCalled();
329
- });
330
- it('search tool targets only the requested store when in scope', async () => {
331
- const personal = createMockStore('personal', { entries: [{ content: 'personal fact' }] });
332
- const team = createMockStore('team', { entries: [{ content: 'team fact' }] });
333
- const mm = new MemoryManager({ stores: [personal, team] });
334
- await searchTool(mm).invoke({ query: 'q', stores: ['personal'] });
335
- expect(personal.search).toHaveBeenCalled();
336
- expect(team.search).not.toHaveBeenCalled();
337
- });
338
- it('search tool result attributes each entry to its source store', async () => {
339
- const personal = createMockStore('personal', { entries: [{ content: 'personal fact' }] });
340
- const team = createMockStore('team', { entries: [{ content: 'team fact' }] });
341
- const mm = new MemoryManager({ stores: [personal, team] });
342
- const result = await searchTool(mm).invoke({ query: 'q' });
343
- expect(result).toStrictEqual([
344
- { content: 'personal fact', storeName: 'personal' },
345
- { content: 'team fact', storeName: 'team' },
346
- ]);
347
- });
348
- it('search tool keeps valid names and warns on out-of-scope names', async () => {
349
- const warnSpy = vi.spyOn(logger, 'warn').mockImplementation(() => { });
350
- const personal = createMockStore('personal', { entries: [{ content: 'personal fact' }] });
351
- const team = createMockStore('team', { entries: [{ content: 'team fact' }] });
352
- const mm = new MemoryManager({ stores: [personal, team] });
353
- await searchTool(mm).invoke({ query: 'q', stores: ['personal', 'nonexistent'] });
354
- expect(personal.search).toHaveBeenCalled();
355
- expect(team.search).not.toHaveBeenCalled();
356
- expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('nonexistent'));
357
- warnSpy.mockRestore();
358
- });
359
- it('search tool throws when every requested store is out of scope', async () => {
360
- const personal = createMockStore('personal', { entries: [{ content: 'personal fact' }] });
361
- const mm = new MemoryManager({ stores: [personal] });
362
- await expect(searchTool(mm).invoke({ query: 'q', stores: ['nonexistent'] })).rejects.toThrow('none of the requested memory stores are available');
363
- expect(personal.search).not.toHaveBeenCalled();
364
- });
365
- it('add tool writes to all writable stores when model omits stores', async () => {
366
- const personal = createMockStore('personal', { writable: true });
367
- const team = createMockStore('team', { writable: true });
368
- const mm = new MemoryManager({ stores: [personal, team], addToolConfig: true });
369
- await addTool(mm).invoke({ entries: ['fact'] });
370
- expect(personal.add).toHaveBeenCalledWith('fact', undefined);
371
- expect(team.add).toHaveBeenCalledWith('fact', undefined);
372
- });
373
- it('add tool treats an empty stores array as omitted (writes to all writable)', async () => {
374
- const personal = createMockStore('personal', { writable: true });
375
- const team = createMockStore('team', { writable: true });
376
- const mm = new MemoryManager({ stores: [personal, team], addToolConfig: true });
377
- await addTool(mm).invoke({ entries: ['fact'], stores: [] });
378
- expect(personal.add).toHaveBeenCalled();
379
- expect(team.add).toHaveBeenCalled();
380
- });
381
- it('add tool is scoped to addToolConfig.stores (excludes other writable stores)', async () => {
382
- const personal = createMockStore('personal', { writable: true });
383
- const team = createMockStore('team', { writable: true });
384
- const mm = new MemoryManager({ stores: [personal, team], addToolConfig: { stores: ['personal'] } });
385
- // Omitting stores writes to the configured allowlist only — not every writable store.
386
- await addTool(mm).invoke({ entries: ['fact'] });
387
- expect(personal.add).toHaveBeenCalledWith('fact', undefined);
388
- expect(team.add).not.toHaveBeenCalled();
389
- });
390
- it('add tool rejects a writable store excluded from addToolConfig.stores (extraction-only store)', async () => {
391
- // `extractionOnly` is writable (e.g. to receive extraction writes) but excluded from the tool's
392
- // allowlist, so the agent's add_memory tool cannot write to it.
393
- const personal = createMockStore('personal', { writable: true });
394
- const extractionOnly = createMockStore('extraction-only', { writable: true });
395
- const mm = new MemoryManager({ stores: [personal, extractionOnly], addToolConfig: { stores: ['personal'] } });
396
- await expect(addTool(mm).invoke({ entries: ['fact'], stores: ['extraction-only'] })).rejects.toThrow('none of the requested memory stores are available');
397
- expect(extractionOnly.add).not.toHaveBeenCalled();
398
- });
399
- it('add tool excludes read-only stores from its scope', async () => {
400
- const personal = createMockStore('personal', { writable: true });
401
- const readonly = createMockStore('readonly');
402
- const mm = new MemoryManager({ stores: [personal, readonly], addToolConfig: true });
403
- // A read-only store is out of the add tool's scope, so naming it throws.
404
- await expect(addTool(mm).invoke({ entries: ['fact'], stores: ['readonly'] })).rejects.toThrow('none of the requested memory stores are available');
405
- expect(personal.add).not.toHaveBeenCalled();
406
- });
407
- it('add tool keeps valid names and warns on out-of-scope names', async () => {
408
- const warnSpy = vi.spyOn(logger, 'warn').mockImplementation(() => { });
409
- const personal = createMockStore('personal', { writable: true });
410
- const team = createMockStore('team', { writable: true });
411
- const mm = new MemoryManager({ stores: [personal, team], addToolConfig: true });
412
- await addTool(mm).invoke({ entries: ['fact'], stores: ['personal', 'nonexistent'] });
413
- expect(personal.add).toHaveBeenCalledWith('fact', undefined);
414
- expect(team.add).not.toHaveBeenCalled();
415
- expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('nonexistent'));
416
- warnSpy.mockRestore();
417
- });
418
- it('add tool throws when every requested store is out of scope', async () => {
419
- const personal = createMockStore('personal', { writable: true });
420
- const mm = new MemoryManager({ stores: [personal], addToolConfig: true });
421
- await expect(addTool(mm).invoke({ entries: ['fact'], stores: ['nonexistent'] })).rejects.toThrow('none of the requested memory stores are available');
422
- expect(personal.add).not.toHaveBeenCalled();
423
- });
424
- it('add tool rejects an empty entries array', async () => {
425
- const personal = createMockStore('personal', { writable: true });
426
- const mm = new MemoryManager({ stores: [personal], addToolConfig: true });
427
- await expect(addTool(mm).invoke({ entries: [] })).rejects.toThrow();
428
- expect(personal.add).not.toHaveBeenCalled();
429
- });
430
- it('add tool returns stored count by default (awaits writes)', async () => {
431
- const store = createMockStore('notes', { writable: true });
432
- const mm = new MemoryManager({ stores: [store], addToolConfig: true });
433
- const result = await addTool(mm).invoke({ entries: ['a', 'b'] });
434
- expect(result).toStrictEqual({ stored: 2 });
435
- });
436
- it('add tool throws a flattened error with concrete reasons when entries fail (default awaits)', async () => {
437
- const failing = {
438
- name: 'failing',
439
- writable: true,
440
- search: vi.fn().mockResolvedValue([]),
441
- add: vi.fn().mockRejectedValue(new Error('write error')),
442
- };
443
- const mm = new MemoryManager({ stores: [failing], addToolConfig: true });
444
- const error = await addTool(mm)
445
- .invoke({ entries: ['a', 'b'] })
446
- .catch((e) => e);
447
- expect(error).toBeInstanceOf(AggregateError);
448
- const agg = error;
449
- expect(agg.message).toContain('failed to add 2 of 2 entries');
450
- expect(agg.message).toContain('write error');
451
- // Leaves are the underlying store errors, not the per-entry AggregateErrors add() throws.
452
- expect(agg.errors).toHaveLength(2);
453
- expect(agg.errors.every((e) => e instanceof Error && !(e instanceof AggregateError))).toBe(true);
454
- });
455
- it('add tool with waitForWrites: false returns accepted count (fire-and-forget)', async () => {
456
- const store = createMockStore('notes', { writable: true });
457
- const mm = new MemoryManager({ stores: [store], addToolConfig: { waitForWrites: false } });
458
- const result = await addTool(mm).invoke({ entries: ['a', 'b'] });
459
- expect(result).toStrictEqual({ accepted: 2 });
460
- });
461
- it('add tool with waitForWrites: false returns accepted even when a store write fails (swallows it)', async () => {
462
- const failing = {
463
- name: 'failing',
464
- writable: true,
465
- search: vi.fn().mockResolvedValue([]),
466
- add: vi.fn().mockRejectedValue(new Error('write error')),
467
- };
468
- const mm = new MemoryManager({ stores: [failing], addToolConfig: { waitForWrites: false } });
469
- const result = await addTool(mm).invoke({ entries: ['a', 'b'] });
470
- expect(result).toStrictEqual({ accepted: 2 });
471
- });
472
- });
473
- describe('initAgent', () => {
474
- it('does not throw', async () => {
475
- const mm = new MemoryManager({ stores: [createMockStore('test')] });
476
- await expect(mm.initAgent(createMockAgent())).resolves.not.toThrow();
477
- });
478
- it('does not register injection middleware when injection is disabled', async () => {
479
- const mm = new MemoryManager({ stores: [createMockStore('test')], injection: false });
480
- const addMiddleware = vi.fn();
481
- await mm.initAgent(createMockAgent({ extra: { addMiddleware } }));
482
- expect(addMiddleware).not.toHaveBeenCalled();
483
- });
484
- it('registers an InvokeModelStage input middleware when injection is enabled', async () => {
485
- const mm = new MemoryManager({ stores: [createMockStore('test')], injection: true });
486
- const addMiddleware = vi.fn();
487
- await mm.initAgent(createMockAgent({ extra: { addMiddleware } }));
488
- expect(addMiddleware).toHaveBeenCalledTimes(1);
489
- expect(addMiddleware.mock.calls[0][0]).toBe(InvokeModelStage.Input);
490
- expect(typeof addMiddleware.mock.calls[0][1]).toBe('function');
491
- });
492
- it('wires the registered middleware to the memory provide pipeline (folds a search hit)', async () => {
493
- const store = createMockStore('s', { entries: [{ content: 'dark mode preferred' }] });
494
- const mm = new MemoryManager({ stores: [store], injection: true });
495
- const addMiddleware = vi.fn();
496
- const agent = createMockAgent({ extra: { addMiddleware } });
497
- await mm.initAgent(agent);
498
- const handler = addMiddleware.mock.calls[0][1];
499
- const messages = [
500
- new Message({ role: 'assistant', content: [new TextBlock('prior')] }),
501
- new Message({ role: 'user', content: [new TextBlock('what is my plan')] }),
502
- ];
503
- const result = await handler({ messages, agent });
504
- expect(result.messages.map((m) => m.toJSON())).toStrictEqual([
505
- { role: 'assistant', content: [{ text: 'prior' }] },
506
- {
507
- role: 'user',
508
- content: [
509
- { text: '<memory>\n<entry source="s">dark mode preferred</entry>\n</memory>' },
510
- { text: 'what is my plan' },
511
- ],
512
- },
513
- ]);
514
- expect(store.search).toHaveBeenCalledWith('what is my plan', { maxSearchResults: 5 });
515
- });
516
- });
517
- // The injection delivery (folding text into the model input) is wired through the InvokeModelStage
518
- // input middleware (see the `initAgent` tests). The memory-owned `provide` pipeline below — query
519
- // derivation, search, and formatting — is exercised directly via `_provideMemoryContext`, the
520
- // callback the middleware invokes.
521
- describe('injection', () => {
522
- const assistant = (text) => new Message({ role: 'assistant', content: [new TextBlock(text)] });
523
- const user = (text) => new Message({ role: 'user', content: [new TextBlock(text)] });
524
- const toolUse = () => new Message({ role: 'assistant', content: [new ToolUseBlock({ name: 'x', toolUseId: 't1', input: {} })] });
525
- const toolResult = () => new Message({
526
- role: 'user',
527
- content: [new ToolResultBlock({ toolUseId: 't1', status: 'success', content: [new TextBlock('done')] })],
528
- });
529
- // Calls the (private) provide pipeline with the manager's resolved injection config.
530
- function provide(mm, messages) {
531
- const data = messages.map((m) => m.toJSON());
532
- const config = mm._injectionConfig;
533
- return mm._provideMemoryContext(data, config === false ? {} : config);
534
- }
535
- describe('config resolution', () => {
536
- const injectionConfig = (mm) => mm._injectionConfig;
537
- it('defaults to an empty config (enabled) when injection is omitted', () => {
538
- expect(injectionConfig(new MemoryManager({ stores: [createMockStore('s')] }))).toStrictEqual({});
539
- });
540
- it('is false when injection is explicitly false', () => {
541
- expect(injectionConfig(new MemoryManager({ stores: [createMockStore('s')], injection: false }))).toBe(false);
542
- });
543
- it('resolves to an empty config when injection is true', () => {
544
- expect(injectionConfig(new MemoryManager({ stores: [createMockStore('s')], injection: true }))).toStrictEqual({});
545
- });
546
- it('passes an injection config object through unchanged', () => {
547
- const cfg = { maxEntries: 5 };
548
- expect(injectionConfig(new MemoryManager({ stores: [createMockStore('s')], injection: cfg }))).toBe(cfg);
549
- });
550
- });
551
- describe('query', () => {
552
- it('uses the latest user ask on a user turn (adaptive default)', async () => {
553
- const store = createMockStore('s', { entries: [{ content: 'fact' }] });
554
- const mm = new MemoryManager({ stores: [store], injection: true });
555
- await provide(mm, [assistant('prior step'), user('what is my plan')]);
556
- expect(store.search).toHaveBeenCalledWith('what is my plan', { maxSearchResults: 5 });
557
- });
558
- it('uses the most recent assistant text on an autonomous (tool-result) turn', async () => {
559
- const store = createMockStore('s', { entries: [{ content: 'fact' }] });
560
- const mm = new MemoryManager({ stores: [store], injection: true });
561
- await provide(mm, [user('task'), assistant('the previous step result'), toolResult()]);
562
- expect(store.search).toHaveBeenCalledWith('the previous step result', { maxSearchResults: 5 });
563
- });
564
- it('honors a custom query', async () => {
565
- const store = createMockStore('s', { entries: [{ content: 'fact' }] });
566
- const mm = new MemoryManager({ stores: [store], injection: { query: () => 'custom query' } });
567
- await provide(mm, [assistant('prior'), user('ask')]);
568
- expect(store.search).toHaveBeenCalledWith('custom query', { maxSearchResults: 5 });
569
- });
570
- it('skips (returns undefined) when a custom query returns undefined', async () => {
571
- const store = createMockStore('s', { entries: [{ content: 'fact' }] });
572
- const mm = new MemoryManager({ stores: [store], injection: { query: () => undefined } });
573
- await expect(provide(mm, [assistant('prior'), user('ask')])).resolves.toBeUndefined();
574
- expect(store.search).not.toHaveBeenCalled();
575
- });
576
- it('fails open (returns undefined) when a custom query throws', async () => {
577
- const store = createMockStore('s', { entries: [{ content: 'fact' }] });
578
- const mm = new MemoryManager({
579
- stores: [store],
580
- injection: {
581
- query: () => {
582
- throw new Error('boom');
583
- },
584
- },
585
- });
586
- await expect(provide(mm, [assistant('prior'), user('ask')])).resolves.toBeUndefined();
587
- expect(store.search).not.toHaveBeenCalled();
588
- });
589
- it('skips when the latest assistant message has no text (pure tool use)', async () => {
590
- const store = createMockStore('s', { entries: [{ content: 'fact' }] });
591
- const mm = new MemoryManager({ stores: [store], injection: true });
592
- await expect(provide(mm, [toolUse(), toolResult()])).resolves.toBeUndefined();
593
- expect(store.search).not.toHaveBeenCalled();
594
- });
595
- });
596
- describe('search', () => {
597
- it('returns undefined when search yields no entries', async () => {
598
- const store = createMockStore('s', { entries: [] });
599
- const mm = new MemoryManager({ stores: [store], injection: true });
600
- await expect(provide(mm, [assistant('prior'), user('ask')])).resolves.toBeUndefined();
601
- expect(store.search).toHaveBeenCalled();
602
- });
603
- it('honors maxEntries and caps the rendered entries', async () => {
604
- const store = createMockStore('s', {
605
- entries: [{ content: 'A' }, { content: 'B' }, { content: 'C' }],
606
- });
607
- const mm = new MemoryManager({
608
- stores: [store],
609
- injection: { maxEntries: 2, format: ({ entries }) => entries.map((e) => e.content).join(',') },
610
- });
611
- const text = await provide(mm, [assistant('prior'), user('ask')]);
612
- expect(store.search).toHaveBeenCalledWith('ask', { maxSearchResults: 2 });
613
- expect(text).toBe('A,B');
614
- });
615
- });
616
- describe('format', () => {
617
- it('default renders a <memory> block with per-entry source attribution', async () => {
618
- const store = createMockStore('s', { entries: [{ content: 'dark mode preferred' }] });
619
- const mm = new MemoryManager({ stores: [store], injection: true });
620
- // search() stamps storeName onto each entry, so the default format attributes the source.
621
- const text = await provide(mm, [assistant('prior'), user('ask')]);
622
- expect(text).toBe('<memory>\n<entry source="s">dark mode preferred</entry>\n</memory>');
623
- });
624
- it('omits the source attribute for an entry with no storeName', () => {
625
- const mm = new MemoryManager({ stores: [createMockStore('s')], injection: true });
626
- const text = mm._defaultInjectionFormat([
627
- { content: 'no source' },
628
- ]);
629
- expect(text).toBe('<memory>\n<entry>no source</entry>\n</memory>');
630
- });
631
- it('escapes XML in entry content and source so untrusted text cannot break the block', () => {
632
- const mm = new MemoryManager({ stores: [createMockStore('s')], injection: true });
633
- const text = mm._defaultInjectionFormat([
634
- { content: 'a < b & c > d </entry>', storeName: 'pre"f' },
635
- ]);
636
- expect(text).toBe('<memory>\n<entry source="pre&quot;f">a &lt; b &amp; c &gt; d &lt;/entry&gt;</entry>\n</memory>');
637
- });
638
- it('honors a custom format', async () => {
639
- const store = createMockStore('s', { entries: [{ content: 'A' }] });
640
- const mm = new MemoryManager({
641
- stores: [store],
642
- injection: { format: ({ entries }) => `[${entries.map((e) => e.content).join('|')}]` },
643
- });
644
- await expect(provide(mm, [assistant('prior'), user('ask')])).resolves.toBe('[A]');
645
- });
646
- it('fails open (returns undefined) when a custom format throws', async () => {
647
- const store = createMockStore('s', { entries: [{ content: 'fact' }] });
648
- const mm = new MemoryManager({
649
- stores: [store],
650
- injection: {
651
- format: () => {
652
- throw new Error('boom');
653
- },
654
- },
655
- });
656
- // search ran, but the format threw, so nothing is injected.
657
- await expect(provide(mm, [assistant('prior'), user('ask')])).resolves.toBeUndefined();
658
- expect(store.search).toHaveBeenCalled();
659
- });
660
- });
661
- });
662
- describe('AgentConfig integration', () => {
663
- it('auto-wraps MemoryManagerConfig into MemoryManager instance', () => {
664
- const store = createMockStore('test');
665
- const agent = new Agent({ memoryManager: { stores: [store] } });
666
- expect(agent.memoryManager).toBeInstanceOf(MemoryManager);
667
- });
668
- it('passes through MemoryManager instance unchanged', () => {
669
- const mm = new MemoryManager({ stores: [createMockStore('test')] });
670
- const agent = new Agent({ memoryManager: mm });
671
- expect(agent.memoryManager).toBe(mm);
672
- });
673
- it('sets memoryManager to undefined when not configured', () => {
674
- const agent = new Agent({});
675
- expect(agent.memoryManager).toBeUndefined();
676
- });
677
- });
678
- });
679
- //# sourceMappingURL=memory-manager.test.js.map