attocode 0.1.8__tar.gz

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 (642) hide show
  1. attocode-0.1.8/.attocode/.mcp.json +22 -0
  2. attocode-0.1.8/.attocode/mcp.json +22 -0
  3. attocode-0.1.8/.attocode/sessions/sessions.db +0 -0
  4. attocode-0.1.8/.attocode/skills/swarm-verify/SKILL.md +116 -0
  5. attocode-0.1.8/.attocode/swarm.hybrid.yaml.example +72 -0
  6. attocode-0.1.8/.attocode/swarm.yaml.example +42 -0
  7. attocode-0.1.8/.attocode/traces/trace-1771789500.jsonl +5688 -0
  8. attocode-0.1.8/.attocode/traces/trace-1772209432.jsonl +292 -0
  9. attocode-0.1.8/.attocode/traces/trace-1772209672.jsonl +2 -0
  10. attocode-0.1.8/.attocode/traces/trace-1772210064.jsonl +465 -0
  11. attocode-0.1.8/.attocode/traces/trace-1772210765.jsonl +2 -0
  12. attocode-0.1.8/.attocode/traces/trace-1772211686.jsonl +2 -0
  13. attocode-0.1.8/.attocode/traces/trace-1772211765.jsonl +2 -0
  14. attocode-0.1.8/.attocode/traces/trace-1772211773.jsonl +2 -0
  15. attocode-0.1.8/.attocode/traces/trace-1772211780.jsonl +2 -0
  16. attocode-0.1.8/.attocode/traces/trace-1772214295.jsonl +377 -0
  17. attocode-0.1.8/.attocode/traces/trace-1772215673.jsonl +466 -0
  18. attocode-0.1.8/.attocode/traces/trace-1772216663.jsonl +2 -0
  19. attocode-0.1.8/.attocode/traces/trace-1772265122.jsonl +2 -0
  20. attocode-0.1.8/.attocode/traces/trace-1772365784.jsonl +2732 -0
  21. attocode-0.1.8/.claude/CLAUDE.md +352 -0
  22. attocode-0.1.8/.claude/settings.local.json +102 -0
  23. attocode-0.1.8/.github/workflows/release.yml +48 -0
  24. attocode-0.1.8/.github/workflows/test.yml +44 -0
  25. attocode-0.1.8/.gitignore +45 -0
  26. attocode-0.1.8/.python-version +1 -0
  27. attocode-0.1.8/CHANGELOG.md +314 -0
  28. attocode-0.1.8/CONTRIBUTING.md +104 -0
  29. attocode-0.1.8/LICENSE +21 -0
  30. attocode-0.1.8/PKG-INFO +492 -0
  31. attocode-0.1.8/README.md +429 -0
  32. attocode-0.1.8/docs/ARCHITECTURE.md +127 -0
  33. attocode-0.1.8/docs/BUDGET.md +223 -0
  34. attocode-0.1.8/docs/MCP.md +59 -0
  35. attocode-0.1.8/docs/PROVIDERS.md +61 -0
  36. attocode-0.1.8/docs/SANDBOX.md +93 -0
  37. attocode-0.1.8/docs/TESTING.md +88 -0
  38. attocode-0.1.8/docs/advanced-features.md +446 -0
  39. attocode-0.1.8/docs/ast-and-code-intelligence.md +358 -0
  40. attocode-0.1.8/docs/cli-reference.md +157 -0
  41. attocode-0.1.8/docs/context-engineering.md +444 -0
  42. attocode-0.1.8/docs/contributing.md +1 -0
  43. attocode-0.1.8/docs/extending.md +377 -0
  44. attocode-0.1.8/docs/getting-started.md +173 -0
  45. attocode-0.1.8/docs/hybrid-swarm-operations.md +243 -0
  46. attocode-0.1.8/docs/index.md +60 -0
  47. attocode-0.1.8/docs/internals.md +321 -0
  48. attocode-0.1.8/docs/javascripts/mermaid-init.js +14 -0
  49. attocode-0.1.8/docs/provider-resilience.md +229 -0
  50. attocode-0.1.8/docs/recording-and-replay.md +247 -0
  51. attocode-0.1.8/docs/sessions-guide.md +204 -0
  52. attocode-0.1.8/docs/skills-and-agents.md +268 -0
  53. attocode-0.1.8/docs/swarm-guide.md +245 -0
  54. attocode-0.1.8/docs/swarm-roadmap.md +44 -0
  55. attocode-0.1.8/docs/tracing-guide.md +252 -0
  56. attocode-0.1.8/docs/troubleshooting.md +284 -0
  57. attocode-0.1.8/docs/tui-guide.md +242 -0
  58. attocode-0.1.8/eval/__init__.py +1 -0
  59. attocode-0.1.8/eval/harness.py +534 -0
  60. attocode-0.1.8/eval/metrics.py +343 -0
  61. attocode-0.1.8/eval/runner.py +366 -0
  62. attocode-0.1.8/mkdocs.yml +85 -0
  63. attocode-0.1.8/pyproject.toml +125 -0
  64. attocode-0.1.8/scripts/setup.sh +49 -0
  65. attocode-0.1.8/site/404.html +1177 -0
  66. attocode-0.1.8/site/ARCHITECTURE/index.html +1581 -0
  67. attocode-0.1.8/site/BUDGET/index.html +2197 -0
  68. attocode-0.1.8/site/MCP/index.html +1512 -0
  69. attocode-0.1.8/site/PROVIDERS/index.html +1526 -0
  70. attocode-0.1.8/site/SANDBOX/index.html +1647 -0
  71. attocode-0.1.8/site/TESTING/index.html +1549 -0
  72. attocode-0.1.8/site/advanced-features/index.html +3017 -0
  73. attocode-0.1.8/site/assets/images/favicon.png +0 -0
  74. attocode-0.1.8/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
  75. attocode-0.1.8/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
  76. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  77. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  78. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  79. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  80. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  81. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  82. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  83. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  84. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  85. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  86. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  87. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  88. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  89. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  90. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  91. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  92. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  93. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  94. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  95. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  96. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  97. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  98. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  99. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  100. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  101. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  102. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  103. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  104. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  105. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  106. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  107. attocode-0.1.8/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  108. attocode-0.1.8/site/assets/javascripts/lunr/tinyseg.js +206 -0
  109. attocode-0.1.8/site/assets/javascripts/lunr/wordcut.js +6708 -0
  110. attocode-0.1.8/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
  111. attocode-0.1.8/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  112. attocode-0.1.8/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
  113. attocode-0.1.8/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
  114. attocode-0.1.8/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  115. attocode-0.1.8/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  116. attocode-0.1.8/site/ast-and-code-intelligence/index.html +2183 -0
  117. attocode-0.1.8/site/cli-reference/index.html +1997 -0
  118. attocode-0.1.8/site/context-engineering/index.html +2674 -0
  119. attocode-0.1.8/site/contributing/index.html +1585 -0
  120. attocode-0.1.8/site/extending/index.html +2289 -0
  121. attocode-0.1.8/site/getting-started/index.html +1730 -0
  122. attocode-0.1.8/site/hybrid-swarm-operations/index.html +1679 -0
  123. attocode-0.1.8/site/index.html +1423 -0
  124. attocode-0.1.8/site/internals/index.html +2454 -0
  125. attocode-0.1.8/site/javascripts/mermaid-init.js +14 -0
  126. attocode-0.1.8/site/provider-resilience/index.html +2039 -0
  127. attocode-0.1.8/site/recording-and-replay/index.html +2120 -0
  128. attocode-0.1.8/site/search/search_index.json +1 -0
  129. attocode-0.1.8/site/sessions-guide/index.html +1878 -0
  130. attocode-0.1.8/site/sitemap.xml +103 -0
  131. attocode-0.1.8/site/sitemap.xml.gz +0 -0
  132. attocode-0.1.8/site/skills-and-agents/index.html +2087 -0
  133. attocode-0.1.8/site/swarm-guide/index.html +2012 -0
  134. attocode-0.1.8/site/swarm-roadmap/index.html +1310 -0
  135. attocode-0.1.8/site/tracing-guide/index.html +2077 -0
  136. attocode-0.1.8/site/troubleshooting/index.html +1920 -0
  137. attocode-0.1.8/site/tui-guide/index.html +2319 -0
  138. attocode-0.1.8/snapshot_report.html +1001 -0
  139. attocode-0.1.8/src/__init__.py +0 -0
  140. attocode-0.1.8/src/attocode/__init__.py +3 -0
  141. attocode-0.1.8/src/attocode/__main__.py +5 -0
  142. attocode-0.1.8/src/attocode/adapters.py +373 -0
  143. attocode-0.1.8/src/attocode/agent/__init__.py +26 -0
  144. attocode-0.1.8/src/attocode/agent/agent.py +1336 -0
  145. attocode-0.1.8/src/attocode/agent/builder.py +331 -0
  146. attocode-0.1.8/src/attocode/agent/context.py +174 -0
  147. attocode-0.1.8/src/attocode/agent/feature_initializer.py +551 -0
  148. attocode-0.1.8/src/attocode/agent/message_builder.py +101 -0
  149. attocode-0.1.8/src/attocode/agent/session_api.py +221 -0
  150. attocode-0.1.8/src/attocode/cli.py +702 -0
  151. attocode-0.1.8/src/attocode/code_intel/__init__.py +5 -0
  152. attocode-0.1.8/src/attocode/code_intel/cli.py +224 -0
  153. attocode-0.1.8/src/attocode/code_intel/installer.py +304 -0
  154. attocode-0.1.8/src/attocode/code_intel/server.py +1280 -0
  155. attocode-0.1.8/src/attocode/commands.py +2770 -0
  156. attocode-0.1.8/src/attocode/config.py +298 -0
  157. attocode-0.1.8/src/attocode/core/__init__.py +68 -0
  158. attocode-0.1.8/src/attocode/core/agent_state_machine.py +163 -0
  159. attocode-0.1.8/src/attocode/core/completion.py +87 -0
  160. attocode-0.1.8/src/attocode/core/loop.py +1197 -0
  161. attocode-0.1.8/src/attocode/core/response_handler.py +242 -0
  162. attocode-0.1.8/src/attocode/core/subagent_spawner.py +315 -0
  163. attocode-0.1.8/src/attocode/core/tool_executor.py +486 -0
  164. attocode-0.1.8/src/attocode/defaults.py +648 -0
  165. attocode-0.1.8/src/attocode/errors/__init__.py +126 -0
  166. attocode-0.1.8/src/attocode/integrations/__init__.py +4 -0
  167. attocode-0.1.8/src/attocode/integrations/agents/__init__.py +83 -0
  168. attocode-0.1.8/src/attocode/integrations/agents/async_subagent.py +202 -0
  169. attocode-0.1.8/src/attocode/integrations/agents/blackboard.py +600 -0
  170. attocode-0.1.8/src/attocode/integrations/agents/delegation.py +132 -0
  171. attocode-0.1.8/src/attocode/integrations/agents/registry.py +142 -0
  172. attocode-0.1.8/src/attocode/integrations/agents/result_synthesizer.py +1238 -0
  173. attocode-0.1.8/src/attocode/integrations/agents/subagent_output_store.py +160 -0
  174. attocode-0.1.8/src/attocode/integrations/budget/__init__.py +81 -0
  175. attocode-0.1.8/src/attocode/integrations/budget/budget_pool.py +277 -0
  176. attocode-0.1.8/src/attocode/integrations/budget/cancellation.py +80 -0
  177. attocode-0.1.8/src/attocode/integrations/budget/dynamic_budget.py +364 -0
  178. attocode-0.1.8/src/attocode/integrations/budget/economics.py +716 -0
  179. attocode-0.1.8/src/attocode/integrations/budget/injection_budget.py +146 -0
  180. attocode-0.1.8/src/attocode/integrations/budget/loop_detector.py +103 -0
  181. attocode-0.1.8/src/attocode/integrations/budget/phase_tracker.py +159 -0
  182. attocode-0.1.8/src/attocode/integrations/budget/resources.py +160 -0
  183. attocode-0.1.8/src/attocode/integrations/context/__init__.py +130 -0
  184. attocode-0.1.8/src/attocode/integrations/context/ast_client.py +119 -0
  185. attocode-0.1.8/src/attocode/integrations/context/ast_server.py +294 -0
  186. attocode-0.1.8/src/attocode/integrations/context/ast_service.py +450 -0
  187. attocode-0.1.8/src/attocode/integrations/context/auto_compaction.py +288 -0
  188. attocode-0.1.8/src/attocode/integrations/context/code_analyzer.py +537 -0
  189. attocode-0.1.8/src/attocode/integrations/context/code_selector.py +487 -0
  190. attocode-0.1.8/src/attocode/integrations/context/codebase_ast.py +876 -0
  191. attocode-0.1.8/src/attocode/integrations/context/codebase_context.py +1083 -0
  192. attocode-0.1.8/src/attocode/integrations/context/compaction.py +136 -0
  193. attocode-0.1.8/src/attocode/integrations/context/context_engineering.py +310 -0
  194. attocode-0.1.8/src/attocode/integrations/context/cross_references.py +122 -0
  195. attocode-0.1.8/src/attocode/integrations/context/file_cache.py +211 -0
  196. attocode-0.1.8/src/attocode/integrations/context/semantic_cache.py +176 -0
  197. attocode-0.1.8/src/attocode/integrations/lsp/__init__.py +27 -0
  198. attocode-0.1.8/src/attocode/integrations/lsp/client.py +746 -0
  199. attocode-0.1.8/src/attocode/integrations/mcp/__init__.py +54 -0
  200. attocode-0.1.8/src/attocode/integrations/mcp/client.py +219 -0
  201. attocode-0.1.8/src/attocode/integrations/mcp/client_manager.py +233 -0
  202. attocode-0.1.8/src/attocode/integrations/mcp/config.py +111 -0
  203. attocode-0.1.8/src/attocode/integrations/mcp/custom_tools.py +129 -0
  204. attocode-0.1.8/src/attocode/integrations/mcp/meta_tools.py +154 -0
  205. attocode-0.1.8/src/attocode/integrations/mcp/tool_search.py +188 -0
  206. attocode-0.1.8/src/attocode/integrations/mcp/tool_validator.py +117 -0
  207. attocode-0.1.8/src/attocode/integrations/persistence/__init__.py +39 -0
  208. attocode-0.1.8/src/attocode/integrations/persistence/history.py +177 -0
  209. attocode-0.1.8/src/attocode/integrations/persistence/store.py +1103 -0
  210. attocode-0.1.8/src/attocode/integrations/quality/__init__.py +65 -0
  211. attocode-0.1.8/src/attocode/integrations/quality/auto_checkpoint.py +135 -0
  212. attocode-0.1.8/src/attocode/integrations/quality/dead_letter_queue.py +193 -0
  213. attocode-0.1.8/src/attocode/integrations/quality/health_check.py +273 -0
  214. attocode-0.1.8/src/attocode/integrations/quality/learning_store.py +541 -0
  215. attocode-0.1.8/src/attocode/integrations/quality/self_improvement.py +243 -0
  216. attocode-0.1.8/src/attocode/integrations/quality/tool_recommendation.py +209 -0
  217. attocode-0.1.8/src/attocode/integrations/recording/__init__.py +52 -0
  218. attocode-0.1.8/src/attocode/integrations/recording/assembly.py +316 -0
  219. attocode-0.1.8/src/attocode/integrations/recording/exploration_tracker.py +304 -0
  220. attocode-0.1.8/src/attocode/integrations/recording/graph_types.py +346 -0
  221. attocode-0.1.8/src/attocode/integrations/recording/playback.py +227 -0
  222. attocode-0.1.8/src/attocode/integrations/recording/recorder.py +595 -0
  223. attocode-0.1.8/src/attocode/integrations/safety/__init__.py +35 -0
  224. attocode-0.1.8/src/attocode/integrations/safety/bash_policy.py +172 -0
  225. attocode-0.1.8/src/attocode/integrations/safety/edit_validator.py +179 -0
  226. attocode-0.1.8/src/attocode/integrations/safety/policy_engine.py +151 -0
  227. attocode-0.1.8/src/attocode/integrations/safety/sandbox/__init__.py +118 -0
  228. attocode-0.1.8/src/attocode/integrations/safety/sandbox/basic.py +169 -0
  229. attocode-0.1.8/src/attocode/integrations/safety/sandbox/docker.py +151 -0
  230. attocode-0.1.8/src/attocode/integrations/safety/sandbox/landlock.py +256 -0
  231. attocode-0.1.8/src/attocode/integrations/safety/sandbox/seatbelt.py +215 -0
  232. attocode-0.1.8/src/attocode/integrations/skills/__init__.py +19 -0
  233. attocode-0.1.8/src/attocode/integrations/skills/dependency_graph.py +167 -0
  234. attocode-0.1.8/src/attocode/integrations/skills/executor.py +207 -0
  235. attocode-0.1.8/src/attocode/integrations/skills/loader.py +170 -0
  236. attocode-0.1.8/src/attocode/integrations/skills/state.py +109 -0
  237. attocode-0.1.8/src/attocode/integrations/streaming/__init__.py +35 -0
  238. attocode-0.1.8/src/attocode/integrations/streaming/handler.py +378 -0
  239. attocode-0.1.8/src/attocode/integrations/streaming/pty_shell.py +301 -0
  240. attocode-0.1.8/src/attocode/integrations/swarm/__init__.py +222 -0
  241. attocode-0.1.8/src/attocode/integrations/swarm/cc_spawner.py +340 -0
  242. attocode-0.1.8/src/attocode/integrations/swarm/config_loader.py +602 -0
  243. attocode-0.1.8/src/attocode/integrations/swarm/critic.py +271 -0
  244. attocode-0.1.8/src/attocode/integrations/swarm/event_bridge.py +819 -0
  245. attocode-0.1.8/src/attocode/integrations/swarm/execution.py +1102 -0
  246. attocode-0.1.8/src/attocode/integrations/swarm/failure_classifier.py +166 -0
  247. attocode-0.1.8/src/attocode/integrations/swarm/helpers.py +159 -0
  248. attocode-0.1.8/src/attocode/integrations/swarm/lifecycle.py +748 -0
  249. attocode-0.1.8/src/attocode/integrations/swarm/message_bus.py +384 -0
  250. attocode-0.1.8/src/attocode/integrations/swarm/model_selector.py +852 -0
  251. attocode-0.1.8/src/attocode/integrations/swarm/orchestrator.py +806 -0
  252. attocode-0.1.8/src/attocode/integrations/swarm/quality_gate.py +682 -0
  253. attocode-0.1.8/src/attocode/integrations/swarm/recovery.py +727 -0
  254. attocode-0.1.8/src/attocode/integrations/swarm/request_throttle.py +200 -0
  255. attocode-0.1.8/src/attocode/integrations/swarm/roles.py +181 -0
  256. attocode-0.1.8/src/attocode/integrations/swarm/swarm_budget.py +183 -0
  257. attocode-0.1.8/src/attocode/integrations/swarm/swarm_state_store.py +220 -0
  258. attocode-0.1.8/src/attocode/integrations/swarm/task_queue.py +985 -0
  259. attocode-0.1.8/src/attocode/integrations/swarm/types.py +871 -0
  260. attocode-0.1.8/src/attocode/integrations/swarm/worker_pool.py +760 -0
  261. attocode-0.1.8/src/attocode/integrations/swarm/worktree_manager.py +326 -0
  262. attocode-0.1.8/src/attocode/integrations/tasks/__init__.py +103 -0
  263. attocode-0.1.8/src/attocode/integrations/tasks/decomposer.py +208 -0
  264. attocode-0.1.8/src/attocode/integrations/tasks/dependency_analyzer.py +234 -0
  265. attocode-0.1.8/src/attocode/integrations/tasks/interactive_planning.py +374 -0
  266. attocode-0.1.8/src/attocode/integrations/tasks/pending_plan.py +269 -0
  267. attocode-0.1.8/src/attocode/integrations/tasks/planning.py +203 -0
  268. attocode-0.1.8/src/attocode/integrations/tasks/task_manager.py +246 -0
  269. attocode-0.1.8/src/attocode/integrations/tasks/task_splitter.py +242 -0
  270. attocode-0.1.8/src/attocode/integrations/tasks/verification_gate.py +280 -0
  271. attocode-0.1.8/src/attocode/integrations/tasks/work_log.py +122 -0
  272. attocode-0.1.8/src/attocode/integrations/utilities/__init__.py +167 -0
  273. attocode-0.1.8/src/attocode/integrations/utilities/capabilities.py +145 -0
  274. attocode-0.1.8/src/attocode/integrations/utilities/complexity_classifier.py +143 -0
  275. attocode-0.1.8/src/attocode/integrations/utilities/diff_utils.py +83 -0
  276. attocode-0.1.8/src/attocode/integrations/utilities/environment_facts.py +117 -0
  277. attocode-0.1.8/src/attocode/integrations/utilities/execution_policy.py +247 -0
  278. attocode-0.1.8/src/attocode/integrations/utilities/file_change_tracker.py +303 -0
  279. attocode-0.1.8/src/attocode/integrations/utilities/hierarchical_config.py +228 -0
  280. attocode-0.1.8/src/attocode/integrations/utilities/hooks.py +155 -0
  281. attocode-0.1.8/src/attocode/integrations/utilities/ignore.py +64 -0
  282. attocode-0.1.8/src/attocode/integrations/utilities/logger.py +53 -0
  283. attocode-0.1.8/src/attocode/integrations/utilities/memory.py +229 -0
  284. attocode-0.1.8/src/attocode/integrations/utilities/mode_manager.py +300 -0
  285. attocode-0.1.8/src/attocode/integrations/utilities/resilience.py +460 -0
  286. attocode-0.1.8/src/attocode/integrations/utilities/resilient_fetch.py +252 -0
  287. attocode-0.1.8/src/attocode/integrations/utilities/retry.py +85 -0
  288. attocode-0.1.8/src/attocode/integrations/utilities/routing.py +329 -0
  289. attocode-0.1.8/src/attocode/integrations/utilities/rules.py +77 -0
  290. attocode-0.1.8/src/attocode/integrations/utilities/thinking_strategy.py +114 -0
  291. attocode-0.1.8/src/attocode/integrations/utilities/thread_manager.py +291 -0
  292. attocode-0.1.8/src/attocode/integrations/utilities/token_estimate.py +51 -0
  293. attocode-0.1.8/src/attocode/integrations/utilities/tool_coercion.py +169 -0
  294. attocode-0.1.8/src/attocode/integrations/utilities/undo.py +258 -0
  295. attocode-0.1.8/src/attocode/providers/__init__.py +56 -0
  296. attocode-0.1.8/src/attocode/providers/anthropic.py +268 -0
  297. attocode-0.1.8/src/attocode/providers/azure.py +292 -0
  298. attocode-0.1.8/src/attocode/providers/base.py +293 -0
  299. attocode-0.1.8/src/attocode/providers/fallback_chain.py +193 -0
  300. attocode-0.1.8/src/attocode/providers/mock.py +106 -0
  301. attocode-0.1.8/src/attocode/providers/model_cache.py +217 -0
  302. attocode-0.1.8/src/attocode/providers/openai.py +213 -0
  303. attocode-0.1.8/src/attocode/providers/openrouter.py +214 -0
  304. attocode-0.1.8/src/attocode/providers/registry.py +79 -0
  305. attocode-0.1.8/src/attocode/providers/resilient_provider.py +200 -0
  306. attocode-0.1.8/src/attocode/providers/zai.py +40 -0
  307. attocode-0.1.8/src/attocode/py.typed +0 -0
  308. attocode-0.1.8/src/attocode/shared/__init__.py +30 -0
  309. attocode-0.1.8/src/attocode/shared/budget_tracker.py +137 -0
  310. attocode-0.1.8/src/attocode/shared/context_engine.py +133 -0
  311. attocode-0.1.8/src/attocode/shared/persistence.py +148 -0
  312. attocode-0.1.8/src/attocode/shared/shared_context_state.py +146 -0
  313. attocode-0.1.8/src/attocode/shared/shared_economics_state.py +128 -0
  314. attocode-0.1.8/src/attocode/tools/__init__.py +15 -0
  315. attocode-0.1.8/src/attocode/tools/agent.py +112 -0
  316. attocode-0.1.8/src/attocode/tools/ast_query.py +183 -0
  317. attocode-0.1.8/src/attocode/tools/base.py +56 -0
  318. attocode-0.1.8/src/attocode/tools/bash.py +221 -0
  319. attocode-0.1.8/src/attocode/tools/codebase.py +510 -0
  320. attocode-0.1.8/src/attocode/tools/file_ops.py +242 -0
  321. attocode-0.1.8/src/attocode/tools/permission.py +50 -0
  322. attocode-0.1.8/src/attocode/tools/registry.py +108 -0
  323. attocode-0.1.8/src/attocode/tools/search.py +86 -0
  324. attocode-0.1.8/src/attocode/tools/standard.py +37 -0
  325. attocode-0.1.8/src/attocode/tools/tasks.py +167 -0
  326. attocode-0.1.8/src/attocode/tracing/__init__.py +75 -0
  327. attocode-0.1.8/src/attocode/tracing/analysis/__init__.py +45 -0
  328. attocode-0.1.8/src/attocode/tracing/analysis/inefficiency_detector.py +589 -0
  329. attocode-0.1.8/src/attocode/tracing/analysis/session_analyzer.py +394 -0
  330. attocode-0.1.8/src/attocode/tracing/analysis/token_analyzer.py +148 -0
  331. attocode-0.1.8/src/attocode/tracing/analysis/views.py +81 -0
  332. attocode-0.1.8/src/attocode/tracing/cache_boundary.py +220 -0
  333. attocode-0.1.8/src/attocode/tracing/collector.py +878 -0
  334. attocode-0.1.8/src/attocode/tracing/types.py +505 -0
  335. attocode-0.1.8/src/attocode/tricks/__init__.py +53 -0
  336. attocode-0.1.8/src/attocode/tricks/failure_evidence.py +494 -0
  337. attocode-0.1.8/src/attocode/tricks/json_utils.py +210 -0
  338. attocode-0.1.8/src/attocode/tricks/kv_cache.py +369 -0
  339. attocode-0.1.8/src/attocode/tricks/recitation.py +367 -0
  340. attocode-0.1.8/src/attocode/tricks/recursive_context.py +359 -0
  341. attocode-0.1.8/src/attocode/tricks/reversible_compaction.py +474 -0
  342. attocode-0.1.8/src/attocode/tricks/serialization_diversity.py +347 -0
  343. attocode-0.1.8/src/attocode/tui/__init__.py +23 -0
  344. attocode-0.1.8/src/attocode/tui/app.py +870 -0
  345. attocode-0.1.8/src/attocode/tui/bridges/__init__.py +8 -0
  346. attocode-0.1.8/src/attocode/tui/bridges/approval_bridge.py +132 -0
  347. attocode-0.1.8/src/attocode/tui/bridges/swarm_bridge.py +71 -0
  348. attocode-0.1.8/src/attocode/tui/dialogs/__init__.py +21 -0
  349. attocode-0.1.8/src/attocode/tui/dialogs/approval.py +165 -0
  350. attocode-0.1.8/src/attocode/tui/dialogs/budget.py +122 -0
  351. attocode-0.1.8/src/attocode/tui/dialogs/learning_validation.py +115 -0
  352. attocode-0.1.8/src/attocode/tui/dialogs/setup.py +401 -0
  353. attocode-0.1.8/src/attocode/tui/event_hooks.py +364 -0
  354. attocode-0.1.8/src/attocode/tui/events.py +189 -0
  355. attocode-0.1.8/src/attocode/tui/screens/__init__.py +8 -0
  356. attocode-0.1.8/src/attocode/tui/screens/dashboard.py +274 -0
  357. attocode-0.1.8/src/attocode/tui/screens/focus_screen.py +200 -0
  358. attocode-0.1.8/src/attocode/tui/screens/swarm_dashboard.py +373 -0
  359. attocode-0.1.8/src/attocode/tui/screens/swarm_monitor.py +272 -0
  360. attocode-0.1.8/src/attocode/tui/screens/task_detail_screen.py +57 -0
  361. attocode-0.1.8/src/attocode/tui/screens/timeline_screen.py +157 -0
  362. attocode-0.1.8/src/attocode/tui/styles/__init__.py +1 -0
  363. attocode-0.1.8/src/attocode/tui/styles/app.tcss +129 -0
  364. attocode-0.1.8/src/attocode/tui/styles/dashboard.tcss +177 -0
  365. attocode-0.1.8/src/attocode/tui/styles/dialogs.tcss +112 -0
  366. attocode-0.1.8/src/attocode/tui/styles/swarm.tcss +177 -0
  367. attocode-0.1.8/src/attocode/tui/styles/swarm_dashboard.tcss +280 -0
  368. attocode-0.1.8/src/attocode/tui/theme.py +136 -0
  369. attocode-0.1.8/src/attocode/tui/widgets/__init__.py +98 -0
  370. attocode-0.1.8/src/attocode/tui/widgets/agent_internals_panel.py +195 -0
  371. attocode-0.1.8/src/attocode/tui/widgets/agents_panel.py +86 -0
  372. attocode-0.1.8/src/attocode/tui/widgets/collapsible_diff.py +179 -0
  373. attocode-0.1.8/src/attocode/tui/widgets/command_palette.py +296 -0
  374. attocode-0.1.8/src/attocode/tui/widgets/dashboard/__init__.py +27 -0
  375. attocode-0.1.8/src/attocode/tui/widgets/dashboard/compare_pane.py +136 -0
  376. attocode-0.1.8/src/attocode/tui/widgets/dashboard/live_dashboard.py +194 -0
  377. attocode-0.1.8/src/attocode/tui/widgets/dashboard/session_browser.py +263 -0
  378. attocode-0.1.8/src/attocode/tui/widgets/dashboard/session_detail.py +402 -0
  379. attocode-0.1.8/src/attocode/tui/widgets/dashboard/swarm_activity_pane.py +124 -0
  380. attocode-0.1.8/src/attocode/tui/widgets/dashboard/viz/__init__.py +24 -0
  381. attocode-0.1.8/src/attocode/tui/widgets/dashboard/viz/ascii_table.py +92 -0
  382. attocode-0.1.8/src/attocode/tui/widgets/dashboard/viz/bar_chart.py +94 -0
  383. attocode-0.1.8/src/attocode/tui/widgets/dashboard/viz/percent_bar.py +82 -0
  384. attocode-0.1.8/src/attocode/tui/widgets/dashboard/viz/severity_badge.py +59 -0
  385. attocode-0.1.8/src/attocode/tui/widgets/dashboard/viz/sparkline.py +70 -0
  386. attocode-0.1.8/src/attocode/tui/widgets/dashboard/viz/tree_renderer.py +127 -0
  387. attocode-0.1.8/src/attocode/tui/widgets/debug_panel.py +226 -0
  388. attocode-0.1.8/src/attocode/tui/widgets/diagnostics_panel.py +175 -0
  389. attocode-0.1.8/src/attocode/tui/widgets/diff_view.py +365 -0
  390. attocode-0.1.8/src/attocode/tui/widgets/error_detail_panel.py +150 -0
  391. attocode-0.1.8/src/attocode/tui/widgets/file_change_summary.py +142 -0
  392. attocode-0.1.8/src/attocode/tui/widgets/input_area.py +152 -0
  393. attocode-0.1.8/src/attocode/tui/widgets/mascot.py +102 -0
  394. attocode-0.1.8/src/attocode/tui/widgets/message_log.py +82 -0
  395. attocode-0.1.8/src/attocode/tui/widgets/metrics_table.py +52 -0
  396. attocode-0.1.8/src/attocode/tui/widgets/plan_panel.py +77 -0
  397. attocode-0.1.8/src/attocode/tui/widgets/side_by_side_diff.py +165 -0
  398. attocode-0.1.8/src/attocode/tui/widgets/status_bar.py +342 -0
  399. attocode-0.1.8/src/attocode/tui/widgets/streaming_buffer.py +80 -0
  400. attocode-0.1.8/src/attocode/tui/widgets/swarm/__init__.py +42 -0
  401. attocode-0.1.8/src/attocode/tui/widgets/swarm/agent_grid.py +275 -0
  402. attocode-0.1.8/src/attocode/tui/widgets/swarm/ast_blackboard_pane.py +265 -0
  403. attocode-0.1.8/src/attocode/tui/widgets/swarm/dag_view.py +222 -0
  404. attocode-0.1.8/src/attocode/tui/widgets/swarm/decisions_pane.py +174 -0
  405. attocode-0.1.8/src/attocode/tui/widgets/swarm/detail_inspector.py +200 -0
  406. attocode-0.1.8/src/attocode/tui/widgets/swarm/event_timeline.py +181 -0
  407. attocode-0.1.8/src/attocode/tui/widgets/swarm/file_activity_map.py +80 -0
  408. attocode-0.1.8/src/attocode/tui/widgets/swarm/files_pane.py +174 -0
  409. attocode-0.1.8/src/attocode/tui/widgets/swarm/messages_log.py +94 -0
  410. attocode-0.1.8/src/attocode/tui/widgets/swarm/model_health_pane.py +140 -0
  411. attocode-0.1.8/src/attocode/tui/widgets/swarm/overview_pane.py +156 -0
  412. attocode-0.1.8/src/attocode/tui/widgets/swarm/quality_pane.py +203 -0
  413. attocode-0.1.8/src/attocode/tui/widgets/swarm/task_board.py +320 -0
  414. attocode-0.1.8/src/attocode/tui/widgets/swarm/tasks_pane.py +237 -0
  415. attocode-0.1.8/src/attocode/tui/widgets/swarm/workers_pane.py +280 -0
  416. attocode-0.1.8/src/attocode/tui/widgets/swarm_panel.py +153 -0
  417. attocode-0.1.8/src/attocode/tui/widgets/tasks_panel.py +82 -0
  418. attocode-0.1.8/src/attocode/tui/widgets/thinking_panel.py +67 -0
  419. attocode-0.1.8/src/attocode/tui/widgets/token_sparkline.py +25 -0
  420. attocode-0.1.8/src/attocode/tui/widgets/tool_calls.py +312 -0
  421. attocode-0.1.8/src/attocode/tui/widgets/transparency_panel.py +113 -0
  422. attocode-0.1.8/src/attocode/tui/widgets/welcome_banner.py +42 -0
  423. attocode-0.1.8/src/attocode/types/__init__.py +96 -0
  424. attocode-0.1.8/src/attocode/types/agent.py +181 -0
  425. attocode-0.1.8/src/attocode/types/budget.py +89 -0
  426. attocode-0.1.8/src/attocode/types/events.py +254 -0
  427. attocode-0.1.8/src/attocode/types/messages.py +210 -0
  428. attocode-0.1.8/src/attocode_core/__init__.py +1 -0
  429. attocode-0.1.8/src/attocode_core/ast_index/__init__.py +1 -0
  430. attocode-0.1.8/src/attocode_core/ast_index/indexer.py +109 -0
  431. attocode-0.1.8/src/attocode_core/dependency_graph/__init__.py +1 -0
  432. attocode-0.1.8/src/attocode_core/dependency_graph/graph.py +34 -0
  433. attocode-0.1.8/src/attocode_core/py.typed +0 -0
  434. attocode-0.1.8/src/attoswarm/__init__.py +7 -0
  435. attocode-0.1.8/src/attoswarm/__main__.py +3 -0
  436. attocode-0.1.8/src/attoswarm/adapters/__init__.py +1 -0
  437. attocode-0.1.8/src/attoswarm/adapters/aider.py +10 -0
  438. attocode-0.1.8/src/attoswarm/adapters/attocode.py +10 -0
  439. attocode-0.1.8/src/attoswarm/adapters/base.py +293 -0
  440. attocode-0.1.8/src/attoswarm/adapters/claude.py +10 -0
  441. attocode-0.1.8/src/attoswarm/adapters/codex.py +10 -0
  442. attocode-0.1.8/src/attoswarm/adapters/registry.py +22 -0
  443. attocode-0.1.8/src/attoswarm/cli.py +918 -0
  444. attocode-0.1.8/src/attoswarm/config/__init__.py +1 -0
  445. attocode-0.1.8/src/attoswarm/config/loader.py +74 -0
  446. attocode-0.1.8/src/attoswarm/config/schema.py +96 -0
  447. attocode-0.1.8/src/attoswarm/coordinator/__init__.py +1 -0
  448. attocode-0.1.8/src/attoswarm/coordinator/aot_graph.py +270 -0
  449. attocode-0.1.8/src/attoswarm/coordinator/budget.py +33 -0
  450. attocode-0.1.8/src/attoswarm/coordinator/event_bus.py +76 -0
  451. attocode-0.1.8/src/attoswarm/coordinator/loop.py +1435 -0
  452. attocode-0.1.8/src/attoswarm/coordinator/merge_queue.py +70 -0
  453. attocode-0.1.8/src/attoswarm/coordinator/orchestrator.py +505 -0
  454. attocode-0.1.8/src/attoswarm/coordinator/scheduler.py +67 -0
  455. attocode-0.1.8/src/attoswarm/coordinator/state_writer.py +101 -0
  456. attocode-0.1.8/src/attoswarm/coordinator/subagent_manager.py +243 -0
  457. attocode-0.1.8/src/attoswarm/coordinator/watchdog.py +36 -0
  458. attocode-0.1.8/src/attoswarm/protocol/__init__.py +1 -0
  459. attocode-0.1.8/src/attoswarm/protocol/io.py +38 -0
  460. attocode-0.1.8/src/attoswarm/protocol/locks.py +19 -0
  461. attocode-0.1.8/src/attoswarm/protocol/models.py +198 -0
  462. attocode-0.1.8/src/attoswarm/protocol/schemas/agent.inbox.schema.json +12 -0
  463. attocode-0.1.8/src/attoswarm/protocol/schemas/agent.outbox.schema.json +12 -0
  464. attocode-0.1.8/src/attoswarm/protocol/schemas/swarm.manifest.schema.json +15 -0
  465. attocode-0.1.8/src/attoswarm/protocol/schemas/swarm.state.schema.json +14 -0
  466. attocode-0.1.8/src/attoswarm/py.typed +0 -0
  467. attocode-0.1.8/src/attoswarm/replay/__init__.py +1 -0
  468. attocode-0.1.8/src/attoswarm/replay/attocode_bridge.py +20 -0
  469. attocode-0.1.8/src/attoswarm/tui/__init__.py +1 -0
  470. attocode-0.1.8/src/attoswarm/tui/app.py +370 -0
  471. attocode-0.1.8/src/attoswarm/tui/stores.py +545 -0
  472. attocode-0.1.8/src/attoswarm/tui/styles/swarm.tcss +252 -0
  473. attocode-0.1.8/src/attoswarm/workspace/__init__.py +1 -0
  474. attocode-0.1.8/src/attoswarm/workspace/file_ledger.py +373 -0
  475. attocode-0.1.8/src/attoswarm/workspace/reconciler.py +267 -0
  476. attocode-0.1.8/src/attoswarm/workspace/worktree.py +115 -0
  477. attocode-0.1.8/tests/__init__.py +0 -0
  478. attocode-0.1.8/tests/conftest.py +92 -0
  479. attocode-0.1.8/tests/helpers/__init__.py +8 -0
  480. attocode-0.1.8/tests/helpers/fixtures.py +295 -0
  481. attocode-0.1.8/tests/helpers/trace_verifier.py +342 -0
  482. attocode-0.1.8/tests/integration/__init__.py +0 -0
  483. attocode-0.1.8/tests/integration/test_attoswarm_live_smoke.py +92 -0
  484. attocode-0.1.8/tests/integration/test_attoswarm_smoke.py +143 -0
  485. attocode-0.1.8/tests/integration/test_single_turn.py +211 -0
  486. attocode-0.1.8/tests/snapshots/__init__.py +0 -0
  487. attocode-0.1.8/tests/unit/__init__.py +0 -0
  488. attocode-0.1.8/tests/unit/_write_helper.py +0 -0
  489. attocode-0.1.8/tests/unit/attocode_core/test_indexer.py +15 -0
  490. attocode-0.1.8/tests/unit/attoswarm/test_adapters_parser.py +17 -0
  491. attocode-0.1.8/tests/unit/attoswarm/test_aot_graph.py +174 -0
  492. attocode-0.1.8/tests/unit/attoswarm/test_ast_service.py +187 -0
  493. attocode-0.1.8/tests/unit/attoswarm/test_budget.py +13 -0
  494. attocode-0.1.8/tests/unit/attoswarm/test_cli.py +65 -0
  495. attocode-0.1.8/tests/unit/attoswarm/test_default_command.py +363 -0
  496. attocode-0.1.8/tests/unit/attoswarm/test_event_bus.py +56 -0
  497. attocode-0.1.8/tests/unit/attoswarm/test_file_ledger.py +115 -0
  498. attocode-0.1.8/tests/unit/attoswarm/test_merge_queue.py +12 -0
  499. attocode-0.1.8/tests/unit/attoswarm/test_reconciler.py +123 -0
  500. attocode-0.1.8/tests/unit/attoswarm/test_resume.py +37 -0
  501. attocode-0.1.8/tests/unit/attoswarm/test_scheduler.py +379 -0
  502. attocode-0.1.8/tests/unit/attoswarm/test_spawn_log_touch.py +49 -0
  503. attocode-0.1.8/tests/unit/attoswarm/test_stores.py +313 -0
  504. attocode-0.1.8/tests/unit/attoswarm/test_worktree.py +224 -0
  505. attocode-0.1.8/tests/unit/core/__init__.py +0 -0
  506. attocode-0.1.8/tests/unit/core/test_agent.py +337 -0
  507. attocode-0.1.8/tests/unit/core/test_agent_state_machine.py +786 -0
  508. attocode-0.1.8/tests/unit/core/test_completion.py +127 -0
  509. attocode-0.1.8/tests/unit/core/test_context.py +141 -0
  510. attocode-0.1.8/tests/unit/core/test_loop.py +290 -0
  511. attocode-0.1.8/tests/unit/core/test_response_handler.py +194 -0
  512. attocode-0.1.8/tests/unit/core/test_subagent_spawner.py +395 -0
  513. attocode-0.1.8/tests/unit/core/test_tool_executor.py +171 -0
  514. attocode-0.1.8/tests/unit/integrations/__init__.py +0 -0
  515. attocode-0.1.8/tests/unit/integrations/agents/__init__.py +0 -0
  516. attocode-0.1.8/tests/unit/integrations/agents/test_async_subagent.py +146 -0
  517. attocode-0.1.8/tests/unit/integrations/agents/test_blackboard.py +964 -0
  518. attocode-0.1.8/tests/unit/integrations/agents/test_delegation.py +653 -0
  519. attocode-0.1.8/tests/unit/integrations/budget/__init__.py +0 -0
  520. attocode-0.1.8/tests/unit/integrations/budget/test_budget_pool.py +622 -0
  521. attocode-0.1.8/tests/unit/integrations/budget/test_cancellation.py +86 -0
  522. attocode-0.1.8/tests/unit/integrations/budget/test_dynamic_budget.py +640 -0
  523. attocode-0.1.8/tests/unit/integrations/budget/test_economics.py +161 -0
  524. attocode-0.1.8/tests/unit/integrations/budget/test_loop_detector.py +79 -0
  525. attocode-0.1.8/tests/unit/integrations/budget/test_phase_tracker.py +78 -0
  526. attocode-0.1.8/tests/unit/integrations/budget/test_resources.py +93 -0
  527. attocode-0.1.8/tests/unit/integrations/context/__init__.py +0 -0
  528. attocode-0.1.8/tests/unit/integrations/context/test_auto_compaction.py +76 -0
  529. attocode-0.1.8/tests/unit/integrations/context/test_code_analyzer.py +428 -0
  530. attocode-0.1.8/tests/unit/integrations/context/test_codebase_ast.py +532 -0
  531. attocode-0.1.8/tests/unit/integrations/context/test_codebase_context.py +580 -0
  532. attocode-0.1.8/tests/unit/integrations/context/test_compaction.py +96 -0
  533. attocode-0.1.8/tests/unit/integrations/context/test_context_engineering.py +92 -0
  534. attocode-0.1.8/tests/unit/integrations/context/test_semantic_cache.py +148 -0
  535. attocode-0.1.8/tests/unit/integrations/mcp/__init__.py +0 -0
  536. attocode-0.1.8/tests/unit/integrations/mcp/test_client_manager.py +813 -0
  537. attocode-0.1.8/tests/unit/integrations/mcp/test_config.py +411 -0
  538. attocode-0.1.8/tests/unit/integrations/mcp/test_tool_validator.py +337 -0
  539. attocode-0.1.8/tests/unit/integrations/persistence/__init__.py +0 -0
  540. attocode-0.1.8/tests/unit/integrations/persistence/test_store.py +145 -0
  541. attocode-0.1.8/tests/unit/integrations/persistence/test_store_extended.py +634 -0
  542. attocode-0.1.8/tests/unit/integrations/quality/__init__.py +0 -0
  543. attocode-0.1.8/tests/unit/integrations/quality/test_auto_checkpoint.py +203 -0
  544. attocode-0.1.8/tests/unit/integrations/quality/test_dead_letter_queue.py +379 -0
  545. attocode-0.1.8/tests/unit/integrations/quality/test_health_check.py +435 -0
  546. attocode-0.1.8/tests/unit/integrations/recording/__init__.py +0 -0
  547. attocode-0.1.8/tests/unit/integrations/recording/test_graph_types.py +802 -0
  548. attocode-0.1.8/tests/unit/integrations/recording/test_playback.py +754 -0
  549. attocode-0.1.8/tests/unit/integrations/recording/test_recording.py +1009 -0
  550. attocode-0.1.8/tests/unit/integrations/safety/__init__.py +0 -0
  551. attocode-0.1.8/tests/unit/integrations/safety/test_bash_policy.py +56 -0
  552. attocode-0.1.8/tests/unit/integrations/safety/test_docker.py +284 -0
  553. attocode-0.1.8/tests/unit/integrations/safety/test_edit_validator.py +120 -0
  554. attocode-0.1.8/tests/unit/integrations/safety/test_landlock.py +338 -0
  555. attocode-0.1.8/tests/unit/integrations/safety/test_policy_engine.py +64 -0
  556. attocode-0.1.8/tests/unit/integrations/safety/test_sandbox.py +74 -0
  557. attocode-0.1.8/tests/unit/integrations/safety/test_seatbelt.py +310 -0
  558. attocode-0.1.8/tests/unit/integrations/skills/__init__.py +0 -0
  559. attocode-0.1.8/tests/unit/integrations/skills/test_dependency_graph.py +428 -0
  560. attocode-0.1.8/tests/unit/integrations/skills/test_state.py +328 -0
  561. attocode-0.1.8/tests/unit/integrations/swarm/__init__.py +0 -0
  562. attocode-0.1.8/tests/unit/integrations/swarm/test_cc_spawner.py +457 -0
  563. attocode-0.1.8/tests/unit/integrations/swarm/test_critic.py +265 -0
  564. attocode-0.1.8/tests/unit/integrations/swarm/test_roles.py +243 -0
  565. attocode-0.1.8/tests/unit/integrations/swarm/test_swarm_new.py +277 -0
  566. attocode-0.1.8/tests/unit/integrations/swarm/test_worktree_manager.py +321 -0
  567. attocode-0.1.8/tests/unit/integrations/tasks/__init__.py +0 -0
  568. attocode-0.1.8/tests/unit/integrations/tasks/test_decomposer.py +237 -0
  569. attocode-0.1.8/tests/unit/integrations/tasks/test_interactive_planning.py +926 -0
  570. attocode-0.1.8/tests/unit/integrations/tasks/test_task_manager.py +445 -0
  571. attocode-0.1.8/tests/unit/integrations/tasks/test_verification_gate.py +1296 -0
  572. attocode-0.1.8/tests/unit/integrations/tasks/test_work_log.py +279 -0
  573. attocode-0.1.8/tests/unit/integrations/test_agents.py +885 -0
  574. attocode-0.1.8/tests/unit/integrations/test_mcp.py +476 -0
  575. attocode-0.1.8/tests/unit/integrations/test_message_bus.py +154 -0
  576. attocode-0.1.8/tests/unit/integrations/test_quality.py +1435 -0
  577. attocode-0.1.8/tests/unit/integrations/test_streaming_lsp.py +2066 -0
  578. attocode-0.1.8/tests/unit/integrations/test_swarm_core.py +1894 -0
  579. attocode-0.1.8/tests/unit/integrations/test_swarm_infra.py +2524 -0
  580. attocode-0.1.8/tests/unit/integrations/test_swarm_types.py +2169 -0
  581. attocode-0.1.8/tests/unit/integrations/utilities/__init__.py +0 -0
  582. attocode-0.1.8/tests/unit/integrations/utilities/test_diff_utils.py +60 -0
  583. attocode-0.1.8/tests/unit/integrations/utilities/test_hooks.py +76 -0
  584. attocode-0.1.8/tests/unit/integrations/utilities/test_ignore.py +53 -0
  585. attocode-0.1.8/tests/unit/integrations/utilities/test_mode_manager.py +295 -0
  586. attocode-0.1.8/tests/unit/integrations/utilities/test_new_modules.py +608 -0
  587. attocode-0.1.8/tests/unit/integrations/utilities/test_resilience.py +420 -0
  588. attocode-0.1.8/tests/unit/integrations/utilities/test_rules.py +45 -0
  589. attocode-0.1.8/tests/unit/integrations/utilities/test_thread_manager.py +727 -0
  590. attocode-0.1.8/tests/unit/integrations/utilities/test_token_estimate.py +63 -0
  591. attocode-0.1.8/tests/unit/integrations/utilities/test_undo.py +340 -0
  592. attocode-0.1.8/tests/unit/providers/__init__.py +0 -0
  593. attocode-0.1.8/tests/unit/providers/test_anthropic.py +288 -0
  594. attocode-0.1.8/tests/unit/providers/test_azure.py +285 -0
  595. attocode-0.1.8/tests/unit/providers/test_fallback_chain.py +438 -0
  596. attocode-0.1.8/tests/unit/providers/test_mock.py +152 -0
  597. attocode-0.1.8/tests/unit/providers/test_model_cache.py +302 -0
  598. attocode-0.1.8/tests/unit/providers/test_openai.py +308 -0
  599. attocode-0.1.8/tests/unit/providers/test_openrouter.py +223 -0
  600. attocode-0.1.8/tests/unit/providers/test_registry.py +109 -0
  601. attocode-0.1.8/tests/unit/providers/test_resilient_provider.py +325 -0
  602. attocode-0.1.8/tests/unit/test_adapters.py +216 -0
  603. attocode-0.1.8/tests/unit/test_cli.py +179 -0
  604. attocode-0.1.8/tests/unit/test_code_intel.py +1191 -0
  605. attocode-0.1.8/tests/unit/test_defaults.py +145 -0
  606. attocode-0.1.8/tests/unit/test_errors.py +175 -0
  607. attocode-0.1.8/tests/unit/test_shared.py +271 -0
  608. attocode-0.1.8/tests/unit/test_trace_verifier.py +354 -0
  609. attocode-0.1.8/tests/unit/test_tricks.py +1203 -0
  610. attocode-0.1.8/tests/unit/test_types.py +399 -0
  611. attocode-0.1.8/tests/unit/tools/__init__.py +0 -0
  612. attocode-0.1.8/tests/unit/tools/test_bash.py +66 -0
  613. attocode-0.1.8/tests/unit/tools/test_file_ops.py +232 -0
  614. attocode-0.1.8/tests/unit/tools/test_registry.py +224 -0
  615. attocode-0.1.8/tests/unit/tools/test_search.py +111 -0
  616. attocode-0.1.8/tests/unit/tracing/__init__.py +0 -0
  617. attocode-0.1.8/tests/unit/tracing/test_analysis.py +377 -0
  618. attocode-0.1.8/tests/unit/tricks/__init__.py +0 -0
  619. attocode-0.1.8/tests/unit/tricks/test_failure_evidence.py +360 -0
  620. attocode-0.1.8/tests/unit/tricks/test_json_utils.py +152 -0
  621. attocode-0.1.8/tests/unit/tricks/test_kv_cache.py +286 -0
  622. attocode-0.1.8/tests/unit/tricks/test_recitation.py +296 -0
  623. attocode-0.1.8/tests/unit/tricks/test_reversible_compaction.py +320 -0
  624. attocode-0.1.8/tests/unit/tui/__init__.py +0 -0
  625. attocode-0.1.8/tests/unit/tui/__snapshots__/test_attoswarm_snapshots/test_snapshot_completed.raw +192 -0
  626. attocode-0.1.8/tests/unit/tui/__snapshots__/test_attoswarm_snapshots/test_snapshot_empty_init.raw +186 -0
  627. attocode-0.1.8/tests/unit/tui/__snapshots__/test_attoswarm_snapshots/test_snapshot_executing.raw +193 -0
  628. attocode-0.1.8/tests/unit/tui/__snapshots__/test_attoswarm_snapshots/test_snapshot_failed_with_errors.raw +193 -0
  629. attocode-0.1.8/tests/unit/tui/__snapshots__/test_attoswarm_snapshots/test_snapshot_many_agents.raw +234 -0
  630. attocode-0.1.8/tests/unit/tui/test_app.py +145 -0
  631. attocode-0.1.8/tests/unit/tui/test_attoswarm_snapshots.py +255 -0
  632. attocode-0.1.8/tests/unit/tui/test_bridges.py +153 -0
  633. attocode-0.1.8/tests/unit/tui/test_dashboard_panes.py +144 -0
  634. attocode-0.1.8/tests/unit/tui/test_dialogs.py +26 -0
  635. attocode-0.1.8/tests/unit/tui/test_events.py +83 -0
  636. attocode-0.1.8/tests/unit/tui/test_live_dashboard.py +137 -0
  637. attocode-0.1.8/tests/unit/tui/test_new_widgets.py +160 -0
  638. attocode-0.1.8/tests/unit/tui/test_swarm_panel.py +271 -0
  639. attocode-0.1.8/tests/unit/tui/test_theme.py +58 -0
  640. attocode-0.1.8/tests/unit/tui/test_viz_widgets.py +265 -0
  641. attocode-0.1.8/tests/unit/tui/test_widgets.py +95 -0
  642. attocode-0.1.8/uv.lock +2035 -0
