@strands-agents/sdk 1.4.0 → 1.6.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 (435) hide show
  1. package/README.md +11 -11
  2. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  3. package/dist/src/__fixtures__/agent-helpers.js +9 -0
  4. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  5. package/dist/src/__fixtures__/register-node-defaults.d.ts +2 -0
  6. package/dist/src/__fixtures__/register-node-defaults.d.ts.map +1 -0
  7. package/dist/src/__fixtures__/register-node-defaults.js +6 -0
  8. package/dist/src/__fixtures__/register-node-defaults.js.map +1 -0
  9. package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +1 -1
  10. package/dist/src/__fixtures__/test-sandbox.node.js +4 -3
  11. package/dist/src/__fixtures__/test-sandbox.node.js.map +1 -1
  12. package/dist/src/__tests__/default-slot.test.d.ts +2 -0
  13. package/dist/src/__tests__/default-slot.test.d.ts.map +1 -0
  14. package/dist/src/__tests__/default-slot.test.js +33 -0
  15. package/dist/src/__tests__/default-slot.test.js.map +1 -0
  16. package/dist/src/a2a/__tests__/async-lock.test.d.ts +2 -0
  17. package/dist/src/a2a/__tests__/async-lock.test.d.ts.map +1 -0
  18. package/dist/src/a2a/__tests__/async-lock.test.js +137 -0
  19. package/dist/src/a2a/__tests__/async-lock.test.js.map +1 -0
  20. package/dist/src/a2a/__tests__/executor.test.js +146 -8
  21. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  22. package/dist/src/a2a/__tests__/server.test.js +20 -0
  23. package/dist/src/a2a/__tests__/server.test.js.map +1 -1
  24. package/dist/src/a2a/async-lock.d.ts +22 -0
  25. package/dist/src/a2a/async-lock.d.ts.map +1 -0
  26. package/dist/src/a2a/async-lock.js +38 -0
  27. package/dist/src/a2a/async-lock.js.map +1 -0
  28. package/dist/src/a2a/executor.d.ts +59 -24
  29. package/dist/src/a2a/executor.d.ts.map +1 -1
  30. package/dist/src/a2a/executor.js +209 -32
  31. package/dist/src/a2a/executor.js.map +1 -1
  32. package/dist/src/a2a/index.d.ts +1 -1
  33. package/dist/src/a2a/index.d.ts.map +1 -1
  34. package/dist/src/a2a/index.js +1 -1
  35. package/dist/src/a2a/index.js.map +1 -1
  36. package/dist/src/a2a/server.d.ts +18 -2
  37. package/dist/src/a2a/server.d.ts.map +1 -1
  38. package/dist/src/a2a/server.js +13 -2
  39. package/dist/src/a2a/server.js.map +1 -1
  40. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts +2 -0
  41. package/dist/src/agent/__tests__/agent.context-manager.test.d.ts.map +1 -0
  42. package/dist/src/agent/__tests__/agent.context-manager.test.js +107 -0
  43. package/dist/src/agent/__tests__/agent.context-manager.test.js.map +1 -0
  44. package/dist/src/agent/__tests__/agent.stateful-model.test.js +2 -2
  45. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -1
  46. package/dist/src/agent/__tests__/agent.tracer.test.node.js +14 -0
  47. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  48. package/dist/src/agent/agent.d.ts +135 -2
  49. package/dist/src/agent/agent.d.ts.map +1 -1
  50. package/dist/src/agent/agent.js +506 -189
  51. package/dist/src/agent/agent.js.map +1 -1
  52. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +19 -0
  53. package/dist/src/context-manager/modes/agentic/agentic-context.d.ts.map +1 -0
  54. package/dist/src/context-manager/modes/agentic/agentic-context.js +245 -0
  55. package/dist/src/context-manager/modes/agentic/agentic-context.js.map +1 -0
  56. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts +2 -0
  57. package/dist/src/conversation-manager/__tests__/agentic-context.test.d.ts.map +1 -0
  58. package/dist/src/conversation-manager/__tests__/agentic-context.test.js +332 -0
  59. package/dist/src/conversation-manager/__tests__/agentic-context.test.js.map +1 -0
  60. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts +2 -0
  61. package/dist/src/conversation-manager/__tests__/context-compression.test.d.ts.map +1 -0
  62. package/dist/src/conversation-manager/__tests__/context-compression.test.js +176 -0
  63. package/dist/src/conversation-manager/__tests__/context-compression.test.js.map +1 -0
  64. package/dist/src/conversation-manager/__tests__/pin.test.d.ts +2 -0
  65. package/dist/src/conversation-manager/__tests__/pin.test.d.ts.map +1 -0
  66. package/dist/src/conversation-manager/__tests__/pin.test.js +119 -0
  67. package/dist/src/conversation-manager/__tests__/pin.test.js.map +1 -0
  68. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +49 -0
  69. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  70. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +58 -0
  71. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  72. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts +2 -0
  73. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.d.ts.map +1 -0
  74. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js +138 -0
  75. package/dist/src/conversation-manager/__tests__/token-usage-middleware.test.js.map +1 -0
  76. package/dist/src/conversation-manager/compression/context-compression.d.ts +39 -0
  77. package/dist/src/conversation-manager/compression/context-compression.d.ts.map +1 -0
  78. package/dist/src/conversation-manager/compression/context-compression.js +150 -0
  79. package/dist/src/conversation-manager/compression/context-compression.js.map +1 -0
  80. package/dist/src/conversation-manager/compression/pin-message.d.ts +45 -0
  81. package/dist/src/conversation-manager/compression/pin-message.d.ts.map +1 -0
  82. package/dist/src/conversation-manager/compression/pin-message.js +106 -0
  83. package/dist/src/conversation-manager/compression/pin-message.js.map +1 -0
  84. package/dist/src/conversation-manager/conversation-manager.d.ts +2 -0
  85. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -1
  86. package/dist/src/conversation-manager/conversation-manager.js +2 -2
  87. package/dist/src/conversation-manager/conversation-manager.js.map +1 -1
  88. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +7 -0
  89. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  90. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +30 -38
  91. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  92. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +7 -19
  93. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
  94. package/dist/src/conversation-manager/summarizing-conversation-manager.js +20 -109
  95. package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
  96. package/dist/src/default-slot.d.ts +6 -0
  97. package/dist/src/default-slot.d.ts.map +1 -0
  98. package/dist/src/default-slot.js +18 -0
  99. package/dist/src/default-slot.js.map +1 -0
  100. package/dist/src/errors.d.ts +8 -0
  101. package/dist/src/errors.d.ts.map +1 -1
  102. package/dist/src/errors.js +11 -0
  103. package/dist/src/errors.js.map +1 -1
  104. package/dist/src/index.d.ts +8 -1
  105. package/dist/src/index.d.ts.map +1 -1
  106. package/dist/src/index.js +7 -1
  107. package/dist/src/index.js.map +1 -1
  108. package/dist/src/index.node.d.ts +2 -0
  109. package/dist/src/index.node.d.ts.map +1 -0
  110. package/dist/src/index.node.js +9 -0
  111. package/dist/src/index.node.js.map +1 -0
  112. package/dist/src/injection/__tests__/message-injection.test.d.ts +2 -0
  113. package/dist/src/injection/__tests__/message-injection.test.d.ts.map +1 -0
  114. package/dist/src/injection/__tests__/message-injection.test.js +200 -0
  115. package/dist/src/injection/__tests__/message-injection.test.js.map +1 -0
  116. package/dist/src/injection/index.d.ts +6 -0
  117. package/dist/src/injection/index.d.ts.map +1 -0
  118. package/dist/src/injection/index.js +2 -0
  119. package/dist/src/injection/index.js.map +1 -0
  120. package/dist/src/injection/message-injection.d.ts +65 -0
  121. package/dist/src/injection/message-injection.d.ts.map +1 -0
  122. package/dist/src/injection/message-injection.js +134 -0
  123. package/dist/src/injection/message-injection.js.map +1 -0
  124. package/dist/src/injection/types.d.ts +63 -0
  125. package/dist/src/injection/types.d.ts.map +1 -0
  126. package/dist/src/injection/types.js +2 -0
  127. package/dist/src/injection/types.js.map +1 -0
  128. package/dist/src/injection/xml.d.ts +27 -0
  129. package/dist/src/injection/xml.d.ts.map +1 -0
  130. package/dist/src/injection/xml.js +31 -0
  131. package/dist/src/injection/xml.js.map +1 -0
  132. package/dist/src/interrupt.d.ts +5 -1
  133. package/dist/src/interrupt.d.ts.map +1 -1
  134. package/dist/src/interrupt.js +6 -0
  135. package/dist/src/interrupt.js.map +1 -1
  136. package/dist/src/memory/__tests__/memory-manager.test.d.ts +2 -0
  137. package/dist/src/memory/__tests__/memory-manager.test.d.ts.map +1 -0
  138. package/dist/src/memory/__tests__/memory-manager.test.js +679 -0
  139. package/dist/src/memory/__tests__/memory-manager.test.js.map +1 -0
  140. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts +2 -0
  141. package/dist/src/memory/extraction/__tests__/extraction.test.d.ts.map +1 -0
  142. package/dist/src/memory/extraction/__tests__/extraction.test.js +637 -0
  143. package/dist/src/memory/extraction/__tests__/extraction.test.js.map +1 -0
  144. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts +2 -0
  145. package/dist/src/memory/extraction/__tests__/model-extractor.test.d.ts.map +1 -0
  146. package/dist/src/memory/extraction/__tests__/model-extractor.test.js +68 -0
  147. package/dist/src/memory/extraction/__tests__/model-extractor.test.js.map +1 -0
  148. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts +2 -0
  149. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.d.ts.map +1 -0
  150. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js +81 -0
  151. package/dist/src/memory/extraction/__tests__/resolve-extraction-config.test.js.map +1 -0
  152. package/dist/src/memory/extraction/coordinator.d.ts +128 -0
  153. package/dist/src/memory/extraction/coordinator.d.ts.map +1 -0
  154. package/dist/src/memory/extraction/coordinator.js +245 -0
  155. package/dist/src/memory/extraction/coordinator.js.map +1 -0
  156. package/dist/src/memory/extraction/model-extractor.d.ts +32 -0
  157. package/dist/src/memory/extraction/model-extractor.d.ts.map +1 -0
  158. package/dist/src/memory/extraction/model-extractor.js +118 -0
  159. package/dist/src/memory/extraction/model-extractor.js.map +1 -0
  160. package/dist/src/memory/extraction/resolve-extraction-config.d.ts +46 -0
  161. package/dist/src/memory/extraction/resolve-extraction-config.d.ts.map +1 -0
  162. package/dist/src/memory/extraction/resolve-extraction-config.js +59 -0
  163. package/dist/src/memory/extraction/resolve-extraction-config.js.map +1 -0
  164. package/dist/src/memory/extraction/triggers.d.ts +41 -0
  165. package/dist/src/memory/extraction/triggers.d.ts.map +1 -0
  166. package/dist/src/memory/extraction/triggers.js +59 -0
  167. package/dist/src/memory/extraction/triggers.js.map +1 -0
  168. package/dist/src/memory/extraction/types.d.ts +133 -0
  169. package/dist/src/memory/extraction/types.d.ts.map +1 -0
  170. package/dist/src/memory/extraction/types.js +19 -0
  171. package/dist/src/memory/extraction/types.js.map +1 -0
  172. package/dist/src/memory/index.d.ts +10 -0
  173. package/dist/src/memory/index.d.ts.map +1 -0
  174. package/dist/src/memory/index.js +5 -0
  175. package/dist/src/memory/index.js.map +1 -0
  176. package/dist/src/memory/memory-manager.d.ts +178 -0
  177. package/dist/src/memory/memory-manager.d.ts.map +1 -0
  178. package/dist/src/memory/memory-manager.js +526 -0
  179. package/dist/src/memory/memory-manager.js.map +1 -0
  180. package/dist/src/memory/types.d.ts +278 -0
  181. package/dist/src/memory/types.d.ts.map +1 -0
  182. package/dist/src/memory/types.js +2 -0
  183. package/dist/src/memory/types.js.map +1 -0
  184. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts +2 -0
  185. package/dist/src/middleware/__tests__/agent-middleware.test.d.ts.map +1 -0
  186. package/dist/src/middleware/__tests__/agent-middleware.test.js +1206 -0
  187. package/dist/src/middleware/__tests__/agent-middleware.test.js.map +1 -0
  188. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts +2 -0
  189. package/dist/src/middleware/__tests__/copy-on-input.test.d.ts.map +1 -0
  190. package/dist/src/middleware/__tests__/copy-on-input.test.js +379 -0
  191. package/dist/src/middleware/__tests__/copy-on-input.test.js.map +1 -0
  192. package/dist/src/middleware/__tests__/custom-stages.test.d.ts +2 -0
  193. package/dist/src/middleware/__tests__/custom-stages.test.d.ts.map +1 -0
  194. package/dist/src/middleware/__tests__/custom-stages.test.js +97 -0
  195. package/dist/src/middleware/__tests__/custom-stages.test.js.map +1 -0
  196. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts +2 -0
  197. package/dist/src/middleware/__tests__/middleware-interrupts.test.d.ts.map +1 -0
  198. package/dist/src/middleware/__tests__/middleware-interrupts.test.js +267 -0
  199. package/dist/src/middleware/__tests__/middleware-interrupts.test.js.map +1 -0
  200. package/dist/src/middleware/__tests__/registry.test.d.ts +2 -0
  201. package/dist/src/middleware/__tests__/registry.test.d.ts.map +1 -0
  202. package/dist/src/middleware/__tests__/registry.test.js +525 -0
  203. package/dist/src/middleware/__tests__/registry.test.js.map +1 -0
  204. package/dist/src/middleware/index.d.ts +5 -0
  205. package/dist/src/middleware/index.d.ts.map +1 -0
  206. package/dist/src/middleware/index.js +3 -0
  207. package/dist/src/middleware/index.js.map +1 -0
  208. package/dist/src/middleware/registry.d.ts +58 -0
  209. package/dist/src/middleware/registry.d.ts.map +1 -0
  210. package/dist/src/middleware/registry.js +107 -0
  211. package/dist/src/middleware/registry.js.map +1 -0
  212. package/dist/src/middleware/stages.d.ts +145 -0
  213. package/dist/src/middleware/stages.d.ts.map +1 -0
  214. package/dist/src/middleware/stages.js +34 -0
  215. package/dist/src/middleware/stages.js.map +1 -0
  216. package/dist/src/middleware/types.d.ts +88 -0
  217. package/dist/src/middleware/types.d.ts.map +1 -0
  218. package/dist/src/middleware/types.js +2 -0
  219. package/dist/src/middleware/types.js.map +1 -0
  220. package/dist/src/models/__tests__/anthropic.test.js +16 -1
  221. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  222. package/dist/src/models/__tests__/bedrock.test.js +39 -0
  223. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  224. package/dist/src/models/__tests__/model.test.js +46 -3
  225. package/dist/src/models/__tests__/model.test.js.map +1 -1
  226. package/dist/src/models/anthropic.js +2 -2
  227. package/dist/src/models/anthropic.js.map +1 -1
  228. package/dist/src/models/bedrock.d.ts.map +1 -1
  229. package/dist/src/models/bedrock.js +12 -5
  230. package/dist/src/models/bedrock.js.map +1 -1
  231. package/dist/src/models/defaults.d.ts.map +1 -1
  232. package/dist/src/models/defaults.js +2 -0
  233. package/dist/src/models/defaults.js.map +1 -1
  234. package/dist/src/models/model.d.ts.map +1 -1
  235. package/dist/src/models/model.js +7 -3
  236. package/dist/src/models/model.js.map +1 -1
  237. package/dist/src/models/openai/__tests__/responses.test.js +8 -14
  238. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
  239. package/dist/src/sandbox/__tests__/default.test.browser.d.ts +2 -0
  240. package/dist/src/sandbox/__tests__/default.test.browser.d.ts.map +1 -0
  241. package/dist/src/sandbox/__tests__/default.test.browser.js +11 -0
  242. package/dist/src/sandbox/__tests__/default.test.browser.js.map +1 -0
  243. package/dist/src/sandbox/__tests__/default.test.node.d.ts +2 -0
  244. package/dist/src/sandbox/__tests__/default.test.node.d.ts.map +1 -0
  245. package/dist/src/sandbox/__tests__/default.test.node.js +23 -0
  246. package/dist/src/sandbox/__tests__/default.test.node.js.map +1 -0
  247. package/dist/src/sandbox/__tests__/docker.test.node.d.ts +2 -0
  248. package/dist/src/sandbox/__tests__/docker.test.node.d.ts.map +1 -0
  249. package/dist/src/sandbox/__tests__/docker.test.node.js +89 -0
  250. package/dist/src/sandbox/__tests__/docker.test.node.js.map +1 -0
  251. package/dist/src/sandbox/__tests__/errors.test.node.d.ts +2 -0
  252. package/dist/src/sandbox/__tests__/errors.test.node.d.ts.map +1 -0
  253. package/dist/src/sandbox/__tests__/errors.test.node.js +33 -0
  254. package/dist/src/sandbox/__tests__/errors.test.node.js.map +1 -0
  255. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts +2 -0
  256. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.d.ts.map +1 -0
  257. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js +124 -0
  258. package/dist/src/sandbox/__tests__/not-a-sandbox-local-environment.test.node.js.map +1 -0
  259. package/dist/src/sandbox/__tests__/posix-shell.test.node.js +50 -4
  260. package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +1 -1
  261. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts +2 -0
  262. package/dist/src/sandbox/__tests__/ssh.test.node.d.ts.map +1 -0
  263. package/dist/src/sandbox/__tests__/ssh.test.node.js +262 -0
  264. package/dist/src/sandbox/__tests__/ssh.test.node.js.map +1 -0
  265. package/dist/src/sandbox/base.d.ts +17 -4
  266. package/dist/src/sandbox/base.d.ts.map +1 -1
  267. package/dist/src/sandbox/base.js +10 -2
  268. package/dist/src/sandbox/base.js.map +1 -1
  269. package/dist/src/sandbox/constants.d.ts +18 -0
  270. package/dist/src/sandbox/constants.d.ts.map +1 -1
  271. package/dist/src/sandbox/constants.js +20 -0
  272. package/dist/src/sandbox/constants.js.map +1 -1
  273. package/dist/src/sandbox/default.d.ts +3 -0
  274. package/dist/src/sandbox/default.d.ts.map +1 -0
  275. package/dist/src/sandbox/default.js +3 -0
  276. package/dist/src/sandbox/default.js.map +1 -0
  277. package/dist/src/sandbox/docker.d.ts +38 -0
  278. package/dist/src/sandbox/docker.d.ts.map +1 -0
  279. package/dist/src/sandbox/docker.js +61 -0
  280. package/dist/src/sandbox/docker.js.map +1 -0
  281. package/dist/src/sandbox/errors.d.ts +26 -0
  282. package/dist/src/sandbox/errors.d.ts.map +1 -0
  283. package/dist/src/sandbox/errors.js +35 -0
  284. package/dist/src/sandbox/errors.js.map +1 -0
  285. package/dist/src/sandbox/index.d.ts +5 -0
  286. package/dist/src/sandbox/index.d.ts.map +1 -0
  287. package/dist/src/sandbox/index.js +4 -0
  288. package/dist/src/sandbox/index.js.map +1 -0
  289. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts +16 -0
  290. package/dist/src/sandbox/not-a-sandbox-local-environment.d.ts.map +1 -0
  291. package/dist/src/sandbox/not-a-sandbox-local-environment.js +83 -0
  292. package/dist/src/sandbox/not-a-sandbox-local-environment.js.map +1 -0
  293. package/dist/src/sandbox/posix-shell.d.ts +21 -0
  294. package/dist/src/sandbox/posix-shell.d.ts.map +1 -1
  295. package/dist/src/sandbox/posix-shell.js +41 -3
  296. package/dist/src/sandbox/posix-shell.js.map +1 -1
  297. package/dist/src/sandbox/ssh.d.ts +56 -0
  298. package/dist/src/sandbox/ssh.d.ts.map +1 -0
  299. package/dist/src/sandbox/ssh.js +121 -0
  300. package/dist/src/sandbox/ssh.js.map +1 -0
  301. package/dist/src/sandbox/stream-process.d.ts.map +1 -1
  302. package/dist/src/sandbox/stream-process.js +3 -2
  303. package/dist/src/sandbox/stream-process.js.map +1 -1
  304. package/dist/src/tsconfig.tsbuildinfo +1 -1
  305. package/dist/src/types/agent.d.ts +21 -0
  306. package/dist/src/types/agent.d.ts.map +1 -1
  307. package/dist/src/types/agent.js.map +1 -1
  308. package/dist/src/types/messages.d.ts +9 -1
  309. package/dist/src/types/messages.d.ts.map +1 -1
  310. package/dist/src/types/messages.js +13 -1
  311. package/dist/src/types/messages.js.map +1 -1
  312. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts +2 -0
  313. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.d.ts.map +1 -0
  314. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js +675 -0
  315. package/dist/src/vended-interventions/cedar/__tests__/cedar.test.node.js.map +1 -0
  316. package/dist/src/vended-interventions/cedar/cedar.d.ts +102 -0
  317. package/dist/src/vended-interventions/cedar/cedar.d.ts.map +1 -0
  318. package/dist/src/vended-interventions/cedar/cedar.js +228 -0
  319. package/dist/src/vended-interventions/cedar/cedar.js.map +1 -0
  320. package/dist/src/vended-interventions/cedar/index.d.ts +3 -0
  321. package/dist/src/vended-interventions/cedar/index.d.ts.map +1 -0
  322. package/dist/src/vended-interventions/cedar/index.js +2 -0
  323. package/dist/src/vended-interventions/cedar/index.js.map +1 -0
  324. package/dist/src/vended-interventions/cedar/schema-generator.d.ts +10 -0
  325. package/dist/src/vended-interventions/cedar/schema-generator.d.ts.map +1 -0
  326. package/dist/src/vended-interventions/cedar/schema-generator.js +33 -0
  327. package/dist/src/vended-interventions/cedar/schema-generator.js.map +1 -0
  328. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts +2 -0
  329. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.d.ts.map +1 -0
  330. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js +611 -0
  331. package/dist/src/vended-memory-stores/bedrock-knowledge-base/__tests__/bedrock-knowledge-base-store.test.js.map +1 -0
  332. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts +2 -0
  333. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.d.ts.map +1 -0
  334. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js +2 -0
  335. package/dist/src/vended-memory-stores/bedrock-knowledge-base/index.js.map +1 -0
  336. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts +230 -0
  337. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.d.ts.map +1 -0
  338. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js +370 -0
  339. package/dist/src/vended-memory-stores/bedrock-knowledge-base/store.js.map +1 -0
  340. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts +2 -0
  341. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.d.ts.map +1 -0
  342. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js +96 -0
  343. package/dist/src/vended-plugins/context-injector/__tests__/plugin.test.js.map +1 -0
  344. package/dist/src/vended-plugins/context-injector/index.d.ts +25 -0
  345. package/dist/src/vended-plugins/context-injector/index.d.ts.map +1 -0
  346. package/dist/src/vended-plugins/context-injector/index.js +23 -0
  347. package/dist/src/vended-plugins/context-injector/index.js.map +1 -0
  348. package/dist/src/vended-plugins/context-injector/plugin.d.ts +55 -0
  349. package/dist/src/vended-plugins/context-injector/plugin.d.ts.map +1 -0
  350. package/dist/src/vended-plugins/context-injector/plugin.js +41 -0
  351. package/dist/src/vended-plugins/context-injector/plugin.js.map +1 -0
  352. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts +2 -0
  353. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.d.ts.map +1 -0
  354. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js +68 -0
  355. package/dist/src/vended-plugins/context-offloader/__tests__/file-storage-sandbox.test.node.js.map +1 -0
  356. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +43 -4
  357. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -1
  358. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts +2 -0
  359. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.d.ts.map +1 -0
  360. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js +93 -0
  361. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.node.js.map +1 -0
  362. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +68 -0
  363. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +1 -1
  364. package/dist/src/vended-plugins/context-offloader/index.d.ts +1 -1
  365. package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -1
  366. package/dist/src/vended-plugins/context-offloader/plugin.d.ts +4 -1
  367. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -1
  368. package/dist/src/vended-plugins/context-offloader/plugin.js +40 -8
  369. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -1
  370. package/dist/src/vended-plugins/context-offloader/search.d.ts.map +1 -1
  371. package/dist/src/vended-plugins/context-offloader/search.js +3 -5
  372. package/dist/src/vended-plugins/context-offloader/search.js.map +1 -1
  373. package/dist/src/vended-plugins/context-offloader/storage.d.ts +58 -6
  374. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -1
  375. package/dist/src/vended-plugins/context-offloader/storage.js +136 -14
  376. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -1
  377. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts +2 -0
  378. package/dist/src/vended-plugins/goal/__tests__/plugin.test.d.ts.map +1 -0
  379. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js +736 -0
  380. package/dist/src/vended-plugins/goal/__tests__/plugin.test.js.map +1 -0
  381. package/dist/src/vended-plugins/goal/index.d.ts +21 -0
  382. package/dist/src/vended-plugins/goal/index.d.ts.map +1 -0
  383. package/dist/src/vended-plugins/goal/index.js +20 -0
  384. package/dist/src/vended-plugins/goal/index.js.map +1 -0
  385. package/dist/src/vended-plugins/goal/judge.d.ts +41 -0
  386. package/dist/src/vended-plugins/goal/judge.d.ts.map +1 -0
  387. package/dist/src/vended-plugins/goal/judge.js +92 -0
  388. package/dist/src/vended-plugins/goal/judge.js.map +1 -0
  389. package/dist/src/vended-plugins/goal/plugin.d.ts +214 -0
  390. package/dist/src/vended-plugins/goal/plugin.d.ts.map +1 -0
  391. package/dist/src/vended-plugins/goal/plugin.js +287 -0
  392. package/dist/src/vended-plugins/goal/plugin.js.map +1 -0
  393. package/dist/src/vended-plugins/index.d.ts +3 -1
  394. package/dist/src/vended-plugins/index.d.ts.map +1 -1
  395. package/dist/src/vended-plugins/index.js +3 -1
  396. package/dist/src/vended-plugins/index.js.map +1 -1
  397. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +17 -7
  398. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  399. package/dist/src/vended-plugins/skills/agent-skills.d.ts +21 -7
  400. package/dist/src/vended-plugins/skills/agent-skills.d.ts.map +1 -1
  401. package/dist/src/vended-plugins/skills/agent-skills.js +144 -77
  402. package/dist/src/vended-plugins/skills/agent-skills.js.map +1 -1
  403. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +44 -4
  404. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  405. package/dist/src/vended-tools/bash/bash.d.ts +3 -24
  406. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  407. package/dist/src/vended-tools/bash/bash.js +9 -9
  408. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  409. package/dist/src/vended-tools/bash/index.d.ts +3 -1
  410. package/dist/src/vended-tools/bash/index.d.ts.map +1 -1
  411. package/dist/src/vended-tools/bash/index.js +2 -1
  412. package/dist/src/vended-tools/bash/index.js.map +1 -1
  413. package/dist/src/vended-tools/bash/make-bash.d.ts +22 -0
  414. package/dist/src/vended-tools/bash/make-bash.d.ts.map +1 -0
  415. package/dist/src/vended-tools/bash/make-bash.js +40 -0
  416. package/dist/src/vended-tools/bash/make-bash.js.map +1 -0
  417. package/dist/src/vended-tools/bash/types.d.ts +1 -0
  418. package/dist/src/vended-tools/bash/types.d.ts.map +1 -1
  419. package/dist/src/vended-tools/bash/types.js +2 -0
  420. package/dist/src/vended-tools/bash/types.js.map +1 -1
  421. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +83 -1
  422. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  423. package/dist/src/vended-tools/file-editor/file-editor.d.ts +19 -10
  424. package/dist/src/vended-tools/file-editor/file-editor.d.ts.map +1 -1
  425. package/dist/src/vended-tools/file-editor/file-editor.js +188 -218
  426. package/dist/src/vended-tools/file-editor/file-editor.js.map +1 -1
  427. package/dist/src/vended-tools/file-editor/index.d.ts +2 -1
  428. package/dist/src/vended-tools/file-editor/index.d.ts.map +1 -1
  429. package/dist/src/vended-tools/file-editor/index.js +1 -1
  430. package/dist/src/vended-tools/file-editor/index.js.map +1 -1
  431. package/package.json +59 -6
  432. package/dist/src/utils/shell-quote.d.ts +0 -12
  433. package/dist/src/utils/shell-quote.d.ts.map +0 -1
  434. package/dist/src/utils/shell-quote.js +0 -14
  435. package/dist/src/utils/shell-quote.js.map +0 -1
