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,170 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Attocode - A Production Coding Agent
4
+ *
5
+ * A fully-featured coding agent for development tasks.
6
+ *
7
+ * Features:
8
+ * - Real LLM integration (OpenRouter, Anthropic, OpenAI)
9
+ * - Full tool suite (file ops, bash, search, etc.)
10
+ * - Memory system (remembers past interactions)
11
+ * - Planning for complex tasks
12
+ * - Multi-Agent Coordination
13
+ * - ReAct Pattern
14
+ * - Observability (tracing, metrics)
15
+ * - Safety controls (sandbox, human-in-loop)
16
+ * - Execution Policies
17
+ * - Thread Management & Checkpoints
18
+ * - Session persistence
19
+ *
20
+ * Run: npx tsx src/main.ts
21
+ */
22
+ // Load environment
23
+ import { config } from 'dotenv';
24
+ config();
25
+ // Import adapters to register them
26
+ import './providers/adapters/openrouter.js';
27
+ import './providers/adapters/anthropic.js';
28
+ import './providers/adapters/openai.js';
29
+ import './providers/adapters/mock.js';
30
+ // Provider detection
31
+ import { getProvider } from './providers/provider.js';
32
+ // Agent and tools
33
+ import { createProductionAgent } from './agent.js';
34
+ import { ProviderAdapter, convertToolsFromRegistry } from './adapters.js';
35
+ import { createStandardRegistry } from './tools/standard.js';
36
+ // CLI and configuration
37
+ import { parseArgs, showHelp, shouldUseTUI, VERSION } from './cli.js';
38
+ import { loadUserConfig } from './config.js';
39
+ // First-run and init command
40
+ import { runInit } from './commands/init.js';
41
+ import { isFirstRun, hasUsableProvider, getFirstRunMessage } from './first-run.js';
42
+ // Modes
43
+ import { startTUIMode, startProductionREPL } from './modes/index.js';
44
+ // Event display for single-task mode
45
+ import { createEventDisplay } from './tui/event-display.js';
46
+ // Persistence debug for --debug flag
47
+ import { persistenceDebug } from './integrations/persistence.js';
48
+ // Process handlers for graceful shutdown
49
+ import { installProcessHandlers } from './core/process-handlers.js';
50
+ // =============================================================================
51
+ // MAIN
52
+ // =============================================================================
53
+ async function main() {
54
+ // Install process error handlers for graceful shutdown
55
+ installProcessHandlers();
56
+ const args = parseArgs();
57
+ // Enable debug mode if requested
58
+ if (args.debug) {
59
+ persistenceDebug.enable();
60
+ }
61
+ if (args.version) {
62
+ console.log(`attocode v${VERSION}`);
63
+ return;
64
+ }
65
+ if (args.help) {
66
+ showHelp();
67
+ return;
68
+ }
69
+ // Handle init command
70
+ if (args.init) {
71
+ await runInit();
72
+ return;
73
+ }
74
+ // First-run check
75
+ if (isFirstRun() && !hasUsableProvider()) {
76
+ console.log(getFirstRunMessage());
77
+ console.log('\nRun "attocode init" to set up.\n');
78
+ process.exit(1);
79
+ }
80
+ const useTUI = shouldUseTUI(args);
81
+ // Load user config from ~/.config/attocode/config.json
82
+ const userConfig = loadUserConfig();
83
+ console.log('Detecting LLM provider...');
84
+ let provider;
85
+ try {
86
+ // Use preferred provider from config if available
87
+ const preferredProvider = userConfig?.providers?.default;
88
+ const baseProvider = await getProvider(preferredProvider);
89
+ if (!('chatWithTools' in baseProvider)) {
90
+ console.error('Provider does not support native tool use.');
91
+ console.error(' Set OPENROUTER_API_KEY to use this application.');
92
+ process.exit(1);
93
+ }
94
+ provider = baseProvider;
95
+ }
96
+ catch (error) {
97
+ console.error('Failed to initialize provider:', error.message);
98
+ console.error('\nSet one of: OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY');
99
+ process.exit(1);
100
+ }
101
+ // Resolve model: CLI args > env var > user config > provider default
102
+ const resolvedModel = args.model || process.env.OPENROUTER_MODEL || userConfig?.model || provider.defaultModel;
103
+ console.log(`+ Using ${provider.name} (${resolvedModel})`);
104
+ if (args.trace) {
105
+ console.log(`+ Trace capture enabled -> .traces/`);
106
+ }
107
+ console.log('');
108
+ if (args.task) {
109
+ // Single task mode (non-interactive)
110
+ const registry = createStandardRegistry(args.permission);
111
+ const tools = convertToolsFromRegistry(registry);
112
+ const adaptedProvider = new ProviderAdapter(provider, resolvedModel);
113
+ const agent = createProductionAgent({
114
+ provider: adaptedProvider,
115
+ tools,
116
+ model: resolvedModel,
117
+ maxIterations: args.maxIterations,
118
+ humanInLoop: false, // Disable for non-interactive
119
+ observability: args.trace ? {
120
+ enabled: true,
121
+ traceCapture: {
122
+ enabled: true,
123
+ outputDir: '.traces',
124
+ captureMessageContent: true,
125
+ captureToolResults: true,
126
+ },
127
+ } : undefined,
128
+ });
129
+ agent.subscribe(createEventDisplay());
130
+ console.log(`Task: ${args.task}\n`);
131
+ const result = await agent.run(args.task);
132
+ console.log('\n' + '='.repeat(60));
133
+ console.log(result.success ? '+ Task completed' : '! Task incomplete');
134
+ console.log('='.repeat(60));
135
+ console.log(result.response || result.error);
136
+ // Show trace file location if tracing was enabled
137
+ const traceCollector = agent.getTraceCollector();
138
+ if (traceCollector) {
139
+ console.log(`\nTrace saved to: .traces/`);
140
+ }
141
+ await agent.cleanup();
142
+ process.exit(result.success ? 0 : 1);
143
+ }
144
+ else {
145
+ // Interactive mode
146
+ if (useTUI) {
147
+ console.log('Starting TUI mode (use --no-tui for readline)');
148
+ await startTUIMode(provider, {
149
+ permissionMode: args.permission,
150
+ maxIterations: args.maxIterations,
151
+ model: resolvedModel,
152
+ trace: args.trace,
153
+ theme: args.theme,
154
+ });
155
+ }
156
+ else {
157
+ await startProductionREPL(provider, {
158
+ permissionMode: args.permission,
159
+ maxIterations: args.maxIterations,
160
+ model: resolvedModel,
161
+ trace: args.trace,
162
+ });
163
+ }
164
+ }
165
+ }
166
+ main().catch((error) => {
167
+ console.error('Fatal error:', error);
168
+ process.exit(1);
169
+ });
170
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mode Entry Points
3
+ *
4
+ * This module exports the different operational modes for the agent:
5
+ * - TUI Mode: Full-featured terminal UI with Ink/React
6
+ * - REPL Mode: Simple readline-based interface
7
+ */
8
+ export { startTUIMode, type TUIModeOptions } from './tui.js';
9
+ export { startProductionREPL, type REPLOptions } from './repl.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mode Entry Points
3
+ *
4
+ * This module exports the different operational modes for the agent:
5
+ * - TUI Mode: Full-featured terminal UI with Ink/React
6
+ * - REPL Mode: Simple readline-based interface
7
+ */
8
+ export { startTUIMode } from './tui.js';
9
+ export { startProductionREPL } from './repl.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAoB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * REPL Mode
3
+ *
4
+ * Legacy readline-based interface for the coding agent.
5
+ * Uses the unified command handler for slash commands.
6
+ */
7
+ import type { LLMProviderWithTools } from '../providers/types.js';
8
+ import type { PermissionMode } from '../tools/types.js';
9
+ export interface REPLOptions {
10
+ permissionMode?: PermissionMode;
11
+ maxIterations?: number;
12
+ model?: string;
13
+ trace?: boolean;
14
+ }
15
+ /**
16
+ * Start the production REPL mode.
17
+ */
18
+ export declare function startProductionREPL(provider: LLMProviderWithTools, options?: REPLOptions): Promise<void>;
19
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../../src/modes/repl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA2CxD,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAoYf"}
@@ -0,0 +1,393 @@
1
+ /**
2
+ * REPL Mode
3
+ *
4
+ * Legacy readline-based interface for the coding agent.
5
+ * Uses the unified command handler for slash commands.
6
+ */
7
+ import * as readline from 'node:readline/promises';
8
+ import { stdin, stdout } from 'node:process';
9
+ import { createProductionAgent } from '../agent.js';
10
+ import { ProviderAdapter, convertToolsFromRegistry, createInteractiveApprovalHandler } from '../adapters.js';
11
+ import { createStandardRegistry } from '../tools/standard.js';
12
+ import { createSQLiteStore, createSessionStore, createMCPClient, createCompactor, createMCPMetaTools, } from '../integrations/index.js';
13
+ import { persistenceDebug, saveCheckpointToStore, loadSessionState, } from '../integrations/persistence.js';
14
+ import { createEventDisplay, createJunctureLogger } from '../tui/event-display.js';
15
+ import { createTUIRenderer } from '../tui/index.js';
16
+ import { getMCPConfigPaths } from '../paths.js';
17
+ import { showSessionPicker, showQuickPicker } from '../session-picker.js';
18
+ import { registerCleanupResource } from '../core/process-handlers.js';
19
+ import { handleCommand, createConsoleOutput } from '../commands/handler.js';
20
+ // ANSI color helper
21
+ const colors = {
22
+ reset: '\x1b[0m',
23
+ bold: '\x1b[1m',
24
+ dim: '\x1b[2m',
25
+ red: '\x1b[31m',
26
+ green: '\x1b[32m',
27
+ yellow: '\x1b[33m',
28
+ cyan: '\x1b[36m',
29
+ magenta: '\x1b[35m',
30
+ };
31
+ function c(text, color) {
32
+ return `${colors[color]}${text}${colors.reset}`;
33
+ }
34
+ /**
35
+ * Start the production REPL mode.
36
+ */
37
+ export async function startProductionREPL(provider, options = {}) {
38
+ const { permissionMode = 'interactive', maxIterations = 50, model, trace = false, } = options;
39
+ // Create readline interface
40
+ const rl = readline.createInterface({ input: stdin, output: stdout });
41
+ // Create tool registry and convert to production format
42
+ const registry = createStandardRegistry(permissionMode);
43
+ const tools = convertToolsFromRegistry(registry);
44
+ // Create provider adapter
45
+ const adaptedProvider = new ProviderAdapter(provider, model);
46
+ // Create MCP client with lazy loading
47
+ const mcpClient = await createMCPClient({
48
+ configPaths: getMCPConfigPaths(),
49
+ lazyLoading: true,
50
+ alwaysLoadTools: [],
51
+ summaryDescriptionLimit: 100,
52
+ maxToolsPerSearch: 5,
53
+ });
54
+ // Get MCP tool summaries
55
+ const mcpSummaries = mcpClient.getAllToolSummaries().map(s => ({
56
+ name: s.name,
57
+ description: s.description,
58
+ }));
59
+ // Create the production agent
60
+ const agent = createProductionAgent({
61
+ toolResolver: (toolName) => {
62
+ if (toolName.startsWith('mcp_')) {
63
+ return mcpClient.getFullToolDefinition(toolName);
64
+ }
65
+ return null;
66
+ },
67
+ mcpToolSummaries: mcpSummaries,
68
+ provider: adaptedProvider,
69
+ tools,
70
+ model,
71
+ maxIterations,
72
+ memory: {
73
+ enabled: true,
74
+ types: { episodic: true, semantic: true, working: true },
75
+ retrievalStrategy: 'hybrid',
76
+ retrievalLimit: 10,
77
+ },
78
+ planning: {
79
+ enabled: true,
80
+ autoplan: true,
81
+ complexityThreshold: 6,
82
+ maxDepth: 3,
83
+ allowReplan: true,
84
+ },
85
+ reflection: {
86
+ enabled: true,
87
+ autoReflect: false,
88
+ maxAttempts: 3,
89
+ confidenceThreshold: 0.8,
90
+ },
91
+ observability: {
92
+ enabled: true,
93
+ tracing: { enabled: true, serviceName: 'production-agent', exporter: 'console' },
94
+ metrics: { enabled: true, collectTokens: true, collectCosts: true, collectLatencies: true },
95
+ logging: { enabled: false },
96
+ traceCapture: trace ? {
97
+ enabled: true,
98
+ outputDir: '.traces',
99
+ captureMessageContent: true,
100
+ captureToolResults: true,
101
+ analyzeCacheBoundaries: true,
102
+ } : undefined,
103
+ },
104
+ sandbox: {
105
+ enabled: true,
106
+ isolation: 'process',
107
+ allowedCommands: ['node', 'npm', 'npx', 'yarn', 'git', 'ls', 'cat', 'head', 'tail', 'grep', 'find', 'echo', 'pwd'],
108
+ blockedCommands: ['rm -rf /', 'sudo', 'chmod 777'],
109
+ resourceLimits: { timeout: 60000 },
110
+ allowedPaths: [process.cwd(), process.env.HOME || '/Users', '/tmp'],
111
+ },
112
+ humanInLoop: {
113
+ enabled: permissionMode === 'interactive',
114
+ riskThreshold: 'high',
115
+ alwaysApprove: ['delete_file', 'rm'],
116
+ neverApprove: ['read_file', 'list_files', 'glob', 'grep'],
117
+ approvalHandler: createInteractiveApprovalHandler(rl),
118
+ auditLog: true,
119
+ },
120
+ executionPolicy: {
121
+ enabled: true,
122
+ defaultPolicy: 'prompt',
123
+ toolPolicies: {
124
+ read_file: { policy: 'allow' },
125
+ list_files: { policy: 'allow' },
126
+ glob: { policy: 'allow' },
127
+ grep: { policy: 'allow' },
128
+ },
129
+ intentAware: true,
130
+ intentConfidenceThreshold: 0.7,
131
+ },
132
+ threads: {
133
+ enabled: true,
134
+ autoCheckpoint: true,
135
+ checkpointFrequency: 5,
136
+ maxCheckpoints: 10,
137
+ enableRollback: true,
138
+ enableForking: true,
139
+ },
140
+ multiAgent: {
141
+ enabled: true,
142
+ roles: [
143
+ { name: 'researcher', description: 'Explores codebases', systemPrompt: 'You are a code researcher.', capabilities: ['read_file', 'list_files', 'glob', 'grep'], authority: 1 },
144
+ { name: 'coder', description: 'Writes code', systemPrompt: 'You are a coder.', capabilities: ['read_file', 'write_file', 'edit_file', 'bash'], authority: 2 },
145
+ { name: 'reviewer', description: 'Reviews code', systemPrompt: 'You are a code reviewer.', capabilities: ['read_file', 'grep', 'glob'], authority: 2 },
146
+ { name: 'architect', description: 'Designs systems', systemPrompt: 'You are a software architect.', capabilities: ['read_file', 'list_files', 'glob'], authority: 3 },
147
+ ],
148
+ consensusStrategy: 'voting',
149
+ },
150
+ react: { enabled: true, maxSteps: 15, stopOnAnswer: true, includeReasoning: true },
151
+ hooks: { enabled: true },
152
+ plugins: { enabled: true },
153
+ lsp: { enabled: true, autoDetect: true },
154
+ });
155
+ // Subscribe to events
156
+ agent.subscribe(createEventDisplay());
157
+ // Initialize session storage
158
+ let sessionStore;
159
+ persistenceDebug.log('Initializing session store', { baseDir: '.agent/sessions' });
160
+ try {
161
+ sessionStore = await createSQLiteStore({ baseDir: '.agent/sessions' });
162
+ persistenceDebug.log('SQLite store created successfully');
163
+ console.log(c('+ SQLite session store initialized', 'green'));
164
+ if (persistenceDebug.isEnabled()) {
165
+ const sqliteStore = sessionStore;
166
+ const stats = sqliteStore.getStats();
167
+ persistenceDebug.log('SQLite store stats', stats);
168
+ }
169
+ agent.subscribe(createJunctureLogger(sessionStore));
170
+ }
171
+ catch (sqliteError) {
172
+ persistenceDebug.error('SQLite initialization failed', sqliteError);
173
+ console.log(c('! SQLite unavailable, using JSONL fallback', 'yellow'));
174
+ console.log(c(` Error: ${sqliteError.message}`, 'dim'));
175
+ sessionStore = await createSessionStore({ baseDir: '.agent/sessions' });
176
+ persistenceDebug.log('JSONL store created as fallback');
177
+ }
178
+ const compactor = createCompactor(adaptedProvider, {
179
+ tokenThreshold: 80000,
180
+ preserveRecentCount: 10,
181
+ });
182
+ // Initialize TUI for colored code output
183
+ const tui = await createTUIRenderer({
184
+ showToolCalls: true,
185
+ showThinking: false,
186
+ showStreaming: true,
187
+ });
188
+ await tui.init();
189
+ // Register cleanup resources
190
+ registerCleanupResource('rl', rl);
191
+ registerCleanupResource('mcpClient', mcpClient);
192
+ registerCleanupResource('agent', agent);
193
+ registerCleanupResource('tui', tui);
194
+ // Add MCP meta-tools
195
+ const mcpMetaTools = createMCPMetaTools(mcpClient, {
196
+ autoLoad: true,
197
+ defaultLimit: 5,
198
+ onToolsLoaded: (loadedTools) => {
199
+ for (const tool of loadedTools) {
200
+ agent.addTool(tool);
201
+ }
202
+ console.log(c(` + Dynamically loaded ${loadedTools.length} MCP tool(s)`, 'dim'));
203
+ },
204
+ });
205
+ for (const metaTool of mcpMetaTools) {
206
+ agent.addTool(metaTool);
207
+ }
208
+ // Show MCP status
209
+ const mcpServers = mcpClient.listServers();
210
+ if (mcpServers.length > 0) {
211
+ console.log(c(`MCP Servers: ${mcpServers.length} configured`, 'dim'));
212
+ for (const srv of mcpServers) {
213
+ const icon = srv.status === 'connected' ? '+' : srv.status === 'error' ? 'x' : 'o';
214
+ console.log(c(` ${icon} ${srv.name} (${srv.status})${srv.toolCount > 0 ? ` - ${srv.toolCount} tools` : ''}`, 'dim'));
215
+ }
216
+ }
217
+ // Check for existing sessions
218
+ let sessionId;
219
+ let resumedSession = false;
220
+ const existingSessions = await sessionStore.listSessions();
221
+ persistenceDebug.log('Checking existing sessions', { count: existingSessions.length });
222
+ if (existingSessions.length > 0) {
223
+ const pickerResult = await showQuickPicker(existingSessions);
224
+ if (pickerResult.action === 'cancel') {
225
+ const fullResult = await showSessionPicker(existingSessions);
226
+ if (fullResult.action === 'resume' && fullResult.sessionId) {
227
+ sessionId = fullResult.sessionId;
228
+ resumedSession = true;
229
+ }
230
+ else if (fullResult.action === 'cancel') {
231
+ console.log(c('Goodbye!', 'cyan'));
232
+ await mcpClient.cleanup();
233
+ await agent.cleanup();
234
+ tui.cleanup();
235
+ rl.close();
236
+ return;
237
+ }
238
+ else {
239
+ sessionId = await sessionStore.createSession();
240
+ }
241
+ }
242
+ else if (pickerResult.action === 'resume' && pickerResult.sessionId) {
243
+ sessionId = pickerResult.sessionId;
244
+ resumedSession = true;
245
+ }
246
+ else {
247
+ sessionId = await sessionStore.createSession();
248
+ }
249
+ }
250
+ else {
251
+ sessionId = await sessionStore.createSession();
252
+ }
253
+ persistenceDebug.log('Session selected', {
254
+ sessionId,
255
+ resumed: resumedSession,
256
+ storeType: persistenceDebug.storeType(sessionStore),
257
+ });
258
+ sessionStore.setCurrentSessionId(sessionId);
259
+ // If resuming, load the session state
260
+ if (resumedSession) {
261
+ const sessionState = await loadSessionState(sessionStore, sessionId);
262
+ if (sessionState?.messages) {
263
+ agent.loadState({
264
+ messages: sessionState.messages,
265
+ iteration: sessionState.iteration,
266
+ metrics: sessionState.metrics,
267
+ plan: sessionState.plan,
268
+ memoryContext: sessionState.memoryContext,
269
+ });
270
+ console.log(c(`+ Resumed ${sessionState.messages.length} messages from session`, 'green'));
271
+ }
272
+ }
273
+ // Welcome banner
274
+ console.log(`
275
+ ${c('----------------------------------------------------------------------', 'dim')}
276
+ ${c(' ATTOCODE - PRODUCTION CODING AGENT', 'bold')}
277
+ ${c('----------------------------------------------------------------------', 'dim')}
278
+ `);
279
+ console.log(c(`Session: ${sessionId}${resumedSession ? ' (resumed)' : ''}`, 'dim'));
280
+ console.log(c(`Model: ${model || provider.defaultModel}`, 'dim'));
281
+ console.log(c(`Permission mode: ${permissionMode}`, 'dim'));
282
+ console.log(c('\nType your request, or /help for commands.\n', 'dim'));
283
+ // Create command context
284
+ const commandOutput = createConsoleOutput();
285
+ try {
286
+ while (true) {
287
+ // Generate prompt with mode indicator
288
+ const modeInfo = agent.getModeInfo();
289
+ const pendingCount = agent.getPendingChangeCount();
290
+ let prompt = '';
291
+ if (modeInfo.name !== 'Build') {
292
+ prompt = `${modeInfo.color}${modeInfo.icon}\x1b[0m `;
293
+ if (pendingCount > 0) {
294
+ prompt += c(`[${pendingCount}] `, 'yellow');
295
+ }
296
+ }
297
+ prompt += c('You: ', 'green');
298
+ const input = await rl.question(prompt);
299
+ const trimmed = input.trim();
300
+ if (!trimmed)
301
+ continue;
302
+ // Handle commands
303
+ if (trimmed.startsWith('/')) {
304
+ const [cmd, ...args] = trimmed.split(/\s+/);
305
+ const result = await handleCommand(cmd.toLowerCase(), args, {
306
+ agent,
307
+ sessionId,
308
+ output: commandOutput,
309
+ integrations: { sessionStore, mcpClient, compactor },
310
+ rl,
311
+ });
312
+ if (result === 'quit') {
313
+ console.log(c('Goodbye!', 'cyan'));
314
+ break;
315
+ }
316
+ continue;
317
+ }
318
+ // Run agent
319
+ try {
320
+ const result = await agent.run(trimmed);
321
+ if (result.success) {
322
+ console.log(c('\n--- Assistant ---', 'magenta'));
323
+ tui.renderAssistantMessage(result.response);
324
+ console.log(c('-----------------', 'magenta'));
325
+ }
326
+ else {
327
+ console.log(c('\n! Task incomplete:', 'yellow'));
328
+ tui.showError(result.error || result.response);
329
+ }
330
+ if (trace && agent.getTraceCollector()) {
331
+ console.log(c('Trace captured -> .traces/', 'dim'));
332
+ }
333
+ const metrics = result.metrics;
334
+ console.log(c(`\nTokens: ${metrics.inputTokens} in / ${metrics.outputTokens} out | Tools: ${metrics.toolCalls} | Duration: ${metrics.duration}ms`, 'dim'));
335
+ if (agent.hasPendingPlan()) {
336
+ const changeCount = agent.getPendingChangeCount();
337
+ console.log(c(`\nPlan Mode: ${changeCount} change(s) queued for approval`, 'yellow'));
338
+ console.log(c(' Use /show-plan to review, /approve to execute, /reject to discard', 'dim'));
339
+ }
340
+ // Auto-checkpoint
341
+ persistenceDebug.log('Attempting auto-checkpoint');
342
+ const checkpoint = agent.autoCheckpoint(true);
343
+ if (checkpoint) {
344
+ console.log(c(`Auto-checkpoint: ${checkpoint.id}`, 'dim'));
345
+ persistenceDebug.log('Auto-checkpoint created in agent', {
346
+ id: checkpoint.id,
347
+ label: checkpoint.label,
348
+ messageCount: checkpoint.state.messages?.length ?? 0,
349
+ iteration: checkpoint.state.iteration,
350
+ });
351
+ try {
352
+ saveCheckpointToStore(sessionStore, {
353
+ id: checkpoint.id,
354
+ label: checkpoint.label,
355
+ messages: checkpoint.state.messages,
356
+ iteration: checkpoint.state.iteration,
357
+ metrics: checkpoint.state.metrics,
358
+ plan: checkpoint.state.plan,
359
+ memoryContext: checkpoint.state.memoryContext,
360
+ });
361
+ if (agent.hasPendingPlan() && 'savePendingPlan' in sessionStore && typeof sessionStore.savePendingPlan === 'function') {
362
+ const pendingPlan = agent.getPendingPlan();
363
+ if (pendingPlan) {
364
+ sessionStore.savePendingPlan(pendingPlan, sessionId);
365
+ persistenceDebug.log('Pending plan saved', { planId: pendingPlan.id, changes: pendingPlan.proposedChanges.length });
366
+ }
367
+ }
368
+ }
369
+ catch (err) {
370
+ persistenceDebug.error('Failed to persist checkpoint to store', err);
371
+ if (persistenceDebug.isEnabled()) {
372
+ console.log(c(`! Checkpoint persistence failed: ${err.message}`, 'yellow'));
373
+ }
374
+ }
375
+ }
376
+ else {
377
+ persistenceDebug.log('No checkpoint created (autoCheckpoint returned null)');
378
+ }
379
+ }
380
+ catch (error) {
381
+ tui.showError(error.message);
382
+ }
383
+ console.log();
384
+ }
385
+ }
386
+ finally {
387
+ tui.cleanup();
388
+ await mcpClient.cleanup();
389
+ await agent.cleanup();
390
+ rl.close();
391
+ }
392
+ }
393
+ //# sourceMappingURL=repl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../../../src/modes/repl.ts"],"names":[],"mappings":"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"}