attocode 0.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 (488) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/LICENSE +21 -0
  3. package/README.md +164 -0
  4. package/dist/src/adapters.d.ts +83 -0
  5. package/dist/src/adapters.d.ts.map +1 -0
  6. package/dist/src/adapters.js +221 -0
  7. package/dist/src/adapters.js.map +1 -0
  8. package/dist/src/agent-tools/index.d.ts +7 -0
  9. package/dist/src/agent-tools/index.d.ts.map +1 -0
  10. package/dist/src/agent-tools/index.js +8 -0
  11. package/dist/src/agent-tools/index.js.map +1 -0
  12. package/dist/src/agent-tools/lsp-file-tools.d.ts +33 -0
  13. package/dist/src/agent-tools/lsp-file-tools.d.ts.map +1 -0
  14. package/dist/src/agent-tools/lsp-file-tools.js +200 -0
  15. package/dist/src/agent-tools/lsp-file-tools.js.map +1 -0
  16. package/dist/src/agent.d.ts +667 -0
  17. package/dist/src/agent.d.ts.map +1 -0
  18. package/dist/src/agent.js +2824 -0
  19. package/dist/src/agent.js.map +1 -0
  20. package/dist/src/cli.d.ts +36 -0
  21. package/dist/src/cli.d.ts.map +1 -0
  22. package/dist/src/cli.js +176 -0
  23. package/dist/src/cli.js.map +1 -0
  24. package/dist/src/commands/handler.d.ts +22 -0
  25. package/dist/src/commands/handler.d.ts.map +1 -0
  26. package/dist/src/commands/handler.js +1320 -0
  27. package/dist/src/commands/handler.js.map +1 -0
  28. package/dist/src/commands/init.d.ts +7 -0
  29. package/dist/src/commands/init.d.ts.map +1 -0
  30. package/dist/src/commands/init.js +153 -0
  31. package/dist/src/commands/init.js.map +1 -0
  32. package/dist/src/commands/types.d.ts +70 -0
  33. package/dist/src/commands/types.d.ts.map +1 -0
  34. package/dist/src/commands/types.js +8 -0
  35. package/dist/src/commands/types.js.map +1 -0
  36. package/dist/src/config.d.ts +22 -0
  37. package/dist/src/config.d.ts.map +1 -0
  38. package/dist/src/config.js +25 -0
  39. package/dist/src/config.js.map +1 -0
  40. package/dist/src/core/index.d.ts +32 -0
  41. package/dist/src/core/index.d.ts.map +1 -0
  42. package/dist/src/core/index.js +35 -0
  43. package/dist/src/core/index.js.map +1 -0
  44. package/dist/src/core/process-handlers.d.ts +43 -0
  45. package/dist/src/core/process-handlers.d.ts.map +1 -0
  46. package/dist/src/core/process-handlers.js +117 -0
  47. package/dist/src/core/process-handlers.js.map +1 -0
  48. package/dist/src/core/protocol/bridge.d.ts +117 -0
  49. package/dist/src/core/protocol/bridge.d.ts.map +1 -0
  50. package/dist/src/core/protocol/bridge.js +149 -0
  51. package/dist/src/core/protocol/bridge.js.map +1 -0
  52. package/dist/src/core/protocol/index.d.ts +8 -0
  53. package/dist/src/core/protocol/index.d.ts.map +1 -0
  54. package/dist/src/core/protocol/index.js +8 -0
  55. package/dist/src/core/protocol/index.js.map +1 -0
  56. package/dist/src/core/protocol/types.d.ts +539 -0
  57. package/dist/src/core/protocol/types.d.ts.map +1 -0
  58. package/dist/src/core/protocol/types.js +149 -0
  59. package/dist/src/core/protocol/types.js.map +1 -0
  60. package/dist/src/core/queues/atomic-counter.d.ts +36 -0
  61. package/dist/src/core/queues/atomic-counter.d.ts.map +1 -0
  62. package/dist/src/core/queues/atomic-counter.js +46 -0
  63. package/dist/src/core/queues/atomic-counter.js.map +1 -0
  64. package/dist/src/core/queues/event-queue.d.ts +126 -0
  65. package/dist/src/core/queues/event-queue.d.ts.map +1 -0
  66. package/dist/src/core/queues/event-queue.js +208 -0
  67. package/dist/src/core/queues/event-queue.js.map +1 -0
  68. package/dist/src/core/queues/index.d.ts +12 -0
  69. package/dist/src/core/queues/index.d.ts.map +1 -0
  70. package/dist/src/core/queues/index.js +15 -0
  71. package/dist/src/core/queues/index.js.map +1 -0
  72. package/dist/src/core/queues/submission-queue.d.ts +116 -0
  73. package/dist/src/core/queues/submission-queue.d.ts.map +1 -0
  74. package/dist/src/core/queues/submission-queue.js +236 -0
  75. package/dist/src/core/queues/submission-queue.js.map +1 -0
  76. package/dist/src/costs/index.d.ts +22 -0
  77. package/dist/src/costs/index.d.ts.map +1 -0
  78. package/dist/src/costs/index.js +22 -0
  79. package/dist/src/costs/index.js.map +1 -0
  80. package/dist/src/costs/model-registry.d.ts +80 -0
  81. package/dist/src/costs/model-registry.d.ts.map +1 -0
  82. package/dist/src/costs/model-registry.js +237 -0
  83. package/dist/src/costs/model-registry.js.map +1 -0
  84. package/dist/src/costs/types.d.ts +50 -0
  85. package/dist/src/costs/types.d.ts.map +1 -0
  86. package/dist/src/costs/types.js +2 -0
  87. package/dist/src/costs/types.js.map +1 -0
  88. package/dist/src/defaults.d.ts +114 -0
  89. package/dist/src/defaults.d.ts.map +1 -0
  90. package/dist/src/defaults.js +457 -0
  91. package/dist/src/defaults.js.map +1 -0
  92. package/dist/src/first-run.d.ts +35 -0
  93. package/dist/src/first-run.d.ts.map +1 -0
  94. package/dist/src/first-run.js +94 -0
  95. package/dist/src/first-run.js.map +1 -0
  96. package/dist/src/hello.d.ts +2 -0
  97. package/dist/src/hello.d.ts.map +1 -0
  98. package/dist/src/hello.js +4 -0
  99. package/dist/src/hello.js.map +1 -0
  100. package/dist/src/integrations/agent-registry.d.ts +160 -0
  101. package/dist/src/integrations/agent-registry.d.ts.map +1 -0
  102. package/dist/src/integrations/agent-registry.js +446 -0
  103. package/dist/src/integrations/agent-registry.js.map +1 -0
  104. package/dist/src/integrations/auto-compaction.d.ts +177 -0
  105. package/dist/src/integrations/auto-compaction.d.ts.map +1 -0
  106. package/dist/src/integrations/auto-compaction.js +428 -0
  107. package/dist/src/integrations/auto-compaction.js.map +1 -0
  108. package/dist/src/integrations/cancellation.d.ts +162 -0
  109. package/dist/src/integrations/cancellation.d.ts.map +1 -0
  110. package/dist/src/integrations/cancellation.js +339 -0
  111. package/dist/src/integrations/cancellation.js.map +1 -0
  112. package/dist/src/integrations/codebase-context.d.ts +319 -0
  113. package/dist/src/integrations/codebase-context.d.ts.map +1 -0
  114. package/dist/src/integrations/codebase-context.js +816 -0
  115. package/dist/src/integrations/codebase-context.js.map +1 -0
  116. package/dist/src/integrations/compaction.d.ts +192 -0
  117. package/dist/src/integrations/compaction.d.ts.map +1 -0
  118. package/dist/src/integrations/compaction.js +376 -0
  119. package/dist/src/integrations/compaction.js.map +1 -0
  120. package/dist/src/integrations/context-engineering.d.ts +246 -0
  121. package/dist/src/integrations/context-engineering.d.ts.map +1 -0
  122. package/dist/src/integrations/context-engineering.js +394 -0
  123. package/dist/src/integrations/context-engineering.js.map +1 -0
  124. package/dist/src/integrations/diff-utils.d.ts +105 -0
  125. package/dist/src/integrations/diff-utils.d.ts.map +1 -0
  126. package/dist/src/integrations/diff-utils.js +497 -0
  127. package/dist/src/integrations/diff-utils.js.map +1 -0
  128. package/dist/src/integrations/economics.d.ts +192 -0
  129. package/dist/src/integrations/economics.d.ts.map +1 -0
  130. package/dist/src/integrations/economics.js +431 -0
  131. package/dist/src/integrations/economics.js.map +1 -0
  132. package/dist/src/integrations/execution-policy.d.ts +189 -0
  133. package/dist/src/integrations/execution-policy.d.ts.map +1 -0
  134. package/dist/src/integrations/execution-policy.js +352 -0
  135. package/dist/src/integrations/execution-policy.js.map +1 -0
  136. package/dist/src/integrations/file-change-tracker.d.ts +161 -0
  137. package/dist/src/integrations/file-change-tracker.d.ts.map +1 -0
  138. package/dist/src/integrations/file-change-tracker.js +520 -0
  139. package/dist/src/integrations/file-change-tracker.js.map +1 -0
  140. package/dist/src/integrations/hierarchical-config.d.ts +212 -0
  141. package/dist/src/integrations/hierarchical-config.d.ts.map +1 -0
  142. package/dist/src/integrations/hierarchical-config.js +484 -0
  143. package/dist/src/integrations/hierarchical-config.js.map +1 -0
  144. package/dist/src/integrations/hooks.d.ts +114 -0
  145. package/dist/src/integrations/hooks.d.ts.map +1 -0
  146. package/dist/src/integrations/hooks.js +326 -0
  147. package/dist/src/integrations/hooks.js.map +1 -0
  148. package/dist/src/integrations/ignore.d.ts +143 -0
  149. package/dist/src/integrations/ignore.d.ts.map +1 -0
  150. package/dist/src/integrations/ignore.js +417 -0
  151. package/dist/src/integrations/ignore.js.map +1 -0
  152. package/dist/src/integrations/image-renderer.d.ts +119 -0
  153. package/dist/src/integrations/image-renderer.d.ts.map +1 -0
  154. package/dist/src/integrations/image-renderer.js +306 -0
  155. package/dist/src/integrations/image-renderer.js.map +1 -0
  156. package/dist/src/integrations/index.d.ts +42 -0
  157. package/dist/src/integrations/index.d.ts.map +1 -0
  158. package/dist/src/integrations/index.js +73 -0
  159. package/dist/src/integrations/index.js.map +1 -0
  160. package/dist/src/integrations/lsp.d.ts +196 -0
  161. package/dist/src/integrations/lsp.d.ts.map +1 -0
  162. package/dist/src/integrations/lsp.js +582 -0
  163. package/dist/src/integrations/lsp.js.map +1 -0
  164. package/dist/src/integrations/mcp-client.d.ts +270 -0
  165. package/dist/src/integrations/mcp-client.d.ts.map +1 -0
  166. package/dist/src/integrations/mcp-client.js +698 -0
  167. package/dist/src/integrations/mcp-client.js.map +1 -0
  168. package/dist/src/integrations/mcp-tool-search.d.ts +77 -0
  169. package/dist/src/integrations/mcp-tool-search.d.ts.map +1 -0
  170. package/dist/src/integrations/mcp-tool-search.js +220 -0
  171. package/dist/src/integrations/mcp-tool-search.js.map +1 -0
  172. package/dist/src/integrations/memory.d.ts +108 -0
  173. package/dist/src/integrations/memory.d.ts.map +1 -0
  174. package/dist/src/integrations/memory.js +288 -0
  175. package/dist/src/integrations/memory.js.map +1 -0
  176. package/dist/src/integrations/multi-agent.d.ts +150 -0
  177. package/dist/src/integrations/multi-agent.d.ts.map +1 -0
  178. package/dist/src/integrations/multi-agent.js +306 -0
  179. package/dist/src/integrations/multi-agent.js.map +1 -0
  180. package/dist/src/integrations/observability.d.ts +162 -0
  181. package/dist/src/integrations/observability.d.ts.map +1 -0
  182. package/dist/src/integrations/observability.js +406 -0
  183. package/dist/src/integrations/observability.js.map +1 -0
  184. package/dist/src/integrations/openrouter-pricing.d.ts +42 -0
  185. package/dist/src/integrations/openrouter-pricing.d.ts.map +1 -0
  186. package/dist/src/integrations/openrouter-pricing.js +124 -0
  187. package/dist/src/integrations/openrouter-pricing.js.map +1 -0
  188. package/dist/src/integrations/pending-plan.d.ts +171 -0
  189. package/dist/src/integrations/pending-plan.d.ts.map +1 -0
  190. package/dist/src/integrations/pending-plan.js +244 -0
  191. package/dist/src/integrations/pending-plan.js.map +1 -0
  192. package/dist/src/integrations/persistence.d.ts +48 -0
  193. package/dist/src/integrations/persistence.d.ts.map +1 -0
  194. package/dist/src/integrations/persistence.js +196 -0
  195. package/dist/src/integrations/persistence.js.map +1 -0
  196. package/dist/src/integrations/planning.d.ts +96 -0
  197. package/dist/src/integrations/planning.d.ts.map +1 -0
  198. package/dist/src/integrations/planning.js +338 -0
  199. package/dist/src/integrations/planning.js.map +1 -0
  200. package/dist/src/integrations/pty-shell.d.ts +169 -0
  201. package/dist/src/integrations/pty-shell.d.ts.map +1 -0
  202. package/dist/src/integrations/pty-shell.js +367 -0
  203. package/dist/src/integrations/pty-shell.js.map +1 -0
  204. package/dist/src/integrations/react.d.ts +139 -0
  205. package/dist/src/integrations/react.d.ts.map +1 -0
  206. package/dist/src/integrations/react.js +273 -0
  207. package/dist/src/integrations/react.js.map +1 -0
  208. package/dist/src/integrations/resources.d.ts +177 -0
  209. package/dist/src/integrations/resources.d.ts.map +1 -0
  210. package/dist/src/integrations/resources.js +311 -0
  211. package/dist/src/integrations/resources.js.map +1 -0
  212. package/dist/src/integrations/result-synthesizer.d.ts +389 -0
  213. package/dist/src/integrations/result-synthesizer.d.ts.map +1 -0
  214. package/dist/src/integrations/result-synthesizer.js +951 -0
  215. package/dist/src/integrations/result-synthesizer.js.map +1 -0
  216. package/dist/src/integrations/routing.d.ts +117 -0
  217. package/dist/src/integrations/routing.d.ts.map +1 -0
  218. package/dist/src/integrations/routing.js +347 -0
  219. package/dist/src/integrations/routing.js.map +1 -0
  220. package/dist/src/integrations/rules.d.ts +131 -0
  221. package/dist/src/integrations/rules.d.ts.map +1 -0
  222. package/dist/src/integrations/rules.js +284 -0
  223. package/dist/src/integrations/rules.js.map +1 -0
  224. package/dist/src/integrations/safety.d.ts +142 -0
  225. package/dist/src/integrations/safety.d.ts.map +1 -0
  226. package/dist/src/integrations/safety.js +342 -0
  227. package/dist/src/integrations/safety.js.map +1 -0
  228. package/dist/src/integrations/sandbox/basic.d.ts +74 -0
  229. package/dist/src/integrations/sandbox/basic.d.ts.map +1 -0
  230. package/dist/src/integrations/sandbox/basic.js +310 -0
  231. package/dist/src/integrations/sandbox/basic.js.map +1 -0
  232. package/dist/src/integrations/sandbox/docker.d.ts +94 -0
  233. package/dist/src/integrations/sandbox/docker.d.ts.map +1 -0
  234. package/dist/src/integrations/sandbox/docker.js +293 -0
  235. package/dist/src/integrations/sandbox/docker.js.map +1 -0
  236. package/dist/src/integrations/sandbox/index.d.ts +182 -0
  237. package/dist/src/integrations/sandbox/index.d.ts.map +1 -0
  238. package/dist/src/integrations/sandbox/index.js +382 -0
  239. package/dist/src/integrations/sandbox/index.js.map +1 -0
  240. package/dist/src/integrations/sandbox/landlock.d.ts +59 -0
  241. package/dist/src/integrations/sandbox/landlock.d.ts.map +1 -0
  242. package/dist/src/integrations/sandbox/landlock.js +326 -0
  243. package/dist/src/integrations/sandbox/landlock.js.map +1 -0
  244. package/dist/src/integrations/sandbox/seatbelt.d.ts +68 -0
  245. package/dist/src/integrations/sandbox/seatbelt.d.ts.map +1 -0
  246. package/dist/src/integrations/sandbox/seatbelt.js +298 -0
  247. package/dist/src/integrations/sandbox/seatbelt.js.map +1 -0
  248. package/dist/src/integrations/semantic-cache.d.ts +178 -0
  249. package/dist/src/integrations/semantic-cache.d.ts.map +1 -0
  250. package/dist/src/integrations/semantic-cache.js +372 -0
  251. package/dist/src/integrations/semantic-cache.js.map +1 -0
  252. package/dist/src/integrations/session-store.d.ts +183 -0
  253. package/dist/src/integrations/session-store.d.ts.map +1 -0
  254. package/dist/src/integrations/session-store.js +345 -0
  255. package/dist/src/integrations/session-store.js.map +1 -0
  256. package/dist/src/integrations/shared-blackboard.d.ts +403 -0
  257. package/dist/src/integrations/shared-blackboard.d.ts.map +1 -0
  258. package/dist/src/integrations/shared-blackboard.js +710 -0
  259. package/dist/src/integrations/shared-blackboard.js.map +1 -0
  260. package/dist/src/integrations/skills.d.ts +171 -0
  261. package/dist/src/integrations/skills.d.ts.map +1 -0
  262. package/dist/src/integrations/skills.js +403 -0
  263. package/dist/src/integrations/skills.js.map +1 -0
  264. package/dist/src/integrations/smart-decomposer.d.ts +322 -0
  265. package/dist/src/integrations/smart-decomposer.d.ts.map +1 -0
  266. package/dist/src/integrations/smart-decomposer.js +856 -0
  267. package/dist/src/integrations/smart-decomposer.js.map +1 -0
  268. package/dist/src/integrations/sourcegraph.d.ts +169 -0
  269. package/dist/src/integrations/sourcegraph.d.ts.map +1 -0
  270. package/dist/src/integrations/sourcegraph.js +379 -0
  271. package/dist/src/integrations/sourcegraph.js.map +1 -0
  272. package/dist/src/integrations/sqlite-store.d.ts +518 -0
  273. package/dist/src/integrations/sqlite-store.d.ts.map +1 -0
  274. package/dist/src/integrations/sqlite-store.js +1423 -0
  275. package/dist/src/integrations/sqlite-store.js.map +1 -0
  276. package/dist/src/integrations/streaming.d.ts +102 -0
  277. package/dist/src/integrations/streaming.d.ts.map +1 -0
  278. package/dist/src/integrations/streaming.js +362 -0
  279. package/dist/src/integrations/streaming.js.map +1 -0
  280. package/dist/src/integrations/thread-manager.d.ts +199 -0
  281. package/dist/src/integrations/thread-manager.d.ts.map +1 -0
  282. package/dist/src/integrations/thread-manager.js +357 -0
  283. package/dist/src/integrations/thread-manager.js.map +1 -0
  284. package/dist/src/main.d.ts +26 -0
  285. package/dist/src/main.d.ts.map +1 -0
  286. package/dist/src/main.js +170 -0
  287. package/dist/src/main.js.map +1 -0
  288. package/dist/src/modes/index.d.ts +10 -0
  289. package/dist/src/modes/index.d.ts.map +1 -0
  290. package/dist/src/modes/index.js +10 -0
  291. package/dist/src/modes/index.js.map +1 -0
  292. package/dist/src/modes/repl.d.ts +19 -0
  293. package/dist/src/modes/repl.d.ts.map +1 -0
  294. package/dist/src/modes/repl.js +393 -0
  295. package/dist/src/modes/repl.js.map +1 -0
  296. package/dist/src/modes/tui.d.ts +29 -0
  297. package/dist/src/modes/tui.d.ts.map +1 -0
  298. package/dist/src/modes/tui.js +272 -0
  299. package/dist/src/modes/tui.js.map +1 -0
  300. package/dist/src/modes.d.ts +179 -0
  301. package/dist/src/modes.d.ts.map +1 -0
  302. package/dist/src/modes.js +385 -0
  303. package/dist/src/modes.js.map +1 -0
  304. package/dist/src/observability/tracer.d.ts +111 -0
  305. package/dist/src/observability/tracer.d.ts.map +1 -0
  306. package/dist/src/observability/tracer.js +300 -0
  307. package/dist/src/observability/tracer.js.map +1 -0
  308. package/dist/src/observability/types.d.ts +271 -0
  309. package/dist/src/observability/types.d.ts.map +1 -0
  310. package/dist/src/observability/types.js +24 -0
  311. package/dist/src/observability/types.js.map +1 -0
  312. package/dist/src/paths.d.ts +101 -0
  313. package/dist/src/paths.d.ts.map +1 -0
  314. package/dist/src/paths.js +148 -0
  315. package/dist/src/paths.js.map +1 -0
  316. package/dist/src/persistence/index.d.ts +38 -0
  317. package/dist/src/persistence/index.d.ts.map +1 -0
  318. package/dist/src/persistence/index.js +48 -0
  319. package/dist/src/persistence/index.js.map +1 -0
  320. package/dist/src/persistence/migrator.d.ts +135 -0
  321. package/dist/src/persistence/migrator.d.ts.map +1 -0
  322. package/dist/src/persistence/migrator.js +303 -0
  323. package/dist/src/persistence/migrator.js.map +1 -0
  324. package/dist/src/persistence/schema.d.ts +101 -0
  325. package/dist/src/persistence/schema.d.ts.map +1 -0
  326. package/dist/src/persistence/schema.js +395 -0
  327. package/dist/src/persistence/schema.js.map +1 -0
  328. package/dist/src/providers/adapters/anthropic.d.ts +20 -0
  329. package/dist/src/providers/adapters/anthropic.d.ts.map +1 -0
  330. package/dist/src/providers/adapters/anthropic.js +124 -0
  331. package/dist/src/providers/adapters/anthropic.js.map +1 -0
  332. package/dist/src/providers/adapters/mock.d.ts +25 -0
  333. package/dist/src/providers/adapters/mock.d.ts.map +1 -0
  334. package/dist/src/providers/adapters/mock.js +133 -0
  335. package/dist/src/providers/adapters/mock.js.map +1 -0
  336. package/dist/src/providers/adapters/openai.d.ts +21 -0
  337. package/dist/src/providers/adapters/openai.d.ts.map +1 -0
  338. package/dist/src/providers/adapters/openai.js +126 -0
  339. package/dist/src/providers/adapters/openai.js.map +1 -0
  340. package/dist/src/providers/adapters/openrouter.d.ts +49 -0
  341. package/dist/src/providers/adapters/openrouter.d.ts.map +1 -0
  342. package/dist/src/providers/adapters/openrouter.js +363 -0
  343. package/dist/src/providers/adapters/openrouter.js.map +1 -0
  344. package/dist/src/providers/provider.d.ts +54 -0
  345. package/dist/src/providers/provider.d.ts.map +1 -0
  346. package/dist/src/providers/provider.js +111 -0
  347. package/dist/src/providers/provider.js.map +1 -0
  348. package/dist/src/providers/resilient-fetch.d.ts +99 -0
  349. package/dist/src/providers/resilient-fetch.d.ts.map +1 -0
  350. package/dist/src/providers/resilient-fetch.js +208 -0
  351. package/dist/src/providers/resilient-fetch.js.map +1 -0
  352. package/dist/src/providers/types.d.ts +227 -0
  353. package/dist/src/providers/types.d.ts.map +1 -0
  354. package/dist/src/providers/types.js +24 -0
  355. package/dist/src/providers/types.js.map +1 -0
  356. package/dist/src/session-picker.d.ts +28 -0
  357. package/dist/src/session-picker.d.ts.map +1 -0
  358. package/dist/src/session-picker.js +256 -0
  359. package/dist/src/session-picker.js.map +1 -0
  360. package/dist/src/test-sqlite.d.ts +2 -0
  361. package/dist/src/test-sqlite.d.ts.map +1 -0
  362. package/dist/src/test-sqlite.js +114 -0
  363. package/dist/src/test-sqlite.js.map +1 -0
  364. package/dist/src/tools/agent.d.ts +44 -0
  365. package/dist/src/tools/agent.d.ts.map +1 -0
  366. package/dist/src/tools/agent.js +110 -0
  367. package/dist/src/tools/agent.js.map +1 -0
  368. package/dist/src/tools/bash.d.ts +52 -0
  369. package/dist/src/tools/bash.d.ts.map +1 -0
  370. package/dist/src/tools/bash.js +141 -0
  371. package/dist/src/tools/bash.js.map +1 -0
  372. package/dist/src/tools/file.d.ts +47 -0
  373. package/dist/src/tools/file.d.ts.map +1 -0
  374. package/dist/src/tools/file.js +263 -0
  375. package/dist/src/tools/file.js.map +1 -0
  376. package/dist/src/tools/permission.d.ts +43 -0
  377. package/dist/src/tools/permission.d.ts.map +1 -0
  378. package/dist/src/tools/permission.js +216 -0
  379. package/dist/src/tools/permission.js.map +1 -0
  380. package/dist/src/tools/registry.d.ts +63 -0
  381. package/dist/src/tools/registry.d.ts.map +1 -0
  382. package/dist/src/tools/registry.js +250 -0
  383. package/dist/src/tools/registry.js.map +1 -0
  384. package/dist/src/tools/standard.d.ts +57 -0
  385. package/dist/src/tools/standard.d.ts.map +1 -0
  386. package/dist/src/tools/standard.js +113 -0
  387. package/dist/src/tools/standard.js.map +1 -0
  388. package/dist/src/tools/types.d.ts +146 -0
  389. package/dist/src/tools/types.d.ts.map +1 -0
  390. package/dist/src/tools/types.js +28 -0
  391. package/dist/src/tools/types.js.map +1 -0
  392. package/dist/src/tools/undo.d.ts +71 -0
  393. package/dist/src/tools/undo.d.ts.map +1 -0
  394. package/dist/src/tools/undo.js +123 -0
  395. package/dist/src/tools/undo.js.map +1 -0
  396. package/dist/src/tracing/cache-boundary-tracker.d.ts +189 -0
  397. package/dist/src/tracing/cache-boundary-tracker.d.ts.map +1 -0
  398. package/dist/src/tracing/cache-boundary-tracker.js +411 -0
  399. package/dist/src/tracing/cache-boundary-tracker.js.map +1 -0
  400. package/dist/src/tracing/trace-collector.d.ts +274 -0
  401. package/dist/src/tracing/trace-collector.d.ts.map +1 -0
  402. package/dist/src/tracing/trace-collector.js +727 -0
  403. package/dist/src/tracing/trace-collector.js.map +1 -0
  404. package/dist/src/tracing/types.d.ts +657 -0
  405. package/dist/src/tracing/types.d.ts.map +1 -0
  406. package/dist/src/tracing/types.js +39 -0
  407. package/dist/src/tracing/types.js.map +1 -0
  408. package/dist/src/tricks/failure-evidence.d.ts +268 -0
  409. package/dist/src/tricks/failure-evidence.d.ts.map +1 -0
  410. package/dist/src/tricks/failure-evidence.js +544 -0
  411. package/dist/src/tricks/failure-evidence.js.map +1 -0
  412. package/dist/src/tricks/json-utils.d.ts +77 -0
  413. package/dist/src/tricks/json-utils.d.ts.map +1 -0
  414. package/dist/src/tricks/json-utils.js +247 -0
  415. package/dist/src/tricks/json-utils.js.map +1 -0
  416. package/dist/src/tricks/kv-cache-context.d.ts +227 -0
  417. package/dist/src/tricks/kv-cache-context.d.ts.map +1 -0
  418. package/dist/src/tricks/kv-cache-context.js +377 -0
  419. package/dist/src/tricks/kv-cache-context.js.map +1 -0
  420. package/dist/src/tricks/recitation.d.ts +208 -0
  421. package/dist/src/tricks/recitation.d.ts.map +1 -0
  422. package/dist/src/tricks/recitation.js +374 -0
  423. package/dist/src/tricks/recitation.js.map +1 -0
  424. package/dist/src/tricks/reversible-compaction.d.ts +251 -0
  425. package/dist/src/tricks/reversible-compaction.d.ts.map +1 -0
  426. package/dist/src/tricks/reversible-compaction.js +555 -0
  427. package/dist/src/tricks/reversible-compaction.js.map +1 -0
  428. package/dist/src/tricks/serialization-diversity.d.ts +197 -0
  429. package/dist/src/tricks/serialization-diversity.d.ts.map +1 -0
  430. package/dist/src/tricks/serialization-diversity.js +460 -0
  431. package/dist/src/tricks/serialization-diversity.js.map +1 -0
  432. package/dist/src/tui/app.d.ts +42 -0
  433. package/dist/src/tui/app.d.ts.map +1 -0
  434. package/dist/src/tui/app.js +1076 -0
  435. package/dist/src/tui/app.js.map +1 -0
  436. package/dist/src/tui/components/ApprovalDialog.d.ts +28 -0
  437. package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -0
  438. package/dist/src/tui/components/ApprovalDialog.js +59 -0
  439. package/dist/src/tui/components/ApprovalDialog.js.map +1 -0
  440. package/dist/src/tui/components/InputArea.d.ts +35 -0
  441. package/dist/src/tui/components/InputArea.d.ts.map +1 -0
  442. package/dist/src/tui/components/InputArea.js +144 -0
  443. package/dist/src/tui/components/InputArea.js.map +1 -0
  444. package/dist/src/tui/components/MessageItem.d.ts +28 -0
  445. package/dist/src/tui/components/MessageItem.d.ts.map +1 -0
  446. package/dist/src/tui/components/MessageItem.js +27 -0
  447. package/dist/src/tui/components/MessageItem.js.map +1 -0
  448. package/dist/src/tui/components/ScrollableBox.d.ts +41 -0
  449. package/dist/src/tui/components/ScrollableBox.d.ts.map +1 -0
  450. package/dist/src/tui/components/ScrollableBox.js +101 -0
  451. package/dist/src/tui/components/ScrollableBox.js.map +1 -0
  452. package/dist/src/tui/components/ToolCallItem.d.ts +33 -0
  453. package/dist/src/tui/components/ToolCallItem.d.ts.map +1 -0
  454. package/dist/src/tui/components/ToolCallItem.js +91 -0
  455. package/dist/src/tui/components/ToolCallItem.js.map +1 -0
  456. package/dist/src/tui/components/index.d.ts +13 -0
  457. package/dist/src/tui/components/index.d.ts.map +1 -0
  458. package/dist/src/tui/components/index.js +15 -0
  459. package/dist/src/tui/components/index.js.map +1 -0
  460. package/dist/src/tui/event-display.d.ts +19 -0
  461. package/dist/src/tui/event-display.d.ts.map +1 -0
  462. package/dist/src/tui/event-display.js +178 -0
  463. package/dist/src/tui/event-display.js.map +1 -0
  464. package/dist/src/tui/index.d.ts +105 -0
  465. package/dist/src/tui/index.d.ts.map +1 -0
  466. package/dist/src/tui/index.js +214 -0
  467. package/dist/src/tui/index.js.map +1 -0
  468. package/dist/src/tui/input/CommandPalette.d.ts +55 -0
  469. package/dist/src/tui/input/CommandPalette.d.ts.map +1 -0
  470. package/dist/src/tui/input/CommandPalette.js +135 -0
  471. package/dist/src/tui/input/CommandPalette.js.map +1 -0
  472. package/dist/src/tui/input/index.d.ts +7 -0
  473. package/dist/src/tui/input/index.d.ts.map +1 -0
  474. package/dist/src/tui/input/index.js +7 -0
  475. package/dist/src/tui/input/index.js.map +1 -0
  476. package/dist/src/tui/theme/index.d.ts +45 -0
  477. package/dist/src/tui/theme/index.d.ts.map +1 -0
  478. package/dist/src/tui/theme/index.js +215 -0
  479. package/dist/src/tui/theme/index.js.map +1 -0
  480. package/dist/src/tui/types.d.ts +214 -0
  481. package/dist/src/tui/types.d.ts.map +1 -0
  482. package/dist/src/tui/types.js +27 -0
  483. package/dist/src/tui/types.js.map +1 -0
  484. package/dist/src/types.d.ts +905 -0
  485. package/dist/src/types.d.ts.map +1 -0
  486. package/dist/src/types.js +9 -0
  487. package/dist/src/types.js.map +1 -0
  488. package/package.json +89 -0