@@ -0,0 +1,332 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { summarizeContextTool, truncateContextTool, pinContextTool, } from '../../context-manager/modes/agentic/agentic-context.js';
3
+ import { pinMessage } from '../compression/pin-message.js';
4
+ import { Message, TextBlock, ToolUseBlock, ToolResultBlock } from '../../types/messages.js';
5
+ function textMsg(role, text) {
6
+ return new Message({ role, content: [new TextBlock(text)] });
7
+ }
8
+ function makeMessages(count) {
9
+ return Array.from({ length: count }, (_, i) => textMsg(i % 2 === 0 ? 'user' : 'assistant', `Message ${i + 1}`));
10
+ }
11
+ function mockModel(summaryText = 'Summary of older messages') {
12
+ const message = new Message({ role: 'assistant', content: [new TextBlock(summaryText)] });
13
+ return {
14
+ streamAggregated: vi.fn(() => ({
15
+ next: vi
16
+ .fn()
17
+ .mockResolvedValueOnce({ done: false, value: undefined })
18
+ .mockResolvedValueOnce({ done: true, value: { message } }),
19
+ [Symbol.asyncIterator]: vi.fn(),
20
+ })),
21
+ };
22
+ }
23
+ function makeContext(messages, model) {
24
+ return { agent: { messages, model: model ?? {} } };
25
+ }
26
+ describe('summarizeContextTool', () => {
27
+ it('returns message when not enough messages to summarize', async () => {
28
+ const messages = makeMessages(4);
29
+ const result = await summarizeContextTool.invoke({ keepRecent: 10 }, makeContext(messages));
30
+ expect(result).toContain('No summarization performed');
31
+ expect(result).toContain('not enough eligible messages');
32
+ expect(messages).toHaveLength(4);
33
+ });
34
+ it('summarizes eligible messages and splices the array', async () => {
35
+ const model = mockModel('Summary');
36
+ const messages = makeMessages(20);
37
+ const result = await summarizeContextTool.invoke({ keepRecent: 10, summaryRatio: 0.5 }, makeContext(messages, model));
38
+ expect(result).toContain('Summarized');
39
+ expect(result).toContain('message(s)');
40
+ expect(messages.length).toBeLessThan(20);
41
+ expect(messages[0].role).toBe('user');
42
+ });
43
+ it('preserves pinned messages during summarization', async () => {
44
+ const model = mockModel('Summary');
45
+ const messages = makeMessages(20);
46
+ pinMessage(messages, 1);
47
+ const pinnedText = messages[1].content[0].text;
48
+ await summarizeContextTool.invoke({ keepRecent: 6, summaryRatio: 0.5 }, makeContext(messages, model));
49
+ const texts = messages.map((m) => m.content[0].text);
50
+ expect(texts).toContain(pinnedText);
51
+ });
52
+ it('respects messageType filter', async () => {
53
+ const model = mockModel('Summary');
54
+ const messages = [
55
+ new Message({ role: 'assistant', content: [new ToolUseBlock({ toolUseId: 'id-1', name: 'tool1', input: {} })] }),
56
+ new Message({
57
+ role: 'user',
58
+ content: [new ToolResultBlock({ toolUseId: 'id-1', status: 'success', content: [new TextBlock('Result')] })],
59
+ }),
60
+ ...makeMessages(14),
61
+ ];
62
+ const result = await summarizeContextTool.invoke({ keepRecent: 10, summaryRatio: 0.3, messageType: 'messages' }, makeContext(messages, model));
63
+ expect(result).toContain('"messages"');
64
+ });
65
+ it('returns message when no eligible messages in range after filtering', async () => {
66
+ const messages = [
67
+ new Message({ role: 'assistant', content: [new ToolUseBlock({ toolUseId: 'id-1', name: 't', input: {} })] }),
68
+ new Message({
69
+ role: 'user',
70
+ content: [new ToolResultBlock({ toolUseId: 'id-1', status: 'success', content: [new TextBlock('R')] })],
71
+ }),
72
+ new Message({ role: 'assistant', content: [new ToolUseBlock({ toolUseId: 'id-2', name: 't', input: {} })] }),
73
+ new Message({
74
+ role: 'user',
75
+ content: [new ToolResultBlock({ toolUseId: 'id-2', status: 'success', content: [new TextBlock('R')] })],
76
+ }),
77
+ ...makeMessages(12),
78
+ ];
79
+ const result = await summarizeContextTool.invoke({ keepRecent: 12, summaryRatio: 0.3, messageType: 'messages' }, makeContext(messages, mockModel()));
80
+ expect(result).toContain('No summarization performed');
81
+ });
82
+ it('preserves pinned toolUse when its toolResult is in the eligible set', async () => {
83
+ const model = mockModel('Summary');
84
+ const messages = [
85
+ new Message({ role: 'assistant', content: [new ToolUseBlock({ toolUseId: 'id-1', name: 'tool1', input: {} })] }),
86
+ new Message({
87
+ role: 'user',
88
+ content: [
89
+ new ToolResultBlock({ toolUseId: 'id-1', status: 'success', content: [new TextBlock('Important result')] }),
90
+ ],
91
+ }),
92
+ ...makeMessages(14),
93
+ ];
94
+ pinMessage(messages, 0);
95
+ await summarizeContextTool.invoke({ keepRecent: 10, summaryRatio: 0.3 }, makeContext(messages, model));
96
+ const hasToolUse = messages.some((m) => m.content.some((b) => b.type === 'toolUseBlock') && m.metadata?.custom?.pinned);
97
+ expect(hasToolUse).toBe(true);
98
+ });
99
+ it('preserves message order after summarization with pinned assistant message', async () => {
100
+ const model = mockModel('Summary');
101
+ const messages = [textMsg('user', 'First'), textMsg('assistant', 'Pinned response'), ...makeMessages(18)];
102
+ pinMessage(messages, 1);
103
+ await summarizeContextTool.invoke({ keepRecent: 10, summaryRatio: 0.3 }, makeContext(messages, model));
104
+ expect(messages[0].role).toBe('user');
105
+ });
106
+ it('returns failure message when model throws', async () => {
107
+ const model = {
108
+ streamAggregated: vi.fn(() => ({
109
+ next: vi.fn().mockRejectedValueOnce(new Error('model error')),
110
+ [Symbol.asyncIterator]: vi.fn(),
111
+ })),
112
+ };
113
+ const messages = makeMessages(20);
114
+ const result = await summarizeContextTool.invoke({ keepRecent: 5, summaryRatio: 0.5 }, makeContext(messages, model));
115
+ expect(result).toContain('Summarization failed');
116
+ });
117
+ });
118
+ describe('truncateContextTool', () => {
119
+ it('does not drop messages when keepRecent exceeds conversation length', async () => {
120
+ const messages = makeMessages(6);
121
+ const result = await truncateContextTool.invoke({ keepRecent: 10 }, makeContext(messages));
122
+ expect(result).toContain('No messages dropped');
123
+ expect(messages).toHaveLength(6);
124
+ });
125
+ it('preserves message order when pinned assistant message exists', async () => {
126
+ const messages = [textMsg('user', 'First'), textMsg('assistant', 'Response'), ...makeMessages(18)];
127
+ pinMessage(messages, 1);
128
+ await truncateContextTool.invoke({ keepRecent: 5 }, makeContext(messages));
129
+ expect(messages[0].role).toBe('user');
130
+ });
131
+ it('returns message when conversation is too short', async () => {
132
+ const messages = makeMessages(2);
133
+ const result = await truncateContextTool.invoke({}, makeContext(messages));
134
+ expect(result).toContain('No messages dropped');
135
+ expect(result).toContain('only has 2 messages');
136
+ expect(messages).toHaveLength(2);
137
+ });
138
+ it('drops oldest messages respecting window', async () => {
139
+ const messages = makeMessages(20);
140
+ const result = await truncateContextTool.invoke({ keepRecent: 5 }, makeContext(messages));
141
+ expect(result).toContain('Dropped');
142
+ expect(result).toContain('remaining');
143
+ expect(messages.length).toBeLessThan(20);
144
+ expect(messages.length).toBeGreaterThanOrEqual(4);
145
+ const lastMsg = messages[messages.length - 1];
146
+ expect(lastMsg.content[0].text).toBe('Message 20');
147
+ });
148
+ it('preserves pinned messages during truncation', async () => {
149
+ const messages = makeMessages(20);
150
+ pinMessage(messages, 0);
151
+ pinMessage(messages, 1);
152
+ const pinnedText0 = messages[0].content[0].text;
153
+ const pinnedText1 = messages[1].content[0].text;
154
+ await truncateContextTool.invoke({ keepRecent: 5 }, makeContext(messages));
155
+ const remainingTexts = messages.map((m) => m.content[0].text);
156
+ expect(remainingTexts).toContain(pinnedText0);
157
+ expect(remainingTexts).toContain(pinnedText1);
158
+ });
159
+ it('respects messageType filter', async () => {
160
+ const messages = [
161
+ textMsg('user', 'Hello'),
162
+ textMsg('assistant', 'Hi'),
163
+ new Message({ role: 'assistant', content: [new ToolUseBlock({ toolUseId: 'id-1', name: 't', input: {} })] }),
164
+ new Message({
165
+ role: 'user',
166
+ content: [new ToolResultBlock({ toolUseId: 'id-1', status: 'success', content: [new TextBlock('R')] })],
167
+ }),
168
+ ...makeMessages(10),
169
+ ];
170
+ const result = await truncateContextTool.invoke({ keepRecent: 5, messageType: 'messages' }, makeContext(messages));
171
+ expect(result).toContain('"messages"');
172
+ });
173
+ it('returns message when no valid trim point found', async () => {
174
+ const messages = Array.from({ length: 6 }, (_, i) => new Message({
175
+ role: 'user',
176
+ content: [new ToolResultBlock({ toolUseId: `id-${i}`, status: 'success', content: [new TextBlock('R')] })],
177
+ }));
178
+ const result = await truncateContextTool.invoke({ keepRecent: 2 }, makeContext(messages));
179
+ expect(result).toContain('No messages dropped');
180
+ expect(result).toContain('no valid trim boundary');
181
+ });
182
+ });
183
+ describe('pinContextTool', () => {
184
+ describe('select: last_turn', () => {
185
+ it('pins the entire current turn', async () => {
186
+ const messages = [
187
+ textMsg('user', 'First question'),
188
+ textMsg('assistant', 'First answer'),
189
+ textMsg('user', 'Second question'),
190
+ textMsg('assistant', 'Second answer'),
191
+ ];
192
+ const result = await pinContextTool.invoke({ select: 'last_turn', action: 'pin' }, makeContext(messages));
193
+ expect(result).toContain('Pinned');
194
+ expect(result).toContain('2 message(s)');
195
+ expect(messages[2].metadata?.custom?.pinned).toBe(true);
196
+ expect(messages[3].metadata?.custom?.pinned).toBe(true);
197
+ expect(messages[0].metadata?.custom?.pinned).toBeUndefined();
198
+ });
199
+ it('includes tool calls in the current turn', async () => {
200
+ const messages = [
201
+ textMsg('user', 'Old question'),
202
+ textMsg('assistant', 'Old answer'),
203
+ textMsg('user', 'Check weather'),
204
+ new Message({
205
+ role: 'assistant',
206
+ content: [new ToolUseBlock({ toolUseId: 'id-1', name: 'weather', input: {} })],
207
+ }),
208
+ new Message({
209
+ role: 'user',
210
+ content: [new ToolResultBlock({ toolUseId: 'id-1', status: 'success', content: [new TextBlock('Sunny')] })],
211
+ }),
212
+ textMsg('assistant', 'It is sunny'),
213
+ ];
214
+ const result = await pinContextTool.invoke({ select: 'last_turn', action: 'pin' }, makeContext(messages));
215
+ expect(result).toContain('4 message(s)');
216
+ expect(messages[2].metadata?.custom?.pinned).toBe(true);
217
+ expect(messages[3].metadata?.custom?.pinned).toBe(true);
218
+ expect(messages[4].metadata?.custom?.pinned).toBe(true);
219
+ expect(messages[5].metadata?.custom?.pinned).toBe(true);
220
+ expect(messages[0].metadata?.custom?.pinned).toBeUndefined();
221
+ });
222
+ it('pins with filter on last_turn', async () => {
223
+ const messages = [
224
+ textMsg('user', 'Old'),
225
+ textMsg('assistant', 'Old'),
226
+ textMsg('user', 'New question'),
227
+ textMsg('assistant', 'New answer'),
228
+ ];
229
+ const result = await pinContextTool.invoke({ select: 'last_turn', filter: 'user', action: 'pin' }, makeContext(messages));
230
+ expect(result).toContain('1 message(s)');
231
+ expect(messages[2].metadata?.custom?.pinned).toBe(true);
232
+ expect(messages[3].metadata?.custom?.pinned).toBeUndefined();
233
+ });
234
+ });
235
+ describe('select: number (last N)', () => {
236
+ it('pins the last N messages', async () => {
237
+ const messages = makeMessages(6);
238
+ const result = await pinContextTool.invoke({ select: 3, action: 'pin' }, makeContext(messages));
239
+ expect(result).toContain('Pinned');
240
+ expect(result).toContain('3 message(s)');
241
+ expect(messages[3].metadata?.custom?.pinned).toBe(true);
242
+ expect(messages[4].metadata?.custom?.pinned).toBe(true);
243
+ expect(messages[5].metadata?.custom?.pinned).toBe(true);
244
+ expect(messages[0].metadata?.custom?.pinned).toBeUndefined();
245
+ });
246
+ it('clamps to conversation length', async () => {
247
+ const messages = makeMessages(3);
248
+ const result = await pinContextTool.invoke({ select: 100, action: 'pin' }, makeContext(messages));
249
+ expect(result).toContain('3 message(s)');
250
+ });
251
+ it('filters by role within last N', async () => {
252
+ const messages = makeMessages(6);
253
+ const result = await pinContextTool.invoke({ select: 6, filter: 'user', action: 'pin' }, makeContext(messages));
254
+ expect(result).toContain('3 message(s)');
255
+ expect(messages[0].metadata?.custom?.pinned).toBe(true);
256
+ expect(messages[2].metadata?.custom?.pinned).toBe(true);
257
+ expect(messages[4].metadata?.custom?.pinned).toBe(true);
258
+ expect(messages[1].metadata?.custom?.pinned).toBeUndefined();
259
+ });
260
+ });
261
+ describe('select: indices', () => {
262
+ it('pins messages at specific indices', async () => {
263
+ const messages = makeMessages(6);
264
+ const result = await pinContextTool.invoke({ select: [0, 2, 4], action: 'pin' }, makeContext(messages));
265
+ expect(result).toContain('Pinned');
266
+ expect(result).toContain('3 message(s)');
267
+ expect(messages[0].metadata?.custom?.pinned).toBe(true);
268
+ expect(messages[1].metadata?.custom?.pinned).toBeUndefined();
269
+ expect(messages[2].metadata?.custom?.pinned).toBe(true);
270
+ expect(messages[4].metadata?.custom?.pinned).toBe(true);
271
+ });
272
+ it('returns error when all indices out of range', async () => {
273
+ const messages = makeMessages(3);
274
+ const result = await pinContextTool.invoke({ select: [10, 20, 30], action: 'pin' }, makeContext(messages));
275
+ expect(result).toContain('All indices out of range');
276
+ expect(result).toContain('3 messages');
277
+ });
278
+ it('filters out-of-range indices but pins valid ones', async () => {
279
+ const messages = makeMessages(4);
280
+ const result = await pinContextTool.invoke({ select: [1, 99], action: 'pin' }, makeContext(messages));
281
+ expect(result).toContain('Pinned');
282
+ expect(result).toContain('1 message(s)');
283
+ expect(messages[1].metadata?.custom?.pinned).toBe(true);
284
+ });
285
+ });
286
+ describe('filter: tools', () => {
287
+ it('pins only tool use and tool result messages', async () => {
288
+ const messages = [
289
+ textMsg('user', 'Do something'),
290
+ new Message({ role: 'assistant', content: [new ToolUseBlock({ toolUseId: 'id-1', name: 't', input: {} })] }),
291
+ new Message({
292
+ role: 'user',
293
+ content: [new ToolResultBlock({ toolUseId: 'id-1', status: 'success', content: [new TextBlock('Result')] })],
294
+ }),
295
+ textMsg('assistant', 'Done'),
296
+ ];
297
+ const result = await pinContextTool.invoke({ select: 4, filter: 'tools', action: 'pin' }, makeContext(messages));
298
+ expect(result).toContain('2 message(s)');
299
+ expect(messages[1].metadata?.custom?.pinned).toBe(true);
300
+ expect(messages[2].metadata?.custom?.pinned).toBe(true);
301
+ expect(messages[0].metadata?.custom?.pinned).toBeUndefined();
302
+ expect(messages[3].metadata?.custom?.pinned).toBeUndefined();
303
+ });
304
+ });
305
+ describe('unpin action', () => {
306
+ it('removes pin from previously pinned messages', async () => {
307
+ const messages = makeMessages(4);
308
+ pinMessage(messages, 1);
309
+ pinMessage(messages, 2);
310
+ const result = await pinContextTool.invoke({ select: [1, 2], action: 'unpin' }, makeContext(messages));
311
+ expect(result).toContain('Unpinned');
312
+ expect(result).toContain('2 message(s)');
313
+ expect(messages[1].metadata?.custom?.pinned).toBeUndefined();
314
+ expect(messages[2].metadata?.custom?.pinned).toBeUndefined();
315
+ });
316
+ it('unpins last N messages', async () => {
317
+ const messages = makeMessages(4);
318
+ pinMessage(messages, 2);
319
+ pinMessage(messages, 3);
320
+ await pinContextTool.invoke({ select: 2, action: 'unpin' }, makeContext(messages));
321
+ expect(messages[2].metadata?.custom?.pinned).toBeUndefined();
322
+ expect(messages[3].metadata?.custom?.pinned).toBeUndefined();
323
+ });
324
+ });
325
+ describe('empty conversation', () => {
326
+ it('returns appropriate message', async () => {
327
+ const result = await pinContextTool.invoke({ select: 'last_turn', action: 'pin' }, makeContext([]));
328
+ expect(result).toBe('No messages in the conversation.');
329
+ });
330
+ });
331
+ });
332
+ //# sourceMappingURL=agentic-context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentic-context.test.js","sourceRoot":"","sources":["../../../../src/conversation-manager/__tests__/agentic-context.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context-compression.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compression.test.d.ts","sourceRoot":"","sources":["../../../../src/conversation-manager/__tests__/context-compression.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,176 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { adjustSplitPointForToolPairs, findValidTrimPoint, generateSummary, matchesMessageType, DEFAULT_SUMMARIZATION_PROMPT, } from '../compression/context-compression.js';
3
+ import { pinMessage, partitionPinned } from '../compression/pin-message.js';
4
+ import { Message, TextBlock, ToolUseBlock, ToolResultBlock } from '../../types/messages.js';
5
+ function textMsg(role, text) {
6
+ return new Message({ role, content: [new TextBlock(text)] });
7
+ }
8
+ function toolUseMsg(toolUseId, name = 'test') {
9
+ return new Message({
10
+ role: 'assistant',
11
+ content: [new ToolUseBlock({ toolUseId, name, input: {} })],
12
+ });
13
+ }
14
+ function toolResultMsg(toolUseId, text = 'result') {
15
+ return new Message({
16
+ role: 'user',
17
+ content: [new ToolResultBlock({ toolUseId, status: 'success', content: [new TextBlock(text)] })],
18
+ });
19
+ }
20
+ describe('adjustSplitPointForToolPairs', () => {
21
+ it('returns split point when message is plain text', () => {
22
+ const messages = [textMsg('user', 'hello'), textMsg('assistant', 'hi'), textMsg('user', 'bye')];
23
+ expect(adjustSplitPointForToolPairs(messages, 0)).toBe(0);
24
+ });
25
+ it('skips toolResult messages', () => {
26
+ const messages = [toolResultMsg('id-1'), textMsg('user', 'hello')];
27
+ expect(adjustSplitPointForToolPairs(messages, 0)).toBe(1);
28
+ });
29
+ it('skips toolUse without following toolResult', () => {
30
+ const messages = [toolUseMsg('id-1'), textMsg('assistant', 'no result'), textMsg('user', 'hello')];
31
+ expect(adjustSplitPointForToolPairs(messages, 0)).toBe(1);
32
+ });
33
+ it('accepts toolUse when followed by toolResult', () => {
34
+ const messages = [toolUseMsg('id-1'), toolResultMsg('id-1'), textMsg('user', 'hello')];
35
+ expect(adjustSplitPointForToolPairs(messages, 0)).toBe(0);
36
+ });
37
+ it('skips multiple consecutive toolResults', () => {
38
+ const messages = [toolResultMsg('id-1'), toolResultMsg('id-2'), textMsg('user', 'hello')];
39
+ expect(adjustSplitPointForToolPairs(messages, 0)).toBe(2);
40
+ });
41
+ it('throws when no valid split point exists', () => {
42
+ const messages = [toolResultMsg('id-1'), toolResultMsg('id-2')];
43
+ expect(() => adjustSplitPointForToolPairs(messages, 0)).toThrow('Unable to find valid split point');
44
+ });
45
+ it('returns splitPoint as-is when it equals messages.length', () => {
46
+ const messages = [textMsg('user', 'hello'), textMsg('assistant', 'hi')];
47
+ expect(adjustSplitPointForToolPairs(messages, 2)).toBe(2);
48
+ });
49
+ it('returns splitPoint as-is when it exceeds messages.length', () => {
50
+ const messages = [textMsg('user', 'hello')];
51
+ expect(adjustSplitPointForToolPairs(messages, 5)).toBe(5);
52
+ });
53
+ });
54
+ describe('findValidTrimPoint', () => {
55
+ it('finds plain user message', () => {
56
+ const messages = [textMsg('user', 'hello'), textMsg('assistant', 'hi')];
57
+ expect(findValidTrimPoint(messages, 0)).toBe(0);
58
+ });
59
+ it('skips non-user messages', () => {
60
+ const messages = [textMsg('assistant', 'hi'), textMsg('user', 'hello')];
61
+ expect(findValidTrimPoint(messages, 0)).toBe(1);
62
+ });
63
+ it('skips toolResult user messages', () => {
64
+ const messages = [toolResultMsg('id-1'), textMsg('user', 'hello')];
65
+ expect(findValidTrimPoint(messages, 0)).toBe(1);
66
+ });
67
+ it('returns messages.length when no valid point found', () => {
68
+ const messages = [textMsg('assistant', 'hi'), toolResultMsg('id-1')];
69
+ expect(findValidTrimPoint(messages, 0)).toBe(messages.length);
70
+ });
71
+ it('respects startIndex', () => {
72
+ const messages = [textMsg('user', 'skip'), textMsg('assistant', 'hi'), textMsg('user', 'find')];
73
+ expect(findValidTrimPoint(messages, 1)).toBe(2);
74
+ });
75
+ it('returns 0 for empty messages', () => {
76
+ expect(findValidTrimPoint([], 0)).toBe(0);
77
+ });
78
+ });
79
+ describe('matchesMessageType', () => {
80
+ it('"all" always matches', () => {
81
+ expect(matchesMessageType(textMsg('user', 'hello'), 'all')).toBe(true);
82
+ expect(matchesMessageType(toolUseMsg('id-1'), 'all')).toBe(true);
83
+ expect(matchesMessageType(toolResultMsg('id-1'), 'all')).toBe(true);
84
+ });
85
+ it('"tools" matches tool messages', () => {
86
+ expect(matchesMessageType(toolUseMsg('id-1'), 'tools')).toBe(true);
87
+ expect(matchesMessageType(toolResultMsg('id-1'), 'tools')).toBe(true);
88
+ });
89
+ it('"tools" does not match plain text', () => {
90
+ expect(matchesMessageType(textMsg('user', 'hello'), 'tools')).toBe(false);
91
+ expect(matchesMessageType(textMsg('assistant', 'hi'), 'tools')).toBe(false);
92
+ });
93
+ it('"messages" matches plain text', () => {
94
+ expect(matchesMessageType(textMsg('user', 'hello'), 'messages')).toBe(true);
95
+ expect(matchesMessageType(textMsg('assistant', 'hi'), 'messages')).toBe(true);
96
+ });
97
+ it('"messages" does not match tool messages', () => {
98
+ expect(matchesMessageType(toolUseMsg('id-1'), 'messages')).toBe(false);
99
+ expect(matchesMessageType(toolResultMsg('id-1'), 'messages')).toBe(false);
100
+ });
101
+ });
102
+ describe('partitionPinned', () => {
103
+ it('separates pinned and unpinned messages', () => {
104
+ const messages = [textMsg('user', 'a'), textMsg('assistant', 'b'), textMsg('user', 'c')];
105
+ pinMessage(messages, 1);
106
+ const [pinned, unpinned] = partitionPinned(messages, 0, 3);
107
+ expect(pinned).toHaveLength(1);
108
+ expect(unpinned).toHaveLength(2);
109
+ });
110
+ it('respects rangeEnd', () => {
111
+ const messages = [textMsg('user', 'a'), textMsg('assistant', 'b'), textMsg('user', 'c')];
112
+ pinMessage(messages, 0);
113
+ pinMessage(messages, 2);
114
+ const [pinned, unpinned] = partitionPinned(messages, 0, 2);
115
+ expect(pinned).toHaveLength(1);
116
+ expect(unpinned).toHaveLength(1);
117
+ });
118
+ });
119
+ describe('generateSummary', () => {
120
+ function mockModel(summaryText) {
121
+ const message = new Message({ role: 'assistant', content: [new TextBlock(summaryText)] });
122
+ return {
123
+ streamAggregated: vi.fn(() => ({
124
+ next: vi
125
+ .fn()
126
+ .mockResolvedValueOnce({ done: false, value: undefined })
127
+ .mockResolvedValueOnce({ done: true, value: { message } }),
128
+ [Symbol.asyncIterator]: vi.fn(),
129
+ })),
130
+ };
131
+ }
132
+ it('returns a user-role message', async () => {
133
+ const model = mockModel('Summary of conversation');
134
+ const messages = [textMsg('user', 'hello'), textMsg('assistant', 'hi')];
135
+ const result = await generateSummary(messages, model);
136
+ expect(result.role).toBe('user');
137
+ });
138
+ it('passes the default system prompt', async () => {
139
+ const model = mockModel('Summary');
140
+ await generateSummary([textMsg('user', 'hello')], model);
141
+ expect(model.streamAggregated).toHaveBeenCalledWith(expect.any(Array), {
142
+ systemPrompt: DEFAULT_SUMMARIZATION_PROMPT,
143
+ });
144
+ });
145
+ it('passes a custom system prompt', async () => {
146
+ const model = mockModel('Summary');
147
+ await generateSummary([textMsg('user', 'hello')], model, 'Custom prompt');
148
+ expect(model.streamAggregated).toHaveBeenCalledWith(expect.any(Array), {
149
+ systemPrompt: 'Custom prompt',
150
+ });
151
+ });
152
+ it('appends summarization request message', async () => {
153
+ const model = mockModel('Summary');
154
+ const original = [textMsg('user', 'hello'), textMsg('assistant', 'hi')];
155
+ await generateSummary(original, model);
156
+ const passedMessages = model.streamAggregated.mock.calls[0][0];
157
+ expect(passedMessages).toHaveLength(3);
158
+ expect(passedMessages[2].content[0].text).toContain('summarize');
159
+ });
160
+ it('does not mutate original messages', async () => {
161
+ const model = mockModel('Summary');
162
+ const original = [textMsg('user', 'hello'), textMsg('assistant', 'hi')];
163
+ await generateSummary(original, model);
164
+ expect(original).toHaveLength(2);
165
+ });
166
+ it('throws if model returns no response', async () => {
167
+ const model = {
168
+ streamAggregated: vi.fn(() => ({
169
+ next: vi.fn().mockResolvedValueOnce({ done: true, value: undefined }),
170
+ [Symbol.asyncIterator]: vi.fn(),
171
+ })),
172
+ };
173
+ await expect(generateSummary([textMsg('user', 'hello')], model)).rejects.toThrow('Failed to generate summary');
174
+ });
175
+ });
176
+ //# sourceMappingURL=context-compression.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compression.test.js","sourceRoot":"","sources":["../../../../src/conversation-manager/__tests__/context-compression.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pin.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin.test.d.ts","sourceRoot":"","sources":["../../../../src/conversation-manager/__tests__/pin.test.ts"],"names":[],"mappings":""}