@@ -0,0 +1,22 @@
1
+ {
2
+ "mcpServers": {
3
+ "context7": {
4
+ "command": "npx",
5
+ "args": [
6
+ "-y",
7
+ "@upstash/context7-mcp@latest"
8
+ ],
9
+ "env": {}
10
+ },
11
+ "github": {
12
+ "command": "npx",
13
+ "args": [
14
+ "-y",
15
+ "@modelcontextprotocol/server-github"
16
+ ],
17
+ "env": {
18
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "servers": {
3
+ "context7": {
4
+ "command": "npx",
5
+ "args": [
6
+ "-y",
7
+ "@upstash/context7-mcp@latest"
8
+ ],
9
+ "env": {}
10
+ },
11
+ "github": {
12
+ "command": "npx",
13
+ "args": [
14
+ "-y",
15
+ "@modelcontextprotocol/server-github"
16
+ ],
17
+ "env": {
18
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,116 @@
1
+ # /swarm-verify — Post-Run Trace Verification
2
+
3
+ Verify the integrity of a hybrid swarm run by analysing its trace data.
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ /swarm-verify <run_dir>
9
+ ```
10
+
11
+ Where `<run_dir>` is the path to a swarm run directory (e.g. `.agent/hybrid-swarm/run_abc123`).
12
+
13
+ ## Verification Procedure
14
+
15
+ When invoked, follow these steps exactly:
16
+
17
+ ### Step 1 — Load Trace Data
18
+
19
+ ```python
20
+ from tests.helpers.trace_verifier import TraceVerifier
21
+
22
+ v = TraceVerifier("<run_dir>")
23
+ ```
24
+
25
+ Report file counts:
26
+ - Number of events in `swarm.events.jsonl`
27
+ - Number of task files in `tasks/`
28
+ - Current phase from `swarm.state.json`
29
+
30
+ ### Step 2 — Check for Poisoned Prompts
31
+
32
+ ```python
33
+ result = v.assert_no_poisoned_prompts()
34
+ ```
35
+
36
+ Poisoned markers: `[TASK_DONE]`, `[TASK_FAILED]`, `[HEARTBEAT]`, `[CONTROL]`, `[EXIT]`
37
+
38
+ These should never appear in raw `agent.event` messages — they indicate the agent is echoing or injecting control signals.
39
+
40
+ ### Step 3 — Validate Task State Machine
41
+
42
+ ```python
43
+ result = v.assert_correct_task_transitions()
44
+ ```
45
+
46
+ Every `task.transition` event must follow the canonical FSM defined in `attoswarm.coordinator.loop.TRANSITIONS`. Report any illegal transitions.
47
+
48
+ ### Step 4 — Check Terminal Events
49
+
50
+ ```python
51
+ result = v.assert_all_tasks_have_terminal_events()
52
+ ```
53
+
54
+ Every task that reached `done` should have matching `agent.task.exit` and `agent.task.classified` events.
55
+
56
+ ### Step 5 — Check for Stuck Agents
57
+
58
+ ```python
59
+ result = v.assert_no_stuck_agents()
60
+ ```
61
+
62
+ No heartbeat gap > 30s between consecutive `agent.event` entries for the same agent.
63
+
64
+ ### Step 6 — Verify Budget Limits
65
+
66
+ ```python
67
+ result = v.assert_budget_within_limits()
68
+ ```
69
+
70
+ `tokens_used <= tokens_max` and `cost_used <= cost_max`.
71
+
72
+ ### Step 7 — Check Exit Code Propagation
73
+
74
+ ```python
75
+ result = v.assert_exit_codes_propagated()
76
+ ```
77
+
78
+ No tasks left in `running` status when the assigned agent has a non-null exit code.
79
+
80
+ ### Step 8 — Verify Coding Task Output
81
+
82
+ ```python
83
+ result = v.assert_coding_tasks_produced_output()
84
+ ```
85
+
86
+ Implement/test/integrate tasks that reached `done` should show evidence of file operations.
87
+
88
+ ### Step 9 — Run Screenshot Comparison (Optional)
89
+
90
+ If baselines exist in `tests/snapshots/test_attoswarm_snapshots/`, optionally run:
91
+
92
+ ```bash
93
+ .venv/bin/python -m pytest tests/unit/tui/test_attoswarm_snapshots.py -v
94
+ ```
95
+
96
+ ### Step 10 — Print Summary
97
+
98
+ ```python
99
+ print(v.summary())
100
+ ```
101
+
102
+ Format as a table showing each check with PASS/FAIL status and details.
103
+
104
+ ## Quick Run-All
105
+
106
+ For a one-shot summary:
107
+
108
+ ```python
109
+ from tests.helpers.trace_verifier import TraceVerifier
110
+ print(TraceVerifier("<run_dir>").summary())
111
+ ```
112
+
113
+ ## Exit Criteria
114
+
115
+ - All 7 checks pass: run is verified clean
116
+ - Any check fails: report violations and suggest remediation
@@ -0,0 +1,72 @@
1
+ version: 1
2
+ run:
3
+ name: hybrid-demo
4
+ working_dir: .
5
+ run_dir: .agent/hybrid-swarm
6
+ poll_interval_ms: 250
7
+ max_runtime_seconds: 180
8
+
9
+ roles:
10
+ - role_id: orchestrator
11
+ role_type: orchestrator
12
+ backend: claude
13
+ model: claude-opus-4-6
14
+ count: 1
15
+ write_access: false
16
+ workspace_mode: shared_ro
17
+ task_kinds: [analysis, planning]
18
+
19
+ - role_id: implementer
20
+ role_type: worker
21
+ backend: codex
22
+ model: o3
23
+ count: 2
24
+ write_access: true
25
+ workspace_mode: worktree
26
+ task_kinds: [implement, refactor, test]
27
+
28
+ - role_id: judge
29
+ role_type: judge
30
+ backend: aider
31
+ model: sonnet
32
+ count: 2
33
+ write_access: false
34
+ workspace_mode: shared_ro
35
+ task_kinds: [review, judge]
36
+
37
+ - role_id: researcher
38
+ role_type: researcher
39
+ backend: attocode
40
+ model: claude-sonnet-4-20250514
41
+ count: 1
42
+ write_access: false
43
+ workspace_mode: shared_ro
44
+ task_kinds: [research, analysis]
45
+
46
+ - role_id: merger
47
+ role_type: merger
48
+ backend: codex
49
+ model: o3
50
+ count: 1
51
+ write_access: true
52
+ workspace_mode: worktree
53
+ task_kinds: [merge, synthesize]
54
+
55
+ budget:
56
+ max_tokens: 6000000
57
+ max_cost_usd: 30
58
+ reserve_ratio: 0.15
59
+ chars_per_token_fallback: 4.0
60
+
61
+ merge:
62
+ authority_role: merger
63
+ judge_roles: [judge]
64
+ quality_threshold: 0.75
65
+ judge_policy: quorum
66
+ auto_apply_non_conflicting: true
67
+
68
+ watchdog:
69
+ heartbeat_timeout_seconds: 45
70
+
71
+ retries:
72
+ max_task_attempts: 2
@@ -0,0 +1,42 @@
1
+ # Attocode Swarm Configuration -- 2 Claude Workers
2
+ # Copy to .attocode/swarm.yaml to use
3
+ #
4
+ # See docs/swarm-guide.md for a full walkthrough.
5
+
6
+ # Orchestrator model (coordinates decomposition, wave review, synthesis)
7
+ models:
8
+ orchestrator: anthropic/claude-sonnet-4-20250514
9
+
10
+ # Worker definitions
11
+ workers:
12
+ - name: coder
13
+ model: anthropic/claude-sonnet-4-20250514
14
+ capabilities: [code, test, refactor]
15
+ count: 1
16
+
17
+ - name: reviewer
18
+ model: anthropic/claude-sonnet-4-20250514
19
+ capabilities: [review, research]
20
+ count: 1
21
+
22
+ # Budget limits
23
+ budget:
24
+ totalTokens: 5000000 # 5M tokens across all workers + orchestrator
25
+ maxCost: 10.0 # Maximum spend in USD
26
+ maxConcurrency: 2 # Maximum workers running in parallel
27
+
28
+ # Quality gates (score each task output 1-5, reject below threshold)
29
+ quality:
30
+ enabled: true
31
+ # threshold: 3 # Minimum quality score (1-5)
32
+
33
+ # Feature flags
34
+ features:
35
+ planning: true # LLM-assisted task decomposition
36
+ verification: true # Run integration checks after all waves
37
+
38
+ # Retry settings
39
+ # retries:
40
+ # workerRetries: 2 # Max retries per task
41
+ # rateLimitRetries: 3 # Max retries on rate limit
42
+ # enableModelFailover: true