attocode 0.2.2 → 0.2.4

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 (382) hide show
  1. package/CHANGELOG.md +169 -3
  2. package/README.md +65 -5
  3. package/dist/src/adapters.d.ts.map +1 -1
  4. package/dist/src/adapters.js +15 -11
  5. package/dist/src/adapters.js.map +1 -1
  6. package/dist/src/agent.d.ts +44 -98
  7. package/dist/src/agent.d.ts.map +1 -1
  8. package/dist/src/agent.js +716 -2648
  9. package/dist/src/agent.js.map +1 -1
  10. package/dist/src/cli.d.ts.map +1 -1
  11. package/dist/src/cli.js +25 -3
  12. package/dist/src/cli.js.map +1 -1
  13. package/dist/src/commands/handler.d.ts.map +1 -1
  14. package/dist/src/commands/handler.js +11 -3
  15. package/dist/src/commands/handler.js.map +1 -1
  16. package/dist/src/commands/init-commands.d.ts.map +1 -1
  17. package/dist/src/commands/init-commands.js +16 -1
  18. package/dist/src/commands/init-commands.js.map +1 -1
  19. package/dist/src/commands/init.d.ts.map +1 -1
  20. package/dist/src/commands/init.js +31 -0
  21. package/dist/src/commands/init.js.map +1 -1
  22. package/dist/src/config/base-types.d.ts +45 -0
  23. package/dist/src/config/base-types.d.ts.map +1 -0
  24. package/dist/src/config/base-types.js +9 -0
  25. package/dist/src/config/base-types.js.map +1 -0
  26. package/dist/src/config/config-manager.d.ts +35 -0
  27. package/dist/src/config/config-manager.d.ts.map +1 -0
  28. package/dist/src/config/config-manager.js +108 -0
  29. package/dist/src/config/config-manager.js.map +1 -0
  30. package/dist/src/config/index.d.ts +4 -0
  31. package/dist/src/config/index.d.ts.map +1 -0
  32. package/dist/src/config/index.js +3 -0
  33. package/dist/src/config/index.js.map +1 -0
  34. package/dist/src/config/schema.d.ts +1546 -0
  35. package/dist/src/config/schema.d.ts.map +1 -0
  36. package/dist/src/config/schema.js +268 -0
  37. package/dist/src/config/schema.js.map +1 -0
  38. package/dist/src/config.d.ts +4 -1
  39. package/dist/src/config.d.ts.map +1 -1
  40. package/dist/src/config.js +8 -12
  41. package/dist/src/config.js.map +1 -1
  42. package/dist/src/core/agent-state-machine.d.ts +131 -0
  43. package/dist/src/core/agent-state-machine.d.ts.map +1 -0
  44. package/dist/src/core/agent-state-machine.js +302 -0
  45. package/dist/src/core/agent-state-machine.js.map +1 -0
  46. package/dist/src/core/base-manager.d.ts +79 -0
  47. package/dist/src/core/base-manager.d.ts.map +1 -0
  48. package/dist/src/core/base-manager.js +170 -0
  49. package/dist/src/core/base-manager.js.map +1 -0
  50. package/dist/src/core/completion-analyzer.d.ts +15 -0
  51. package/dist/src/core/completion-analyzer.d.ts.map +1 -0
  52. package/dist/src/core/completion-analyzer.js +53 -0
  53. package/dist/src/core/completion-analyzer.js.map +1 -0
  54. package/dist/src/core/execution-loop.d.ts +46 -0
  55. package/dist/src/core/execution-loop.d.ts.map +1 -0
  56. package/dist/src/core/execution-loop.js +1258 -0
  57. package/dist/src/core/execution-loop.js.map +1 -0
  58. package/dist/src/core/index.d.ts +7 -0
  59. package/dist/src/core/index.d.ts.map +1 -1
  60. package/dist/src/core/index.js +9 -0
  61. package/dist/src/core/index.js.map +1 -1
  62. package/dist/src/core/process-handlers.d.ts.map +1 -1
  63. package/dist/src/core/process-handlers.js +14 -0
  64. package/dist/src/core/process-handlers.js.map +1 -1
  65. package/dist/src/core/protocol/types.d.ts +4 -4
  66. package/dist/src/core/response-handler.d.ts +16 -0
  67. package/dist/src/core/response-handler.d.ts.map +1 -0
  68. package/dist/src/core/response-handler.js +234 -0
  69. package/dist/src/core/response-handler.js.map +1 -0
  70. package/dist/src/core/subagent-spawner.d.ts +43 -0
  71. package/dist/src/core/subagent-spawner.d.ts.map +1 -0
  72. package/dist/src/core/subagent-spawner.js +966 -0
  73. package/dist/src/core/subagent-spawner.js.map +1 -0
  74. package/dist/src/core/tool-executor.d.ts +59 -0
  75. package/dist/src/core/tool-executor.d.ts.map +1 -0
  76. package/dist/src/core/tool-executor.js +677 -0
  77. package/dist/src/core/tool-executor.js.map +1 -0
  78. package/dist/src/core/types.d.ts +133 -0
  79. package/dist/src/core/types.d.ts.map +1 -0
  80. package/dist/src/core/types.js +12 -0
  81. package/dist/src/core/types.js.map +1 -0
  82. package/dist/src/defaults.d.ts +8 -3
  83. package/dist/src/defaults.d.ts.map +1 -1
  84. package/dist/src/defaults.js +65 -3
  85. package/dist/src/defaults.js.map +1 -1
  86. package/dist/src/integrations/agent-registry.d.ts +11 -0
  87. package/dist/src/integrations/agent-registry.d.ts.map +1 -1
  88. package/dist/src/integrations/agent-registry.js.map +1 -1
  89. package/dist/src/integrations/auto-compaction.d.ts.map +1 -1
  90. package/dist/src/integrations/auto-compaction.js +8 -3
  91. package/dist/src/integrations/auto-compaction.js.map +1 -1
  92. package/dist/src/integrations/bash-policy.d.ts +33 -0
  93. package/dist/src/integrations/bash-policy.d.ts.map +1 -0
  94. package/dist/src/integrations/bash-policy.js +142 -0
  95. package/dist/src/integrations/bash-policy.js.map +1 -0
  96. package/dist/src/integrations/budget-pool.d.ts +7 -0
  97. package/dist/src/integrations/budget-pool.d.ts.map +1 -1
  98. package/dist/src/integrations/budget-pool.js +43 -0
  99. package/dist/src/integrations/budget-pool.js.map +1 -1
  100. package/dist/src/integrations/codebase-ast.d.ts +52 -0
  101. package/dist/src/integrations/codebase-ast.d.ts.map +1 -0
  102. package/dist/src/integrations/codebase-ast.js +457 -0
  103. package/dist/src/integrations/codebase-ast.js.map +1 -0
  104. package/dist/src/integrations/codebase-context.d.ts +23 -0
  105. package/dist/src/integrations/codebase-context.d.ts.map +1 -1
  106. package/dist/src/integrations/codebase-context.js +230 -17
  107. package/dist/src/integrations/codebase-context.js.map +1 -1
  108. package/dist/src/integrations/compaction.d.ts.map +1 -1
  109. package/dist/src/integrations/compaction.js +14 -6
  110. package/dist/src/integrations/compaction.js.map +1 -1
  111. package/dist/src/integrations/context-engineering.d.ts +8 -0
  112. package/dist/src/integrations/context-engineering.d.ts.map +1 -1
  113. package/dist/src/integrations/context-engineering.js +19 -0
  114. package/dist/src/integrations/context-engineering.js.map +1 -1
  115. package/dist/src/integrations/delegation-protocol.js +2 -2
  116. package/dist/src/integrations/delegation-protocol.js.map +1 -1
  117. package/dist/src/integrations/economics.d.ts +67 -1
  118. package/dist/src/integrations/economics.d.ts.map +1 -1
  119. package/dist/src/integrations/economics.js +328 -33
  120. package/dist/src/integrations/economics.js.map +1 -1
  121. package/dist/src/integrations/edit-validator.d.ts +30 -0
  122. package/dist/src/integrations/edit-validator.d.ts.map +1 -0
  123. package/dist/src/integrations/edit-validator.js +85 -0
  124. package/dist/src/integrations/edit-validator.js.map +1 -0
  125. package/dist/src/integrations/file-cache.d.ts +7 -0
  126. package/dist/src/integrations/file-cache.d.ts.map +1 -1
  127. package/dist/src/integrations/file-cache.js +54 -0
  128. package/dist/src/integrations/file-cache.js.map +1 -1
  129. package/dist/src/integrations/health-check.d.ts.map +1 -1
  130. package/dist/src/integrations/health-check.js +3 -2
  131. package/dist/src/integrations/health-check.js.map +1 -1
  132. package/dist/src/integrations/hierarchical-config.d.ts +3 -0
  133. package/dist/src/integrations/hierarchical-config.d.ts.map +1 -1
  134. package/dist/src/integrations/hierarchical-config.js +20 -0
  135. package/dist/src/integrations/hierarchical-config.js.map +1 -1
  136. package/dist/src/integrations/hooks.d.ts +2 -0
  137. package/dist/src/integrations/hooks.d.ts.map +1 -1
  138. package/dist/src/integrations/hooks.js +99 -15
  139. package/dist/src/integrations/hooks.js.map +1 -1
  140. package/dist/src/integrations/index.d.ts +10 -1
  141. package/dist/src/integrations/index.d.ts.map +1 -1
  142. package/dist/src/integrations/index.js +12 -2
  143. package/dist/src/integrations/index.js.map +1 -1
  144. package/dist/src/integrations/logger.d.ts +104 -0
  145. package/dist/src/integrations/logger.d.ts.map +1 -0
  146. package/dist/src/integrations/logger.js +219 -0
  147. package/dist/src/integrations/logger.js.map +1 -0
  148. package/dist/src/integrations/lsp.d.ts.map +1 -1
  149. package/dist/src/integrations/lsp.js +5 -4
  150. package/dist/src/integrations/lsp.js.map +1 -1
  151. package/dist/src/integrations/mcp-client.d.ts.map +1 -1
  152. package/dist/src/integrations/mcp-client.js +8 -7
  153. package/dist/src/integrations/mcp-client.js.map +1 -1
  154. package/dist/src/integrations/observability.d.ts.map +1 -1
  155. package/dist/src/integrations/observability.js +5 -4
  156. package/dist/src/integrations/observability.js.map +1 -1
  157. package/dist/src/integrations/openrouter-pricing.d.ts.map +1 -1
  158. package/dist/src/integrations/openrouter-pricing.js +4 -3
  159. package/dist/src/integrations/openrouter-pricing.js.map +1 -1
  160. package/dist/src/integrations/persistence.d.ts.map +1 -1
  161. package/dist/src/integrations/persistence.js +5 -4
  162. package/dist/src/integrations/persistence.js.map +1 -1
  163. package/dist/src/integrations/planning.d.ts.map +1 -1
  164. package/dist/src/integrations/planning.js +5 -4
  165. package/dist/src/integrations/planning.js.map +1 -1
  166. package/dist/src/integrations/policy-engine.d.ts +55 -0
  167. package/dist/src/integrations/policy-engine.d.ts.map +1 -0
  168. package/dist/src/integrations/policy-engine.js +247 -0
  169. package/dist/src/integrations/policy-engine.js.map +1 -0
  170. package/dist/src/integrations/retry.d.ts +1 -0
  171. package/dist/src/integrations/retry.d.ts.map +1 -1
  172. package/dist/src/integrations/retry.js.map +1 -1
  173. package/dist/src/integrations/routing.d.ts.map +1 -1
  174. package/dist/src/integrations/routing.js +2 -1
  175. package/dist/src/integrations/routing.js.map +1 -1
  176. package/dist/src/integrations/safety.d.ts +5 -4
  177. package/dist/src/integrations/safety.d.ts.map +1 -1
  178. package/dist/src/integrations/safety.js +45 -20
  179. package/dist/src/integrations/safety.js.map +1 -1
  180. package/dist/src/integrations/sandbox/basic.d.ts +7 -0
  181. package/dist/src/integrations/sandbox/basic.d.ts.map +1 -1
  182. package/dist/src/integrations/sandbox/basic.js +27 -2
  183. package/dist/src/integrations/sandbox/basic.js.map +1 -1
  184. package/dist/src/integrations/sandbox/docker.d.ts.map +1 -1
  185. package/dist/src/integrations/sandbox/docker.js +2 -1
  186. package/dist/src/integrations/sandbox/docker.js.map +1 -1
  187. package/dist/src/integrations/sandbox/index.d.ts +6 -0
  188. package/dist/src/integrations/sandbox/index.d.ts.map +1 -1
  189. package/dist/src/integrations/sandbox/index.js +8 -4
  190. package/dist/src/integrations/sandbox/index.js.map +1 -1
  191. package/dist/src/integrations/sandbox/landlock.d.ts.map +1 -1
  192. package/dist/src/integrations/sandbox/landlock.js +3 -0
  193. package/dist/src/integrations/sandbox/landlock.js.map +1 -1
  194. package/dist/src/integrations/self-improvement.d.ts.map +1 -1
  195. package/dist/src/integrations/self-improvement.js +12 -0
  196. package/dist/src/integrations/self-improvement.js.map +1 -1
  197. package/dist/src/integrations/session-store.d.ts +1 -0
  198. package/dist/src/integrations/session-store.d.ts.map +1 -1
  199. package/dist/src/integrations/session-store.js +1 -0
  200. package/dist/src/integrations/session-store.js.map +1 -1
  201. package/dist/src/integrations/shared-blackboard.d.ts +3 -0
  202. package/dist/src/integrations/shared-blackboard.d.ts.map +1 -1
  203. package/dist/src/integrations/shared-blackboard.js +47 -0
  204. package/dist/src/integrations/shared-blackboard.js.map +1 -1
  205. package/dist/src/integrations/smart-decomposer.d.ts +45 -1
  206. package/dist/src/integrations/smart-decomposer.d.ts.map +1 -1
  207. package/dist/src/integrations/smart-decomposer.js +486 -30
  208. package/dist/src/integrations/smart-decomposer.js.map +1 -1
  209. package/dist/src/integrations/sqlite-store.d.ts +2 -0
  210. package/dist/src/integrations/sqlite-store.d.ts.map +1 -1
  211. package/dist/src/integrations/sqlite-store.js +18 -6
  212. package/dist/src/integrations/sqlite-store.js.map +1 -1
  213. package/dist/src/integrations/swarm/failure-classifier.d.ts +11 -0
  214. package/dist/src/integrations/swarm/failure-classifier.d.ts.map +1 -0
  215. package/dist/src/integrations/swarm/failure-classifier.js +95 -0
  216. package/dist/src/integrations/swarm/failure-classifier.js.map +1 -0
  217. package/dist/src/integrations/swarm/index.d.ts +1 -1
  218. package/dist/src/integrations/swarm/index.d.ts.map +1 -1
  219. package/dist/src/integrations/swarm/index.js.map +1 -1
  220. package/dist/src/integrations/swarm/model-selector.d.ts +15 -0
  221. package/dist/src/integrations/swarm/model-selector.d.ts.map +1 -1
  222. package/dist/src/integrations/swarm/model-selector.js +100 -20
  223. package/dist/src/integrations/swarm/model-selector.js.map +1 -1
  224. package/dist/src/integrations/swarm/swarm-budget.d.ts +4 -0
  225. package/dist/src/integrations/swarm/swarm-budget.d.ts.map +1 -1
  226. package/dist/src/integrations/swarm/swarm-budget.js +6 -0
  227. package/dist/src/integrations/swarm/swarm-budget.js.map +1 -1
  228. package/dist/src/integrations/swarm/swarm-config-loader.d.ts +8 -0
  229. package/dist/src/integrations/swarm/swarm-config-loader.d.ts.map +1 -1
  230. package/dist/src/integrations/swarm/swarm-config-loader.js +249 -7
  231. package/dist/src/integrations/swarm/swarm-config-loader.js.map +1 -1
  232. package/dist/src/integrations/swarm/swarm-event-bridge.d.ts +86 -1
  233. package/dist/src/integrations/swarm/swarm-event-bridge.d.ts.map +1 -1
  234. package/dist/src/integrations/swarm/swarm-event-bridge.js +207 -23
  235. package/dist/src/integrations/swarm/swarm-event-bridge.js.map +1 -1
  236. package/dist/src/integrations/swarm/swarm-events.d.ts +58 -1
  237. package/dist/src/integrations/swarm/swarm-events.d.ts.map +1 -1
  238. package/dist/src/integrations/swarm/swarm-events.js +22 -5
  239. package/dist/src/integrations/swarm/swarm-events.js.map +1 -1
  240. package/dist/src/integrations/swarm/swarm-orchestrator.d.ts +147 -8
  241. package/dist/src/integrations/swarm/swarm-orchestrator.d.ts.map +1 -1
  242. package/dist/src/integrations/swarm/swarm-orchestrator.js +2179 -132
  243. package/dist/src/integrations/swarm/swarm-orchestrator.js.map +1 -1
  244. package/dist/src/integrations/swarm/swarm-quality-gate.d.ts +83 -2
  245. package/dist/src/integrations/swarm/swarm-quality-gate.d.ts.map +1 -1
  246. package/dist/src/integrations/swarm/swarm-quality-gate.js +278 -19
  247. package/dist/src/integrations/swarm/swarm-quality-gate.js.map +1 -1
  248. package/dist/src/integrations/swarm/swarm-state-store.d.ts +4 -1
  249. package/dist/src/integrations/swarm/swarm-state-store.d.ts.map +1 -1
  250. package/dist/src/integrations/swarm/swarm-state-store.js +8 -1
  251. package/dist/src/integrations/swarm/swarm-state-store.js.map +1 -1
  252. package/dist/src/integrations/swarm/task-queue.d.ts +54 -0
  253. package/dist/src/integrations/swarm/task-queue.d.ts.map +1 -1
  254. package/dist/src/integrations/swarm/task-queue.js +310 -12
  255. package/dist/src/integrations/swarm/task-queue.js.map +1 -1
  256. package/dist/src/integrations/swarm/types.d.ts +251 -13
  257. package/dist/src/integrations/swarm/types.d.ts.map +1 -1
  258. package/dist/src/integrations/swarm/types.js +70 -8
  259. package/dist/src/integrations/swarm/types.js.map +1 -1
  260. package/dist/src/integrations/swarm/worker-pool.d.ts +21 -4
  261. package/dist/src/integrations/swarm/worker-pool.d.ts.map +1 -1
  262. package/dist/src/integrations/swarm/worker-pool.js +223 -44
  263. package/dist/src/integrations/swarm/worker-pool.js.map +1 -1
  264. package/dist/src/integrations/task-manager.d.ts +33 -1
  265. package/dist/src/integrations/task-manager.d.ts.map +1 -1
  266. package/dist/src/integrations/task-manager.js +78 -4
  267. package/dist/src/integrations/task-manager.js.map +1 -1
  268. package/dist/src/integrations/tool-recommendation.d.ts +7 -4
  269. package/dist/src/integrations/tool-recommendation.d.ts.map +1 -1
  270. package/dist/src/integrations/tool-recommendation.js +58 -5
  271. package/dist/src/integrations/tool-recommendation.js.map +1 -1
  272. package/dist/src/integrations/work-log.js +4 -4
  273. package/dist/src/integrations/work-log.js.map +1 -1
  274. package/dist/src/main.js +106 -30
  275. package/dist/src/main.js.map +1 -1
  276. package/dist/src/modes/repl.d.ts.map +1 -1
  277. package/dist/src/modes/repl.js +50 -12
  278. package/dist/src/modes/repl.js.map +1 -1
  279. package/dist/src/modes/tui.d.ts.map +1 -1
  280. package/dist/src/modes/tui.js +41 -6
  281. package/dist/src/modes/tui.js.map +1 -1
  282. package/dist/src/modes.d.ts.map +1 -1
  283. package/dist/src/modes.js +4 -27
  284. package/dist/src/modes.js.map +1 -1
  285. package/dist/src/observability/tracer.d.ts.map +1 -1
  286. package/dist/src/observability/tracer.js +2 -1
  287. package/dist/src/observability/tracer.js.map +1 -1
  288. package/dist/src/persistence/schema.d.ts.map +1 -1
  289. package/dist/src/persistence/schema.js +11 -0
  290. package/dist/src/persistence/schema.js.map +1 -1
  291. package/dist/src/providers/adapters/anthropic.d.ts.map +1 -1
  292. package/dist/src/providers/adapters/anthropic.js +3 -2
  293. package/dist/src/providers/adapters/anthropic.js.map +1 -1
  294. package/dist/src/providers/adapters/openai.d.ts.map +1 -1
  295. package/dist/src/providers/adapters/openai.js +3 -2
  296. package/dist/src/providers/adapters/openai.js.map +1 -1
  297. package/dist/src/providers/adapters/openrouter.d.ts.map +1 -1
  298. package/dist/src/providers/adapters/openrouter.js +11 -11
  299. package/dist/src/providers/adapters/openrouter.js.map +1 -1
  300. package/dist/src/providers/circuit-breaker.d.ts +1 -0
  301. package/dist/src/providers/circuit-breaker.d.ts.map +1 -1
  302. package/dist/src/providers/circuit-breaker.js.map +1 -1
  303. package/dist/src/providers/provider.d.ts.map +1 -1
  304. package/dist/src/providers/provider.js +2 -1
  305. package/dist/src/providers/provider.js.map +1 -1
  306. package/dist/src/providers/resilient-provider.d.ts.map +1 -1
  307. package/dist/src/providers/resilient-provider.js +2 -1
  308. package/dist/src/providers/resilient-provider.js.map +1 -1
  309. package/dist/src/session-picker.d.ts.map +1 -1
  310. package/dist/src/session-picker.js +40 -5
  311. package/dist/src/session-picker.js.map +1 -1
  312. package/dist/src/shared/budget-tracker.d.ts +65 -0
  313. package/dist/src/shared/budget-tracker.d.ts.map +1 -0
  314. package/dist/src/shared/budget-tracker.js +128 -0
  315. package/dist/src/shared/budget-tracker.js.map +1 -0
  316. package/dist/src/shared/context-engine.d.ts +64 -0
  317. package/dist/src/shared/context-engine.d.ts.map +1 -0
  318. package/dist/src/shared/context-engine.js +117 -0
  319. package/dist/src/shared/context-engine.js.map +1 -0
  320. package/dist/src/shared/index.d.ts +12 -0
  321. package/dist/src/shared/index.d.ts.map +1 -0
  322. package/dist/src/shared/index.js +12 -0
  323. package/dist/src/shared/index.js.map +1 -0
  324. package/dist/src/shared/persistence.d.ts +57 -0
  325. package/dist/src/shared/persistence.d.ts.map +1 -0
  326. package/dist/src/shared/persistence.js +168 -0
  327. package/dist/src/shared/persistence.js.map +1 -0
  328. package/dist/src/shared/shared-context-state.d.ts +89 -0
  329. package/dist/src/shared/shared-context-state.d.ts.map +1 -0
  330. package/dist/src/shared/shared-context-state.js +175 -0
  331. package/dist/src/shared/shared-context-state.js.map +1 -0
  332. package/dist/src/shared/shared-economics-state.d.ts +61 -0
  333. package/dist/src/shared/shared-economics-state.d.ts.map +1 -0
  334. package/dist/src/shared/shared-economics-state.js +100 -0
  335. package/dist/src/shared/shared-economics-state.js.map +1 -0
  336. package/dist/src/tools/agent.d.ts.map +1 -1
  337. package/dist/src/tools/agent.js +11 -2
  338. package/dist/src/tools/agent.js.map +1 -1
  339. package/dist/src/tools/bash.d.ts +1 -1
  340. package/dist/src/tools/bash.d.ts.map +1 -1
  341. package/dist/src/tools/bash.js +2 -1
  342. package/dist/src/tools/bash.js.map +1 -1
  343. package/dist/src/tools/coercion.d.ts +6 -0
  344. package/dist/src/tools/coercion.d.ts.map +1 -1
  345. package/dist/src/tools/coercion.js +13 -0
  346. package/dist/src/tools/coercion.js.map +1 -1
  347. package/dist/src/tools/file.d.ts +5 -5
  348. package/dist/src/tools/file.js +2 -2
  349. package/dist/src/tools/file.js.map +1 -1
  350. package/dist/src/tools/permission.d.ts.map +1 -1
  351. package/dist/src/tools/permission.js +10 -116
  352. package/dist/src/tools/permission.js.map +1 -1
  353. package/dist/src/tools/types.d.ts +1 -0
  354. package/dist/src/tools/types.d.ts.map +1 -1
  355. package/dist/src/tools/types.js.map +1 -1
  356. package/dist/src/tracing/trace-collector.d.ts +292 -0
  357. package/dist/src/tracing/trace-collector.d.ts.map +1 -1
  358. package/dist/src/tracing/trace-collector.js +249 -5
  359. package/dist/src/tracing/trace-collector.js.map +1 -1
  360. package/dist/src/tracing/types.d.ts +200 -1
  361. package/dist/src/tracing/types.d.ts.map +1 -1
  362. package/dist/src/tracing/types.js.map +1 -1
  363. package/dist/src/tricks/failure-evidence.d.ts.map +1 -1
  364. package/dist/src/tricks/failure-evidence.js +2 -1
  365. package/dist/src/tricks/failure-evidence.js.map +1 -1
  366. package/dist/src/tui/app.d.ts +13 -0
  367. package/dist/src/tui/app.d.ts.map +1 -1
  368. package/dist/src/tui/app.js +162 -19
  369. package/dist/src/tui/app.js.map +1 -1
  370. package/dist/src/tui/components/ErrorBoundary.d.ts.map +1 -1
  371. package/dist/src/tui/components/ErrorBoundary.js +3 -2
  372. package/dist/src/tui/components/ErrorBoundary.js.map +1 -1
  373. package/dist/src/tui/event-display.d.ts.map +1 -1
  374. package/dist/src/tui/event-display.js +36 -62
  375. package/dist/src/tui/event-display.js.map +1 -1
  376. package/dist/src/tui/index.d.ts +4 -0
  377. package/dist/src/tui/index.d.ts.map +1 -1
  378. package/dist/src/tui/index.js +17 -0
  379. package/dist/src/tui/index.js.map +1 -1
  380. package/dist/src/types.d.ts +214 -1
  381. package/dist/src/types.d.ts.map +1 -1
  382. package/package.json +18 -3