@@ -0,0 +1,446 @@
1
+ /**
2
+ * Lesson 25: Extensible Agent Registry
3
+ *
4
+ * Allows users to define custom agents that can be spawned on demand.
5
+ * Supports:
6
+ * - Built-in agents (researcher, coder, reviewer, architect)
7
+ * - User-defined agents from .agents/ directory (YAML/JSON)
8
+ * - Hot-reload of agent definitions
9
+ * - NL-based agent selection
10
+ */
11
+ import { readFile, readdir } from 'node:fs/promises';
12
+ import { existsSync } from 'node:fs';
13
+ import { join, extname } from 'node:path';
14
+ // =============================================================================
15
+ // BUILT-IN AGENTS
16
+ // =============================================================================
17
+ const BUILTIN_AGENTS = [
18
+ {
19
+ name: 'researcher',
20
+ description: 'Explores codebases and gathers information. Good for finding files, understanding structure, and summarizing code.',
21
+ systemPrompt: `You are a code researcher. Your job is to:
22
+ - Explore codebases thoroughly
23
+ - Find relevant files and functions
24
+ - Summarize code structure and patterns
25
+ - Answer questions about the codebase
26
+
27
+ Be thorough but concise. Focus on finding the specific information requested.`,
28
+ tools: ['read_file', 'list_files', 'glob', 'grep'],
29
+ model: 'fast',
30
+ maxTokenBudget: 50000,
31
+ maxIterations: 30,
32
+ capabilities: ['explore', 'search', 'find', 'understand', 'analyze'],
33
+ tags: ['research', 'exploration', 'analysis'],
34
+ },
35
+ {
36
+ name: 'coder',
37
+ description: 'Writes and modifies code. Good for implementing features, fixing bugs, and making changes.',
38
+ systemPrompt: `You are a skilled coder. Your job is to:
39
+ - Write clean, well-documented code
40
+ - Follow existing code patterns and conventions
41
+ - Make focused, minimal changes
42
+ - Test your changes when possible
43
+
44
+ Always explain what you're changing and why.`,
45
+ tools: ['read_file', 'write_file', 'edit_file', 'list_files', 'glob', 'grep', 'bash'],
46
+ model: 'balanced',
47
+ maxTokenBudget: 100000,
48
+ maxIterations: 50,
49
+ capabilities: ['write', 'implement', 'fix', 'code', 'create', 'modify'],
50
+ tags: ['coding', 'implementation', 'development'],
51
+ },
52
+ {
53
+ name: 'reviewer',
54
+ description: 'Reviews code for quality, bugs, and security issues. Good for code reviews and quality checks.',
55
+ systemPrompt: `You are a code reviewer. Your job is to:
56
+ - Find bugs and potential issues
57
+ - Identify security vulnerabilities
58
+ - Check for code quality and style
59
+ - Suggest improvements
60
+
61
+ Be constructive and specific in your feedback. Prioritize serious issues.`,
62
+ tools: ['read_file', 'list_files', 'glob', 'grep'],
63
+ model: 'quality',
64
+ maxTokenBudget: 80000,
65
+ maxIterations: 30,
66
+ capabilities: ['review', 'check', 'audit', 'verify', 'security'],
67
+ tags: ['review', 'quality', 'security', 'audit'],
68
+ },
69
+ {
70
+ name: 'architect',
71
+ description: 'Designs system architecture and structure. Good for planning features and making design decisions.',
72
+ systemPrompt: `You are a software architect. Your job is to:
73
+ - Design scalable, maintainable systems
74
+ - Consider trade-offs and alternatives
75
+ - Document architectural decisions
76
+ - Plan implementation approaches
77
+
78
+ Think holistically about the system and its evolution.`,
79
+ tools: ['read_file', 'list_files', 'glob', 'grep'],
80
+ model: 'quality',
81
+ maxTokenBudget: 100000,
82
+ maxIterations: 20,
83
+ capabilities: ['design', 'plan', 'architect', 'structure', 'organize'],
84
+ tags: ['architecture', 'design', 'planning'],
85
+ },
86
+ {
87
+ name: 'debugger',
88
+ description: 'Debugs and troubleshoots issues. Good for finding root causes and fixing bugs.',
89
+ systemPrompt: `You are a debugger. Your job is to:
90
+ - Analyze error messages and stack traces
91
+ - Find the root cause of issues
92
+ - Test hypotheses systematically
93
+ - Propose and verify fixes
94
+
95
+ Be methodical. Test assumptions before making changes.`,
96
+ tools: ['read_file', 'list_files', 'glob', 'grep', 'bash'],
97
+ model: 'balanced',
98
+ maxTokenBudget: 80000,
99
+ maxIterations: 40,
100
+ capabilities: ['debug', 'troubleshoot', 'fix', 'diagnose', 'error'],
101
+ tags: ['debugging', 'troubleshooting', 'errors'],
102
+ },
103
+ {
104
+ name: 'documenter',
105
+ description: 'Writes documentation and comments. Good for adding docs, README files, and code comments.',
106
+ systemPrompt: `You are a technical writer. Your job is to:
107
+ - Write clear, helpful documentation
108
+ - Add meaningful code comments
109
+ - Create README files and guides
110
+ - Explain complex concepts simply
111
+
112
+ Focus on clarity and usefulness. Write for your audience.`,
113
+ tools: ['read_file', 'write_file', 'edit_file', 'list_files', 'glob'],
114
+ model: 'balanced',
115
+ maxTokenBudget: 50000,
116
+ maxIterations: 20,
117
+ capabilities: ['document', 'explain', 'comment', 'readme', 'guide'],
118
+ tags: ['documentation', 'writing', 'comments'],
119
+ },
120
+ ];
121
+ // =============================================================================
122
+ // AGENT REGISTRY
123
+ // =============================================================================
124
+ /**
125
+ * AgentRegistry manages agent definitions and spawning.
126
+ */
127
+ export class AgentRegistry {
128
+ agents = new Map();
129
+ listeners = [];
130
+ watchController;
131
+ baseDir;
132
+ constructor(baseDir) {
133
+ this.baseDir = baseDir || process.cwd();
134
+ // Load built-in agents
135
+ for (const agent of BUILTIN_AGENTS) {
136
+ this.agents.set(agent.name, {
137
+ ...agent,
138
+ source: 'builtin',
139
+ loadedAt: new Date(),
140
+ });
141
+ }
142
+ }
143
+ /**
144
+ * Load user-defined agents from .agents/ directory.
145
+ */
146
+ async loadUserAgents() {
147
+ const agentsDir = join(this.baseDir, '.agents');
148
+ if (!existsSync(agentsDir)) {
149
+ return; // No user agents directory
150
+ }
151
+ try {
152
+ const files = await readdir(agentsDir);
153
+ for (const file of files) {
154
+ const ext = extname(file).toLowerCase();
155
+ if (!['.json', '.yaml', '.yml'].includes(ext))
156
+ continue;
157
+ const filePath = join(agentsDir, file);
158
+ await this.loadAgentFile(filePath);
159
+ }
160
+ }
161
+ catch (err) {
162
+ console.warn('[AgentRegistry] Failed to load user agents:', err);
163
+ }
164
+ }
165
+ /**
166
+ * Load an agent from a file.
167
+ */
168
+ async loadAgentFile(filePath) {
169
+ try {
170
+ const content = await readFile(filePath, 'utf-8');
171
+ const ext = extname(filePath).toLowerCase();
172
+ let definition;
173
+ if (ext === '.json') {
174
+ definition = JSON.parse(content);
175
+ }
176
+ else if (ext === '.yaml' || ext === '.yml') {
177
+ // Simple YAML parsing (for basic structures)
178
+ definition = this.parseSimpleYaml(content);
179
+ }
180
+ else {
181
+ return;
182
+ }
183
+ // Validate required fields
184
+ if (!definition.name || !definition.description || !definition.systemPrompt) {
185
+ throw new Error('Missing required fields: name, description, systemPrompt');
186
+ }
187
+ // Store as loaded agent
188
+ const loaded = {
189
+ ...definition,
190
+ source: 'user',
191
+ filePath,
192
+ loadedAt: new Date(),
193
+ };
194
+ this.agents.set(definition.name, loaded);
195
+ this.emit({ type: 'agent.loaded', name: definition.name, source: filePath });
196
+ }
197
+ catch (err) {
198
+ const error = err instanceof Error ? err.message : String(err);
199
+ this.emit({ type: 'agent.error', name: filePath, error });
200
+ }
201
+ }
202
+ /**
203
+ * Simple YAML parser for basic agent definitions.
204
+ */
205
+ parseSimpleYaml(content) {
206
+ const result = {};
207
+ let currentKey = '';
208
+ let inMultiline = false;
209
+ let multilineContent = [];
210
+ const lines = content.split('\n');
211
+ for (const line of lines) {
212
+ // Skip comments and empty lines
213
+ if (line.trim().startsWith('#') || line.trim() === '') {
214
+ if (inMultiline)
215
+ multilineContent.push('');
216
+ continue;
217
+ }
218
+ // Check for multiline continuation
219
+ if (inMultiline) {
220
+ if (line.startsWith(' ') || line.startsWith('\t')) {
221
+ multilineContent.push(line.trim());
222
+ continue;
223
+ }
224
+ else {
225
+ // End of multiline
226
+ result[currentKey] = multilineContent.join('\n');
227
+ inMultiline = false;
228
+ multilineContent = [];
229
+ }
230
+ }
231
+ // Parse key: value
232
+ const match = line.match(/^(\w+):\s*(.*)$/);
233
+ if (match) {
234
+ const [, key, value] = match;
235
+ currentKey = key;
236
+ if (value === '|' || value === '>') {
237
+ // Start multiline
238
+ inMultiline = true;
239
+ multilineContent = [];
240
+ }
241
+ else if (value.startsWith('[')) {
242
+ // Array
243
+ const arrayMatch = value.match(/\[(.*)\]/);
244
+ if (arrayMatch) {
245
+ result[key] = arrayMatch[1].split(',').map(s => s.trim().replace(/['"]/g, ''));
246
+ }
247
+ }
248
+ else if (value === 'true' || value === 'false') {
249
+ result[key] = value === 'true';
250
+ }
251
+ else if (!isNaN(Number(value))) {
252
+ result[key] = Number(value);
253
+ }
254
+ else {
255
+ result[key] = value.replace(/^['"]|['"]$/g, '');
256
+ }
257
+ }
258
+ }
259
+ // Handle final multiline
260
+ if (inMultiline) {
261
+ result[currentKey] = multilineContent.join('\n');
262
+ }
263
+ return result;
264
+ }
265
+ /**
266
+ * Watch .agents/ directory for changes.
267
+ */
268
+ startWatching() {
269
+ const agentsDir = join(this.baseDir, '.agents');
270
+ if (!existsSync(agentsDir))
271
+ return;
272
+ this.watchController = new AbortController();
273
+ // Note: Using a polling approach since fs.watch has platform inconsistencies
274
+ const checkForChanges = async () => {
275
+ await this.loadUserAgents();
276
+ };
277
+ // Check every 5 seconds
278
+ const interval = setInterval(checkForChanges, 5000);
279
+ // Clean up on abort
280
+ this.watchController.signal.addEventListener('abort', () => {
281
+ clearInterval(interval);
282
+ });
283
+ }
284
+ /**
285
+ * Stop watching for changes.
286
+ */
287
+ stopWatching() {
288
+ this.watchController?.abort();
289
+ this.watchController = undefined;
290
+ }
291
+ /**
292
+ * Get an agent by name.
293
+ */
294
+ getAgent(name) {
295
+ return this.agents.get(name);
296
+ }
297
+ /**
298
+ * Get all agents.
299
+ */
300
+ getAllAgents() {
301
+ return Array.from(this.agents.values());
302
+ }
303
+ /**
304
+ * Get agents by source.
305
+ */
306
+ getAgentsBySource(source) {
307
+ return this.getAllAgents().filter(a => a.source === source);
308
+ }
309
+ /**
310
+ * Find agents matching a query (for NL routing).
311
+ */
312
+ findMatchingAgents(query, limit = 3) {
313
+ const queryLower = query.toLowerCase();
314
+ const scored = [];
315
+ for (const agent of this.agents.values()) {
316
+ let score = 0;
317
+ // Check name match
318
+ if (queryLower.includes(agent.name)) {
319
+ score += 10;
320
+ }
321
+ // Check description match
322
+ const descWords = agent.description.toLowerCase().split(/\s+/);
323
+ for (const word of descWords) {
324
+ if (queryLower.includes(word) && word.length > 3) {
325
+ score += 2;
326
+ }
327
+ }
328
+ // Check capabilities match
329
+ for (const cap of agent.capabilities || []) {
330
+ if (queryLower.includes(cap)) {
331
+ score += 5;
332
+ }
333
+ }
334
+ // Check tags match
335
+ for (const tag of agent.tags || []) {
336
+ if (queryLower.includes(tag)) {
337
+ score += 3;
338
+ }
339
+ }
340
+ if (score > 0) {
341
+ scored.push({ agent, score });
342
+ }
343
+ }
344
+ // Sort by score descending
345
+ scored.sort((a, b) => b.score - a.score);
346
+ return scored.slice(0, limit).map(s => s.agent);
347
+ }
348
+ /**
349
+ * Register a runtime agent.
350
+ */
351
+ registerAgent(definition) {
352
+ const loaded = {
353
+ ...definition,
354
+ source: 'user',
355
+ loadedAt: new Date(),
356
+ };
357
+ this.agents.set(definition.name, loaded);
358
+ this.emit({ type: 'agent.loaded', name: definition.name, source: 'runtime' });
359
+ }
360
+ /**
361
+ * Unregister an agent.
362
+ */
363
+ unregisterAgent(name) {
364
+ const existed = this.agents.delete(name);
365
+ if (existed) {
366
+ this.emit({ type: 'agent.removed', name });
367
+ }
368
+ return existed;
369
+ }
370
+ /**
371
+ * Subscribe to events.
372
+ */
373
+ on(listener) {
374
+ this.listeners.push(listener);
375
+ return () => {
376
+ const idx = this.listeners.indexOf(listener);
377
+ if (idx >= 0)
378
+ this.listeners.splice(idx, 1);
379
+ };
380
+ }
381
+ /**
382
+ * Emit an event.
383
+ */
384
+ emit(event) {
385
+ for (const listener of this.listeners) {
386
+ try {
387
+ listener(event);
388
+ }
389
+ catch {
390
+ // Ignore listener errors
391
+ }
392
+ }
393
+ }
394
+ /**
395
+ * Cleanup.
396
+ */
397
+ cleanup() {
398
+ this.stopWatching();
399
+ this.listeners = [];
400
+ }
401
+ }
402
+ // =============================================================================
403
+ // FACTORY
404
+ // =============================================================================
405
+ /**
406
+ * Create an agent registry and load user agents.
407
+ */
408
+ export async function createAgentRegistry(baseDir) {
409
+ const registry = new AgentRegistry(baseDir);
410
+ await registry.loadUserAgents();
411
+ return registry;
412
+ }
413
+ // =============================================================================
414
+ // UTILITIES
415
+ // =============================================================================
416
+ /**
417
+ * Filter tools based on agent's tool whitelist.
418
+ */
419
+ export function filterToolsForAgent(agent, allTools) {
420
+ if (!agent.tools || agent.tools.length === 0) {
421
+ return allTools; // No whitelist = all tools
422
+ }
423
+ return allTools.filter(t => agent.tools.includes(t.name));
424
+ }
425
+ /**
426
+ * Get a formatted list of agents for display.
427
+ */
428
+ export function formatAgentList(agents) {
429
+ const lines = [];
430
+ const builtIn = agents.filter(a => a.source === 'builtin');
431
+ const user = agents.filter(a => a.source === 'user');
432
+ if (builtIn.length > 0) {
433
+ lines.push('Built-in Agents:');
434
+ for (const agent of builtIn) {
435
+ lines.push(` ${agent.name} - ${agent.description.split('.')[0]}`);
436
+ }
437
+ }
438
+ if (user.length > 0) {
439
+ lines.push('\nUser Agents:');
440
+ for (const agent of user) {
441
+ lines.push(` ${agent.name} - ${agent.description.split('.')[0]}`);
442
+ }
443
+ }
444
+ return lines.join('\n');
445
+ }
446
+ //# sourceMappingURL=agent-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../../src/integrations/agent-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * AutoCompactionManager - Monitors token usage and triggers compaction
3
+ *
4
+ * Implements a three-tier threshold system:
5
+ * - OK (< 80%): Continue normally
6
+ * - Warning (80-89%): Alert user, no automatic action
7
+ * - Auto-Compact (90-97%): Depending on mode, auto-compact or request approval
8
+ * - Hard Limit (>= 98%): Agent cannot continue - context too full
9
+ */
10
+ import type { Message } from '../types.js';
11
+ import type { Compactor } from './compaction.js';
12
+ /**
13
+ * Configuration for automatic compaction behavior.
14
+ */
15
+ export interface AutoCompactionConfig {
16
+ /** Compaction mode: auto (no approval), approval (asks user), manual (never auto) */
17
+ mode: 'auto' | 'approval' | 'manual';
18
+ /** Warning threshold as ratio (default: 0.80) */
19
+ warningThreshold: number;
20
+ /** Auto-compact threshold as ratio (default: 0.90) */
21
+ autoCompactThreshold: number;
22
+ /** Hard limit threshold as ratio (default: 0.98) */
23
+ hardLimitThreshold: number;
24
+ /** Number of recent user messages to preserve (default: 5) */
25
+ preserveRecentUserMessages: number;
26
+ /** Number of recent assistant messages to preserve (default: 5) */
27
+ preserveRecentAssistantMessages: number;
28
+ /** Cooldown between compactions in ms (default: 60000) */
29
+ cooldownMs: number;
30
+ /** Max context window tokens (default: 200000 for Claude) */
31
+ maxContextTokens: number;
32
+ }
33
+ /**
34
+ * Result of checking token usage and potentially compacting.
35
+ */
36
+ export interface CompactionCheckResult {
37
+ /** Current status after check */
38
+ status: 'ok' | 'warning' | 'compacted' | 'needs_approval' | 'hard_limit';
39
+ /** Current token count */
40
+ currentTokens: number;
41
+ /** Maximum allowed tokens */
42
+ maxTokens: number;
43
+ /** Ratio of current to max (0-1) */
44
+ ratio: number;
45
+ /** Compacted messages if compaction occurred */
46
+ compactedMessages?: Message[];
47
+ /** Summary generated during compaction */
48
+ summary?: string;
49
+ }
50
+ /**
51
+ * Events emitted by AutoCompactionManager.
52
+ */
53
+ export type AutoCompactionEvent = {
54
+ type: 'autocompaction.check';
55
+ currentTokens: number;
56
+ ratio: number;
57
+ threshold: string;
58
+ } | {
59
+ type: 'autocompaction.warning';
60
+ currentTokens: number;
61
+ ratio: number;
62
+ } | {
63
+ type: 'autocompaction.triggered';
64
+ mode: string;
65
+ currentTokens: number;
66
+ } | {
67
+ type: 'autocompaction.completed';
68
+ tokensBefore: number;
69
+ tokensAfter: number;
70
+ reduction: number;
71
+ } | {
72
+ type: 'autocompaction.cooldown';
73
+ remainingMs: number;
74
+ } | {
75
+ type: 'autocompaction.hard_limit';
76
+ currentTokens: number;
77
+ ratio: number;
78
+ } | {
79
+ type: 'autocompaction.needs_approval';
80
+ currentTokens: number;
81
+ ratio: number;
82
+ } | {
83
+ type: 'autocompaction.emergency_truncate';
84
+ reason: string;
85
+ messagesBefore: number;
86
+ messagesAfter: number;
87
+ };
88
+ export type AutoCompactionEventListener = (event: AutoCompactionEvent) => void;
89
+ /**
90
+ * Monitors token usage and triggers compaction based on thresholds.
91
+ *
92
+ * Three-tier threshold design:
93
+ * - OK (< 80%): Normal operation
94
+ * - Warning (80-89%): User alerted but no action
95
+ * - Auto-Compact (90-97%): Automatic compaction (in auto mode) or approval request
96
+ * - Hard Limit (>= 98%): Cannot continue - too close to context limit
97
+ */
98
+ export declare class AutoCompactionManager {
99
+ private compactor;
100
+ private config;
101
+ private lastCompactionTime;
102
+ private listeners;
103
+ constructor(compactor: Compactor, config?: Partial<AutoCompactionConfig>);
104
+ /**
105
+ * Check token usage and maybe perform compaction.
106
+ *
107
+ * @param options - Current tokens and messages
108
+ * @returns Result indicating status and any compaction performed
109
+ */
110
+ checkAndMaybeCompact(options: {
111
+ currentTokens: number;
112
+ messages: Message[];
113
+ }): Promise<CompactionCheckResult>;
114
+ /**
115
+ * Get the current token ratio.
116
+ */
117
+ getTokenRatio(currentTokens: number): number;
118
+ /**
119
+ * Check if currently in cooldown period.
120
+ */
121
+ isInCooldown(): boolean;
122
+ /**
123
+ * Get remaining cooldown time in milliseconds.
124
+ */
125
+ getRemainingCooldown(): number;
126
+ /**
127
+ * Reset cooldown (e.g., after manual compaction request).
128
+ */
129
+ resetCooldown(): void;
130
+ /**
131
+ * Force compaction regardless of mode or cooldown.
132
+ * Useful for manual compaction requests.
133
+ */
134
+ forceCompact(messages: Message[]): Promise<CompactionCheckResult>;
135
+ /**
136
+ * Get current configuration.
137
+ */
138
+ getConfig(): AutoCompactionConfig;
139
+ /**
140
+ * Update configuration.
141
+ */
142
+ updateConfig(updates: Partial<AutoCompactionConfig>): void;
143
+ /**
144
+ * Subscribe to events.
145
+ */
146
+ on(listener: AutoCompactionEventListener): () => void;
147
+ /**
148
+ * Determine which zone the current ratio falls into.
149
+ */
150
+ private determineZone;
151
+ /**
152
+ * Perform the actual compaction.
153
+ */
154
+ private performCompaction;
155
+ /**
156
+ * Emergency truncation fallback when LLM-based compaction fails.
157
+ * Simply keeps system message and last N messages without summarization.
158
+ */
159
+ private emergencyTruncate;
160
+ /**
161
+ * Emit an event to all listeners.
162
+ */
163
+ private emit;
164
+ }
165
+ /**
166
+ * Create an AutoCompactionManager.
167
+ */
168
+ export declare function createAutoCompactionManager(compactor: Compactor, config?: Partial<AutoCompactionConfig>): AutoCompactionManager;
169
+ /**
170
+ * Format a CompactionCheckResult for display.
171
+ */
172
+ export declare function formatCompactionCheckResult(result: CompactionCheckResult): string;
173
+ /**
174
+ * Get suggested action based on check result.
175
+ */
176
+ export declare function getSuggestedAction(result: CompactionCheckResult): string | null;
177
+ //# sourceMappingURL=auto-compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-compaction.d.ts","sourceRoot":"","sources":["../../../src/integrations/auto-compaction.ts"],"names":[],"mappings":"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"}