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,374 @@
1
+ /**
2
+ * Trick Q: Recitation / Goal Reinforcement
3
+ *
4
+ * Periodically injects task summaries (plans, todos, goals) into the END
5
+ * of the context to combat "lost in the middle" attention issues.
6
+ *
7
+ * Problem: In long conversations (50+ tool calls), the model "forgets"
8
+ * the original goal because it's buried in the middle of the context.
9
+ *
10
+ * Solution: Periodically "recite" the current goal/plan at the context end,
11
+ * pushing it into the model's recent attention span.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { createRecitationManager } from './recitation';
16
+ *
17
+ * const recitation = createRecitationManager({
18
+ * frequency: 5, // Every 5 iterations
19
+ * sources: ['plan', 'todo', 'goal'],
20
+ * });
21
+ *
22
+ * // In agent loop
23
+ * const messages = recitation.injectIfNeeded(
24
+ * currentMessages,
25
+ * { plan, todos, goal, iteration: 15 }
26
+ * );
27
+ * ```
28
+ */
29
+ // =============================================================================
30
+ // RECITATION MANAGER
31
+ // =============================================================================
32
+ /**
33
+ * Manages periodic goal/plan recitation.
34
+ */
35
+ export class RecitationManager {
36
+ config;
37
+ history = [];
38
+ lastInjectionIteration = 0;
39
+ listeners = [];
40
+ constructor(config) {
41
+ this.config = {
42
+ frequency: config.frequency,
43
+ sources: config.sources,
44
+ maxTokens: config.maxTokens ?? 500,
45
+ customBuilder: config.customBuilder ?? (() => null),
46
+ trackHistory: config.trackHistory ?? true,
47
+ };
48
+ }
49
+ /**
50
+ * Check if recitation should be injected at this iteration.
51
+ */
52
+ shouldInject(iteration) {
53
+ // Always inject on first iteration
54
+ if (iteration === 1)
55
+ return true;
56
+ // Inject every N iterations
57
+ const iterationsSinceLastInjection = iteration - this.lastInjectionIteration;
58
+ return iterationsSinceLastInjection >= this.config.frequency;
59
+ }
60
+ /**
61
+ * Build recitation content from state.
62
+ */
63
+ buildRecitation(state) {
64
+ const parts = [];
65
+ const usedSources = [];
66
+ // Goal
67
+ if (this.config.sources.includes('goal') && state.goal) {
68
+ parts.push(`**Goal**: ${state.goal}`);
69
+ usedSources.push('goal');
70
+ }
71
+ // Plan progress
72
+ if (this.config.sources.includes('plan') && state.plan) {
73
+ const planSummary = this.buildPlanSummary(state.plan);
74
+ if (planSummary) {
75
+ parts.push(planSummary);
76
+ usedSources.push('plan');
77
+ }
78
+ }
79
+ // Todo list
80
+ if (this.config.sources.includes('todo') && state.todos?.length) {
81
+ const todoSummary = this.buildTodoSummary(state.todos);
82
+ if (todoSummary) {
83
+ parts.push(todoSummary);
84
+ usedSources.push('todo');
85
+ }
86
+ }
87
+ // Memory context
88
+ if (this.config.sources.includes('memory') && state.memories?.length) {
89
+ const memorySummary = this.buildMemorySummary(state.memories);
90
+ if (memorySummary) {
91
+ parts.push(memorySummary);
92
+ usedSources.push('memory');
93
+ }
94
+ }
95
+ // Custom content
96
+ if (this.config.sources.includes('custom')) {
97
+ const customContent = this.config.customBuilder(state);
98
+ if (customContent) {
99
+ parts.push(customContent);
100
+ usedSources.push('custom');
101
+ }
102
+ }
103
+ // Active files (always include if present)
104
+ if (state.activeFiles?.length) {
105
+ parts.push(`**Active files**: ${state.activeFiles.join(', ')}`);
106
+ }
107
+ // Recent errors (warn about them)
108
+ if (state.recentErrors?.length) {
109
+ parts.push(`**Recent errors**: ${state.recentErrors.slice(-2).join('; ')}`);
110
+ }
111
+ if (parts.length === 0) {
112
+ return null;
113
+ }
114
+ const content = parts.join('\n\n');
115
+ // Truncate if too long
116
+ const tokenEstimate = Math.ceil(content.length / 4);
117
+ if (tokenEstimate > this.config.maxTokens) {
118
+ const truncated = this.truncateContent(content, this.config.maxTokens);
119
+ this.emit({ type: 'recitation.built', content: truncated, tokenEstimate: this.config.maxTokens });
120
+ return truncated;
121
+ }
122
+ this.emit({ type: 'recitation.built', content, tokenEstimate });
123
+ return content;
124
+ }
125
+ /**
126
+ * Inject recitation into messages if needed.
127
+ * Returns the modified message array.
128
+ */
129
+ injectIfNeeded(messages, state) {
130
+ if (!this.shouldInject(state.iteration)) {
131
+ this.emit({
132
+ type: 'recitation.skipped',
133
+ iteration: state.iteration,
134
+ reason: 'not_due',
135
+ });
136
+ return messages;
137
+ }
138
+ const recitationContent = this.buildRecitation(state);
139
+ if (!recitationContent) {
140
+ this.emit({
141
+ type: 'recitation.skipped',
142
+ iteration: state.iteration,
143
+ reason: 'no_content',
144
+ });
145
+ return messages;
146
+ }
147
+ // Create recitation message
148
+ const recitationMessage = {
149
+ role: 'system',
150
+ content: `[Current Status - Iteration ${state.iteration}]\n${recitationContent}`,
151
+ };
152
+ // Track injection
153
+ this.lastInjectionIteration = state.iteration;
154
+ if (this.config.trackHistory) {
155
+ this.history.push({
156
+ iteration: state.iteration,
157
+ timestamp: new Date().toISOString(),
158
+ content: recitationContent,
159
+ sources: this.config.sources.filter(s => recitationContent.toLowerCase().includes(s.toLowerCase())),
160
+ });
161
+ }
162
+ this.emit({
163
+ type: 'recitation.injected',
164
+ iteration: state.iteration,
165
+ sources: this.config.sources,
166
+ });
167
+ // Inject at the END of messages (before the final user message if present)
168
+ const lastUserIndex = this.findLastUserMessageIndex(messages);
169
+ if (lastUserIndex >= 0) {
170
+ // Insert before the last user message
171
+ return [
172
+ ...messages.slice(0, lastUserIndex),
173
+ recitationMessage,
174
+ ...messages.slice(lastUserIndex),
175
+ ];
176
+ }
177
+ // No user message at end, just append
178
+ return [...messages, recitationMessage];
179
+ }
180
+ /**
181
+ * Force recitation injection regardless of frequency.
182
+ */
183
+ forceInject(messages, state) {
184
+ const originalFrequency = this.config.frequency;
185
+ this.config.frequency = 0; // Force injection
186
+ const result = this.injectIfNeeded(messages, state);
187
+ this.config.frequency = originalFrequency;
188
+ return result;
189
+ }
190
+ /**
191
+ * Get injection history.
192
+ */
193
+ getHistory() {
194
+ return [...this.history];
195
+ }
196
+ /**
197
+ * Clear history.
198
+ */
199
+ clearHistory() {
200
+ this.history = [];
201
+ this.lastInjectionIteration = 0;
202
+ }
203
+ /**
204
+ * Update configuration.
205
+ */
206
+ updateConfig(updates) {
207
+ Object.assign(this.config, updates);
208
+ }
209
+ /**
210
+ * Subscribe to events.
211
+ */
212
+ on(listener) {
213
+ this.listeners.push(listener);
214
+ return () => {
215
+ const idx = this.listeners.indexOf(listener);
216
+ if (idx >= 0)
217
+ this.listeners.splice(idx, 1);
218
+ };
219
+ }
220
+ // Internal methods
221
+ buildPlanSummary(plan) {
222
+ const completedCount = plan.tasks.filter(t => t.status === 'completed').length;
223
+ const totalCount = plan.tasks.length;
224
+ const currentTask = plan.tasks[plan.currentTaskIndex];
225
+ const lines = [
226
+ `**Plan Progress**: ${completedCount}/${totalCount} tasks completed`,
227
+ ];
228
+ if (currentTask) {
229
+ lines.push(`**Current Task**: ${currentTask.description}`);
230
+ }
231
+ // Show next pending tasks (max 2)
232
+ const pendingTasks = plan.tasks
233
+ .filter(t => t.status === 'pending')
234
+ .slice(0, 2);
235
+ if (pendingTasks.length > 0) {
236
+ lines.push('**Next**: ' + pendingTasks.map(t => t.description).join('; '));
237
+ }
238
+ return lines.join('\n');
239
+ }
240
+ buildTodoSummary(todos) {
241
+ const pending = todos.filter(t => t.status === 'pending');
242
+ const inProgress = todos.filter(t => t.status === 'in_progress');
243
+ const completed = todos.filter(t => t.status === 'completed');
244
+ const lines = [
245
+ `**Todo Status**: ${completed.length} done, ${inProgress.length} active, ${pending.length} pending`,
246
+ ];
247
+ if (inProgress.length > 0) {
248
+ lines.push('**In Progress**: ' + inProgress.map(t => t.content).join('; '));
249
+ }
250
+ if (pending.length > 0 && pending.length <= 3) {
251
+ lines.push('**Remaining**: ' + pending.map(t => t.content).join('; '));
252
+ }
253
+ else if (pending.length > 3) {
254
+ lines.push('**Next**: ' + pending.slice(0, 3).map(t => t.content).join('; ') +
255
+ ` (+${pending.length - 3} more)`);
256
+ }
257
+ return lines.join('\n');
258
+ }
259
+ buildMemorySummary(memories) {
260
+ if (memories.length === 0)
261
+ return '';
262
+ const maxMemories = 3;
263
+ const shown = memories.slice(0, maxMemories);
264
+ let summary = '**Relevant Context**: ' + shown.join('; ');
265
+ if (memories.length > maxMemories) {
266
+ summary += ` (+${memories.length - maxMemories} more)`;
267
+ }
268
+ return summary;
269
+ }
270
+ truncateContent(content, maxTokens) {
271
+ const maxChars = maxTokens * 4;
272
+ if (content.length <= maxChars)
273
+ return content;
274
+ return content.slice(0, maxChars - 20) + '\n...[truncated]';
275
+ }
276
+ findLastUserMessageIndex(messages) {
277
+ for (let i = messages.length - 1; i >= 0; i--) {
278
+ if (messages[i].role === 'user') {
279
+ return i;
280
+ }
281
+ }
282
+ return -1;
283
+ }
284
+ emit(event) {
285
+ for (const listener of this.listeners) {
286
+ try {
287
+ listener(event);
288
+ }
289
+ catch {
290
+ // Ignore listener errors
291
+ }
292
+ }
293
+ }
294
+ }
295
+ // =============================================================================
296
+ // FACTORY FUNCTIONS
297
+ // =============================================================================
298
+ /**
299
+ * Create a recitation manager.
300
+ *
301
+ * @example
302
+ * ```typescript
303
+ * const recitation = createRecitationManager({
304
+ * frequency: 5, // Every 5 iterations
305
+ * sources: ['goal', 'plan', 'todo'],
306
+ * maxTokens: 500,
307
+ * });
308
+ *
309
+ * // In agent loop
310
+ * const enrichedMessages = recitation.injectIfNeeded(messages, {
311
+ * iteration: currentIteration,
312
+ * goal: 'Implement user authentication',
313
+ * plan: currentPlan,
314
+ * todos: currentTodos,
315
+ * });
316
+ * ```
317
+ */
318
+ export function createRecitationManager(config) {
319
+ return new RecitationManager(config);
320
+ }
321
+ // =============================================================================
322
+ // UTILITIES
323
+ // =============================================================================
324
+ /**
325
+ * Quick helper to build a recitation block without full manager.
326
+ */
327
+ export function buildQuickRecitation(state) {
328
+ const parts = [];
329
+ if (state.goal) {
330
+ parts.push(`Goal: ${state.goal}`);
331
+ }
332
+ if (state.plan) {
333
+ const completed = state.plan.tasks.filter(t => t.status === 'completed').length;
334
+ parts.push(`Progress: ${completed}/${state.plan.tasks.length} tasks`);
335
+ const current = state.plan.tasks[state.plan.currentTaskIndex];
336
+ if (current) {
337
+ parts.push(`Current: ${current.description}`);
338
+ }
339
+ }
340
+ if (state.todos?.length) {
341
+ const pending = state.todos.filter(t => t.status !== 'completed').length;
342
+ parts.push(`Todos: ${pending} remaining`);
343
+ }
344
+ return parts.join(' | ');
345
+ }
346
+ /**
347
+ * Calculate optimal recitation frequency based on context size.
348
+ * Longer contexts need more frequent recitation.
349
+ */
350
+ export function calculateOptimalFrequency(contextTokens) {
351
+ if (contextTokens < 10000)
352
+ return 10; // Light context
353
+ if (contextTokens < 30000)
354
+ return 7; // Medium context
355
+ if (contextTokens < 60000)
356
+ return 5; // Heavy context
357
+ return 3; // Very heavy context - recite often
358
+ }
359
+ /**
360
+ * Format recitation history for debugging.
361
+ */
362
+ export function formatRecitationHistory(history) {
363
+ if (history.length === 0) {
364
+ return 'No recitation history.';
365
+ }
366
+ const lines = ['Recitation History:', ''];
367
+ for (const entry of history.slice(-5)) {
368
+ lines.push(`[Iteration ${entry.iteration}] (${entry.sources.join(', ')})`);
369
+ lines.push(` ${entry.content.slice(0, 100)}${entry.content.length > 100 ? '...' : ''}`);
370
+ lines.push('');
371
+ }
372
+ return lines.join('\n');
373
+ }
374
+ //# sourceMappingURL=recitation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recitation.js","sourceRoot":"","sources":["../../../src/tricks/recitation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Trick R: Reversible Compaction
3
+ *
4
+ * Preserves "reconstruction recipes" during context compaction.
5
+ * Instead of discarding information, store retrieval keys so the model
6
+ * can fetch details when needed.
7
+ *
8
+ * Problem: Traditional compaction loses important details forever.
9
+ * When a file path or URL is summarized away, the model can't recover it.
10
+ *
11
+ * Solution: Extract and preserve references (URLs, file paths, function names)
12
+ * as "reconstruction recipes" - minimal keys that enable re-retrieval.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { createReversibleCompactor, extractReferences } from './reversible-compaction';
17
+ *
18
+ * const compactor = createReversibleCompactor({
19
+ * preserveTypes: ['file', 'url', 'function', 'error'],
20
+ * maxReferences: 50,
21
+ * });
22
+ *
23
+ * // Compact with reference preservation
24
+ * const result = compactor.compact(messages, {
25
+ * summarize: async (msgs) => summarizeLLM(msgs),
26
+ * });
27
+ *
28
+ * console.log(result.summary); // Condensed summary
29
+ * console.log(result.references); // Preserved references for retrieval
30
+ * ```
31
+ */
32
+ /**
33
+ * Types of references that can be preserved.
34
+ */
35
+ export type ReferenceType = 'file' | 'url' | 'function' | 'class' | 'error' | 'command' | 'snippet' | 'decision' | 'custom';
36
+ /**
37
+ * A preserved reference that can be used for retrieval.
38
+ */
39
+ export interface Reference {
40
+ /** Unique ID for this reference */
41
+ id: string;
42
+ /** Type of reference */
43
+ type: ReferenceType;
44
+ /** The actual value (path, URL, name, etc.) */
45
+ value: string;
46
+ /** Brief context about this reference */
47
+ context?: string;
48
+ /** When this reference was encountered */
49
+ timestamp: string;
50
+ /** Source message index (before compaction) */
51
+ sourceIndex?: number;
52
+ /** Relevance score (0-1) for prioritization */
53
+ relevance?: number;
54
+ }
55
+ /**
56
+ * Configuration for reversible compaction.
57
+ */
58
+ export interface ReversibleCompactionConfig {
59
+ /** Types of references to preserve */
60
+ preserveTypes: ReferenceType[];
61
+ /** Maximum references to keep */
62
+ maxReferences?: number;
63
+ /** Whether to deduplicate references */
64
+ deduplicate?: boolean;
65
+ /** Custom extractors for specific reference types */
66
+ customExtractors?: Map<ReferenceType, ReferenceExtractor>;
67
+ /** Minimum relevance score to preserve (0-1) */
68
+ minRelevance?: number;
69
+ }
70
+ /**
71
+ * Result of compaction.
72
+ */
73
+ export interface CompactionResult {
74
+ /** The summarized content */
75
+ summary: string;
76
+ /** Preserved references for retrieval */
77
+ references: Reference[];
78
+ /** Statistics about the compaction */
79
+ stats: CompactionStats;
80
+ }
81
+ /**
82
+ * Statistics about compaction.
83
+ */
84
+ export interface CompactionStats {
85
+ /** Original message count */
86
+ originalMessages: number;
87
+ /** Original estimated tokens */
88
+ originalTokens: number;
89
+ /** Compacted token count */
90
+ compactedTokens: number;
91
+ /** References extracted */
92
+ referencesExtracted: number;
93
+ /** References preserved (after dedup/limits) */
94
+ referencesPreserved: number;
95
+ /** Compression ratio */
96
+ compressionRatio: number;
97
+ }
98
+ /**
99
+ * Message for compaction.
100
+ */
101
+ export interface CompactionMessage {
102
+ role: 'system' | 'user' | 'assistant' | 'tool';
103
+ content: string;
104
+ name?: string;
105
+ }
106
+ /**
107
+ * Custom reference extractor function.
108
+ */
109
+ export type ReferenceExtractor = (content: string, index: number) => Reference[];
110
+ /**
111
+ * Options for compact operation.
112
+ */
113
+ export interface CompactOptions {
114
+ /** Function to summarize messages */
115
+ summarize: (messages: CompactionMessage[]) => Promise<string>;
116
+ /** Additional context to preserve */
117
+ additionalContext?: string;
118
+ }
119
+ /**
120
+ * Events emitted during compaction.
121
+ */
122
+ export type CompactionEvent = {
123
+ type: 'compaction.started';
124
+ messageCount: number;
125
+ } | {
126
+ type: 'reference.extracted';
127
+ reference: Reference;
128
+ } | {
129
+ type: 'reference.deduplicated';
130
+ kept: number;
131
+ removed: number;
132
+ } | {
133
+ type: 'compaction.completed';
134
+ stats: CompactionStats;
135
+ };
136
+ export type CompactionEventListener = (event: CompactionEvent) => void;
137
+ /**
138
+ * Extract file path references from content.
139
+ */
140
+ export declare function extractFileReferences(content: string, sourceIndex?: number): Reference[];
141
+ /**
142
+ * Extract URL references from content.
143
+ */
144
+ export declare function extractUrlReferences(content: string, sourceIndex?: number): Reference[];
145
+ /**
146
+ * Extract function/method references from content.
147
+ */
148
+ export declare function extractFunctionReferences(content: string, sourceIndex?: number): Reference[];
149
+ /**
150
+ * Extract error references from content.
151
+ */
152
+ export declare function extractErrorReferences(content: string, sourceIndex?: number): Reference[];
153
+ /**
154
+ * Extract command references from content.
155
+ */
156
+ export declare function extractCommandReferences(content: string, sourceIndex?: number): Reference[];
157
+ /**
158
+ * Extract all references from content.
159
+ */
160
+ export declare function extractReferences(content: string, types: ReferenceType[], sourceIndex?: number, customExtractors?: Map<ReferenceType, ReferenceExtractor>): Reference[];
161
+ /**
162
+ * Manages reversible context compaction.
163
+ */
164
+ export declare class ReversibleCompactor {
165
+ private config;
166
+ private preservedReferences;
167
+ private listeners;
168
+ constructor(config: ReversibleCompactionConfig);
169
+ /**
170
+ * Compact messages while preserving references.
171
+ */
172
+ compact(messages: CompactionMessage[], options: CompactOptions): Promise<CompactionResult>;
173
+ /**
174
+ * Format references as a block for inclusion in context.
175
+ */
176
+ formatReferencesBlock(references: Reference[]): string;
177
+ /**
178
+ * Get a reference by ID.
179
+ */
180
+ getReference(id: string): Reference | undefined;
181
+ /**
182
+ * Get references by type.
183
+ */
184
+ getReferencesByType(type: ReferenceType): Reference[];
185
+ /**
186
+ * Search references by value.
187
+ */
188
+ searchReferences(query: string): Reference[];
189
+ /**
190
+ * Get all preserved references.
191
+ */
192
+ getPreservedReferences(): Reference[];
193
+ /**
194
+ * Clear preserved references.
195
+ */
196
+ clear(): void;
197
+ /**
198
+ * Subscribe to events.
199
+ */
200
+ on(listener: CompactionEventListener): () => void;
201
+ private deduplicateReferences;
202
+ private emit;
203
+ }
204
+ /**
205
+ * Create a reversible compactor.
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * const compactor = createReversibleCompactor({
210
+ * preserveTypes: ['file', 'url', 'error'],
211
+ * maxReferences: 50,
212
+ * deduplicate: true,
213
+ * });
214
+ *
215
+ * const result = await compactor.compact(messages, {
216
+ * summarize: async (msgs) => {
217
+ * // Use LLM to summarize
218
+ * return await llm.summarize(msgs);
219
+ * },
220
+ * });
221
+ *
222
+ * // Result includes both summary and preserved references
223
+ * console.log(result.summary);
224
+ * console.log(result.references);
225
+ *
226
+ * // Later, search for specific references
227
+ * const fileRefs = compactor.getReferencesByType('file');
228
+ * const errorRefs = compactor.searchReferences('TypeError');
229
+ * ```
230
+ */
231
+ export declare function createReversibleCompactor(config: ReversibleCompactionConfig): ReversibleCompactor;
232
+ /**
233
+ * Quick helper to extract references without full compaction.
234
+ */
235
+ export declare function quickExtract(content: string, types?: ReferenceType[]): Reference[];
236
+ /**
237
+ * Create a reconstruction prompt for re-fetching details.
238
+ */
239
+ export declare function createReconstructionPrompt(references: Reference[]): string;
240
+ /**
241
+ * Calculate relevance score for a reference based on context.
242
+ */
243
+ export declare function calculateRelevance(reference: Reference, context: {
244
+ goal?: string;
245
+ recentTopics?: string[];
246
+ }): number;
247
+ /**
248
+ * Format compaction stats for display.
249
+ */
250
+ export declare function formatCompactionStats(stats: CompactionStats): string;
251
+ //# sourceMappingURL=reversible-compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reversible-compaction.d.ts","sourceRoot":"","sources":["../../../src/tricks/reversible-compaction.ts"],"names":[],"mappings":"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"}