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