package/dist/src/main.js CHANGED
@@ -37,7 +37,7 @@ import { ProviderAdapter, convertToolsFromRegistry } from './adapters.js';
37
37
  import { createStandardRegistry } from './tools/standard.js';
38
38
  // CLI and configuration
39
39
  import { parseArgs, showHelp, shouldUseTUI, VERSION } from './cli.js';
40
- import { loadUserConfig } from './config.js';
40
+ import { loadConfig } from './config/index.js';
41
41
  // First-run and init command
42
42
  import { runInit } from './commands/init.js';
43
43
  import { isFirstRun, hasUsableProvider, getFirstRunMessage } from './first-run.js';
@@ -51,9 +51,11 @@ import { persistenceDebug } from './integrations/persistence.js';
51
51
  import { installProcessHandlers } from './core/process-handlers.js';
52
52
  // Health check system
53
53
  import { createHealthChecker, createFileSystemHealthCheck, createNetworkHealthCheck, formatHealthReport, } from './integrations/health-check.js';
54
+ // Structured logger
55
+ import { logger } from './integrations/logger.js';
54
56
  // Swarm mode support
55
57
  import { DEFAULT_SWARM_CONFIG, autoDetectWorkerModels } from './integrations/swarm/index.js';
56
- import { loadSwarmYamlConfig, parseSwarmYaml, yamlToSwarmConfig, mergeSwarmConfigs } from './integrations/swarm/swarm-config-loader.js';
58
+ import { loadSwarmYamlConfig, parseSwarmYaml, yamlToSwarmConfig, mergeSwarmConfigs, normalizeSwarmModelConfig } from './integrations/swarm/swarm-config-loader.js';
57
59
  import { readFileSync } from 'node:fs';
