@strands-agents/sdk 1.0.0-rc.5 → 1.1.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 (380) hide show
  1. package/LICENSE +175 -0
  2. package/README.md +340 -0
  3. package/dist/src/__fixtures__/agent-helpers.d.ts +22 -1
  4. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  5. package/dist/src/__fixtures__/agent-helpers.js +45 -1
  6. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  7. package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/mock-plugin.js +3 -1
  9. package/dist/src/__fixtures__/mock-plugin.js.map +1 -1
  10. package/dist/src/__fixtures__/tool-helpers.d.ts +5 -2
  11. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  12. package/dist/src/__fixtures__/tool-helpers.js +23 -4
  13. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  14. package/dist/src/__tests__/interrupt.test.d.ts +2 -0
  15. package/dist/src/__tests__/interrupt.test.d.ts.map +1 -0
  16. package/dist/src/__tests__/interrupt.test.js +259 -0
  17. package/dist/src/__tests__/interrupt.test.js.map +1 -0
  18. package/dist/src/__tests__/mcp.test.js +448 -2
  19. package/dist/src/__tests__/mcp.test.js.map +1 -1
  20. package/dist/src/a2a/__tests__/events.test.js +2 -0
  21. package/dist/src/a2a/__tests__/events.test.js.map +1 -1
  22. package/dist/src/a2a/__tests__/executor.test.js +16 -5
  23. package/dist/src/a2a/__tests__/executor.test.js.map +1 -1
  24. package/dist/src/a2a/a2a-agent.d.ts +8 -3
  25. package/dist/src/a2a/a2a-agent.d.ts.map +1 -1
  26. package/dist/src/a2a/a2a-agent.js +12 -6
  27. package/dist/src/a2a/a2a-agent.js.map +1 -1
  28. package/dist/src/a2a/executor.d.ts +13 -0
  29. package/dist/src/a2a/executor.d.ts.map +1 -1
  30. package/dist/src/a2a/executor.js +19 -1
  31. package/dist/src/a2a/executor.js.map +1 -1
  32. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts +2 -0
  33. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.d.ts.map +1 -0
  34. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js +23 -0
  35. package/dist/src/agent/__tests__/agent-as-tool.invocation-state.test.js.map +1 -0
  36. package/dist/src/agent/__tests__/agent.cancel.test.js +1 -1
  37. package/dist/src/agent/__tests__/agent.cancel.test.js.map +1 -1
  38. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts +2 -0
  39. package/dist/src/agent/__tests__/agent.concurrent.test.d.ts.map +1 -0
  40. package/dist/src/agent/__tests__/agent.concurrent.test.js +488 -0
  41. package/dist/src/agent/__tests__/agent.concurrent.test.js.map +1 -0
  42. package/dist/src/agent/__tests__/agent.hook.test.js +724 -12
  43. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  44. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts +2 -0
  45. package/dist/src/agent/__tests__/agent.interrupt.test.d.ts.map +1 -0
  46. package/dist/src/agent/__tests__/agent.interrupt.test.js +730 -0
  47. package/dist/src/agent/__tests__/agent.interrupt.test.js.map +1 -0
  48. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts +2 -0
  49. package/dist/src/agent/__tests__/agent.invocation-state.test.d.ts.map +1 -0
  50. package/dist/src/agent/__tests__/agent.invocation-state.test.js +219 -0
  51. package/dist/src/agent/__tests__/agent.invocation-state.test.js.map +1 -0
  52. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts +2 -0
  53. package/dist/src/agent/__tests__/agent.model-retry.test.d.ts.map +1 -0
  54. package/dist/src/agent/__tests__/agent.model-retry.test.js +161 -0
  55. package/dist/src/agent/__tests__/agent.model-retry.test.js.map +1 -0
  56. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts +2 -0
  57. package/dist/src/agent/__tests__/agent.stateful-model.test.d.ts.map +1 -0
  58. package/dist/src/agent/__tests__/agent.stateful-model.test.js +169 -0
  59. package/dist/src/agent/__tests__/agent.stateful-model.test.js.map +1 -0
  60. package/dist/src/agent/__tests__/agent.test.js +217 -2
  61. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  62. package/dist/src/agent/__tests__/agent.tracer.test.node.js +39 -0
  63. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -1
  64. package/dist/src/agent/__tests__/snapshot.test.js +51 -4
  65. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  66. package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
  67. package/dist/src/agent/agent-as-tool.js +4 -2
  68. package/dist/src/agent/agent-as-tool.js.map +1 -1
  69. package/dist/src/agent/agent.d.ts +109 -4
  70. package/dist/src/agent/agent.d.ts.map +1 -1
  71. package/dist/src/agent/agent.js +790 -224
  72. package/dist/src/agent/agent.js.map +1 -1
  73. package/dist/src/agent/snapshot.d.ts +2 -2
  74. package/dist/src/agent/snapshot.d.ts.map +1 -1
  75. package/dist/src/agent/snapshot.js +20 -2
  76. package/dist/src/agent/snapshot.js.map +1 -1
  77. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +230 -9
  78. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
  79. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +19 -6
  80. package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
  81. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +58 -4
  82. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  83. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +76 -1
  84. package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
  85. package/dist/src/conversation-manager/conversation-manager.d.ts +67 -22
  86. package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -1
  87. package/dist/src/conversation-manager/conversation-manager.js +65 -13
  88. package/dist/src/conversation-manager/conversation-manager.js.map +1 -1
  89. package/dist/src/conversation-manager/index.d.ts +1 -1
  90. package/dist/src/conversation-manager/index.d.ts.map +1 -1
  91. package/dist/src/conversation-manager/index.js +1 -1
  92. package/dist/src/conversation-manager/index.js.map +1 -1
  93. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +17 -3
  94. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  95. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +10 -4
  96. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  97. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +23 -1
  98. package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
  99. package/dist/src/conversation-manager/summarizing-conversation-manager.js +39 -17
  100. package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
  101. package/dist/src/errors.d.ts +11 -0
  102. package/dist/src/errors.d.ts.map +1 -1
  103. package/dist/src/errors.js +12 -0
  104. package/dist/src/errors.js.map +1 -1
  105. package/dist/src/hooks/__tests__/events.test.js +267 -73
  106. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  107. package/dist/src/hooks/__tests__/registry.test.js +182 -18
  108. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  109. package/dist/src/hooks/events.d.ts +193 -51
  110. package/dist/src/hooks/events.d.ts.map +1 -1
  111. package/dist/src/hooks/events.js +182 -26
  112. package/dist/src/hooks/events.js.map +1 -1
  113. package/dist/src/hooks/index.d.ts +3 -2
  114. package/dist/src/hooks/index.d.ts.map +1 -1
  115. package/dist/src/hooks/index.js +1 -0
  116. package/dist/src/hooks/index.js.map +1 -1
  117. package/dist/src/hooks/registry.d.ts +12 -12
  118. package/dist/src/hooks/registry.d.ts.map +1 -1
  119. package/dist/src/hooks/registry.js +55 -15
  120. package/dist/src/hooks/registry.js.map +1 -1
  121. package/dist/src/hooks/types.d.ts +23 -0
  122. package/dist/src/hooks/types.d.ts.map +1 -1
  123. package/dist/src/hooks/types.js +17 -1
  124. package/dist/src/hooks/types.js.map +1 -1
  125. package/dist/src/index.d.ts +12 -7
  126. package/dist/src/index.d.ts.map +1 -1
  127. package/dist/src/index.js +4 -1
  128. package/dist/src/index.js.map +1 -1
  129. package/dist/src/interrupt.d.ts +220 -0
  130. package/dist/src/interrupt.d.ts.map +1 -0
  131. package/dist/src/interrupt.js +274 -0
  132. package/dist/src/interrupt.js.map +1 -0
  133. package/dist/src/logging/__tests__/warn-once.test.d.ts +2 -0
  134. package/dist/src/logging/__tests__/warn-once.test.d.ts.map +1 -0
  135. package/dist/src/logging/__tests__/warn-once.test.js +30 -0
  136. package/dist/src/logging/__tests__/warn-once.test.js.map +1 -0
  137. package/dist/src/logging/warn-once.d.ts +13 -0
  138. package/dist/src/logging/warn-once.d.ts.map +1 -0
  139. package/dist/src/logging/warn-once.js +18 -0
  140. package/dist/src/logging/warn-once.js.map +1 -0
  141. package/dist/src/mcp.d.ts +43 -3
  142. package/dist/src/mcp.d.ts.map +1 -1
  143. package/dist/src/mcp.js +85 -17
  144. package/dist/src/mcp.js.map +1 -1
  145. package/dist/src/mime.d.ts +2 -1
  146. package/dist/src/mime.d.ts.map +1 -1
  147. package/dist/src/mime.js +1 -0
  148. package/dist/src/mime.js.map +1 -1
  149. package/dist/src/models/__tests__/anthropic.test.js +147 -3
  150. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  151. package/dist/src/models/__tests__/bedrock.test.js +228 -2
  152. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  153. package/dist/src/models/__tests__/defaults.test.d.ts +2 -0
  154. package/dist/src/models/__tests__/defaults.test.d.ts.map +1 -0
  155. package/dist/src/models/__tests__/defaults.test.js +36 -0
  156. package/dist/src/models/__tests__/defaults.test.js.map +1 -0
  157. package/dist/src/models/__tests__/google.test.js +135 -0
  158. package/dist/src/models/__tests__/google.test.js.map +1 -1
  159. package/dist/src/models/__tests__/model.test.js +149 -1
  160. package/dist/src/models/__tests__/model.test.js.map +1 -1
  161. package/dist/src/models/anthropic.d.ts +20 -1
  162. package/dist/src/models/anthropic.d.ts.map +1 -1
  163. package/dist/src/models/anthropic.js +42 -8
  164. package/dist/src/models/anthropic.js.map +1 -1
  165. package/dist/src/models/bedrock.d.ts +27 -1
  166. package/dist/src/models/bedrock.d.ts.map +1 -1
  167. package/dist/src/models/bedrock.js +100 -12
  168. package/dist/src/models/bedrock.js.map +1 -1
  169. package/dist/src/models/defaults.d.ts +47 -0
  170. package/dist/src/models/defaults.d.ts.map +1 -0
  171. package/dist/src/models/defaults.js +170 -0
  172. package/dist/src/models/defaults.js.map +1 -0
  173. package/dist/src/models/google/model.d.ts +14 -1
  174. package/dist/src/models/google/model.d.ts.map +1 -1
  175. package/dist/src/models/google/model.js +54 -8
  176. package/dist/src/models/google/model.js.map +1 -1
  177. package/dist/src/models/google/types.d.ts +8 -0
  178. package/dist/src/models/google/types.d.ts.map +1 -1
  179. package/dist/src/models/model.d.ts +65 -0
  180. package/dist/src/models/model.d.ts.map +1 -1
  181. package/dist/src/models/model.js +138 -0
  182. package/dist/src/models/model.js.map +1 -1
  183. package/dist/src/models/openai/__tests__/chat.test.d.ts +2 -0
  184. package/dist/src/models/openai/__tests__/chat.test.d.ts.map +1 -0
  185. package/dist/src/models/{__tests__/openai.test.js → openai/__tests__/chat.test.js} +117 -7
  186. package/dist/src/models/openai/__tests__/chat.test.js.map +1 -0
  187. package/dist/src/models/openai/__tests__/responses.test.d.ts +2 -0
  188. package/dist/src/models/openai/__tests__/responses.test.d.ts.map +1 -0
  189. package/dist/src/models/openai/__tests__/responses.test.js +668 -0
  190. package/dist/src/models/openai/__tests__/responses.test.js.map +1 -0
  191. package/dist/src/models/openai/chat-adapter.d.ts +33 -0
  192. package/dist/src/models/openai/chat-adapter.d.ts.map +1 -0
  193. package/dist/src/models/openai/chat-adapter.js +383 -0
  194. package/dist/src/models/openai/chat-adapter.js.map +1 -0
  195. package/dist/src/models/openai/errors.d.ts +16 -0
  196. package/dist/src/models/openai/errors.d.ts.map +1 -0
  197. package/dist/src/models/openai/errors.js +40 -0
  198. package/dist/src/models/openai/errors.js.map +1 -0
  199. package/dist/src/models/openai/formatting.d.ts +18 -0
  200. package/dist/src/models/openai/formatting.d.ts.map +1 -0
  201. package/dist/src/models/openai/formatting.js +38 -0
  202. package/dist/src/models/openai/formatting.js.map +1 -0
  203. package/dist/src/models/openai/index.d.ts +19 -0
  204. package/dist/src/models/openai/index.d.ts.map +1 -0
  205. package/dist/src/models/openai/index.js +18 -0
  206. package/dist/src/models/openai/index.js.map +1 -0
  207. package/dist/src/models/openai/model.d.ts +77 -0
  208. package/dist/src/models/openai/model.d.ts.map +1 -0
  209. package/dist/src/models/openai/model.js +211 -0
  210. package/dist/src/models/openai/model.js.map +1 -0
  211. package/dist/src/models/openai/responses-adapter.d.ts +78 -0
  212. package/dist/src/models/openai/responses-adapter.d.ts.map +1 -0
  213. package/dist/src/models/openai/responses-adapter.js +467 -0
  214. package/dist/src/models/openai/responses-adapter.js.map +1 -0
  215. package/dist/src/models/openai/types.d.ts +131 -0
  216. package/dist/src/models/openai/types.d.ts.map +1 -0
  217. package/dist/src/models/openai/types.js +5 -0
  218. package/dist/src/models/openai/types.js.map +1 -0
  219. package/dist/src/multiagent/__tests__/events.test.js +122 -28
  220. package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
  221. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts +2 -0
  222. package/dist/src/multiagent/__tests__/graph.invocation-state.test.d.ts.map +1 -0
  223. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js +95 -0
  224. package/dist/src/multiagent/__tests__/graph.invocation-state.test.js.map +1 -0
  225. package/dist/src/multiagent/__tests__/graph.test.js +69 -0
  226. package/dist/src/multiagent/__tests__/graph.test.js.map +1 -1
  227. package/dist/src/multiagent/__tests__/nodes.test.js +18 -2
  228. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  229. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts +2 -0
  230. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.d.ts.map +1 -0
  231. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js +56 -0
  232. package/dist/src/multiagent/__tests__/swarm.invocation-state.test.js.map +1 -0
  233. package/dist/src/multiagent/__tests__/swarm.test.js +77 -0
  234. package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -1
  235. package/dist/src/multiagent/events.d.ts +19 -1
  236. package/dist/src/multiagent/events.d.ts.map +1 -1
  237. package/dist/src/multiagent/events.js +18 -0
  238. package/dist/src/multiagent/events.js.map +1 -1
  239. package/dist/src/multiagent/graph.d.ts +27 -5
  240. package/dist/src/multiagent/graph.d.ts.map +1 -1
  241. package/dist/src/multiagent/graph.js +61 -15
  242. package/dist/src/multiagent/graph.js.map +1 -1
  243. package/dist/src/multiagent/index.d.ts +1 -1
  244. package/dist/src/multiagent/index.d.ts.map +1 -1
  245. package/dist/src/multiagent/multiagent.d.ts +21 -6
  246. package/dist/src/multiagent/multiagent.d.ts.map +1 -1
  247. package/dist/src/multiagent/nodes.d.ts +28 -3
  248. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  249. package/dist/src/multiagent/nodes.js +42 -7
  250. package/dist/src/multiagent/nodes.js.map +1 -1
  251. package/dist/src/multiagent/swarm.d.ts +20 -4
  252. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  253. package/dist/src/multiagent/swarm.js +65 -16
  254. package/dist/src/multiagent/swarm.js.map +1 -1
  255. package/dist/src/plugins/__tests__/registry.test.js +1 -1
  256. package/dist/src/plugins/__tests__/registry.test.js.map +1 -1
  257. package/dist/src/plugins/model-plugin.d.ts +20 -0
  258. package/dist/src/plugins/model-plugin.d.ts.map +1 -0
  259. package/dist/src/plugins/model-plugin.js +29 -0
  260. package/dist/src/plugins/model-plugin.js.map +1 -0
  261. package/dist/src/registry/__tests__/tool-registry.test.js +11 -0
  262. package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
  263. package/dist/src/registry/tool-registry.d.ts +4 -0
  264. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  265. package/dist/src/registry/tool-registry.js +6 -0
  266. package/dist/src/registry/tool-registry.js.map +1 -1
  267. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts +2 -0
  268. package/dist/src/retry/__tests__/backoff-strategy.test.d.ts.map +1 -0
  269. package/dist/src/retry/__tests__/backoff-strategy.test.js +116 -0
  270. package/dist/src/retry/__tests__/backoff-strategy.test.js.map +1 -0
  271. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts +2 -0
  272. package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts.map +1 -0
  273. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js +225 -0
  274. package/dist/src/retry/__tests__/default-model-retry-strategy.test.js.map +1 -0
  275. package/dist/src/retry/backoff-strategy.d.ts +108 -0
  276. package/dist/src/retry/backoff-strategy.d.ts.map +1 -0
  277. package/dist/src/retry/backoff-strategy.js +86 -0
  278. package/dist/src/retry/backoff-strategy.js.map +1 -0
  279. package/dist/src/retry/default-model-retry-strategy.d.ts +76 -0
  280. package/dist/src/retry/default-model-retry-strategy.d.ts.map +1 -0
  281. package/dist/src/retry/default-model-retry-strategy.js +104 -0
  282. package/dist/src/retry/default-model-retry-strategy.js.map +1 -0
  283. package/dist/src/retry/index.d.ts +8 -0
  284. package/dist/src/retry/index.d.ts.map +1 -0
  285. package/dist/src/retry/index.js +7 -0
  286. package/dist/src/retry/index.js.map +1 -0
  287. package/dist/src/retry/model-retry-strategy.d.ts +80 -0
  288. package/dist/src/retry/model-retry-strategy.d.ts.map +1 -0
  289. package/dist/src/retry/model-retry-strategy.js +85 -0
  290. package/dist/src/retry/model-retry-strategy.js.map +1 -0
  291. package/dist/src/retry/retry-strategy.d.ts +34 -0
  292. package/dist/src/retry/retry-strategy.d.ts.map +1 -0
  293. package/dist/src/retry/retry-strategy.js +25 -0
  294. package/dist/src/retry/retry-strategy.js.map +1 -0
  295. package/dist/src/session/__tests__/session-manager.test.js +52 -11
  296. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  297. package/dist/src/session/session-manager.d.ts +6 -0
  298. package/dist/src/session/session-manager.d.ts.map +1 -1
  299. package/dist/src/session/session-manager.js +17 -0
  300. package/dist/src/session/session-manager.js.map +1 -1
  301. package/dist/src/telemetry/__tests__/meter.test.js +23 -0
  302. package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
  303. package/dist/src/telemetry/meter.d.ts +15 -0
  304. package/dist/src/telemetry/meter.d.ts.map +1 -1
  305. package/dist/src/telemetry/meter.js +14 -0
  306. package/dist/src/telemetry/meter.js.map +1 -1
  307. package/dist/src/tools/__tests__/tool.test.js +24 -1
  308. package/dist/src/tools/__tests__/tool.test.js.map +1 -1
  309. package/dist/src/tools/function-tool.d.ts.map +1 -1
  310. package/dist/src/tools/function-tool.js +6 -1
  311. package/dist/src/tools/function-tool.js.map +1 -1
  312. package/dist/src/tools/mcp-tool.d.ts +24 -3
  313. package/dist/src/tools/mcp-tool.d.ts.map +1 -1
  314. package/dist/src/tools/mcp-tool.js +103 -31
  315. package/dist/src/tools/mcp-tool.js.map +1 -1
  316. package/dist/src/tools/tool.d.ts +21 -2
  317. package/dist/src/tools/tool.d.ts.map +1 -1
  318. package/dist/src/tools/tool.js +12 -0
  319. package/dist/src/tools/tool.js.map +1 -1
  320. package/dist/src/tsconfig.tsbuildinfo +1 -1
  321. package/dist/src/types/__tests__/agent.test.js +48 -0
  322. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  323. package/dist/src/types/agent.d.ts +77 -9
  324. package/dist/src/types/agent.d.ts.map +1 -1
  325. package/dist/src/types/agent.js +30 -6
  326. package/dist/src/types/agent.js.map +1 -1
  327. package/dist/src/types/elicitation.d.ts +15 -0
  328. package/dist/src/types/elicitation.d.ts.map +1 -0
  329. package/dist/src/types/elicitation.js +2 -0
  330. package/dist/src/types/elicitation.js.map +1 -0
  331. package/dist/src/types/interrupt.d.ts +103 -0
  332. package/dist/src/types/interrupt.d.ts.map +1 -0
  333. package/dist/src/types/interrupt.js +63 -0
  334. package/dist/src/types/interrupt.js.map +1 -0
  335. package/dist/src/types/messages.d.ts +2 -1
  336. package/dist/src/types/messages.d.ts.map +1 -1
  337. package/dist/src/types/messages.js.map +1 -1
  338. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts +2 -0
  339. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts.map +1 -0
  340. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +292 -0
  341. package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -0
  342. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts +2 -0
  343. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts.map +1 -0
  344. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +148 -0
  345. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +1 -0
  346. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts +2 -0
  347. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts.map +1 -0
  348. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js +78 -0
  349. package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js.map +1 -0
  350. package/dist/src/vended-plugins/context-offloader/index.d.ts +23 -0
  351. package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -0
  352. package/dist/src/vended-plugins/context-offloader/index.js +21 -0
  353. package/dist/src/vended-plugins/context-offloader/index.js.map +1 -0
  354. package/dist/src/vended-plugins/context-offloader/plugin.d.ts +48 -0
  355. package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -0
  356. package/dist/src/vended-plugins/context-offloader/plugin.js +244 -0
  357. package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -0
  358. package/dist/src/vended-plugins/context-offloader/storage.d.ts +114 -0
  359. package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -0
  360. package/dist/src/vended-plugins/context-offloader/storage.js +204 -0
  361. package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -0
  362. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +21 -5
  363. package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
  364. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +4 -0
  365. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  366. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  367. package/dist/src/vended-tools/bash/bash.js +0 -3
  368. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  369. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +4 -0
  370. package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
  371. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +4 -0
  372. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  373. package/package.json +17 -9
  374. package/dist/src/models/__tests__/openai.test.d.ts +0 -2
  375. package/dist/src/models/__tests__/openai.test.d.ts.map +0 -1
  376. package/dist/src/models/__tests__/openai.test.js.map +0 -1
  377. package/dist/src/models/openai.d.ts +0 -312
  378. package/dist/src/models/openai.d.ts.map +0 -1
  379. package/dist/src/models/openai.js +0 -789
  380. package/dist/src/models/openai.js.map +0 -1
