auto-coder 1.0.0__py3-none-any.whl → 2.0.0__py3-none-any.whl

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.

Potentially problematic release.


This version of auto-coder might be problematic. Click here for more details.

Files changed (574) hide show
  1. auto_coder-2.0.0.dist-info/LICENSE +158 -0
  2. auto_coder-2.0.0.dist-info/METADATA +558 -0
  3. auto_coder-2.0.0.dist-info/RECORD +795 -0
  4. {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/WHEEL +1 -1
  5. {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/entry_points.txt +3 -3
  6. autocoder/__init__.py +31 -0
  7. autocoder/agent/auto_filegroup.py +32 -13
  8. autocoder/agent/auto_learn_from_commit.py +9 -1
  9. autocoder/agent/base_agentic/__init__.py +3 -0
  10. autocoder/agent/base_agentic/agent_hub.py +1 -1
  11. autocoder/agent/base_agentic/base_agent.py +235 -136
  12. autocoder/agent/base_agentic/default_tools.py +119 -118
  13. autocoder/agent/base_agentic/test_base_agent.py +1 -1
  14. autocoder/agent/base_agentic/tool_registry.py +32 -20
  15. autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +24 -3
  16. autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +24 -11
  17. autocoder/agent/base_agentic/types.py +42 -0
  18. autocoder/agent/entry_command_agent/chat.py +73 -59
  19. autocoder/auto_coder.py +31 -40
  20. autocoder/auto_coder_rag.py +11 -1084
  21. autocoder/auto_coder_runner.py +970 -2345
  22. autocoder/auto_coder_terminal.py +26 -0
  23. autocoder/auto_coder_terminal_v3.py +190 -0
  24. autocoder/chat/conf_command.py +224 -124
  25. autocoder/chat/models_command.py +361 -299
  26. autocoder/chat/rules_command.py +79 -31
  27. autocoder/chat_auto_coder.py +988 -398
  28. autocoder/chat_auto_coder_lang.py +23 -732
  29. autocoder/commands/auto_command.py +25 -8
  30. autocoder/commands/auto_web.py +1 -1
  31. autocoder/commands/tools.py +44 -44
  32. autocoder/common/__init__.py +150 -128
  33. autocoder/common/ac_style_command_parser/__init__.py +39 -2
  34. autocoder/common/ac_style_command_parser/config.py +422 -0
  35. autocoder/common/ac_style_command_parser/parser.py +292 -78
  36. autocoder/common/ac_style_command_parser/test_parser.py +241 -16
  37. autocoder/common/ac_style_command_parser/test_typed_parser.py +342 -0
  38. autocoder/common/ac_style_command_parser/typed_parser.py +653 -0
  39. autocoder/common/action_yml_file_manager.py +25 -13
  40. autocoder/common/agent_events/__init__.py +52 -0
  41. autocoder/common/agent_events/agent_event_emitter.py +193 -0
  42. autocoder/common/agent_events/event_factory.py +177 -0
  43. autocoder/common/agent_events/examples.py +307 -0
  44. autocoder/common/agent_events/types.py +113 -0
  45. autocoder/common/agent_events/utils.py +68 -0
  46. autocoder/common/agent_hooks/__init__.py +44 -0
  47. autocoder/common/agent_hooks/examples.py +582 -0
  48. autocoder/common/agent_hooks/hook_executor.py +217 -0
  49. autocoder/common/agent_hooks/hook_manager.py +288 -0
  50. autocoder/common/agent_hooks/types.py +133 -0
  51. autocoder/common/agent_hooks/utils.py +99 -0
  52. autocoder/common/agent_query_queue/queue_executor.py +324 -0
  53. autocoder/common/agent_query_queue/queue_manager.py +325 -0
  54. autocoder/common/agents/__init__.py +11 -0
  55. autocoder/common/agents/agent_manager.py +323 -0
  56. autocoder/common/agents/agent_parser.py +189 -0
  57. autocoder/common/agents/example_usage.py +344 -0
  58. autocoder/common/agents/integration_example.py +330 -0
  59. autocoder/common/agents/test_agent_parser.py +545 -0
  60. autocoder/common/async_utils.py +101 -0
  61. autocoder/common/auto_coder_lang.py +23 -972
  62. autocoder/common/autocoderargs_parser/__init__.py +14 -0
  63. autocoder/common/autocoderargs_parser/parser.py +184 -0
  64. autocoder/common/autocoderargs_parser/tests/__init__.py +1 -0
  65. autocoder/common/autocoderargs_parser/tests/test_args_parser.py +235 -0
  66. autocoder/common/autocoderargs_parser/tests/test_token_parser.py +195 -0
  67. autocoder/common/autocoderargs_parser/token_parser.py +290 -0
  68. autocoder/common/buildin_tokenizer.py +2 -4
  69. autocoder/common/code_auto_generate.py +149 -74
  70. autocoder/common/code_auto_generate_diff.py +163 -70
  71. autocoder/common/code_auto_generate_editblock.py +179 -89
  72. autocoder/common/code_auto_generate_strict_diff.py +167 -72
  73. autocoder/common/code_auto_merge_editblock.py +13 -6
  74. autocoder/common/code_modification_ranker.py +1 -1
  75. autocoder/common/command_completer.py +3 -3
  76. autocoder/common/command_file_manager/manager.py +183 -47
  77. autocoder/common/command_file_manager/test_command_file_manager.py +507 -0
  78. autocoder/common/command_templates.py +1 -1
  79. autocoder/common/conf_utils.py +2 -4
  80. autocoder/common/conversations/config.py +11 -3
  81. autocoder/common/conversations/get_conversation_manager.py +100 -2
  82. autocoder/common/conversations/llm_stats_models.py +264 -0
  83. autocoder/common/conversations/manager.py +112 -28
  84. autocoder/common/conversations/models.py +16 -2
  85. autocoder/common/conversations/storage/index_manager.py +134 -10
  86. autocoder/common/core_config/__init__.py +63 -0
  87. autocoder/common/core_config/agentic_mode_manager.py +109 -0
  88. autocoder/common/core_config/base_manager.py +123 -0
  89. autocoder/common/core_config/compatibility.py +151 -0
  90. autocoder/common/core_config/config_manager.py +156 -0
  91. autocoder/common/core_config/conversation_manager.py +31 -0
  92. autocoder/common/core_config/exclude_manager.py +72 -0
  93. autocoder/common/core_config/file_manager.py +177 -0
  94. autocoder/common/core_config/human_as_model_manager.py +129 -0
  95. autocoder/common/core_config/lib_manager.py +54 -0
  96. autocoder/common/core_config/main_manager.py +81 -0
  97. autocoder/common/core_config/mode_manager.py +126 -0
  98. autocoder/common/core_config/models.py +70 -0
  99. autocoder/common/core_config/test_memory_manager.py +1056 -0
  100. autocoder/common/env_manager.py +282 -0
  101. autocoder/common/env_manager_usage_example.py +211 -0
  102. autocoder/common/file_checkpoint/conversation_checkpoint.py +19 -19
  103. autocoder/common/file_checkpoint/manager.py +264 -48
  104. autocoder/common/file_checkpoint/test_backup.py +1 -18
  105. autocoder/common/file_checkpoint/test_manager.py +270 -1
  106. autocoder/common/file_checkpoint/test_store.py +1 -17
  107. autocoder/common/file_handler/__init__.py +23 -0
  108. autocoder/common/file_handler/active_context_handler.py +159 -0
  109. autocoder/common/file_handler/add_files_handler.py +409 -0
  110. autocoder/common/file_handler/chat_handler.py +180 -0
  111. autocoder/common/file_handler/coding_handler.py +401 -0
  112. autocoder/common/file_handler/commit_handler.py +200 -0
  113. autocoder/common/file_handler/lib_handler.py +156 -0
  114. autocoder/common/file_handler/list_files_handler.py +111 -0
  115. autocoder/common/file_handler/mcp_handler.py +268 -0
  116. autocoder/common/file_handler/models_handler.py +493 -0
  117. autocoder/common/file_handler/remove_files_handler.py +172 -0
  118. autocoder/common/git_utils.py +44 -8
  119. autocoder/common/global_cancel.py +15 -6
  120. autocoder/common/ignorefiles/test_ignore_file_utils.py +1 -1
  121. autocoder/common/international/__init__.py +31 -0
  122. autocoder/common/international/demo_international.py +92 -0
  123. autocoder/common/international/message_manager.py +157 -0
  124. autocoder/common/international/messages/__init__.py +56 -0
  125. autocoder/common/international/messages/async_command_messages.py +507 -0
  126. autocoder/common/international/messages/auto_coder_messages.py +2208 -0
  127. autocoder/common/international/messages/chat_auto_coder_messages.py +1547 -0
  128. autocoder/common/international/messages/command_help_messages.py +986 -0
  129. autocoder/common/international/messages/conversation_command_messages.py +191 -0
  130. autocoder/common/international/messages/git_helper_plugin_messages.py +159 -0
  131. autocoder/common/international/messages/queue_command_messages.py +751 -0
  132. autocoder/common/international/messages/rules_command_messages.py +77 -0
  133. autocoder/common/international/messages/sdk_messages.py +1707 -0
  134. autocoder/common/international/messages/token_helper_plugin_messages.py +361 -0
  135. autocoder/common/international/messages/tool_display_messages.py +1212 -0
  136. autocoder/common/international/messages/workflow_exception_messages.py +473 -0
  137. autocoder/common/international/test_international.py +612 -0
  138. autocoder/common/linter_core/__init__.py +28 -0
  139. autocoder/common/linter_core/base_linter.py +61 -0
  140. autocoder/common/linter_core/config_loader.py +271 -0
  141. autocoder/common/linter_core/formatters/__init__.py +0 -0
  142. autocoder/common/linter_core/formatters/base_formatter.py +38 -0
  143. autocoder/common/linter_core/formatters/raw_formatter.py +17 -0
  144. autocoder/common/linter_core/linter.py +166 -0
  145. autocoder/common/linter_core/linter_factory.py +216 -0
  146. autocoder/common/linter_core/linter_manager.py +333 -0
  147. autocoder/common/linter_core/linters/__init__.py +9 -0
  148. autocoder/common/linter_core/linters/java_linter.py +342 -0
  149. autocoder/common/linter_core/linters/python_linter.py +115 -0
  150. autocoder/common/linter_core/linters/typescript_linter.py +119 -0
  151. autocoder/common/linter_core/models/__init__.py +7 -0
  152. autocoder/common/linter_core/models/lint_result.py +91 -0
  153. autocoder/common/linter_core/models.py +33 -0
  154. autocoder/common/linter_core/tests/__init__.py +3 -0
  155. autocoder/common/linter_core/tests/test_config_loader.py +323 -0
  156. autocoder/common/linter_core/tests/test_config_loading.py +308 -0
  157. autocoder/common/linter_core/tests/test_factory_manager.py +234 -0
  158. autocoder/common/linter_core/tests/test_formatters.py +147 -0
  159. autocoder/common/linter_core/tests/test_integration.py +317 -0
  160. autocoder/common/linter_core/tests/test_java_linter.py +496 -0
  161. autocoder/common/linter_core/tests/test_linters.py +265 -0
  162. autocoder/common/linter_core/tests/test_models.py +81 -0
  163. autocoder/common/linter_core/tests/verify_config_loading.py +296 -0
  164. autocoder/common/linter_core/tests/verify_fixes.py +183 -0
  165. autocoder/common/llm_friendly_package/__init__.py +31 -0
  166. autocoder/common/llm_friendly_package/base_manager.py +102 -0
  167. autocoder/common/llm_friendly_package/docs_manager.py +121 -0
  168. autocoder/common/llm_friendly_package/library_manager.py +171 -0
  169. autocoder/common/{llm_friendly_package.py → llm_friendly_package/main_manager.py} +204 -231
  170. autocoder/common/llm_friendly_package/models.py +40 -0
  171. autocoder/common/llm_friendly_package/test_llm_friendly_package.py +536 -0
  172. autocoder/common/llms/__init__.py +15 -0
  173. autocoder/common/llms/demo_error_handling.py +85 -0
  174. autocoder/common/llms/factory.py +142 -0
  175. autocoder/common/llms/manager.py +264 -0
  176. autocoder/common/llms/pricing.py +121 -0
  177. autocoder/common/llms/registry.py +288 -0
  178. autocoder/common/llms/schema.py +77 -0
  179. autocoder/common/llms/simple_demo.py +45 -0
  180. autocoder/common/llms/test_quick_model.py +116 -0
  181. autocoder/common/llms/test_remove_functionality.py +182 -0
  182. autocoder/common/llms/tests/__init__.py +1 -0
  183. autocoder/common/llms/tests/test_manager.py +330 -0
  184. autocoder/common/llms/tests/test_registry.py +364 -0
  185. autocoder/common/mcp_tools/__init__.py +62 -0
  186. autocoder/common/{mcp_tools.py → mcp_tools/executor.py} +49 -40
  187. autocoder/common/{mcp_hub.py → mcp_tools/hub.py} +42 -68
  188. autocoder/common/{mcp_server_install.py → mcp_tools/installer.py} +16 -28
  189. autocoder/common/{mcp_server.py → mcp_tools/server.py} +176 -48
  190. autocoder/common/mcp_tools/test_keyboard_interrupt.py +93 -0
  191. autocoder/common/mcp_tools/test_mcp_tools.py +391 -0
  192. autocoder/common/{mcp_server_types.py → mcp_tools/types.py} +121 -48
  193. autocoder/common/mcp_tools/verify_functionality.py +202 -0
  194. autocoder/common/model_speed_tester.py +32 -26
  195. autocoder/common/priority_directory_finder/__init__.py +142 -0
  196. autocoder/common/priority_directory_finder/examples.py +230 -0
  197. autocoder/common/priority_directory_finder/finder.py +283 -0
  198. autocoder/common/priority_directory_finder/models.py +236 -0
  199. autocoder/common/priority_directory_finder/test_priority_directory_finder.py +431 -0
  200. autocoder/common/project_scanner/__init__.py +18 -0
  201. autocoder/common/project_scanner/compat.py +77 -0
  202. autocoder/common/project_scanner/scanner.py +436 -0
  203. autocoder/common/project_tracker/__init__.py +27 -0
  204. autocoder/common/project_tracker/api.py +228 -0
  205. autocoder/common/project_tracker/demo.py +272 -0
  206. autocoder/common/project_tracker/tracker.py +487 -0
  207. autocoder/common/project_tracker/types.py +53 -0
  208. autocoder/common/pruner/__init__.py +67 -0
  209. autocoder/common/pruner/agentic_conversation_pruner.py +651 -102
  210. autocoder/common/pruner/conversation_message_ids_api.py +386 -0
  211. autocoder/common/pruner/conversation_message_ids_manager.py +347 -0
  212. autocoder/common/pruner/conversation_message_ids_pruner.py +473 -0
  213. autocoder/common/pruner/conversation_normalizer.py +347 -0
  214. autocoder/common/pruner/conversation_pruner.py +26 -6
  215. autocoder/common/pruner/test_agentic_conversation_pruner.py +554 -112
  216. autocoder/common/pruner/test_conversation_normalizer.py +502 -0
  217. autocoder/common/pruner/test_tool_content_detector.py +324 -0
  218. autocoder/common/pruner/tool_content_detector.py +227 -0
  219. autocoder/common/pruner/tools/__init__.py +18 -0
  220. autocoder/common/pruner/tools/query_message_ids.py +264 -0
  221. autocoder/common/pruner/tools/test_agentic_pruning_logic.py +432 -0
  222. autocoder/common/pruner/tools/test_message_ids_pruning_only.py +192 -0
  223. autocoder/common/pull_requests/__init__.py +9 -1
  224. autocoder/common/pull_requests/utils.py +122 -1
  225. autocoder/common/rag_manager/rag_manager.py +36 -40
  226. autocoder/common/rulefiles/__init__.py +53 -1
  227. autocoder/common/rulefiles/api.py +250 -0
  228. autocoder/common/rulefiles/core/__init__.py +14 -0
  229. autocoder/common/rulefiles/core/manager.py +241 -0
  230. autocoder/common/rulefiles/core/selector.py +805 -0
  231. autocoder/common/rulefiles/models/__init__.py +20 -0
  232. autocoder/common/rulefiles/models/index.py +16 -0
  233. autocoder/common/rulefiles/models/init_rule.py +18 -0
  234. autocoder/common/rulefiles/models/rule_file.py +18 -0
  235. autocoder/common/rulefiles/models/rule_relevance.py +14 -0
  236. autocoder/common/rulefiles/models/summary.py +16 -0
  237. autocoder/common/rulefiles/test_rulefiles.py +776 -0
  238. autocoder/common/rulefiles/utils/__init__.py +34 -0
  239. autocoder/common/rulefiles/utils/monitor.py +86 -0
  240. autocoder/common/rulefiles/utils/parser.py +230 -0
  241. autocoder/common/save_formatted_log.py +67 -10
  242. autocoder/common/search_replace.py +8 -1
  243. autocoder/common/search_replace_patch/__init__.py +24 -0
  244. autocoder/common/search_replace_patch/base.py +115 -0
  245. autocoder/common/search_replace_patch/manager.py +248 -0
  246. autocoder/common/search_replace_patch/patch_replacer.py +304 -0
  247. autocoder/common/search_replace_patch/similarity_replacer.py +306 -0
  248. autocoder/common/search_replace_patch/string_replacer.py +181 -0
  249. autocoder/common/search_replace_patch/tests/__init__.py +3 -0
  250. autocoder/common/search_replace_patch/tests/run_tests.py +126 -0
  251. autocoder/common/search_replace_patch/tests/test_base.py +188 -0
  252. autocoder/common/search_replace_patch/tests/test_empty_line_insert.py +233 -0
  253. autocoder/common/search_replace_patch/tests/test_integration.py +389 -0
  254. autocoder/common/search_replace_patch/tests/test_manager.py +351 -0
  255. autocoder/common/search_replace_patch/tests/test_patch_replacer.py +316 -0
  256. autocoder/common/search_replace_patch/tests/test_regex_replacer.py +306 -0
  257. autocoder/common/search_replace_patch/tests/test_similarity_replacer.py +384 -0
  258. autocoder/common/shell_commands/__init__.py +197 -0
  259. autocoder/common/shell_commands/background_process_notifier.py +346 -0
  260. autocoder/common/shell_commands/command_executor.py +1127 -0
  261. autocoder/common/shell_commands/error_recovery.py +541 -0
  262. autocoder/common/shell_commands/exceptions.py +120 -0
  263. autocoder/common/shell_commands/interactive_executor.py +476 -0
  264. autocoder/common/shell_commands/interactive_pexpect_process.py +623 -0
  265. autocoder/common/shell_commands/interactive_process.py +744 -0
  266. autocoder/common/shell_commands/interactive_session_manager.py +1014 -0
  267. autocoder/common/shell_commands/monitoring.py +529 -0
  268. autocoder/common/shell_commands/process_cleanup.py +386 -0
  269. autocoder/common/shell_commands/process_manager.py +606 -0
  270. autocoder/common/shell_commands/test_interactive_pexpect_process.py +281 -0
  271. autocoder/common/shell_commands/tests/__init__.py +6 -0
  272. autocoder/common/shell_commands/tests/conftest.py +118 -0
  273. autocoder/common/shell_commands/tests/test_background_process_notifier.py +703 -0
  274. autocoder/common/shell_commands/tests/test_command_executor.py +448 -0
  275. autocoder/common/shell_commands/tests/test_error_recovery.py +305 -0
  276. autocoder/common/shell_commands/tests/test_exceptions.py +299 -0
  277. autocoder/common/shell_commands/tests/test_execute_batch.py +588 -0
  278. autocoder/common/shell_commands/tests/test_indented_batch_commands.py +244 -0
  279. autocoder/common/shell_commands/tests/test_integration.py +664 -0
  280. autocoder/common/shell_commands/tests/test_monitoring.py +546 -0
  281. autocoder/common/shell_commands/tests/test_performance.py +632 -0
  282. autocoder/common/shell_commands/tests/test_process_cleanup.py +397 -0
  283. autocoder/common/shell_commands/tests/test_process_manager.py +606 -0
  284. autocoder/common/shell_commands/tests/test_timeout_config.py +343 -0
  285. autocoder/common/shell_commands/tests/test_timeout_manager.py +520 -0
  286. autocoder/common/shell_commands/timeout_config.py +315 -0
  287. autocoder/common/shell_commands/timeout_manager.py +352 -0
  288. autocoder/common/terminal_paste/__init__.py +14 -0
  289. autocoder/common/terminal_paste/demo.py +145 -0
  290. autocoder/common/terminal_paste/demo_paste_functionality.py +95 -0
  291. autocoder/common/terminal_paste/paste_handler.py +200 -0
  292. autocoder/common/terminal_paste/paste_manager.py +118 -0
  293. autocoder/common/terminal_paste/tests/__init__.py +1 -0
  294. autocoder/common/terminal_paste/tests/test_paste_handler.py +182 -0
  295. autocoder/common/terminal_paste/tests/test_paste_manager.py +126 -0
  296. autocoder/common/terminal_paste/utils.py +163 -0
  297. autocoder/common/test_autocoder_args.py +232 -0
  298. autocoder/common/test_env_manager.py +173 -0
  299. autocoder/common/test_env_manager_integration.py +159 -0
  300. autocoder/common/text_similarity/__init__.py +9 -0
  301. autocoder/common/text_similarity/demo.py +216 -0
  302. autocoder/common/text_similarity/examples.py +266 -0
  303. autocoder/common/text_similarity/test_text_similarity.py +306 -0
  304. autocoder/common/text_similarity/text_similarity.py +194 -0
  305. autocoder/common/text_similarity/utils.py +125 -0
  306. autocoder/common/todos/__init__.py +61 -0
  307. autocoder/common/todos/cache/__init__.py +16 -0
  308. autocoder/common/todos/cache/base_cache.py +89 -0
  309. autocoder/common/todos/cache/cache_manager.py +228 -0
  310. autocoder/common/todos/cache/memory_cache.py +225 -0
  311. autocoder/common/todos/config.py +155 -0
  312. autocoder/common/todos/exceptions.py +35 -0
  313. autocoder/common/todos/get_todo_manager.py +161 -0
  314. autocoder/common/todos/manager.py +537 -0
  315. autocoder/common/todos/models.py +239 -0
  316. autocoder/common/todos/storage/__init__.py +14 -0
  317. autocoder/common/todos/storage/base_storage.py +76 -0
  318. autocoder/common/todos/storage/file_storage.py +278 -0
  319. autocoder/common/tokens/counter.py +24 -2
  320. autocoder/common/tools_manager/__init__.py +17 -0
  321. autocoder/common/tools_manager/examples.py +162 -0
  322. autocoder/common/tools_manager/manager.py +385 -0
  323. autocoder/common/tools_manager/models.py +39 -0
  324. autocoder/common/tools_manager/test_tools_manager.py +303 -0
  325. autocoder/common/tools_manager/utils.py +191 -0
  326. autocoder/common/v2/agent/agentic_callbacks.py +270 -0
  327. autocoder/common/v2/agent/agentic_edit.py +2699 -1856
  328. autocoder/common/v2/agent/agentic_edit_change_manager.py +474 -0
  329. autocoder/common/v2/agent/agentic_edit_tools/__init__.py +35 -1
  330. autocoder/common/v2/agent/agentic_edit_tools/ac_mod_list_tool_resolver.py +279 -0
  331. autocoder/common/v2/agent/agentic_edit_tools/ac_mod_write_tool_resolver.py +10 -1
  332. autocoder/common/v2/agent/agentic_edit_tools/background_task_tool_resolver.py +1167 -0
  333. autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +2 -2
  334. autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_read_tool_resolver.py +214 -0
  335. autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_write_tool_resolver.py +299 -0
  336. autocoder/common/v2/agent/agentic_edit_tools/count_tokens_tool_resolver.py +290 -0
  337. autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +564 -29
  338. autocoder/common/v2/agent/agentic_edit_tools/execute_workflow_tool_resolver.py +485 -0
  339. autocoder/common/v2/agent/agentic_edit_tools/extract_to_text_tool_resolver.py +225 -0
  340. autocoder/common/v2/agent/agentic_edit_tools/lint_report.py +79 -0
  341. autocoder/common/v2/agent/agentic_edit_tools/linter_config_models.py +343 -0
  342. autocoder/common/v2/agent/agentic_edit_tools/linter_enabled_tool_resolver.py +189 -0
  343. autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +169 -101
  344. autocoder/common/v2/agent/agentic_edit_tools/load_extra_document_tool_resolver.py +349 -0
  345. autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +243 -50
  346. autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +667 -147
  347. autocoder/common/v2/agent/agentic_edit_tools/run_named_subagents_tool_resolver.py +691 -0
  348. autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +410 -86
  349. autocoder/common/v2/agent/agentic_edit_tools/session_interactive_tool_resolver.py +115 -0
  350. autocoder/common/v2/agent/agentic_edit_tools/session_start_tool_resolver.py +190 -0
  351. autocoder/common/v2/agent/agentic_edit_tools/session_stop_tool_resolver.py +76 -0
  352. autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +207 -192
  353. autocoder/common/v2/agent/agentic_edit_tools/todo_read_tool_resolver.py +80 -63
  354. autocoder/common/v2/agent/agentic_edit_tools/todo_write_tool_resolver.py +237 -233
  355. autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +2 -2
  356. autocoder/common/v2/agent/agentic_edit_tools/web_crawl_tool_resolver.py +557 -0
  357. autocoder/common/v2/agent/agentic_edit_tools/web_search_tool_resolver.py +600 -0
  358. autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +56 -121
  359. autocoder/common/v2/agent/agentic_edit_types.py +343 -9
  360. autocoder/common/v2/agent/runner/__init__.py +3 -3
  361. autocoder/common/v2/agent/runner/base_runner.py +12 -26
  362. autocoder/common/v2/agent/runner/{event_runner.py → file_based_event_runner.py} +3 -2
  363. autocoder/common/v2/agent/runner/sdk_runner.py +150 -8
  364. autocoder/common/v2/agent/runner/terminal_runner.py +170 -57
  365. autocoder/common/v2/agent/runner/tool_display.py +557 -159
  366. autocoder/common/v2/agent/test_agentic_callbacks.py +265 -0
  367. autocoder/common/v2/agent/test_agentic_edit.py +194 -0
  368. autocoder/common/v2/agent/tool_caller/__init__.py +24 -0
  369. autocoder/common/v2/agent/tool_caller/default_tool_resolver_map.py +135 -0
  370. autocoder/common/v2/agent/tool_caller/integration_test.py +172 -0
  371. autocoder/common/v2/agent/tool_caller/plugins/__init__.py +14 -0
  372. autocoder/common/v2/agent/tool_caller/plugins/base_plugin.py +126 -0
  373. autocoder/common/v2/agent/tool_caller/plugins/examples/__init__.py +13 -0
  374. autocoder/common/v2/agent/tool_caller/plugins/examples/logging_plugin.py +164 -0
  375. autocoder/common/v2/agent/tool_caller/plugins/examples/security_filter_plugin.py +198 -0
  376. autocoder/common/v2/agent/tool_caller/plugins/plugin_interface.py +141 -0
  377. autocoder/common/v2/agent/tool_caller/test_tool_caller.py +278 -0
  378. autocoder/common/v2/agent/tool_caller/tool_call_plugin_manager.py +331 -0
  379. autocoder/common/v2/agent/tool_caller/tool_caller.py +337 -0
  380. autocoder/common/v2/agent/tool_caller/usage_example.py +193 -0
  381. autocoder/common/v2/code_agentic_editblock_manager.py +4 -4
  382. autocoder/common/v2/code_auto_generate.py +136 -78
  383. autocoder/common/v2/code_auto_generate_diff.py +135 -79
  384. autocoder/common/v2/code_auto_generate_editblock.py +174 -99
  385. autocoder/common/v2/code_auto_generate_strict_diff.py +151 -71
  386. autocoder/common/v2/code_auto_merge.py +1 -1
  387. autocoder/common/v2/code_auto_merge_editblock.py +13 -1
  388. autocoder/common/v2/code_diff_manager.py +3 -3
  389. autocoder/common/v2/code_editblock_manager.py +4 -14
  390. autocoder/common/v2/code_manager.py +1 -1
  391. autocoder/common/v2/code_strict_diff_manager.py +2 -2
  392. autocoder/common/wrap_llm_hint/__init__.py +10 -0
  393. autocoder/common/wrap_llm_hint/test_wrap_llm_hint.py +1067 -0
  394. autocoder/common/wrap_llm_hint/utils.py +432 -0
  395. autocoder/common/wrap_llm_hint/wrap_llm_hint.py +323 -0
  396. autocoder/completer/__init__.py +8 -0
  397. autocoder/completer/command_completer_v2.py +1051 -0
  398. autocoder/default_project/__init__.py +501 -0
  399. autocoder/dispacher/__init__.py +4 -12
  400. autocoder/dispacher/actions/action.py +165 -7
  401. autocoder/dispacher/actions/plugins/action_regex_project.py +2 -2
  402. autocoder/index/entry.py +116 -124
  403. autocoder/{agent → index/filter}/agentic_filter.py +322 -333
  404. autocoder/index/filter/normal_filter.py +5 -11
  405. autocoder/index/filter/quick_filter.py +1 -1
  406. autocoder/index/index.py +36 -9
  407. autocoder/index/tests/__init__.py +1 -0
  408. autocoder/index/tests/run_tests.py +195 -0
  409. autocoder/index/tests/test_entry.py +303 -0
  410. autocoder/index/tests/test_index_manager.py +314 -0
  411. autocoder/index/tests/test_module_integration.py +300 -0
  412. autocoder/index/tests/test_symbols_utils.py +183 -0
  413. autocoder/inner/__init__.py +4 -0
  414. autocoder/inner/agentic.py +932 -0
  415. autocoder/inner/async_command_handler.py +992 -0
  416. autocoder/inner/conversation_command_handlers.py +623 -0
  417. autocoder/inner/merge_command_handler.py +213 -0
  418. autocoder/inner/queue_command_handler.py +684 -0
  419. autocoder/models.py +95 -266
  420. autocoder/plugins/git_helper_plugin.py +31 -29
  421. autocoder/plugins/token_helper_plugin.py +65 -46
  422. autocoder/pyproject/__init__.py +32 -29
  423. autocoder/rag/agentic_rag.py +215 -75
  424. autocoder/rag/cache/simple_cache.py +1 -2
  425. autocoder/rag/loaders/image_loader.py +1 -1
  426. autocoder/rag/long_context_rag.py +42 -26
  427. autocoder/rag/qa_conversation_strategy.py +1 -1
  428. autocoder/rag/terminal/__init__.py +17 -0
  429. autocoder/rag/terminal/args.py +581 -0
  430. autocoder/rag/terminal/bootstrap.py +61 -0
  431. autocoder/rag/terminal/command_handlers.py +653 -0
  432. autocoder/rag/terminal/formatters/__init__.py +20 -0
  433. autocoder/rag/terminal/formatters/base.py +70 -0
  434. autocoder/rag/terminal/formatters/json_format.py +66 -0
  435. autocoder/rag/terminal/formatters/stream_json.py +95 -0
  436. autocoder/rag/terminal/formatters/text.py +28 -0
  437. autocoder/rag/terminal/init.py +120 -0
  438. autocoder/rag/terminal/utils.py +106 -0
  439. autocoder/rag/test_agentic_rag.py +389 -0
  440. autocoder/rag/test_doc_filter.py +3 -3
  441. autocoder/rag/test_long_context_rag.py +1 -1
  442. autocoder/rag/test_token_limiter.py +517 -10
  443. autocoder/rag/token_counter.py +3 -0
  444. autocoder/rag/token_limiter.py +19 -15
  445. autocoder/rag/tools/__init__.py +26 -2
  446. autocoder/rag/tools/bochaai_example.py +343 -0
  447. autocoder/rag/tools/bochaai_sdk.py +541 -0
  448. autocoder/rag/tools/metaso_example.py +268 -0
  449. autocoder/rag/tools/metaso_sdk.py +417 -0
  450. autocoder/rag/tools/recall_tool.py +28 -7
  451. autocoder/rag/tools/run_integration_tests.py +204 -0
  452. autocoder/rag/tools/test_all_providers.py +318 -0
  453. autocoder/rag/tools/test_bochaai_integration.py +482 -0
  454. autocoder/rag/tools/test_final_integration.py +215 -0
  455. autocoder/rag/tools/test_metaso_integration.py +424 -0
  456. autocoder/rag/tools/test_metaso_real.py +171 -0
  457. autocoder/rag/tools/test_web_crawl_tool.py +639 -0
  458. autocoder/rag/tools/test_web_search_tool.py +509 -0
  459. autocoder/rag/tools/todo_read_tool.py +202 -0
  460. autocoder/rag/tools/todo_write_tool.py +412 -0
  461. autocoder/rag/tools/web_crawl_tool.py +634 -0
  462. autocoder/rag/tools/web_search_tool.py +558 -0
  463. autocoder/rag/tools/web_tools_example.py +119 -0
  464. autocoder/rag/types.py +16 -0
  465. autocoder/rag/variable_holder.py +4 -2
  466. autocoder/rags.py +86 -79
  467. autocoder/regexproject/__init__.py +23 -21
  468. autocoder/sdk/__init__.py +46 -190
  469. autocoder/sdk/api.py +370 -0
  470. autocoder/sdk/async_runner/__init__.py +26 -0
  471. autocoder/sdk/async_runner/async_executor.py +650 -0
  472. autocoder/sdk/async_runner/async_handler.py +356 -0
  473. autocoder/sdk/async_runner/markdown_processor.py +595 -0
  474. autocoder/sdk/async_runner/task_metadata.py +284 -0
  475. autocoder/sdk/async_runner/worktree_manager.py +438 -0
  476. autocoder/sdk/cli/__init__.py +2 -5
  477. autocoder/sdk/cli/formatters.py +28 -204
  478. autocoder/sdk/cli/handlers.py +77 -44
  479. autocoder/sdk/cli/main.py +154 -171
  480. autocoder/sdk/cli/options.py +95 -22
  481. autocoder/sdk/constants.py +139 -51
  482. autocoder/sdk/core/auto_coder_core.py +484 -109
  483. autocoder/sdk/core/bridge.py +297 -115
  484. autocoder/sdk/exceptions.py +18 -12
  485. autocoder/sdk/formatters/__init__.py +19 -0
  486. autocoder/sdk/formatters/input.py +64 -0
  487. autocoder/sdk/formatters/output.py +247 -0
  488. autocoder/sdk/formatters/stream.py +54 -0
  489. autocoder/sdk/models/__init__.py +6 -5
  490. autocoder/sdk/models/options.py +55 -18
  491. autocoder/sdk/utils/formatters.py +27 -195
  492. autocoder/suffixproject/__init__.py +28 -25
  493. autocoder/terminal/__init__.py +14 -0
  494. autocoder/terminal/app.py +454 -0
  495. autocoder/terminal/args.py +32 -0
  496. autocoder/terminal/bootstrap.py +178 -0
  497. autocoder/terminal/command_processor.py +521 -0
  498. autocoder/terminal/command_registry.py +57 -0
  499. autocoder/terminal/help.py +97 -0
  500. autocoder/terminal/tasks/__init__.py +5 -0
  501. autocoder/terminal/tasks/background.py +77 -0
  502. autocoder/terminal/tasks/task_event.py +70 -0
  503. autocoder/terminal/ui/__init__.py +13 -0
  504. autocoder/terminal/ui/completer.py +268 -0
  505. autocoder/terminal/ui/keybindings.py +75 -0
  506. autocoder/terminal/ui/session.py +41 -0
  507. autocoder/terminal/ui/toolbar.py +64 -0
  508. autocoder/terminal/utils/__init__.py +13 -0
  509. autocoder/terminal/utils/errors.py +18 -0
  510. autocoder/terminal/utils/paths.py +19 -0
  511. autocoder/terminal/utils/shell.py +43 -0
  512. autocoder/terminal_v3/__init__.py +10 -0
  513. autocoder/terminal_v3/app.py +201 -0
  514. autocoder/terminal_v3/handlers/__init__.py +5 -0
  515. autocoder/terminal_v3/handlers/command_handler.py +131 -0
  516. autocoder/terminal_v3/models/__init__.py +6 -0
  517. autocoder/terminal_v3/models/conversation_buffer.py +214 -0
  518. autocoder/terminal_v3/models/message.py +50 -0
  519. autocoder/terminal_v3/models/tool_display.py +247 -0
  520. autocoder/terminal_v3/ui/__init__.py +7 -0
  521. autocoder/terminal_v3/ui/keybindings.py +56 -0
  522. autocoder/terminal_v3/ui/layout.py +141 -0
  523. autocoder/terminal_v3/ui/styles.py +43 -0
  524. autocoder/tsproject/__init__.py +23 -23
  525. autocoder/utils/auto_coder_utils/chat_stream_out.py +1 -1
  526. autocoder/utils/llms.py +88 -80
  527. autocoder/utils/math_utils.py +101 -0
  528. autocoder/utils/model_provider_selector.py +16 -4
  529. autocoder/utils/operate_config_api.py +33 -5
  530. autocoder/utils/thread_utils.py +2 -2
  531. autocoder/version.py +4 -2
  532. autocoder/workflow_agents/__init__.py +84 -0
  533. autocoder/workflow_agents/agent.py +143 -0
  534. autocoder/workflow_agents/exceptions.py +573 -0
  535. autocoder/workflow_agents/executor.py +489 -0
  536. autocoder/workflow_agents/loader.py +737 -0
  537. autocoder/workflow_agents/runner.py +267 -0
  538. autocoder/workflow_agents/types.py +172 -0
  539. autocoder/workflow_agents/utils.py +434 -0
  540. autocoder/workflow_agents/workflow_manager.py +211 -0
  541. auto_coder-1.0.0.dist-info/METADATA +0 -396
  542. auto_coder-1.0.0.dist-info/RECORD +0 -442
  543. auto_coder-1.0.0.dist-info/licenses/LICENSE +0 -201
  544. autocoder/auto_coder_server.py +0 -672
  545. autocoder/benchmark.py +0 -138
  546. autocoder/common/ac_style_command_parser/example.py +0 -7
  547. autocoder/common/cleaner.py +0 -31
  548. autocoder/common/command_completer_v2.py +0 -615
  549. autocoder/common/context_pruner.py +0 -477
  550. autocoder/common/conversation_pruner.py +0 -132
  551. autocoder/common/directory_cache/__init__.py +0 -1
  552. autocoder/common/directory_cache/cache.py +0 -192
  553. autocoder/common/directory_cache/test_cache.py +0 -190
  554. autocoder/common/file_checkpoint/examples.py +0 -217
  555. autocoder/common/llm_friendly_package_example.py +0 -138
  556. autocoder/common/llm_friendly_package_test.py +0 -63
  557. autocoder/common/pull_requests/test_module.py +0 -1
  558. autocoder/common/rulefiles/autocoderrules_utils.py +0 -484
  559. autocoder/common/text.py +0 -30
  560. autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -42
  561. autocoder/common/v2/agent/agentic_edit_tools/test_execute_command_tool_resolver.py +0 -70
  562. autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -163
  563. autocoder/common/v2/agent/agentic_tool_display.py +0 -183
  564. autocoder/plugins/dynamic_completion_example.py +0 -148
  565. autocoder/plugins/sample_plugin.py +0 -160
  566. autocoder/sdk/cli/__main__.py +0 -26
  567. autocoder/sdk/cli/completion_wrapper.py +0 -38
  568. autocoder/sdk/cli/install_completion.py +0 -301
  569. autocoder/sdk/models/messages.py +0 -209
  570. autocoder/sdk/session/__init__.py +0 -32
  571. autocoder/sdk/session/session.py +0 -106
  572. autocoder/sdk/session/session_manager.py +0 -56
  573. {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/top_level.txt +0 -0
  574. /autocoder/{sdk/example.py → common/agent_query_queue/__init__.py} +0 -0
@@ -1,86 +1,200 @@
1
1
  from pydantic import BaseModel
2
2
  from typing import List, Dict, Any, Callable, Optional, Type, Union
3
3
  from pydantic import SkipValidation
4
+ from enum import Enum
5
+
6
+ # Import for Pull Request support and Git operations
7
+ try:
8
+ from autocoder.common.pull_requests.models import PRResult, PlatformType
9
+ except ImportError:
10
+ # Fallback if pull_requests module is not available
11
+ PRResult = None
12
+ PlatformType = None
13
+
14
+ try:
15
+ from autocoder.common.git_utils import CommitResult
16
+ except ImportError:
17
+ # Fallback if git_utils is not available
18
+ CommitResult = None
19
+
20
+
21
+ class ConversationAction(str, Enum):
22
+ """Enumeration for conversation actions"""
23
+
24
+ RESUME = "resume"
25
+ NEW = "new"
26
+ CONTINUE = "continue"
27
+ LIST = "list"
28
+ COMMAND = "command"
29
+
4
30
 
5
31
  # Result class used by Tool Resolvers
6
32
  class ToolResult(BaseModel):
7
33
  success: bool
8
34
  message: str
9
- content: Any = None # Can store file content, command output, etc.
35
+ content: Any = None # Can store file content, command output, etc.
36
+
10
37
 
11
38
  # Pydantic Models for Tools
12
39
  class BaseTool(BaseModel):
13
40
  pass
14
41
 
42
+
15
43
  class ExecuteCommandTool(BaseTool):
16
44
  command: str
17
45
  requires_approval: bool
46
+ timeout: Optional[int] = 60 # 超时时间(秒),默认60秒
47
+ background: Optional[bool] = False # 是否后台运行,默认为False
48
+
18
49
 
19
50
  class ReadFileTool(BaseTool):
20
51
  path: str
52
+ start_line: Optional[int] = None
53
+ end_line: Optional[int] = None
54
+ query: Optional[str] = None
55
+
21
56
 
22
57
  class WriteToFileTool(BaseTool):
23
58
  path: str
24
59
  content: str
60
+ mode: str = "write" # write or append
61
+
62
+
63
+ class CountTokensTool(BaseTool):
64
+ """Token统计工具类型"""
65
+
66
+ path: str # 文件或目录路径
67
+ recursive: Optional[bool] = True # 是否递归统计目录
68
+ include_summary: Optional[bool] = True # 是否包含分类汇总
69
+
70
+
71
+ class ExtractToTextTool(BaseTool):
72
+ """提取各种格式文件(包括URL)的文本内容到目标文件"""
73
+
74
+ source_path: str # 源路径,可以是本地文件路径或URL
75
+ target_path: str # 目标文本文件路径
76
+
77
+
78
+ class SessionStartTool(BaseTool):
79
+ """启动交互式会话工具"""
80
+
81
+ command: str # 要执行的命令,如 "python -i"
82
+ timeout: Optional[int] = 60 # 启动超时时间(秒)
83
+ cwd: Optional[str] = None # 工作目录
84
+ env: Optional[Dict[str, str]] = None # 环境变量
85
+
86
+
87
+ class SessionInteractiveTool(BaseTool):
88
+ """与交互式会话交互的工具"""
89
+
90
+ session_id: str # 会话ID
91
+ input: str # 发送到stdin的内容
92
+ read_timeout: Optional[int] = 5 # 等待读取输出的时间(秒)
93
+ max_bytes: Optional[int] = 40960 # 每次读取的最大字节数
94
+ expect_prompt: Optional[bool] = False # 是否等待提示符出现再返回
95
+ prompt_regex: Optional[str] = None # 提示符的正则表达式
96
+
97
+
98
+ class SessionStopTool(BaseTool):
99
+ """停止交互式会话工具"""
100
+
101
+ session_id: str # 会话ID
102
+ force: Optional[bool] = False # True=强制杀死,False=优雅终止
103
+
25
104
 
26
105
  class ReplaceInFileTool(BaseTool):
27
106
  path: str
28
107
  diff: str
108
+ fence_0: Optional[str] = "```"
109
+ fence_1: Optional[str] = "```"
110
+
29
111
 
30
112
  class SearchFilesTool(BaseTool):
31
113
  path: str
32
114
  regex: str
33
115
  file_pattern: Optional[str] = None
34
116
 
117
+
35
118
  class ListFilesTool(BaseTool):
36
119
  path: str
37
120
  recursive: Optional[bool] = False
38
121
 
122
+
39
123
  class ListCodeDefinitionNamesTool(BaseTool):
40
124
  path: str
41
125
 
126
+
42
127
  class AskFollowupQuestionTool(BaseTool):
43
128
  question: str
44
129
  options: Optional[List[str]] = None
45
130
 
131
+
46
132
  class AttemptCompletionTool(BaseTool):
47
133
  result: str
48
134
  command: Optional[str] = None
49
135
 
136
+
50
137
  class PlanModeRespondTool(BaseTool):
51
138
  response: str
52
139
  options: Optional[List[str]] = None
53
140
 
141
+
54
142
  class UseMcpTool(BaseTool):
55
143
  server_name: str
56
144
  tool_name: str
57
- query:str
145
+ query: str
146
+
58
147
 
59
148
  class UseRAGTool(BaseTool):
60
149
  server_name: str
61
150
  query: str
62
151
 
152
+
153
+ class RunNamedSubagentsTool(BaseTool):
154
+ """
155
+ Tool for running a named subagent with a specific query.
156
+ Gets agent details from the agents module and executes via auto-coder.run.
157
+ """
158
+
159
+ subagents: str
160
+ background: Optional[bool] = False # 是否后台运行,默认为False
161
+
162
+
63
163
  class ACModReadTool(BaseTool):
64
164
  path: str # 源码包目录,相对路径或绝对路径
65
165
 
166
+
66
167
  class ACModWriteTool(BaseTool):
67
168
  """
68
169
  Tool for creating or updating an AC Module's .ac.mod.md file.
69
170
  """
171
+
70
172
  path: str # AC Module directory path, relative or absolute path
71
173
  diff: str # diff content to edit the .ac.mod.md file
72
174
 
175
+
176
+ class ACModListTool(BaseTool):
177
+ """
178
+ Tool for listing all directories containing .ac.mod.md files (AC Modules).
179
+ """
180
+
181
+ path: Optional[str] = None # Optional root path to search, defaults to source_dir
182
+
183
+
73
184
  class TodoReadTool(BaseTool):
74
185
  """
75
186
  Tool for reading the current todo list.
76
187
  Takes no parameters.
77
188
  """
189
+
78
190
  pass # No parameters needed
79
191
 
192
+
80
193
  class TodoWriteTool(BaseTool):
81
194
  """
82
195
  Tool for creating and managing a structured task list.
83
196
  """
197
+
84
198
  action: str # 'create', 'update', 'mark_progress', 'mark_completed', 'add_task'
85
199
  task_id: Optional[str] = None # Task ID for update/mark operations
86
200
  content: Optional[str] = None # Task content for create/add operations
@@ -88,66 +202,265 @@ class TodoWriteTool(BaseTool):
88
202
  status: Optional[str] = None # 'pending', 'in_progress', 'completed'
89
203
  notes: Optional[str] = None # Additional notes for the task
90
204
 
205
+
206
+ class ConversationMessageIdsWriteTool(BaseTool):
207
+ """
208
+ Tool for writing conversation message IDs for pruning.
209
+ Manages message IDs that should be DELETED during conversation pruning.
210
+ """
211
+
212
+ message_ids: str # Message IDs specification like "9226b3a4,204e1cd8"
213
+ action: str # Action to perform: "create", "append", or "delete"
214
+
215
+
216
+ class ConversationMessageIdsReadTool(BaseTool):
217
+ """
218
+ Tool for reading existing conversation message IDs configuration.
219
+ Returns the current message IDs configuration for the active conversation.
220
+ """
221
+
222
+ pass # No parameters needed, uses current conversation ID
223
+
224
+
225
+ class BackgroundTaskTool(BaseTool):
226
+ """后台任务管理工具
227
+
228
+ 支持对后台运行的命令和子代理任务进行统一管理,包括:
229
+ - list: 列出当前会话的后台任务
230
+ - monitor: 监控任务输出内容
231
+ - cleanup: 清理已完成的任务记录
232
+ - kill: 终止正在运行的任务
233
+
234
+ 任务标识支持 task_id、pid 和 process_uniq_id 三种方式。
235
+ """
236
+
237
+ action: str # 操作类型: "list", "monitor", "cleanup", "kill"
238
+
239
+ # list 操作参数
240
+ show_completed: Optional[bool] = False # 是否显示已完成的任务
241
+ task_type: Optional[str] = None # 过滤任务类型: "command", "subagent", None(全部)
242
+
243
+ # monitor 操作参数
244
+ task_id: Optional[str] = None # 任务ID(UUID格式)
245
+ pid: Optional[int] = None # 进程ID(系统PID)
246
+ process_uniq_id: Optional[str] = None # 进程唯一ID(显示友好的短ID)
247
+ lines: Optional[int] = 100 # 显示的行数,默认100行
248
+ output_type: Optional[str] = "both" # "stdout", "stderr", "both"
249
+
250
+ # cleanup 操作参数
251
+ status_filter: Optional[str] = None # "completed", "failed", None(全部已结束的)
252
+ older_than_minutes: Optional[int] = None # 清理多少分钟前完成的任务
253
+ task_ids: Optional[List[str]] = None # 指定要清理的任务ID列表
254
+
255
+ # kill 操作参数
256
+ pids: Optional[List[int]] = None # 批量终止多个进程(系统PID)
257
+ force: Optional[bool] = False # 是否强制终止(SIGKILL vs SIGTERM)
258
+ kill_children: Optional[bool] = True # 是否同时终止子进程
259
+
260
+
261
+ class WebCrawlTool(BaseTool):
262
+ """网页爬取工具,使用 Firecrawl、Metaso 或 BochaAI 进行网页爬取
263
+
264
+ 支持多个API key配置时的并发爬取,结果会合并返回。
265
+ 使用线程池进行并发处理以提高效率。
266
+ """
267
+
268
+ url: str # 要爬取的URL
269
+ limit: Optional[int] = 10 # 爬取页面数量限制
270
+ scrape_options: Optional[str] = None # 抓取选项,JSON字符串格式
271
+ exclude_paths: Optional[str] = None # 排除的路径,逗号分割
272
+ include_paths: Optional[str] = None # 包含的路径,逗号分割
273
+ max_depth: Optional[int] = None # 最大爬取深度
274
+ allow_subdomains: Optional[str] = "false" # 是否允许子域名,true/false
275
+ crawl_entire_domain: Optional[str] = "false" # 是否爬取整个域名,true/false
276
+
277
+
278
+ class WebSearchTool(BaseTool):
279
+ """网页搜索工具,使用 Firecrawl、Metaso 或 BochaAI 进行网页搜索
280
+
281
+ 支持多个API key配置时的并发搜索,结果会合并返回。
282
+ 使用线程池进行并发处理以提高效率。
283
+ """
284
+
285
+ query: str # 搜索查询
286
+ limit: Optional[int] = 5 # 返回结果数量限制
287
+ sources: Optional[str] = None # 搜索源类型,逗号分割:web,news,images
288
+ scrape_options: Optional[str] = None # 抓取选项,JSON字符串格式
289
+ location: Optional[str] = None # 搜索位置
290
+ tbs: Optional[str] = None # 时间过滤参数
291
+
292
+
293
+ class LoadExtraDocumentTool(BaseTool):
294
+ """按名称加载内置额外文档(以 prompt 文本形式返回)
295
+
296
+ 例如:
297
+ <load_extra_document>
298
+ <name>workflow_subagents</name>
299
+ </load_extra_document>
300
+ """
301
+
302
+ name: str
303
+
304
+
305
+ class ExecuteWorkflowTool(BaseTool):
306
+ """执行 workflow 工具
307
+
308
+ 按名称执行定义在 .autocoderworkflow/ 等目录的 workflow YAML 文件。
309
+
310
+ 例如:
311
+ <execute_workflow>
312
+ <name>coder</name>
313
+ </execute_workflow>
314
+ """
315
+
316
+ name: str
317
+ vars_override: Optional[str] = None # JSON 字符串,可选的变量覆盖
318
+
319
+
91
320
  # Event Types for Rich Output Streaming
92
321
  class LLMOutputEvent(BaseModel):
93
322
  """Represents plain text output from the LLM."""
323
+
94
324
  text: str
95
325
 
326
+
96
327
  class LLMThinkingEvent(BaseModel):
97
328
  """Represents text within <thinking> tags from the LLM."""
329
+
98
330
  text: str
99
331
 
332
+
100
333
  class ToolCallEvent(BaseModel):
101
334
  """Represents the LLM deciding to call a tool."""
102
- tool: SkipValidation[BaseTool] # Use SkipValidation as BaseTool itself is complex
335
+
336
+ tool: SkipValidation[BaseTool] # Use SkipValidation as BaseTool itself is complex
103
337
  tool_xml: str
104
338
 
339
+
105
340
  class ToolResultEvent(BaseModel):
106
341
  """Represents the result of executing a tool."""
342
+
107
343
  tool_name: str
108
344
  result: ToolResult
109
345
 
346
+
110
347
  class TokenUsageEvent(BaseModel):
111
348
  """Represents the result of executing a tool."""
349
+
112
350
  usage: Any
113
351
 
114
352
 
115
353
  class ConversationIdEvent(BaseModel):
116
354
  """Represents the conversation id."""
355
+
117
356
  conversation_id: str
118
357
 
358
+
119
359
  class PlanModeRespondEvent(BaseModel):
120
360
  """Represents the LLM attempting to complete the task."""
121
- completion: SkipValidation[PlanModeRespondTool] # Skip validation
361
+
362
+ completion: SkipValidation[PlanModeRespondTool] # Skip validation
122
363
  completion_xml: str
123
364
 
365
+
124
366
  class CompletionEvent(BaseModel):
125
367
  """Represents the LLM attempting to complete the task."""
126
- completion: SkipValidation[AttemptCompletionTool] # Skip validation
368
+
369
+ completion: SkipValidation[AttemptCompletionTool] # Skip validation
127
370
  completion_xml: str
128
371
 
372
+
373
+ class PreCommitEvent(BaseModel):
374
+ """Represents the LLM attempting to complete the task."""
375
+
376
+ commit_result: CommitResult
377
+ tpe: str = "pre_commit"
378
+
379
+
380
+ class CommitEvent(BaseModel):
381
+ """Represents the LLM attempting to complete the task."""
382
+
383
+ commit_result: CommitResult
384
+ tpe: str = "commit"
385
+
386
+
129
387
  class ErrorEvent(BaseModel):
130
388
  """Represents an error during the process."""
389
+
390
+ message: str
391
+
392
+
393
+ class RetryEvent(BaseModel):
394
+ """Represents a retry event."""
395
+
131
396
  message: str
132
397
 
398
+
133
399
  class WindowLengthChangeEvent(BaseModel):
134
400
  """Represents the token usage in the conversation window."""
401
+
135
402
  tokens_used: int
403
+ pruned_tokens_used: int
404
+ conversation_round: int
405
+
136
406
 
137
407
  # Base event class for all agent events
138
408
  class AgentEvent(BaseModel):
139
409
  """Base class for all agent events."""
410
+
140
411
  pass
141
412
 
413
+
142
414
  # Metadata for token usage tracking
143
- class SingleOutputMeta(BaseModel):
415
+ class AgentSingleOutputMeta(BaseModel):
144
416
  """Metadata for tracking token usage for a single LLM output."""
417
+
145
418
  model_name: str
146
419
  input_tokens: int
147
420
  output_tokens: int
148
421
  input_cost: float
149
422
  output_cost: float
150
423
 
424
+
425
+ # Pull Request Result type - compatible with PRResult from pull_requests module
426
+ class PullRequestResult(BaseModel):
427
+ """Pull Request operation result for agentic edit events"""
428
+
429
+ success: bool
430
+ pr_number: Optional[int] = None
431
+ pr_url: Optional[str] = None
432
+ pr_id: Optional[str] = None
433
+ error_message: Optional[str] = None
434
+ error_code: Optional[str] = None
435
+ platform: Optional[str] = None # Using str instead of PlatformType for flexibility
436
+ raw_response: Optional[Dict[str, Any]] = None
437
+ retry_after: Optional[int] = None
438
+
439
+ @classmethod
440
+ def from_pr_result(cls, pr_result) -> "PullRequestResult":
441
+ """Create PullRequestResult from PRResult instance"""
442
+ if pr_result is None:
443
+ return cls(success=False, error_message="No PR result provided")
444
+
445
+ return cls(
446
+ success=pr_result.success,
447
+ pr_number=pr_result.pr_number,
448
+ pr_url=pr_result.pr_url,
449
+ pr_id=pr_result.pr_id,
450
+ error_message=pr_result.error_message,
451
+ error_code=pr_result.error_code,
452
+ platform=str(pr_result.platform) if pr_result.platform else None,
453
+ raw_response=pr_result.raw_response,
454
+ retry_after=pr_result.retry_after,
455
+ )
456
+
457
+
458
+ class PullRequestEvent(BaseModel):
459
+ """Represents a Pull Request creation event."""
460
+
461
+ pull_request_result: PullRequestResult
462
+
463
+
151
464
  # Deprecated: Will be replaced by specific Event types
152
465
  # class PlainTextOutput(BaseModel):
153
466
  # text: str
@@ -166,13 +479,28 @@ TOOL_MODEL_MAP: Dict[str, Type[BaseTool]] = {
166
479
  "attempt_completion": AttemptCompletionTool,
167
480
  "plan_mode_respond": PlanModeRespondTool,
168
481
  "use_mcp_tool": UseMcpTool,
169
- "use_rag_tool": UseRAGTool,
482
+ "use_rag_tool": UseRAGTool,
483
+ "run_named_subagents": RunNamedSubagentsTool,
170
484
  "todo_read": TodoReadTool,
171
485
  "todo_write": TodoWriteTool,
172
486
  "ac_mod_read": ACModReadTool,
173
487
  "ac_mod_write": ACModWriteTool,
488
+ "ac_mod_list": ACModListTool,
489
+ "count_tokens": CountTokensTool,
490
+ "extract_to_text": ExtractToTextTool,
491
+ "session_start": SessionStartTool,
492
+ "session_interactive": SessionInteractiveTool,
493
+ "session_stop": SessionStopTool,
494
+ "conversation_message_ids_write": ConversationMessageIdsWriteTool,
495
+ "conversation_message_ids_read": ConversationMessageIdsReadTool,
496
+ "background_task": BackgroundTaskTool,
497
+ "web_crawl": WebCrawlTool,
498
+ "web_search": WebSearchTool,
499
+ "load_extra_document": LoadExtraDocumentTool,
500
+ "execute_workflow": ExecuteWorkflowTool,
174
501
  }
175
502
 
503
+
176
504
  class FileChangeEntry(BaseModel):
177
505
  type: str # 'added' or 'modified'
178
506
  diffs: List[str] = []
@@ -186,6 +514,8 @@ class AgenticEditRequest(BaseModel):
186
514
  class FileOperation(BaseModel):
187
515
  path: str
188
516
  operation: str # e.g., "MODIFY", "REFERENCE", "ADD", "REMOVE"
517
+
518
+
189
519
  class MemoryConfig(BaseModel):
190
520
  """
191
521
  A model to encapsulate memory configuration and operations.
@@ -224,9 +554,13 @@ class CommandConfig(BaseModel):
224
554
  index_import: SkipValidation[Callable]
225
555
  exclude_files: SkipValidation[Callable]
226
556
 
227
- class AgenticEditConversationConfig(BaseModel):
557
+
558
+ class AgenticEditConversationConfig(BaseModel):
228
559
  conversation_name: Optional[str] = "current"
229
- conversation_id: Optional[str] = None
560
+ conversation_id: Optional[str] = None
230
561
  action: Optional[str] = None
231
562
  query: Optional[str] = None
232
563
  pull_request: bool = False
564
+ pre_commit: bool = False
565
+ post_commit: bool = False
566
+ is_sub_agent: bool = False
@@ -3,7 +3,7 @@ Runner 模块提供了多种运行模式,用于在不同环境下执行 Agenti
3
3
 
4
4
  这个模块包含三种主要的运行器:
5
5
  1. TerminalRunner: 在终端环境中运行代理,提供格式化输出
6
- 2. EventRunner: 将代理事件转换为标准事件系统格式
6
+ 2. FileBasedEventRunner: 将代理事件转换为标准事件系统格式
7
7
  3. SdkRunner: 提供生成器接口,适用于SDK环境
8
8
 
9
9
  使用示例:
@@ -18,14 +18,14 @@ runner.run(AgenticEditRequest(user_input="请帮我实现一个HTTP服务器"))
18
18
 
19
19
  from .base_runner import BaseRunner
20
20
  from .terminal_runner import TerminalRunner
21
- from .event_runner import EventRunner
21
+ from .file_based_event_runner import FileBasedEventRunner
22
22
  from .sdk_runner import SdkRunner
23
23
  from .tool_display import get_tool_display_message
24
24
 
25
25
  __all__ = [
26
26
  "BaseRunner",
27
27
  "TerminalRunner",
28
- "EventRunner",
28
+ "FileBasedEventRunner",
29
29
  "SdkRunner",
30
30
  "get_tool_display_message"
31
31
  ]
@@ -9,11 +9,10 @@ import logging
9
9
  from typing import Generator, Any, Dict, Optional, Callable, List
10
10
 
11
11
  from autocoder.common.v2.agent.agentic_edit_types import (
12
- AgenticEditRequest, AgentEvent, CompletionEvent,
13
- AgenticEditConversationConfig, CommandConfig, MemoryConfig
12
+ AgenticEditRequest, AgentEvent,
13
+ AgenticEditConversationConfig
14
14
  )
15
- from autocoder.common import AutoCoderArgs, SourceCodeList
16
- from autocoder.common.v2.agent.agentic_edit import AgenticEdit
15
+ from autocoder.common import AutoCoderArgs
17
16
  from autocoder.common.printer import Printer
18
17
 
19
18
  logger = logging.getLogger(__name__)
@@ -29,46 +28,33 @@ class BaseRunner:
29
28
  def __init__(
30
29
  self,
31
30
  llm: Any,
32
- conversation_history: List[Dict[str, Any]],
33
- files: SourceCodeList,
34
31
  args: AutoCoderArgs,
35
- memory_config: MemoryConfig,
36
- command_config: Optional[CommandConfig] = None,
37
- conversation_name: str = "current",
38
- conversation_config: Optional[AgenticEditConversationConfig] = None
32
+ conversation_config: Optional[AgenticEditConversationConfig] = None,
33
+ cancel_token: Optional[str] = None,
34
+ system_prompt: Optional[str] = None
39
35
  ):
40
36
  """
41
37
  初始化代理运行器。
42
38
 
43
39
  Args:
44
40
  llm: 大语言模型实例
45
- conversation_history: 对话历史
46
- files: 源代码文件列表
47
41
  args: 自动编码器参数
48
- memory_config: 内存配置
49
- command_config: 命令配置(可选)
50
- conversation_name: 会话名称(默认为"current")
51
42
  conversation_config: 会话配置(可选)
52
43
  """
44
+ from autocoder.common.v2.agent.agentic_edit import AgenticEdit
45
+
53
46
  self.llm = llm
54
- self.conversation_history = conversation_history
55
- self.files = files
56
47
  self.args = args
57
- self.memory_config = memory_config
58
- self.command_config = command_config
59
- self.conversation_name = conversation_name
60
48
  self.conversation_config = conversation_config
49
+ self.system_prompt = system_prompt
61
50
  self.printer = Printer()
62
51
 
63
52
  self.agent = AgenticEdit(
64
53
  llm=llm,
65
- conversation_history=conversation_history,
66
- files=files,
67
54
  args=args,
68
- memory_config=memory_config,
69
- command_config=command_config,
70
- conversation_name=conversation_name,
71
- conversation_config=conversation_config
55
+ conversation_config=conversation_config,
56
+ cancel_token=cancel_token,
57
+ custom_system_prompt=system_prompt
72
58
  )
73
59
 
74
60
  def run(self, request: AgenticEditRequest) -> Any:
@@ -1,5 +1,6 @@
1
+
1
2
  """
2
- EventRunner 提供将代理事件转换为标准事件系统格式的功能。
3
+ FileBasedEventRunner 提供将代理事件转换为标准事件系统格式的功能。
3
4
 
4
5
  这个模块负责将内部代理事件转换为标准事件系统格式,并通过事件管理器写入。
5
6
  它支持流式处理事件和结果事件的写入。
@@ -22,7 +23,7 @@ from .base_runner import BaseRunner
22
23
 
23
24
  logger = logging.getLogger(__name__)
24
25
 
25
- class EventRunner(BaseRunner):
26
+ class FileBasedEventRunner(BaseRunner):
26
27
  """
27
28
  将代理事件转换为标准事件系统格式并写入事件管理器。
28
29