58
60
  /**
59
61
  * Build a SwarmConfig from CLI args.
@@ -76,7 +78,7 @@ async function buildSwarmConfig(swarmArg, orchestratorModel, resumeSessionId, pa
76
78
  }
77
79
  }
78
80
  catch (err) {
79
- console.warn(`[Swarm] Failed to load config from ${swarmArg}: ${err.message}`);
81
+ logger.warn('[Swarm] Failed to load config', { path: swarmArg, error: String(err.message) });
80
82
  }
81
83
  }
82
84
  else {
@@ -86,24 +88,65 @@ async function buildSwarmConfig(swarmArg, orchestratorModel, resumeSessionId, pa
86
88
  yamlConfig = yamlToSwarmConfig(rawYaml, orchestratorModel);
87
89
  }
88
90
  }
91
+ // Resolve 'latest' session ID before merge
92
+ let resolvedResumeId = resumeSessionId;
93
+ if (resolvedResumeId === 'latest') {
94
+ try {
95
+ const { SwarmStateStore } = await import('./integrations/swarm/swarm-state-store.js');
96
+ const stateDir = '.agent/swarm-state';
97
+ const sessions = SwarmStateStore.listSessions(stateDir);
98
+ if (sessions.length > 0) {
99
+ resolvedResumeId = sessions[0].sessionId;
100
+ logger.info('[Swarm] Resuming latest session', { sessionId: resolvedResumeId });
101
+ }
102
+ else {
103
+ logger.warn('[Swarm] No previous sessions found to resume — starting fresh');
104
+ resolvedResumeId = undefined;
105
+ }
106
+ }
107
+ catch {
108
+ logger.warn('[Swarm] Could not list sessions — starting fresh');
109
+ resolvedResumeId = undefined;
110
+ }
111
+ }
89
112
  // Merge: DEFAULT < yaml < CLI
90
113
  const config = mergeSwarmConfigs(DEFAULT_SWARM_CONFIG, yamlConfig, {
91
114
  paidOnly,
92
115
  orchestratorModel,
93
116
  orchestratorModelExplicit,
94
- resumeSessionId,
117
+ resumeSessionId: resolvedResumeId,
95
118
  });
119
+ // Normalize malformed model IDs (e.g. anthropic/z-ai/glm-5 -> z-ai/glm-5).
120
+ const normalized = normalizeSwarmModelConfig(config);
121
+ if (normalized.warnings.length > 0) {
122
+ const mode = config.modelValidation?.mode ?? 'autocorrect';
123
+ const onInvalid = config.modelValidation?.onInvalid ?? 'warn';
124
+ if (mode === 'strict' || onInvalid === 'fail') {
125
+ throw new Error(`Invalid swarm model configuration:\n${normalized.warnings.join('\n')}`);
126
+ }
127
+ for (const warning of normalized.warnings) {
128
+ logger.warn('[Swarm] Model config adjusted', { warning });
129
+ }
130
+ }
131
+ const finalConfig = normalized.config;
96
132
  // V3: Pre-flight key check for rate limit awareness
97
133
  const apiKey = process.env.OPENROUTER_API_KEY;
98
134
  if (apiKey) {
99
135
  try {
100
136
  const { OpenRouterProvider } = await import('./providers/adapters/openrouter.js');
101
137
  const keyInfo = await OpenRouterProvider.checkKeyInfo(apiKey);
102
- if (keyInfo.isPaid === false && !config.paidOnly) {
103
- console.log('[Swarm] Free-tier API key detected — throttle will auto-adjust.');
138
+ if (!yamlConfig && paidOnly === undefined && keyInfo.isPaid === true) {
139
+ finalConfig.paidOnly = true;
140
+ if (!finalConfig.throttle) {
141
+ finalConfig.throttle = 'paid';
142
+ }
143
+ logger.info('[Swarm] No swarm config found; defaulting to paid-only worker model selection for paid-tier key');
144
+ }
145
+ if (keyInfo.isPaid === false && !finalConfig.paidOnly) {
146
+ logger.info('[Swarm] Free-tier API key detected — throttle will auto-adjust.');
104
147
  }
105
148
  if (keyInfo.creditsRemaining !== undefined && keyInfo.creditsRemaining < 0.5) {
106
- console.warn(`[Swarm] Low credits remaining: $${keyInfo.creditsRemaining.toFixed(2)}`);
149
+ logger.warn('[Swarm] Low credits remaining', { credits: `$${keyInfo.creditsRemaining.toFixed(2)}` });
107
150
  }
108
151
  }
109
152
  catch {
@@ -111,13 +154,13 @@ async function buildSwarmConfig(swarmArg, orchestratorModel, resumeSessionId, pa
111
154
  }
112
155
  }
113
156
  // Auto-detect workers if none configured
114
- if (config.workers.length === 0) {
157
+ if (finalConfig.workers.length === 0) {
115
158
  if (apiKey) {
116
159
  try {
117
- config.workers = await autoDetectWorkerModels({
160
+ finalConfig.workers = await autoDetectWorkerModels({
118
161
  apiKey,
119
162
  orchestratorModel,
120
- paidOnly: config.paidOnly,
163
+ paidOnly: finalConfig.paidOnly,
121
164
  });
122
165
  }
123
166
  catch {
@@ -125,15 +168,24 @@ async function buildSwarmConfig(swarmArg, orchestratorModel, resumeSessionId, pa
125
168
  }
126
169
  }
127
170
  // If still no workers, use hardcoded fallback
128
- if (config.workers.length === 0) {
129
- config.workers = await autoDetectWorkerModels({
171
+ if (finalConfig.workers.length === 0) {
172
+ finalConfig.workers = await autoDetectWorkerModels({
130
173
  apiKey: '',
131
174
  orchestratorModel,
132
- paidOnly: config.paidOnly,
175
+ paidOnly: finalConfig.paidOnly,
133
176
  });
134
177
  }
135
178
  }
136
- return config;
179
+ logger.info('[Swarm] Resolved config', {
180
+ orchestratorModel: finalConfig.orchestratorModel,
181
+ workerCount: finalConfig.workers.length,
182
+ workerModels: finalConfig.workers.map(w => w.model),
183
+ paidOnly: finalConfig.paidOnly ?? false,
184
+ throttle: finalConfig.throttle ?? false,
185
+ totalBudget: finalConfig.totalBudget,
186
+ maxCost: finalConfig.maxCost,
187
+ });
188
+ return finalConfig;
137
189
  }
138
190
  // =============================================================================
139
191
  // MAIN
@@ -147,6 +199,7 @@ async function main() {
147
199
  persistenceDebug.enable();
148
200
  }
149
201
  if (args.version) {
202
+ // eslint-disable-next-line no-console
150
203
  console.log(`attocode v${VERSION}`);
151
204
  return;
152
205
  }
@@ -161,13 +214,19 @@ async function main() {
161
214
  }
162
215
  // First-run check
163
216
  if (isFirstRun() && !hasUsableProvider()) {
217
+ // eslint-disable-next-line no-console
164
218
  console.log(getFirstRunMessage());
219
+ // eslint-disable-next-line no-console
165
220
  console.log('\nRun "attocode init" to set up.\n');
166
221
  process.exit(1);
167
222
  }
168
223
  const useTUI = shouldUseTUI(args);
169
- // Load user config from ~/.config/attocode/config.json
170
- const userConfig = loadUserConfig();
224
+ // Load user config (user-level + project-level, validated)
225
+ const { config: userConfig, warnings: configWarnings } = loadConfig();
226
+ for (const warn of configWarnings) {
227
+ logger.warn(`[Config] ${warn}`);
228
+ }
229
+ // eslint-disable-next-line no-console
171
230
  console.log('Detecting LLM provider...');
172
231
  // Merge provider resilience config with defaults
173
232
  const providerResilienceConfig = {
@@ -191,14 +250,15 @@ async function main() {
191
250
  circuitBreaker: providerResilienceConfig.circuitBreaker,
192
251
  fallback: providerResilienceConfig.fallbackChain,
193
252
  onFallback: providerResilienceConfig.onFallback ?? ((from, to, error) => {
194
- console.log(`[Resilience] Falling back from ${from} to ${to}: ${error.message}`);
253
+ logger.info('[Resilience] Falling back', { from, to, error: error.message });
195
254
  }),
196
255
  });
197
256
  if (!('chatWithTools' in chain)) {
198
- console.error('Provider does not support native tool use.');
257
+ logger.error('Provider does not support native tool use.');
199
258
  process.exit(1);
200
259
  }
201
260
  provider = chain;
261
+ // eslint-disable-next-line no-console
202
262
  console.log(`+ Provider resilience: fallback chain enabled (${providerResilienceConfig.fallbackProviders.length + 1} providers)`);
203
263
  }
204
264
  else if (resilienceEnabled && providerResilienceConfig.circuitBreaker !== false) {
@@ -207,33 +267,36 @@ async function main() {
207
267
  circuitBreaker: providerResilienceConfig.circuitBreaker,
208
268
  });
209
269
  if (!('chatWithTools' in resilientProvider)) {
210
- console.error('Provider does not support native tool use.');
211
- console.error(' Set OPENROUTER_API_KEY to use this application.');
270
+ logger.error('Provider does not support native tool use.');
271
+ logger.error('Set OPENROUTER_API_KEY to use this application.');
212
272
  process.exit(1);
213
273
  }
214
274
  provider = resilientProvider;
275
+ // eslint-disable-next-line no-console
215
276
  console.log('+ Provider resilience: circuit breaker enabled');
216
277
  }
217
278
  else {
218
279
  // Use basic provider without resilience
219
280
  const baseProvider = await getProvider(preferredProvider);
220
281
  if (!('chatWithTools' in baseProvider)) {
221
- console.error('Provider does not support native tool use.');
222
- console.error(' Set OPENROUTER_API_KEY to use this application.');
282
+ logger.error('Provider does not support native tool use.');
283
+ logger.error('Set OPENROUTER_API_KEY to use this application.');
223
284
  process.exit(1);
224
285
  }
225
286
  provider = baseProvider;
226
287
  }
227
288
  }
228
289
  catch (error) {
229
- console.error('Failed to initialize provider:', error.message);
230
- console.error('\nSet one of: OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY');
290
+ logger.error('Failed to initialize provider', { error: String(error.message) });
291
+ logger.error('Set one of: OPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY');
231
292
  process.exit(1);
232
293
  }
233
294
  // Resolve model: CLI args > env var > user config > provider default
234
295
  const resolvedModel = args.model || process.env.OPENROUTER_MODEL || userConfig?.model || provider.defaultModel;
296
+ // eslint-disable-next-line no-console
235
297
  console.log(`+ Using ${provider.name} (${resolvedModel})`);
236
298
  if (args.trace) {
299
+ // eslint-disable-next-line no-console
237
300
  console.log(`+ Trace capture enabled -> .traces/`);
238
301
  }
239
302
  // Initialize health checker
@@ -241,7 +304,7 @@ async function main() {
241
304
  onStatusChange: (name, healthy, prev) => {
242
305
  // Only warn when something becomes unhealthy (not on initial check)
243
306
  if (!healthy && prev !== undefined) {
244
- console.warn(`[Health] ${name} became unhealthy`);
307
+ logger.warn('[Health] Check became unhealthy', { name });
245
308
  }
246
309
  },
247
310
  });
@@ -255,20 +318,21 @@ async function main() {
255
318
  healthChecker.checkAll().then(report => {
256
319
  if (!report.healthy) {
257
320
  const unhealthy = report.checks.filter(c => !c.healthy).map(c => c.name);
258
- console.warn(`[Health] Some checks failed: ${unhealthy.join(', ')}`);
321
+ logger.warn('[Health] Some checks failed', { unhealthy: unhealthy.join(', ') });
259
322
  if (args.debug) {
260
- console.warn(formatHealthReport(report));
323
+ logger.warn(formatHealthReport(report));
261
324
  }
262
325
  }
263
326
  else if (args.debug) {
264
- console.log(`[Health] All ${report.totalCount} checks passed`);
327
+ logger.debug('[Health] All checks passed', { totalCount: report.totalCount });
265
328
  }
266
329
  }).catch(err => {
267
330
  // Don't block startup on health check failure
268
331
  if (args.debug) {
269
- console.warn('[Health] Initial check failed:', err.message);
332
+ logger.warn('[Health] Initial check failed', { error: String(err.message) });
270
333
  }
271
334
  });
335
+ // eslint-disable-next-line no-console
272
336
  console.log('');
273
337
  if (args.task) {
274
338
  // Single task mode (non-interactive)
@@ -283,6 +347,11 @@ async function main() {
283
347
  model: resolvedModel,
284
348
  maxIterations: args.maxIterations,
285
349
  humanInLoop: false, // Disable for non-interactive
350
+ executionPolicy: { defaultPolicy: 'allow' }, // No user to prompt in non-interactive mode
351
+ codebaseContext: {
352
+ enabled: true,
353
+ root: process.cwd(),
354
+ },
286
355
  swarm: swarmConfig || false,
287
356
  observability: args.trace ? {
288
357
  enabled: true,
@@ -295,15 +364,21 @@ async function main() {
295
364
  } : undefined,
296
365
  });
297
366
  agent.subscribe(createEventDisplay());
367
+ // eslint-disable-next-line no-console
298
368
  console.log(`Task: ${args.task}\n`);
299
369
  const result = await agent.run(args.task);
370
+ // eslint-disable-next-line no-console
300
371
  console.log('\n' + '='.repeat(60));
372
+ // eslint-disable-next-line no-console
301
373
  console.log(result.success ? '+ Task completed' : '! Task incomplete');
374
+ // eslint-disable-next-line no-console
302
375
  console.log('='.repeat(60));
376
+ // eslint-disable-next-line no-console
303
377
  console.log(result.response || result.error);
304
378
  // Show trace file location if tracing was enabled
305
379
  const traceCollector = agent.getTraceCollector();
306
380
  if (traceCollector) {
381
+ // eslint-disable-next-line no-console
307
382
  console.log(`\nTrace saved to: .traces/`);
308
383
  }
309
384
  await agent.cleanup();
@@ -312,6 +387,7 @@ async function main() {
312
387
  else {
313
388
  // Interactive mode
314
389
  if (useTUI) {
390
+ // eslint-disable-next-line no-console
315
391
  console.log('Starting TUI mode (use --no-tui for readline)');
316
392
  await startTUIMode(provider, {
317
393
  permissionMode: args.permission,
@@ -334,7 +410,7 @@ async function main() {
334
410
  }
335
411
  }
336
412
  main().catch((error) => {
337
- console.error('Fatal error:', error);
413
+ logger.error('Fatal error', { error: String(error) });
338
414
  process.exit(1);
339
415
  });
340
416
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AA8CxD,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;IAChB,KAAK,CAAC,EAAE,OAAO,gCAAgC,EAAE,WAAW,CAAC;CAC9D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAgbf"}
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;AAoDxD,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;IAChB,KAAK,CAAC,EAAE,OAAO,gCAAgC,EAAE,WAAW,CAAC;CAC9D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAqdf"}
@@ -11,6 +11,7 @@ import { ProviderAdapter, convertToolsFromRegistry, createInteractiveApprovalHan
11
11
  import { createStandardRegistry } from '../tools/standard.js';
12
12
  import { SQLiteStore, createSQLiteStore, createSessionStore, createMCPClient, createCompactor, createMCPMetaTools, createDeadLetterQueue, } from '../integrations/index.js';
13
13
  import { initModelCache } from '../integrations/openrouter-pricing.js';
14
+ import { DEFAULT_POLICY_ENGINE_CONFIG, DEFAULT_SANDBOX_CONFIG, } from '../defaults.js';
14
15
  import { persistenceDebug, saveCheckpointToStore, loadSessionState, } from '../integrations/persistence.js';
15
16
  import { createEventDisplay, createJunctureLogger } from '../tui/event-display.js';
16
17
  import { createTUIRenderer } from '../tui/index.js';
@@ -18,6 +19,8 @@ import { getMCPConfigPaths } from '../paths.js';
18
19
  import { showSessionPicker, showQuickPicker } from '../session-picker.js';
19
20
  import { registerCleanupResource } from '../core/process-handlers.js';
20
21
  import { handleCommand, createConsoleOutput } from '../commands/handler.js';
22
+ import { logger } from '../integrations/logger.js';
23
+ import { TUI_ROOT_BUDGET } from '../integrations/economics.js';
21
24
  // ANSI color helper
22
25
  const colors = {
23
26
  reset: '\x1b[0m',
@@ -72,6 +75,7 @@ export async function startProductionREPL(provider, options = {}) {
72
75
  tools,
73
76
  model,
74
77
  maxIterations,
78
+ budget: TUI_ROOT_BUDGET,
75
79
  memory: {
76
80
  enabled: true,
77
81
  types: { episodic: true, semantic: true, working: true },
@@ -105,13 +109,18 @@ export async function startProductionREPL(provider, options = {}) {
105
109
  } : undefined,
106
110
  },
107
111
  sandbox: {
112
+ ...DEFAULT_SANDBOX_CONFIG,
108
113
  enabled: true,
109
- isolation: 'process',
110
- allowedCommands: ['node', 'npm', 'npx', 'yarn', 'git', 'ls', 'cat', 'head', 'tail', 'grep', 'find', 'echo', 'pwd'],
111
- blockedCommands: ['rm -rf /', 'sudo', 'chmod 777'],
112
- resourceLimits: { timeout: 60000 },
114
+ resourceLimits: {
115
+ ...DEFAULT_SANDBOX_CONFIG.resourceLimits,
116
+ timeout: 60000,
117
+ },
113
118
  allowedPaths: [process.cwd(), process.env.HOME || '/Users', '/tmp'],
114
119
  },
120
+ policyEngine: {
121
+ ...DEFAULT_POLICY_ENGINE_CONFIG,
122
+ enabled: true,
123
+ },
115
124
  humanInLoop: {
116
125
  enabled: permissionMode === 'interactive',
117
126
  riskThreshold: 'high',
@@ -164,6 +173,7 @@ export async function startProductionREPL(provider, options = {}) {
164
173
  try {
165
174
  sessionStore = await createSQLiteStore({ baseDir: '.agent/sessions' });
166
175
  persistenceDebug.log('SQLite store created successfully');
176
+ // eslint-disable-next-line no-console
167
177
  console.log(c('+ SQLite session store initialized', 'green'));
168
178
  if (persistenceDebug.isEnabled()) {
169
179
  const sqliteStore = sessionStore;
@@ -174,7 +184,9 @@ export async function startProductionREPL(provider, options = {}) {
174
184
  }
175
185
  catch (sqliteError) {
176
186
  persistenceDebug.error('SQLite initialization failed', sqliteError);
187
+ // eslint-disable-next-line no-console
177
188
  console.log(c('! SQLite unavailable, using JSONL fallback', 'yellow'));
189
+ // eslint-disable-next-line no-console
178
190
  console.log(c(` Error: ${sqliteError.message}`, 'dim'));
179
191
  sessionStore = await createSessionStore({ baseDir: '.agent/sessions' });
180
192
  persistenceDebug.log('JSONL store created as fallback');
@@ -203,7 +215,7 @@ export async function startProductionREPL(provider, options = {}) {
203
215
  for (const tool of loadedTools) {
204
216
  agent.addTool(tool);
205
217
  }
206
- console.log(c(` + Dynamically loaded ${loadedTools.length} MCP tool(s)`, 'dim'));
218
+ logger.debug('Dynamically loaded MCP tools', { count: loadedTools.length });
207
219
  },
208
220
  });
209
221
  for (const metaTool of mcpMetaTools) {
@@ -212,9 +224,11 @@ export async function startProductionREPL(provider, options = {}) {
212
224
  // Show MCP status
213
225
  const mcpServers = mcpClient.listServers();
214
226
  if (mcpServers.length > 0) {
227
+ // eslint-disable-next-line no-console
215
228
  console.log(c(`MCP Servers: ${mcpServers.length} configured`, 'dim'));
216
229
  for (const srv of mcpServers) {
217
230
  const icon = srv.status === 'connected' ? '+' : srv.status === 'error' ? 'x' : 'o';
231
+ // eslint-disable-next-line no-console
218
232
  console.log(c(` ${icon} ${srv.name} (${srv.status})${srv.toolCount > 0 ? ` - ${srv.toolCount} tools` : ''}`, 'dim'));
219
233
  }
220
234
  }
@@ -232,6 +246,7 @@ export async function startProductionREPL(provider, options = {}) {
232
246
  resumedSession = true;
233
247
  }
234
248
  else if (fullResult.action === 'cancel') {
249
+ // eslint-disable-next-line no-console
235
250
  console.log(c('Goodbye!', 'cyan'));
236
251
  await mcpClient.cleanup();
237
252
  await agent.cleanup();
@@ -267,6 +282,7 @@ export async function startProductionREPL(provider, options = {}) {
267
282
  if (dlq.isAvailable()) {
268
283
  const pending = dlq.getPending({ limit: 10 });
269
284
  if (pending.length > 0) {
285
+ // eslint-disable-next-line no-console
270
286
  console.log(c(`[DLQ] ${pending.length} failed operation(s) pending retry`, 'yellow'));
271
287
  }
272
288
  // Wire DLQ to registry and MCP client
@@ -285,18 +301,24 @@ export async function startProductionREPL(provider, options = {}) {
285
301
  plan: sessionState.plan,
286
302
  memoryContext: sessionState.memoryContext,
287
303
  });
304
+ // eslint-disable-next-line no-console
288
305
  console.log(c(`+ Resumed ${sessionState.messages.length} messages from session`, 'green'));
289
306
  }
290
307
  }
291
308
  // Welcome banner
309
+ // eslint-disable-next-line no-console
292
310
  console.log(`
293
311
  ${c('----------------------------------------------------------------------', 'dim')}
294
312
  ${c(' ATTOCODE - PRODUCTION CODING AGENT', 'bold')}
295
313
  ${c('----------------------------------------------------------------------', 'dim')}
296
314
  `);
315
+ // eslint-disable-next-line no-console
297
316
  console.log(c(`Session: ${sessionId}${resumedSession ? ' (resumed)' : ''}`, 'dim'));
317
+ // eslint-disable-next-line no-console
298
318
  console.log(c(`Model: ${model || provider.defaultModel}`, 'dim'));
319
+ // eslint-disable-next-line no-console
299
320
  console.log(c(`Permission mode: ${permissionMode}`, 'dim'));
321
+ // eslint-disable-next-line no-console
300
322
  console.log(c('\nType your request, or /help for commands.\n', 'dim'));
301
323
  // Create command context
302
324
  const commandOutput = createConsoleOutput();
@@ -307,8 +329,11 @@ ${c('----------------------------------------------------------------------', 'd
307
329
  if (trace && traceCollector) {
308
330
  await traceCollector.startSession(terminalSessionId, undefined, // No single task - this is a terminal session with multiple tasks
309
331
  model || provider.defaultModel, { type: 'repl', permissionMode });
332
+ // eslint-disable-next-line no-console
310
333
  console.log(c(`Trace session started: ${terminalSessionId}`, 'dim'));
311
334
  }
335
+ let hadRunFailure = false;
336
+ let lastFailureReason;
312
337
  try {
313
338
  while (true) {
314
339
  // Generate prompt with mode indicator
@@ -337,6 +362,7 @@ ${c('----------------------------------------------------------------------', 'd
337
362
  rl,
338
363
  });
339
364
  if (result === 'quit') {
365
+ // eslint-disable-next-line no-console
340
366
  console.log(c('Goodbye!', 'cyan'));
341
367
  break;
342
368
  }
@@ -346,29 +372,37 @@ ${c('----------------------------------------------------------------------', 'd
346
372
  try {
347
373
  const result = await agent.run(trimmed);
348
374
  if (result.success) {
375
+ // eslint-disable-next-line no-console
349
376
  console.log(c('\n--- Assistant ---', 'magenta'));
350
377
  tui.renderAssistantMessage(result.response);
378
+ // eslint-disable-next-line no-console
351
379
  console.log(c('-----------------', 'magenta'));
352
380
  }
353
381
  else {
382
+ hadRunFailure = true;
383
+ lastFailureReason = result.error || result.response || 'Task incomplete';
384
+ // eslint-disable-next-line no-console
354
385
  console.log(c('\n! Task incomplete:', 'yellow'));
355
386
  tui.showError(result.error || result.response);
356
387
  }
357
388
  if (trace && agent.getTraceCollector()) {
358
- console.log(c('Trace captured -> .traces/', 'dim'));
389
+ logger.debug('Trace captured', { outputDir: '.traces/' });
359
390
  }
360
391
  const metrics = result.metrics;
392
+ // eslint-disable-next-line no-console
361
393
  console.log(c(`\nTokens: ${metrics.inputTokens} in / ${metrics.outputTokens} out | Tools: ${metrics.toolCalls} | Duration: ${metrics.duration}ms`, 'dim'));
362
394
  if (agent.hasPendingPlan()) {
363
395
  const changeCount = agent.getPendingChangeCount();
396
+ // eslint-disable-next-line no-console
364
397
  console.log(c(`\nPlan Mode: ${changeCount} change(s) queued for approval`, 'yellow'));
398
+ // eslint-disable-next-line no-console
365
399
  console.log(c(' Use /show-plan to review, /approve to execute, /reject to discard', 'dim'));
366
400
  }
367
401
  // Auto-checkpoint
368
402
  persistenceDebug.log('Attempting auto-checkpoint');
369
403
  const checkpoint = agent.autoCheckpoint(true);
370
404
  if (checkpoint) {
371
- console.log(c(`Auto-checkpoint: ${checkpoint.id}`, 'dim'));
405
+ logger.debug('Auto-checkpoint created', { checkpointId: checkpoint.id });
372
406
  persistenceDebug.log('Auto-checkpoint created in agent', {
373
407
  id: checkpoint.id,
374
408
  label: checkpoint.label,
@@ -395,9 +429,7 @@ ${c('----------------------------------------------------------------------', 'd
395
429
  }
396
430
  catch (err) {
397
431
  persistenceDebug.error('Failed to persist checkpoint to store', err);
398
- if (persistenceDebug.isEnabled()) {
399
- console.log(c(`! Checkpoint persistence failed: ${err.message}`, 'yellow'));
400
- }
432
+ logger.error('Checkpoint persistence failed', { error: String(err) });
401
433
  }
402
434
  }
403
435
  else {
@@ -405,8 +437,11 @@ ${c('----------------------------------------------------------------------', 'd
405
437
  }
406
438
  }
407
439
  catch (error) {
440
+ hadRunFailure = true;
441
+ lastFailureReason = error.message;
408
442
  tui.showError(error.message);
409
443
  }
444
+ // eslint-disable-next-line no-console
410
445
  console.log();
411
446
  }
412
447
  }
@@ -414,11 +449,14 @@ ${c('----------------------------------------------------------------------', 'd
414
449
  // End trace session for the terminal session
415
450
  if (trace && traceCollector?.isSessionActive()) {
416
451
  try {
417
- await traceCollector.endSession({ success: true });
452
+ await traceCollector.endSession(hadRunFailure
453
+ ? { success: false, failureReason: lastFailureReason ?? 'At least one task failed during this terminal session' }
454
+ : { success: true });
455
+ // eslint-disable-next-line no-console
418
456
  console.log(c(`\nTrace session ended -> .traces/`, 'dim'));
419
457
  }
420
458
  catch (err) {
421
- console.log(c(`! Failed to end trace session: ${err.message}`, 'yellow'));
459
+ logger.error('Failed to end trace session', { error: String(err) });
422
460
  }
423
461
  }
424
462
  tui.cleanup();