@@ -4,21 +4,28 @@
4
4
  * This module defines the ConversationManager abstraction, which provides a
5
5
  * domain-specific interface for managing an agent's conversation context.
6
6
  */
7
- import { AfterModelCallEvent } from '../hooks/events.js';
7
+ import { AfterModelCallEvent, BeforeModelCallEvent } from '../hooks/events.js';
8
8
  import { ContextWindowOverflowError } from '../errors.js';
9
+ import { logger } from '../logging/logger.js';
10
+ import { warnOnce } from '../logging/warn-once.js';
11
+ /** Default compression threshold ratio. */
12
+ const DEFAULT_COMPRESSION_THRESHOLD = 0.7;
13
+ /** Default context window limit fallback when the model doesn't report one. */
14
+ const DEFAULT_CONTEXT_WINDOW_LIMIT = 200_000;
9
15
  /**
10
16
  * Abstract base class for conversation history management strategies.
11
17
  *
12
18
  * The primary responsibility of a ConversationManager is overflow recovery: when the
13
19
  * model returns a {@link ContextWindowOverflowError}, {@link ConversationManager.reduce}
14
- * is called and MUST reduce the history enough for the next model call to succeed.
15
- * If `reduce` returns `false` (no reduction performed), the error propagates out of
16
- * the agent loop uncaught. This makes `reduce` a critical operation — implementations
17
- * must be able to make meaningful progress when called with `error` set.
20
+ * is called with `error` set and MUST reduce the history enough for the next model call
21
+ * to succeed. If `reduce` returns `false` (no reduction performed), the error propagates
22
+ * out of the agent loop uncaught. This makes `reduce` a critical operation —
23
+ * implementations must be able to make meaningful progress when called with `error` set.
18
24
  *
19
- * Optionally, a manager can also do proactive management (e.g. trimming after every
20
- * invocation to stay within a window) by overriding `initAgent`, calling
21
- * `super.initAgent(agent)` to preserve overflow recovery, then registering additional hooks.
25
+ * Subclasses can enable proactive compression by passing `proactiveCompression` in the
26
+ * options object to the base constructor. When enabled, the base class registers a
27
+ * `BeforeModelCallEvent` hook that checks projected input tokens against the model's
28
+ * context window limit and calls `reduce` (without `error`) when the threshold is exceeded.
22
29
  *
23
30
  * @example
24
31
  * ```typescript
@@ -34,19 +41,39 @@ import { ContextWindowOverflowError } from '../errors.js';
34
41
  * ```
35
42
  */
36
43
  export class ConversationManager {
44
+ _compressionThreshold;
45
+ /**
46
+ * @param options - Configuration options for the conversation manager.
47
+ */
48
+ constructor(options) {
49
+ const proactiveCompression = options?.proactiveCompression;
50
+ const threshold = proactiveCompression === true
51
+ ? DEFAULT_COMPRESSION_THRESHOLD
52
+ : proactiveCompression
53
+ ? proactiveCompression.compressionThreshold
54
+ : undefined;
55
+ if (threshold !== undefined && (threshold <= 0 || threshold > 1)) {
56
+ throw new Error(`compressionThreshold must be between 0 (exclusive) and 1 (inclusive), got ${threshold}`);
57
+ }
58
+ this._compressionThreshold = threshold;
59
+ }
37
60
  /**
38
61
  * Initialize the conversation manager with the agent instance.
39
62
  *
40
- * Registers overflow recovery: when a {@link ContextWindowOverflowError} occurs,
41
- * calls {@link ConversationManager.reduce} and retries the model call if reduction succeeded.
42
- * If `reduce` returns `false`, the error propagates out of the agent loop uncaught.
63
+ * Registers two hooks:
64
+ * 1. `AfterModelCallEvent`: Overflow recovery when a {@link ContextWindowOverflowError} occurs,
65
+ * calls {@link ConversationManager.reduce} with `error` set and retries if reduction succeeded.
66
+ * 2. `BeforeModelCallEvent`: Proactive compression — when projected input tokens exceed the
67
+ * configured compression threshold, calls {@link ConversationManager.reduce} without `error`.
68
+ * The hook is always registered but only acts when proactive compression is enabled.
43
69
  *
44
- * Subclasses that need proactive management MUST call `super.initAgent(agent)` to
45
- * preserve this overflow recovery behavior.
70
+ * Subclasses that override `initAgent` MUST call `super.initAgent(agent)` to
71
+ * preserve overflow recovery and proactive compression behavior.
46
72
  *
47
73
  * @param agent - The agent to register hooks with
48
74
  */
49
75
  initAgent(agent) {
76
+ // Reactive overflow recovery
50
77
  agent.addHook(AfterModelCallEvent, async (event) => {
51
78
  if (event.error instanceof ContextWindowOverflowError) {
52
79
  if (await this.reduce({ agent: event.agent, model: event.model, error: event.error })) {
@@ -54,6 +81,31 @@ export class ConversationManager {
54
81
  }
55
82
  }
56
83
  });
84
+ // Proactive compression — always subscribe, check threshold in the handler
85
+ agent.addHook(BeforeModelCallEvent, async (event) => {
86
+ if (this._compressionThreshold === undefined) {
87
+ return;
88
+ }
89
+ let contextWindowLimit = event.model.getConfig().contextWindowLimit;
90
+ if (contextWindowLimit === undefined) {
91
+ contextWindowLimit = DEFAULT_CONTEXT_WINDOW_LIMIT;
92
+ warnOnce(logger, `conversation_manager=<${this.name}> | contextWindowLimit is not set on the model, using default of ${DEFAULT_CONTEXT_WINDOW_LIMIT} | set contextWindowLimit in your model config for accurate proactive compression`);
93
+ }
94
+ if (event.projectedInputTokens === undefined) {
95
+ return;
96
+ }
97
+ const ratio = event.projectedInputTokens / contextWindowLimit;
98
+ if (ratio >= this._compressionThreshold) {
99
+ logger.debug(`projected_tokens=<${event.projectedInputTokens}>, limit=<${contextWindowLimit}>, ratio=<${ratio.toFixed(2)}>, compression_threshold=<${this._compressionThreshold}> | compression threshold exceeded, reducing context`);
100
+ // Proactive compression is best-effort: swallow errors so the model call can still proceed.
101
+ try {
102
+ await this.reduce({ agent: event.agent, model: event.model });
103
+ }
104
+ catch (e) {
105
+ logger.warn(`conversation_manager=<${this.name}> | proactive compression failed, continuing | error=<${e}>`);
106
+ }
107
+ }
108
+ });
57
109
  }
58
110
  }
59
111
  //# sourceMappingURL=conversation-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../../src/conversation-manager/conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AA0BzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAgB,mBAAmB;IAwBvC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,KAAiB;QACzB,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACjD,IAAI,KAAK,CAAC,KAAK,YAAY,0BAA0B,EAAE,CAAC;gBACtD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;oBACtF,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../../src/conversation-manager/conversation-manager.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * This module exports conversation manager implementations.
5
5
  */
6
- export { ConversationManager, type ConversationManagerReduceOptions as ReduceOptions } from './conversation-manager.js';
6
+ export { ConversationManager, type ProactiveCompressionConfig, type ConversationManagerReduceOptions as ReduceOptions, type ConversationManagerOptions, } from './conversation-manager.js';
7
7
  export { NullConversationManager } from './null-conversation-manager.js';
8
8
  export { SlidingWindowConversationManager, type SlidingWindowConversationManagerConfig, } from './sliding-window-conversation-manager.js';
9
9
  export { SummarizingConversationManager, type SummarizingConversationManagerConfig, } from './summarizing-conversation-manager.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/conversation-manager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,KAAK,gCAAgC,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACvH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EACL,gCAAgC,EAChC,KAAK,sCAAsC,GAC5C,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,8BAA8B,EAC9B,KAAK,oCAAoC,GAC1C,MAAM,uCAAuC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/conversation-manager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,IAAI,aAAa,EACtD,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EACL,gCAAgC,EAChC,KAAK,sCAAsC,GAC5C,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,8BAA8B,EAC9B,KAAK,oCAAoC,GAC1C,MAAM,uCAAuC,CAAA"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * This module exports conversation manager implementations.
5
5
  */
6
- export { ConversationManager } from './conversation-manager.js';
6
+ export { ConversationManager, } from './conversation-manager.js';
7
7
  export { NullConversationManager } from './null-conversation-manager.js';
8
8
  export { SlidingWindowConversationManager, } from './sliding-window-conversation-manager.js';
9
9
  export { SummarizingConversationManager, } from './summarizing-conversation-manager.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/conversation-manager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAA0D,MAAM,2BAA2B,CAAA;AACvH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EACL,gCAAgC,GAEjC,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,8BAA8B,GAE/B,MAAM,uCAAuC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/conversation-manager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,GAIpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EACL,gCAAgC,GAEjC,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,8BAA8B,GAE/B,MAAM,uCAAuC,CAAA"}
@@ -5,7 +5,7 @@
5
5
  * that preserves tool usage pairs and avoids invalid window states.
6
6
  */
7
7
  import type { LocalAgent } from '../types/agent.js';
8
- import { ConversationManager, type ConversationManagerReduceOptions } from './conversation-manager.js';
8
+ import { ConversationManager, type ProactiveCompressionConfig, type ConversationManagerReduceOptions } from './conversation-manager.js';
9
9
  /**
10
10
  * Configuration for the sliding window conversation manager.
11
11
  */
@@ -20,6 +20,14 @@ export type SlidingWindowConversationManagerConfig = {
20
20
  * Defaults to true.
21
21
  */
22
22
  shouldTruncateResults?: boolean;
23
+ /**
24
+ * Enable proactive context compression before the model call.
25
+ *
26
+ * - `true`: compress when 70% of the context window is used (default threshold).
27
+ * - `{ compressionThreshold: number }`: compress at the specified ratio (0, 1].
28
+ * - `false` or omitted: disabled, only reactive overflow recovery is used.
29
+ */
30
+ proactiveCompression?: boolean | ProactiveCompressionConfig;
23
31
  };
24
32
  /**
25
33
  * Implements a sliding window strategy for managing conversation history.
@@ -32,6 +40,7 @@ export type SlidingWindowConversationManagerConfig = {
32
40
  * Registers hooks for:
33
41
  * - AfterInvocationEvent: Applies sliding window management after each invocation
34
42
  * - AfterModelCallEvent: Reduces context on overflow errors and requests retry (via super)
43
+ * - BeforeModelCallEvent: Proactive compression when threshold is exceeded (via super)
35
44
  */
36
45
  export declare class SlidingWindowConversationManager extends ConversationManager {
37
46
  private readonly _windowSize;
@@ -52,14 +61,19 @@ export declare class SlidingWindowConversationManager extends ConversationManage
52
61
  * Registers:
53
62
  * - AfterInvocationEvent callback to apply sliding window management
54
63
  * - AfterModelCallEvent callback to handle context overflow and request retry (via super)
64
+ * - BeforeModelCallEvent callback for proactive compression (via super)
55
65
  *
56
66
  * @param agent - The agent to register hooks with
57
67
  */
58
68
  initAgent(agent: LocalAgent): void;
59
69
  /**
60
- * Reduce the conversation history in response to a context overflow.
70
+ * Reduce the conversation history.
71
+ *
72
+ * When `error` is set (reactive overflow recovery), attempts to truncate large tool results
73
+ * first before falling back to message trimming.
61
74
  *
62
- * Attempts to truncate large tool results first before falling back to message trimming.
75
+ * When `error` is undefined (proactive compression), only trims messages without attempting
76
+ * tool result truncation.
63
77
  *
64
78
  * @param options - The reduction options
65
79
  * @returns `true` if the history was reduced, `false` otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"sliding-window-conversation-manager.d.ts","sourceRoot":"","sources":["../../../src/conversation-manager/sliding-window-conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,KAAK,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAGtG;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,gCAAiC,SAAQ,mBAAmB;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD;;OAEG;IACH,QAAQ,CAAC,IAAI,iDAAgD;IAE7D;;;;OAIG;gBACS,MAAM,CAAC,EAAE,sCAAsC;IAM3D;;;;;;;;OAQG;IACa,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQlD;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gCAAgC,GAAG,OAAO;IAInE;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,cAAc;IAkEtB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IA0D5B;;;;;;;OAOG;IACH,OAAO,CAAC,+BAA+B;CAcxC"}
1
+ {"version":3,"file":"sliding-window-conversation-manager.d.ts","sourceRoot":"","sources":["../../../src/conversation-manager/sliding-window-conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACtC,MAAM,2BAA2B,CAAA;AAGlC;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG;IACnD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAE/B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAA;CAC5D,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,gCAAiC,SAAQ,mBAAmB;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD;;OAEG;IACH,QAAQ,CAAC,IAAI,iDAAgD;IAE7D;;;;OAIG;gBACS,MAAM,CAAC,EAAE,sCAAsC;IAM3D;;;;;;;;;OASG;IACa,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQlD;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gCAAgC,GAAG,OAAO;IAInE;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,cAAc;IAkEtB;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IA0D5B;;;;;;;OAOG;IACH,OAAO,CAAC,+BAA+B;CAcxC"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { Message, TextBlock, ToolResultBlock } from '../types/messages.js';
8
8
  import { AfterInvocationEvent } from '../hooks/events.js';
9
- import { ConversationManager } from './conversation-manager.js';
9
+ import { ConversationManager, } from './conversation-manager.js';
10
10
  import { logger } from '../logging/logger.js';
11
11
  /**
12
12
  * Implements a sliding window strategy for managing conversation history.
@@ -19,6 +19,7 @@ import { logger } from '../logging/logger.js';
19
19
  * Registers hooks for:
20
20
  * - AfterInvocationEvent: Applies sliding window management after each invocation
21
21
  * - AfterModelCallEvent: Reduces context on overflow errors and requests retry (via super)
22
+ * - BeforeModelCallEvent: Proactive compression when threshold is exceeded (via super)
22
23
  */
23
24
  export class SlidingWindowConversationManager extends ConversationManager {
24
25
  _windowSize;
@@ -33,7 +34,7 @@ export class SlidingWindowConversationManager extends ConversationManager {
33
34
  * @param config - Configuration options for the sliding window manager.
34
35
  */
35
36
  constructor(config) {
36
- super();
37
+ super(config);
37
38
  this._windowSize = config?.windowSize ?? 40;
38
39
  this._shouldTruncateResults = config?.shouldTruncateResults ?? true;
39
40
  }
@@ -43,6 +44,7 @@ export class SlidingWindowConversationManager extends ConversationManager {
43
44
  * Registers:
44
45
  * - AfterInvocationEvent callback to apply sliding window management
45
46
  * - AfterModelCallEvent callback to handle context overflow and request retry (via super)
47
+ * - BeforeModelCallEvent callback for proactive compression (via super)
46
48
  *
47
49
  * @param agent - The agent to register hooks with
48
50
  */
@@ -53,9 +55,13 @@ export class SlidingWindowConversationManager extends ConversationManager {
53
55
  });
54
56
  }
55
57
  /**
56
- * Reduce the conversation history in response to a context overflow.
58
+ * Reduce the conversation history.
57
59
  *
58
- * Attempts to truncate large tool results first before falling back to message trimming.
60
+ * When `error` is set (reactive overflow recovery), attempts to truncate large tool results
61
+ * first before falling back to message trimming.
62
+ *
63
+ * When `error` is undefined (proactive compression), only trims messages without attempting
64
+ * tool result truncation.
59
65
  *
60
66
  * @param options - The reduction options
61
67
  * @returns `true` if the history was reduced, `false` otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"sliding-window-conversation-manager.js","sourceRoot":"","sources":["../../../src/conversation-manager/sliding-window-conversation-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sliding-window-conversation-manager.js","sourceRoot":"","sources":["../../../src/conversation-manager/sliding-window-conversation-manager.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * when the context window overflows, preserving important information rather
6
6
  * than simply discarding it.
7
7
  */
8
- import { ConversationManager, type ConversationManagerReduceOptions } from './conversation-manager.js';
8
+ import { ConversationManager, type ProactiveCompressionConfig, type ConversationManagerReduceOptions } from './conversation-manager.js';
9
9
  import type { Model } from '../models/model.js';
10
10
  /**
11
11
  * Configuration for the summarization conversation manager.
@@ -32,6 +32,14 @@ export type SummarizingConversationManagerConfig = {
32
32
  * prompt that produces structured bullet-point summaries.
33
33
  */
34
34
  summarizationSystemPrompt?: string;
35
+ /**
36
+ * Enable proactive context compression before the model call.
37
+ *
38
+ * - `true`: compress when 70% of the context window is used (default threshold).
39
+ * - `{ compressionThreshold: number }`: compress at the specified ratio (0, 1].
40
+ * - `false` or omitted: disabled, only reactive overflow recovery is used.
41
+ */
42
+ proactiveCompression?: boolean | ProactiveCompressionConfig;
35
43
  };
36
44
  /**
37
45
  * Implements a summarization strategy for managing conversation history.
@@ -50,10 +58,24 @@ export declare class SummarizingConversationManager extends ConversationManager
50
58
  /**
51
59
  * Reduce the conversation history by summarizing older messages.
52
60
  *
61
+ * When `error` is set (reactive overflow recovery), summarization failure is rethrown
62
+ * with the original error as cause — the agent loop must not proceed with an overflow.
63
+ *
64
+ * When `error` is undefined (proactive compression), summarization failure is logged
65
+ * and returns `false` — the model call proceeds regardless.
66
+ *
53
67
  * @param options - The reduction options
54
68
  * @returns `true` if the history was reduced, `false` otherwise
55
69
  */
56
70
  reduce({ agent, model, error }: ConversationManagerReduceOptions): Promise<boolean>;
71
+ /**
72
+ * Summarize the oldest messages and replace them with a summary.
73
+ *
74
+ * @param agent - The agent instance
75
+ * @param model - The model to use for summarization
76
+ * @returns `true` if the history was reduced, `false` otherwise
77
+ */
78
+ private _summarizeOldest;
57
79
  /**
58
80
  * Generate a summary of the provided messages by calling the model directly.
59
81
  *
@@ -1 +1 @@
1
- {"version":3,"file":"summarizing-conversation-manager.d.ts","sourceRoot":"","sources":["../../../src/conversation-manager/summarizing-conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,mBAAmB,EAAE,KAAK,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAEtG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AA+B/C;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAAG;IACjD;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,8BAA+B,SAAQ,mBAAmB;IACrE,QAAQ,CAAC,IAAI,8CAA6C;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAQ;gBAEvC,MAAM,CAAC,EAAE,oCAAoC;IASzD;;;;;OAKG;IACG,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gCAAgC,GAAG,OAAO,CAAC,OAAO,CAAC;IAuCzF;;;;;OAKG;YACW,gBAAgB;IAgC9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,6BAA6B;CAoCtC"}
1
+ {"version":3,"file":"summarizing-conversation-manager.d.ts","sourceRoot":"","sources":["../../../src/conversation-manager/summarizing-conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACtC,MAAM,2BAA2B,CAAA;AAGlC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AA+B/C;;GAEG;AACH,MAAM,MAAM,oCAAoC,GAAG;IACjD;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAElC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAA;CAC5D,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,8BAA+B,SAAQ,mBAAmB;IACrE,QAAQ,CAAC,IAAI,8CAA6C;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAQ;gBAEvC,MAAM,CAAC,EAAE,oCAAoC;IASzD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,gCAAgC,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBzF;;;;;;OAMG;YACW,gBAAgB;IA8B9B;;;;;OAKG;YACW,gBAAgB;IAgC9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,6BAA6B;CAoCtC"}
@@ -6,8 +6,9 @@
6
6
  * than simply discarding it.
7
7
  */
8
8
  import { Message, TextBlock } from '../types/messages.js';
9
- import { ConversationManager } from './conversation-manager.js';
9
+ import { ConversationManager, } from './conversation-manager.js';
10
10
  import { logger } from '../logging/logger.js';
11
+ import { normalizeError } from '../errors.js';
11
12
  const DEFAULT_SUMMARIZATION_PROMPT = `You are a conversation summarizer. Provide a concise summary of the conversation \
12
13
  history.
13
14
 
@@ -50,7 +51,7 @@ export class SummarizingConversationManager extends ConversationManager {
50
51
  _preserveRecentMessages;
51
52
  _summarizationSystemPrompt;
52
53
  constructor(config) {
53
- super();
54
+ super(config);
54
55
  this._model = config?.model;
55
56
  // clamped [0.1, 0.8]
56
57
  this._summaryRatio = Math.max(0.1, Math.min(0.8, config?.summaryRatio ?? 0.3));
@@ -60,11 +61,40 @@ export class SummarizingConversationManager extends ConversationManager {
60
61
  /**
61
62
  * Reduce the conversation history by summarizing older messages.
62
63
  *
64
+ * When `error` is set (reactive overflow recovery), summarization failure is rethrown
65
+ * with the original error as cause — the agent loop must not proceed with an overflow.
66
+ *
67
+ * When `error` is undefined (proactive compression), summarization failure is logged
68
+ * and returns `false` — the model call proceeds regardless.
69
+ *
63
70
  * @param options - The reduction options
64
71
  * @returns `true` if the history was reduced, `false` otherwise
65
72
  */
66
73
  async reduce({ agent, model, error }) {
67
- const resolvedModel = this._model ?? model;
74
+ try {
75
+ return await this._summarizeOldest(agent, this._model ?? model);
76
+ }
77
+ catch (summarizationError) {
78
+ if (error) {
79
+ // Reactive: rethrow so the ContextWindowOverflowError propagates
80
+ logger.error(`error=<${summarizationError}> | summarization failed`);
81
+ const wrapped = normalizeError(summarizationError);
82
+ wrapped.cause = error;
83
+ throw wrapped;
84
+ }
85
+ // Proactive: best-effort, swallow errors so the model call can still proceed.
86
+ logger.warn(`error=<${summarizationError}> | proactive summarization failed, continuing`);
87
+ return false;
88
+ }
89
+ }
90
+ /**
91
+ * Summarize the oldest messages and replace them with a summary.
92
+ *
93
+ * @param agent - The agent instance
94
+ * @param model - The model to use for summarization
95
+ * @returns `true` if the history was reduced, `false` otherwise
96
+ */
97
+ async _summarizeOldest(agent, model) {
68
98
  const messages = agent.messages;
69
99
  // Calculate how many messages to summarize
70
100
  let messagesToSummarizeCount = Math.max(1, Math.floor(messages.length * this._summaryRatio));
@@ -76,20 +106,12 @@ export class SummarizingConversationManager extends ConversationManager {
76
106
  }
77
107
  // Adjust split point to avoid breaking tool use/result pairs
78
108
  messagesToSummarizeCount = this._adjustSplitPointForToolPairs(messages, messagesToSummarizeCount);
79
- try {
80
- const messagesToSummarize = messages.slice(0, messagesToSummarizeCount);
81
- // Generate summary via model call
82
- const summaryMessage = await this._generateSummary(messagesToSummarize, resolvedModel);
83
- // Replace summarized messages with the summary
84
- messages.splice(0, messagesToSummarizeCount, summaryMessage);
85
- return true;
86
- }
87
- catch (summarizationError) {
88
- logger.error(`error=<${summarizationError}> | summarization failed`);
89
- const wrapped = summarizationError instanceof Error ? summarizationError : new Error(String(summarizationError));
90
- wrapped.cause = error;
91
- throw wrapped;
92
- }
109
+ const messagesToSummarize = messages.slice(0, messagesToSummarizeCount);
110
+ // Generate summary via model call
111
+ const summaryMessage = await this._generateSummary(messagesToSummarize, model);
112
+ // Replace summarized messages with the summary
113
+ messages.splice(0, messagesToSummarizeCount, summaryMessage);
114
+ return true;
93
115
  }
94
116
  /**
95
117
  * Generate a summary of the provided messages by calling the model directly.
@@ -1 +1 @@
1
- {"version":3,"file":"summarizing-conversation-manager.js","sourceRoot":"","sources":["../../../src/conversation-manager/summarizing-conversation-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summarizing-conversation-manager.js","sourceRoot":"","sources":["../../../src/conversation-manager/summarizing-conversation-manager.ts"],"names":[],"mappings":"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"}
@@ -136,6 +136,17 @@ export declare class SessionError extends Error {
136
136
  */
137
137
  constructor(message: string, options?: ErrorOptions);
138
138
  }
139
+ /**
140
+ * Thrown when a model provider's native token counting API fails.
141
+ *
142
+ * This error is used as internal control flow within provider `countTokens()` overrides.
143
+ * When caught, the provider falls back to the base class heuristic estimation.
144
+ */
145
+ export declare class ProviderTokenCountError extends ModelError {
146
+ constructor(message: string, options?: {
147
+ cause?: unknown;
148
+ });
149
+ }
139
150
  /**
140
151
  * Thrown when a tool fails validation during registration.
141
152
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,UAAU;IACxD;;;;OAIG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C;;;OAGG;IACH,SAAgB,cAAc,EAAE,OAAO,CAAA;IAEvC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;CAKrD;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C;;;;OAIG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD;;;;OAIG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAEpD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAEtD;AAED;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;;CAKxC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,UAAU;IACxD;;;;OAIG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C;;;OAGG;IACH,SAAgB,cAAc,EAAE,OAAO,CAAA;IAEvC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO;CAKrD;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C;;;;OAIG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD;;;;OAIG;gBACS,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAEpD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAEtD;AAED;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;;CAKxC"}
@@ -158,6 +158,18 @@ export class SessionError extends Error {
158
158
  this.name = 'SessionError';
159
159
  }
160
160
  }
161
+ /**
162
+ * Thrown when a model provider's native token counting API fails.
163
+ *
164
+ * This error is used as internal control flow within provider `countTokens()` overrides.
165
+ * When caught, the provider falls back to the base class heuristic estimation.
166
+ */
167
+ export class ProviderTokenCountError extends ModelError {
168
+ constructor(message, options) {
169
+ super(message, options);
170
+ this.name = 'ProviderTokenCountError';
171
+ }
172
+ }
161
173
  /**
162
174
  * Thrown when a tool fails validation during registration.
163
175
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;;GAOG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC;;;;;OAKG;IACH,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,0BAA2B,SAAQ,UAAU;IACxD;;;;OAIG;IACH,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;IAC1C,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,cAAe,SAAQ,UAAU;IAC5C;;;OAGG;IACa,cAAc,CAAS;IAEvC;;;;;OAKG;IACH,YAAY,OAAe,EAAE,cAAuB;QAClD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;QAC5B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;;;;OAIG;IACH,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD;;;;OAIG;IACH,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IACjD;;;;;OAKG;IACH,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY;IACzC,OAAO,KAAK,CAAC,OAAO,CAAA;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC;;;;;OAKG;IACH,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}