auto-coder 0.1.400__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 (579) 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-0.1.400.dist-info → auto_coder-2.0.0.dist-info}/WHEEL +1 -1
  5. {auto_coder-0.1.400.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 +25 -4
  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 +1029 -2310
  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 +1021 -372
  28. autocoder/chat_auto_coder_lang.py +23 -732
  29. autocoder/commands/auto_command.py +26 -9
  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/file_monitor/test_file_monitor.py +307 -0
  119. autocoder/common/git_utils.py +51 -10
  120. autocoder/common/global_cancel.py +15 -6
  121. autocoder/common/ignorefiles/test_ignore_file_utils.py +1 -1
  122. autocoder/common/international/__init__.py +31 -0
  123. autocoder/common/international/demo_international.py +92 -0
  124. autocoder/common/international/message_manager.py +157 -0
  125. autocoder/common/international/messages/__init__.py +56 -0
  126. autocoder/common/international/messages/async_command_messages.py +507 -0
  127. autocoder/common/international/messages/auto_coder_messages.py +2208 -0
  128. autocoder/common/international/messages/chat_auto_coder_messages.py +1547 -0
  129. autocoder/common/international/messages/command_help_messages.py +986 -0
  130. autocoder/common/international/messages/conversation_command_messages.py +191 -0
  131. autocoder/common/international/messages/git_helper_plugin_messages.py +159 -0
  132. autocoder/common/international/messages/queue_command_messages.py +751 -0
  133. autocoder/common/international/messages/rules_command_messages.py +77 -0
  134. autocoder/common/international/messages/sdk_messages.py +1707 -0
  135. autocoder/common/international/messages/token_helper_plugin_messages.py +361 -0
  136. autocoder/common/international/messages/tool_display_messages.py +1212 -0
  137. autocoder/common/international/messages/workflow_exception_messages.py +473 -0
  138. autocoder/common/international/test_international.py +612 -0
  139. autocoder/common/linter_core/__init__.py +28 -0
  140. autocoder/common/linter_core/base_linter.py +61 -0
  141. autocoder/common/linter_core/config_loader.py +271 -0
  142. autocoder/common/linter_core/formatters/__init__.py +0 -0
  143. autocoder/common/linter_core/formatters/base_formatter.py +38 -0
  144. autocoder/common/linter_core/formatters/raw_formatter.py +17 -0
  145. autocoder/common/linter_core/linter.py +166 -0
  146. autocoder/common/linter_core/linter_factory.py +216 -0
  147. autocoder/common/linter_core/linter_manager.py +333 -0
  148. autocoder/common/linter_core/linters/__init__.py +9 -0
  149. autocoder/common/linter_core/linters/java_linter.py +342 -0
  150. autocoder/common/linter_core/linters/python_linter.py +115 -0
  151. autocoder/common/linter_core/linters/typescript_linter.py +119 -0
  152. autocoder/common/linter_core/models/__init__.py +7 -0
  153. autocoder/common/linter_core/models/lint_result.py +91 -0
  154. autocoder/common/linter_core/models.py +33 -0
  155. autocoder/common/linter_core/tests/__init__.py +3 -0
  156. autocoder/common/linter_core/tests/test_config_loader.py +323 -0
  157. autocoder/common/linter_core/tests/test_config_loading.py +308 -0
  158. autocoder/common/linter_core/tests/test_factory_manager.py +234 -0
  159. autocoder/common/linter_core/tests/test_formatters.py +147 -0
  160. autocoder/common/linter_core/tests/test_integration.py +317 -0
  161. autocoder/common/linter_core/tests/test_java_linter.py +496 -0
  162. autocoder/common/linter_core/tests/test_linters.py +265 -0
  163. autocoder/common/linter_core/tests/test_models.py +81 -0
  164. autocoder/common/linter_core/tests/verify_config_loading.py +296 -0
  165. autocoder/common/linter_core/tests/verify_fixes.py +183 -0
  166. autocoder/common/llm_friendly_package/__init__.py +31 -0
  167. autocoder/common/llm_friendly_package/base_manager.py +102 -0
  168. autocoder/common/llm_friendly_package/docs_manager.py +121 -0
  169. autocoder/common/llm_friendly_package/library_manager.py +171 -0
  170. autocoder/common/{llm_friendly_package.py → llm_friendly_package/main_manager.py} +204 -231
  171. autocoder/common/llm_friendly_package/models.py +40 -0
  172. autocoder/common/llm_friendly_package/test_llm_friendly_package.py +536 -0
  173. autocoder/common/llms/__init__.py +15 -0
  174. autocoder/common/llms/demo_error_handling.py +85 -0
  175. autocoder/common/llms/factory.py +142 -0
  176. autocoder/common/llms/manager.py +264 -0
  177. autocoder/common/llms/pricing.py +121 -0
  178. autocoder/common/llms/registry.py +288 -0
  179. autocoder/common/llms/schema.py +77 -0
  180. autocoder/common/llms/simple_demo.py +45 -0
  181. autocoder/common/llms/test_quick_model.py +116 -0
  182. autocoder/common/llms/test_remove_functionality.py +182 -0
  183. autocoder/common/llms/tests/__init__.py +1 -0
  184. autocoder/common/llms/tests/test_manager.py +330 -0
  185. autocoder/common/llms/tests/test_registry.py +364 -0
  186. autocoder/common/mcp_tools/__init__.py +62 -0
  187. autocoder/common/{mcp_tools.py → mcp_tools/executor.py} +49 -40
  188. autocoder/common/{mcp_hub.py → mcp_tools/hub.py} +42 -68
  189. autocoder/common/{mcp_server_install.py → mcp_tools/installer.py} +16 -28
  190. autocoder/common/{mcp_server.py → mcp_tools/server.py} +176 -48
  191. autocoder/common/mcp_tools/test_keyboard_interrupt.py +93 -0
  192. autocoder/common/mcp_tools/test_mcp_tools.py +391 -0
  193. autocoder/common/{mcp_server_types.py → mcp_tools/types.py} +121 -48
  194. autocoder/common/mcp_tools/verify_functionality.py +202 -0
  195. autocoder/common/model_speed_tester.py +32 -26
  196. autocoder/common/priority_directory_finder/__init__.py +142 -0
  197. autocoder/common/priority_directory_finder/examples.py +230 -0
  198. autocoder/common/priority_directory_finder/finder.py +283 -0
  199. autocoder/common/priority_directory_finder/models.py +236 -0
  200. autocoder/common/priority_directory_finder/test_priority_directory_finder.py +431 -0
  201. autocoder/common/project_scanner/__init__.py +18 -0
  202. autocoder/common/project_scanner/compat.py +77 -0
  203. autocoder/common/project_scanner/scanner.py +436 -0
  204. autocoder/common/project_tracker/__init__.py +27 -0
  205. autocoder/common/project_tracker/api.py +228 -0
  206. autocoder/common/project_tracker/demo.py +272 -0
  207. autocoder/common/project_tracker/tracker.py +487 -0
  208. autocoder/common/project_tracker/types.py +53 -0
  209. autocoder/common/pruner/__init__.py +67 -0
  210. autocoder/common/pruner/agentic_conversation_pruner.py +746 -0
  211. autocoder/common/{context_pruner.py → pruner/context_pruner.py} +137 -40
  212. autocoder/common/pruner/conversation_message_ids_api.py +386 -0
  213. autocoder/common/pruner/conversation_message_ids_manager.py +347 -0
  214. autocoder/common/pruner/conversation_message_ids_pruner.py +473 -0
  215. autocoder/common/pruner/conversation_normalizer.py +347 -0
  216. autocoder/common/{conversation_pruner.py → pruner/conversation_pruner.py} +26 -6
  217. autocoder/common/pruner/test_agentic_conversation_pruner.py +784 -0
  218. autocoder/common/pruner/test_context_pruner.py +546 -0
  219. autocoder/common/pruner/test_conversation_normalizer.py +502 -0
  220. autocoder/common/pruner/test_tool_content_detector.py +324 -0
  221. autocoder/common/pruner/tool_content_detector.py +227 -0
  222. autocoder/common/pruner/tools/__init__.py +18 -0
  223. autocoder/common/pruner/tools/query_message_ids.py +264 -0
  224. autocoder/common/pruner/tools/test_agentic_pruning_logic.py +432 -0
  225. autocoder/common/pruner/tools/test_message_ids_pruning_only.py +192 -0
  226. autocoder/common/pull_requests/__init__.py +9 -1
  227. autocoder/common/pull_requests/utils.py +122 -1
  228. autocoder/common/rag_manager/rag_manager.py +36 -40
  229. autocoder/common/rulefiles/__init__.py +53 -1
  230. autocoder/common/rulefiles/api.py +250 -0
  231. autocoder/common/rulefiles/core/__init__.py +14 -0
  232. autocoder/common/rulefiles/core/manager.py +241 -0
  233. autocoder/common/rulefiles/core/selector.py +805 -0
  234. autocoder/common/rulefiles/models/__init__.py +20 -0
  235. autocoder/common/rulefiles/models/index.py +16 -0
  236. autocoder/common/rulefiles/models/init_rule.py +18 -0
  237. autocoder/common/rulefiles/models/rule_file.py +18 -0
  238. autocoder/common/rulefiles/models/rule_relevance.py +14 -0
  239. autocoder/common/rulefiles/models/summary.py +16 -0
  240. autocoder/common/rulefiles/test_rulefiles.py +776 -0
  241. autocoder/common/rulefiles/utils/__init__.py +34 -0
  242. autocoder/common/rulefiles/utils/monitor.py +86 -0
  243. autocoder/common/rulefiles/utils/parser.py +230 -0
  244. autocoder/common/save_formatted_log.py +67 -10
  245. autocoder/common/search_replace.py +8 -1
  246. autocoder/common/search_replace_patch/__init__.py +24 -0
  247. autocoder/common/search_replace_patch/base.py +115 -0
  248. autocoder/common/search_replace_patch/manager.py +248 -0
  249. autocoder/common/search_replace_patch/patch_replacer.py +304 -0
  250. autocoder/common/search_replace_patch/similarity_replacer.py +306 -0
  251. autocoder/common/search_replace_patch/string_replacer.py +181 -0
  252. autocoder/common/search_replace_patch/tests/__init__.py +3 -0
  253. autocoder/common/search_replace_patch/tests/run_tests.py +126 -0
  254. autocoder/common/search_replace_patch/tests/test_base.py +188 -0
  255. autocoder/common/search_replace_patch/tests/test_empty_line_insert.py +233 -0
  256. autocoder/common/search_replace_patch/tests/test_integration.py +389 -0
  257. autocoder/common/search_replace_patch/tests/test_manager.py +351 -0
  258. autocoder/common/search_replace_patch/tests/test_patch_replacer.py +316 -0
  259. autocoder/common/search_replace_patch/tests/test_regex_replacer.py +306 -0
  260. autocoder/common/search_replace_patch/tests/test_similarity_replacer.py +384 -0
  261. autocoder/common/shell_commands/__init__.py +197 -0
  262. autocoder/common/shell_commands/background_process_notifier.py +346 -0
  263. autocoder/common/shell_commands/command_executor.py +1127 -0
  264. autocoder/common/shell_commands/error_recovery.py +541 -0
  265. autocoder/common/shell_commands/exceptions.py +120 -0
  266. autocoder/common/shell_commands/interactive_executor.py +476 -0
  267. autocoder/common/shell_commands/interactive_pexpect_process.py +623 -0
  268. autocoder/common/shell_commands/interactive_process.py +744 -0
  269. autocoder/common/shell_commands/interactive_session_manager.py +1014 -0
  270. autocoder/common/shell_commands/monitoring.py +529 -0
  271. autocoder/common/shell_commands/process_cleanup.py +386 -0
  272. autocoder/common/shell_commands/process_manager.py +606 -0
  273. autocoder/common/shell_commands/test_interactive_pexpect_process.py +281 -0
  274. autocoder/common/shell_commands/tests/__init__.py +6 -0
  275. autocoder/common/shell_commands/tests/conftest.py +118 -0
  276. autocoder/common/shell_commands/tests/test_background_process_notifier.py +703 -0
  277. autocoder/common/shell_commands/tests/test_command_executor.py +448 -0
  278. autocoder/common/shell_commands/tests/test_error_recovery.py +305 -0
  279. autocoder/common/shell_commands/tests/test_exceptions.py +299 -0
  280. autocoder/common/shell_commands/tests/test_execute_batch.py +588 -0
  281. autocoder/common/shell_commands/tests/test_indented_batch_commands.py +244 -0
  282. autocoder/common/shell_commands/tests/test_integration.py +664 -0
  283. autocoder/common/shell_commands/tests/test_monitoring.py +546 -0
  284. autocoder/common/shell_commands/tests/test_performance.py +632 -0
  285. autocoder/common/shell_commands/tests/test_process_cleanup.py +397 -0
  286. autocoder/common/shell_commands/tests/test_process_manager.py +606 -0
  287. autocoder/common/shell_commands/tests/test_timeout_config.py +343 -0
  288. autocoder/common/shell_commands/tests/test_timeout_manager.py +520 -0
  289. autocoder/common/shell_commands/timeout_config.py +315 -0
  290. autocoder/common/shell_commands/timeout_manager.py +352 -0
  291. autocoder/common/terminal_paste/__init__.py +14 -0
  292. autocoder/common/terminal_paste/demo.py +145 -0
  293. autocoder/common/terminal_paste/demo_paste_functionality.py +95 -0
  294. autocoder/common/terminal_paste/paste_handler.py +200 -0
  295. autocoder/common/terminal_paste/paste_manager.py +118 -0
  296. autocoder/common/terminal_paste/tests/__init__.py +1 -0
  297. autocoder/common/terminal_paste/tests/test_paste_handler.py +182 -0
  298. autocoder/common/terminal_paste/tests/test_paste_manager.py +126 -0
  299. autocoder/common/terminal_paste/utils.py +163 -0
  300. autocoder/common/test_autocoder_args.py +232 -0
  301. autocoder/common/test_env_manager.py +173 -0
  302. autocoder/common/test_env_manager_integration.py +159 -0
  303. autocoder/common/text_similarity/__init__.py +9 -0
  304. autocoder/common/text_similarity/demo.py +216 -0
  305. autocoder/common/text_similarity/examples.py +266 -0
  306. autocoder/common/text_similarity/test_text_similarity.py +306 -0
  307. autocoder/common/text_similarity/text_similarity.py +194 -0
  308. autocoder/common/text_similarity/utils.py +125 -0
  309. autocoder/common/todos/__init__.py +61 -0
  310. autocoder/common/todos/cache/__init__.py +16 -0
  311. autocoder/common/todos/cache/base_cache.py +89 -0
  312. autocoder/common/todos/cache/cache_manager.py +228 -0
  313. autocoder/common/todos/cache/memory_cache.py +225 -0
  314. autocoder/common/todos/config.py +155 -0
  315. autocoder/common/todos/exceptions.py +35 -0
  316. autocoder/common/todos/get_todo_manager.py +161 -0
  317. autocoder/common/todos/manager.py +537 -0
  318. autocoder/common/todos/models.py +239 -0
  319. autocoder/common/todos/storage/__init__.py +14 -0
  320. autocoder/common/todos/storage/base_storage.py +76 -0
  321. autocoder/common/todos/storage/file_storage.py +278 -0
  322. autocoder/common/tokens/__init__.py +15 -0
  323. autocoder/common/tokens/counter.py +44 -2
  324. autocoder/common/tools_manager/__init__.py +17 -0
  325. autocoder/common/tools_manager/examples.py +162 -0
  326. autocoder/common/tools_manager/manager.py +385 -0
  327. autocoder/common/tools_manager/models.py +39 -0
  328. autocoder/common/tools_manager/test_tools_manager.py +303 -0
  329. autocoder/common/tools_manager/utils.py +191 -0
  330. autocoder/common/v2/agent/agentic_callbacks.py +270 -0
  331. autocoder/common/v2/agent/agentic_edit.py +2729 -2052
  332. autocoder/common/v2/agent/agentic_edit_change_manager.py +474 -0
  333. autocoder/common/v2/agent/agentic_edit_tools/__init__.py +43 -2
  334. autocoder/common/v2/agent/agentic_edit_tools/ac_mod_list_tool_resolver.py +279 -0
  335. autocoder/common/v2/agent/agentic_edit_tools/ac_mod_read_tool_resolver.py +40 -0
  336. autocoder/common/v2/agent/agentic_edit_tools/ac_mod_write_tool_resolver.py +52 -0
  337. autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +8 -0
  338. autocoder/common/v2/agent/agentic_edit_tools/background_task_tool_resolver.py +1167 -0
  339. autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +2 -2
  340. autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_read_tool_resolver.py +214 -0
  341. autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_write_tool_resolver.py +299 -0
  342. autocoder/common/v2/agent/agentic_edit_tools/count_tokens_tool_resolver.py +290 -0
  343. autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +565 -30
  344. autocoder/common/v2/agent/agentic_edit_tools/execute_workflow_tool_resolver.py +485 -0
  345. autocoder/common/v2/agent/agentic_edit_tools/extract_to_text_tool_resolver.py +225 -0
  346. autocoder/common/v2/agent/agentic_edit_tools/lint_report.py +79 -0
  347. autocoder/common/v2/agent/agentic_edit_tools/linter_config_models.py +343 -0
  348. autocoder/common/v2/agent/agentic_edit_tools/linter_enabled_tool_resolver.py +189 -0
  349. autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +169 -101
  350. autocoder/common/v2/agent/agentic_edit_tools/load_extra_document_tool_resolver.py +349 -0
  351. autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +244 -51
  352. autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +667 -147
  353. autocoder/common/v2/agent/agentic_edit_tools/run_named_subagents_tool_resolver.py +691 -0
  354. autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +409 -140
  355. autocoder/common/v2/agent/agentic_edit_tools/session_interactive_tool_resolver.py +115 -0
  356. autocoder/common/v2/agent/agentic_edit_tools/session_start_tool_resolver.py +190 -0
  357. autocoder/common/v2/agent/agentic_edit_tools/session_stop_tool_resolver.py +76 -0
  358. autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +209 -194
  359. autocoder/common/v2/agent/agentic_edit_tools/todo_read_tool_resolver.py +135 -0
  360. autocoder/common/v2/agent/agentic_edit_tools/todo_write_tool_resolver.py +328 -0
  361. autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +2 -2
  362. autocoder/common/v2/agent/agentic_edit_tools/web_crawl_tool_resolver.py +557 -0
  363. autocoder/common/v2/agent/agentic_edit_tools/web_search_tool_resolver.py +600 -0
  364. autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +56 -121
  365. autocoder/common/v2/agent/agentic_edit_types.py +386 -10
  366. autocoder/common/v2/agent/runner/__init__.py +31 -0
  367. autocoder/common/v2/agent/runner/base_runner.py +92 -0
  368. autocoder/common/v2/agent/runner/file_based_event_runner.py +217 -0
  369. autocoder/common/v2/agent/runner/sdk_runner.py +182 -0
  370. autocoder/common/v2/agent/runner/terminal_runner.py +396 -0
  371. autocoder/common/v2/agent/runner/tool_display.py +589 -0
  372. autocoder/common/v2/agent/test_agentic_callbacks.py +265 -0
  373. autocoder/common/v2/agent/test_agentic_edit.py +194 -0
  374. autocoder/common/v2/agent/tool_caller/__init__.py +24 -0
  375. autocoder/common/v2/agent/tool_caller/default_tool_resolver_map.py +135 -0
  376. autocoder/common/v2/agent/tool_caller/integration_test.py +172 -0
  377. autocoder/common/v2/agent/tool_caller/plugins/__init__.py +14 -0
  378. autocoder/common/v2/agent/tool_caller/plugins/base_plugin.py +126 -0
  379. autocoder/common/v2/agent/tool_caller/plugins/examples/__init__.py +13 -0
  380. autocoder/common/v2/agent/tool_caller/plugins/examples/logging_plugin.py +164 -0
  381. autocoder/common/v2/agent/tool_caller/plugins/examples/security_filter_plugin.py +198 -0
  382. autocoder/common/v2/agent/tool_caller/plugins/plugin_interface.py +141 -0
  383. autocoder/common/v2/agent/tool_caller/test_tool_caller.py +278 -0
  384. autocoder/common/v2/agent/tool_caller/tool_call_plugin_manager.py +331 -0
  385. autocoder/common/v2/agent/tool_caller/tool_caller.py +337 -0
  386. autocoder/common/v2/agent/tool_caller/usage_example.py +193 -0
  387. autocoder/common/v2/code_agentic_editblock_manager.py +4 -4
  388. autocoder/common/v2/code_auto_generate.py +136 -78
  389. autocoder/common/v2/code_auto_generate_diff.py +135 -79
  390. autocoder/common/v2/code_auto_generate_editblock.py +174 -99
  391. autocoder/common/v2/code_auto_generate_strict_diff.py +151 -71
  392. autocoder/common/v2/code_auto_merge.py +1 -1
  393. autocoder/common/v2/code_auto_merge_editblock.py +13 -1
  394. autocoder/common/v2/code_diff_manager.py +3 -3
  395. autocoder/common/v2/code_editblock_manager.py +4 -14
  396. autocoder/common/v2/code_manager.py +1 -1
  397. autocoder/common/v2/code_strict_diff_manager.py +2 -2
  398. autocoder/common/wrap_llm_hint/__init__.py +10 -0
  399. autocoder/common/wrap_llm_hint/test_wrap_llm_hint.py +1067 -0
  400. autocoder/common/wrap_llm_hint/utils.py +432 -0
  401. autocoder/common/wrap_llm_hint/wrap_llm_hint.py +323 -0
  402. autocoder/completer/__init__.py +8 -0
  403. autocoder/completer/command_completer_v2.py +1051 -0
  404. autocoder/default_project/__init__.py +501 -0
  405. autocoder/dispacher/__init__.py +4 -12
  406. autocoder/dispacher/actions/action.py +165 -7
  407. autocoder/dispacher/actions/plugins/action_regex_project.py +2 -2
  408. autocoder/index/entry.py +117 -125
  409. autocoder/{agent → index/filter}/agentic_filter.py +323 -334
  410. autocoder/index/filter/normal_filter.py +5 -11
  411. autocoder/index/filter/quick_filter.py +1 -1
  412. autocoder/index/index.py +36 -9
  413. autocoder/index/tests/__init__.py +1 -0
  414. autocoder/index/tests/run_tests.py +195 -0
  415. autocoder/index/tests/test_entry.py +303 -0
  416. autocoder/index/tests/test_index_manager.py +314 -0
  417. autocoder/index/tests/test_module_integration.py +300 -0
  418. autocoder/index/tests/test_symbols_utils.py +183 -0
  419. autocoder/inner/__init__.py +4 -0
  420. autocoder/inner/agentic.py +932 -0
  421. autocoder/inner/async_command_handler.py +992 -0
  422. autocoder/inner/conversation_command_handlers.py +623 -0
  423. autocoder/inner/merge_command_handler.py +213 -0
  424. autocoder/inner/queue_command_handler.py +684 -0
  425. autocoder/models.py +95 -266
  426. autocoder/plugins/git_helper_plugin.py +31 -29
  427. autocoder/plugins/token_helper_plugin.py +156 -37
  428. autocoder/pyproject/__init__.py +32 -29
  429. autocoder/rag/agentic_rag.py +215 -75
  430. autocoder/rag/cache/simple_cache.py +1 -2
  431. autocoder/rag/loaders/image_loader.py +1 -1
  432. autocoder/rag/long_context_rag.py +42 -26
  433. autocoder/rag/qa_conversation_strategy.py +1 -1
  434. autocoder/rag/terminal/__init__.py +17 -0
  435. autocoder/rag/terminal/args.py +581 -0
  436. autocoder/rag/terminal/bootstrap.py +61 -0
  437. autocoder/rag/terminal/command_handlers.py +653 -0
  438. autocoder/rag/terminal/formatters/__init__.py +20 -0
  439. autocoder/rag/terminal/formatters/base.py +70 -0
  440. autocoder/rag/terminal/formatters/json_format.py +66 -0
  441. autocoder/rag/terminal/formatters/stream_json.py +95 -0
  442. autocoder/rag/terminal/formatters/text.py +28 -0
  443. autocoder/rag/terminal/init.py +120 -0
  444. autocoder/rag/terminal/utils.py +106 -0
  445. autocoder/rag/test_agentic_rag.py +389 -0
  446. autocoder/rag/test_doc_filter.py +3 -3
  447. autocoder/rag/test_long_context_rag.py +1 -1
  448. autocoder/rag/test_token_limiter.py +517 -10
  449. autocoder/rag/token_counter.py +3 -0
  450. autocoder/rag/token_limiter.py +19 -15
  451. autocoder/rag/tools/__init__.py +26 -2
  452. autocoder/rag/tools/bochaai_example.py +343 -0
  453. autocoder/rag/tools/bochaai_sdk.py +541 -0
  454. autocoder/rag/tools/metaso_example.py +268 -0
  455. autocoder/rag/tools/metaso_sdk.py +417 -0
  456. autocoder/rag/tools/recall_tool.py +28 -7
  457. autocoder/rag/tools/run_integration_tests.py +204 -0
  458. autocoder/rag/tools/test_all_providers.py +318 -0
  459. autocoder/rag/tools/test_bochaai_integration.py +482 -0
  460. autocoder/rag/tools/test_final_integration.py +215 -0
  461. autocoder/rag/tools/test_metaso_integration.py +424 -0
  462. autocoder/rag/tools/test_metaso_real.py +171 -0
  463. autocoder/rag/tools/test_web_crawl_tool.py +639 -0
  464. autocoder/rag/tools/test_web_search_tool.py +509 -0
  465. autocoder/rag/tools/todo_read_tool.py +202 -0
  466. autocoder/rag/tools/todo_write_tool.py +412 -0
  467. autocoder/rag/tools/web_crawl_tool.py +634 -0
  468. autocoder/rag/tools/web_search_tool.py +558 -0
  469. autocoder/rag/tools/web_tools_example.py +119 -0
  470. autocoder/rag/types.py +16 -0
  471. autocoder/rag/variable_holder.py +4 -2
  472. autocoder/rags.py +86 -79
  473. autocoder/regexproject/__init__.py +23 -21
  474. autocoder/run_context.py +9 -0
  475. autocoder/sdk/__init__.py +50 -161
  476. autocoder/sdk/api.py +370 -0
  477. autocoder/sdk/async_runner/__init__.py +26 -0
  478. autocoder/sdk/async_runner/async_executor.py +650 -0
  479. autocoder/sdk/async_runner/async_handler.py +356 -0
  480. autocoder/sdk/async_runner/markdown_processor.py +595 -0
  481. autocoder/sdk/async_runner/task_metadata.py +284 -0
  482. autocoder/sdk/async_runner/worktree_manager.py +438 -0
  483. autocoder/sdk/cli/__init__.py +2 -5
  484. autocoder/sdk/cli/formatters.py +28 -204
  485. autocoder/sdk/cli/handlers.py +77 -44
  486. autocoder/sdk/cli/main.py +158 -170
  487. autocoder/sdk/cli/options.py +95 -22
  488. autocoder/sdk/constants.py +139 -51
  489. autocoder/sdk/core/auto_coder_core.py +484 -267
  490. autocoder/sdk/core/bridge.py +298 -118
  491. autocoder/sdk/exceptions.py +18 -12
  492. autocoder/sdk/formatters/__init__.py +19 -0
  493. autocoder/sdk/formatters/input.py +64 -0
  494. autocoder/sdk/formatters/output.py +247 -0
  495. autocoder/sdk/formatters/stream.py +54 -0
  496. autocoder/sdk/models/__init__.py +6 -5
  497. autocoder/sdk/models/options.py +55 -18
  498. autocoder/sdk/utils/formatters.py +27 -195
  499. autocoder/suffixproject/__init__.py +28 -25
  500. autocoder/terminal/__init__.py +14 -0
  501. autocoder/terminal/app.py +454 -0
  502. autocoder/terminal/args.py +32 -0
  503. autocoder/terminal/bootstrap.py +178 -0
  504. autocoder/terminal/command_processor.py +521 -0
  505. autocoder/terminal/command_registry.py +57 -0
  506. autocoder/terminal/help.py +97 -0
  507. autocoder/terminal/tasks/__init__.py +5 -0
  508. autocoder/terminal/tasks/background.py +77 -0
  509. autocoder/terminal/tasks/task_event.py +70 -0
  510. autocoder/terminal/ui/__init__.py +13 -0
  511. autocoder/terminal/ui/completer.py +268 -0
  512. autocoder/terminal/ui/keybindings.py +75 -0
  513. autocoder/terminal/ui/session.py +41 -0
  514. autocoder/terminal/ui/toolbar.py +64 -0
  515. autocoder/terminal/utils/__init__.py +13 -0
  516. autocoder/terminal/utils/errors.py +18 -0
  517. autocoder/terminal/utils/paths.py +19 -0
  518. autocoder/terminal/utils/shell.py +43 -0
  519. autocoder/terminal_v3/__init__.py +10 -0
  520. autocoder/terminal_v3/app.py +201 -0
  521. autocoder/terminal_v3/handlers/__init__.py +5 -0
  522. autocoder/terminal_v3/handlers/command_handler.py +131 -0
  523. autocoder/terminal_v3/models/__init__.py +6 -0
  524. autocoder/terminal_v3/models/conversation_buffer.py +214 -0
  525. autocoder/terminal_v3/models/message.py +50 -0
  526. autocoder/terminal_v3/models/tool_display.py +247 -0
  527. autocoder/terminal_v3/ui/__init__.py +7 -0
  528. autocoder/terminal_v3/ui/keybindings.py +56 -0
  529. autocoder/terminal_v3/ui/layout.py +141 -0
  530. autocoder/terminal_v3/ui/styles.py +43 -0
  531. autocoder/tsproject/__init__.py +23 -23
  532. autocoder/utils/auto_coder_utils/chat_stream_out.py +1 -1
  533. autocoder/utils/llms.py +88 -80
  534. autocoder/utils/math_utils.py +101 -0
  535. autocoder/utils/model_provider_selector.py +16 -4
  536. autocoder/utils/operate_config_api.py +33 -5
  537. autocoder/utils/thread_utils.py +2 -2
  538. autocoder/version.py +4 -2
  539. autocoder/workflow_agents/__init__.py +84 -0
  540. autocoder/workflow_agents/agent.py +143 -0
  541. autocoder/workflow_agents/exceptions.py +573 -0
  542. autocoder/workflow_agents/executor.py +489 -0
  543. autocoder/workflow_agents/loader.py +737 -0
  544. autocoder/workflow_agents/runner.py +267 -0
  545. autocoder/workflow_agents/types.py +172 -0
  546. autocoder/workflow_agents/utils.py +434 -0
  547. autocoder/workflow_agents/workflow_manager.py +211 -0
  548. auto_coder-0.1.400.dist-info/METADATA +0 -396
  549. auto_coder-0.1.400.dist-info/RECORD +0 -425
  550. auto_coder-0.1.400.dist-info/licenses/LICENSE +0 -201
  551. autocoder/auto_coder_server.py +0 -672
  552. autocoder/benchmark.py +0 -138
  553. autocoder/common/ac_style_command_parser/example.py +0 -7
  554. autocoder/common/cleaner.py +0 -31
  555. autocoder/common/command_completer_v2.py +0 -615
  556. autocoder/common/directory_cache/__init__.py +0 -1
  557. autocoder/common/directory_cache/cache.py +0 -192
  558. autocoder/common/directory_cache/test_cache.py +0 -190
  559. autocoder/common/file_checkpoint/examples.py +0 -217
  560. autocoder/common/llm_friendly_package_example.py +0 -138
  561. autocoder/common/llm_friendly_package_test.py +0 -63
  562. autocoder/common/pull_requests/test_module.py +0 -1
  563. autocoder/common/rulefiles/autocoderrules_utils.py +0 -484
  564. autocoder/common/text.py +0 -30
  565. autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -42
  566. autocoder/common/v2/agent/agentic_edit_tools/test_execute_command_tool_resolver.py +0 -70
  567. autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -163
  568. autocoder/common/v2/agent/agentic_tool_display.py +0 -183
  569. autocoder/plugins/dynamic_completion_example.py +0 -148
  570. autocoder/plugins/sample_plugin.py +0 -160
  571. autocoder/sdk/cli/__main__.py +0 -26
  572. autocoder/sdk/cli/completion_wrapper.py +0 -38
  573. autocoder/sdk/cli/install_completion.py +0 -301
  574. autocoder/sdk/models/messages.py +0 -209
  575. autocoder/sdk/session/__init__.py +0 -32
  576. autocoder/sdk/session/session.py +0 -106
  577. autocoder/sdk/session/session_manager.py +0 -56
  578. {auto_coder-0.1.400.dist-info → auto_coder-2.0.0.dist-info}/top_level.txt +0 -0
  579. /autocoder/{sdk/example.py → common/agent_query_queue/__init__.py} +0 -0
@@ -1,113 +1,465 @@
1
1
  from pydantic import BaseModel
2
- from typing import List, Dict, Any, Callable, Optional, Type
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
 
63
- class ListPackageInfoTool(BaseTool):
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
+
163
+ class ACModReadTool(BaseTool):
64
164
  path: str # 源码包目录,相对路径或绝对路径
65
165
 
166
+
167
+ class ACModWriteTool(BaseTool):
168
+ """
169
+ Tool for creating or updating an AC Module's .ac.mod.md file.
170
+ """
171
+
172
+ path: str # AC Module directory path, relative or absolute path
173
+ diff: str # diff content to edit the .ac.mod.md file
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
+
184
+ class TodoReadTool(BaseTool):
185
+ """
186
+ Tool for reading the current todo list.
187
+ Takes no parameters.
188
+ """
189
+
190
+ pass # No parameters needed
191
+
192
+
193
+ class TodoWriteTool(BaseTool):
194
+ """
195
+ Tool for creating and managing a structured task list.
196
+ """
197
+
198
+ action: str # 'create', 'update', 'mark_progress', 'mark_completed', 'add_task'
199
+ task_id: Optional[str] = None # Task ID for update/mark operations
200
+ content: Optional[str] = None # Task content for create/add operations
201
+ priority: Optional[str] = None # 'high', 'medium', 'low'
202
+ status: Optional[str] = None # 'pending', 'in_progress', 'completed'
203
+ notes: Optional[str] = None # Additional notes for the task
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
+
66
320
  # Event Types for Rich Output Streaming
67
321
  class LLMOutputEvent(BaseModel):
68
322
  """Represents plain text output from the LLM."""
323
+
69
324
  text: str
70
325
 
326
+
71
327
  class LLMThinkingEvent(BaseModel):
72
328
  """Represents text within <thinking> tags from the LLM."""
329
+
73
330
  text: str
74
331
 
332
+
75
333
  class ToolCallEvent(BaseModel):
76
334
  """Represents the LLM deciding to call a tool."""
77
- tool: SkipValidation[BaseTool] # Use SkipValidation as BaseTool itself is complex
335
+
336
+ tool: SkipValidation[BaseTool] # Use SkipValidation as BaseTool itself is complex
78
337
  tool_xml: str
79
338
 
339
+
80
340
  class ToolResultEvent(BaseModel):
81
341
  """Represents the result of executing a tool."""
342
+
82
343
  tool_name: str
83
344
  result: ToolResult
84
345
 
346
+
85
347
  class TokenUsageEvent(BaseModel):
86
348
  """Represents the result of executing a tool."""
349
+
87
350
  usage: Any
88
351
 
89
352
 
90
353
  class ConversationIdEvent(BaseModel):
91
354
  """Represents the conversation id."""
355
+
92
356
  conversation_id: str
93
357
 
358
+
94
359
  class PlanModeRespondEvent(BaseModel):
95
360
  """Represents the LLM attempting to complete the task."""
96
- completion: SkipValidation[PlanModeRespondTool] # Skip validation
361
+
362
+ completion: SkipValidation[PlanModeRespondTool] # Skip validation
97
363
  completion_xml: str
98
364
 
365
+
99
366
  class CompletionEvent(BaseModel):
100
367
  """Represents the LLM attempting to complete the task."""
101
- completion: SkipValidation[AttemptCompletionTool] # Skip validation
368
+
369
+ completion: SkipValidation[AttemptCompletionTool] # Skip validation
102
370
  completion_xml: str
103
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
+
104
387
  class ErrorEvent(BaseModel):
105
388
  """Represents an error during the process."""
389
+
390
+ message: str
391
+
392
+
393
+ class RetryEvent(BaseModel):
394
+ """Represents a retry event."""
395
+
106
396
  message: str
107
397
 
398
+
108
399
  class WindowLengthChangeEvent(BaseModel):
109
400
  """Represents the token usage in the conversation window."""
401
+
110
402
  tokens_used: int
403
+ pruned_tokens_used: int
404
+ conversation_round: int
405
+
406
+
407
+ # Base event class for all agent events
408
+ class AgentEvent(BaseModel):
409
+ """Base class for all agent events."""
410
+
411
+ pass
412
+
413
+
414
+ # Metadata for token usage tracking
415
+ class AgentSingleOutputMeta(BaseModel):
416
+ """Metadata for tracking token usage for a single LLM output."""
417
+
418
+ model_name: str
419
+ input_tokens: int
420
+ output_tokens: int
421
+ input_cost: float
422
+ output_cost: float
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
+
111
463
 
112
464
  # Deprecated: Will be replaced by specific Event types
113
465
  # class PlainTextOutput(BaseModel):
@@ -128,9 +480,27 @@ TOOL_MODEL_MAP: Dict[str, Type[BaseTool]] = {
128
480
  "plan_mode_respond": PlanModeRespondTool,
129
481
  "use_mcp_tool": UseMcpTool,
130
482
  "use_rag_tool": UseRAGTool,
131
- "list_package_info": ListPackageInfoTool,
483
+ "run_named_subagents": RunNamedSubagentsTool,
484
+ "todo_read": TodoReadTool,
485
+ "todo_write": TodoWriteTool,
486
+ "ac_mod_read": ACModReadTool,
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,
132
501
  }
133
502
 
503
+
134
504
  class FileChangeEntry(BaseModel):
135
505
  type: str # 'added' or 'modified'
136
506
  diffs: List[str] = []
@@ -144,6 +514,8 @@ class AgenticEditRequest(BaseModel):
144
514
  class FileOperation(BaseModel):
145
515
  path: str
146
516
  operation: str # e.g., "MODIFY", "REFERENCE", "ADD", "REMOVE"
517
+
518
+
147
519
  class MemoryConfig(BaseModel):
148
520
  """
149
521
  A model to encapsulate memory configuration and operations.
@@ -182,9 +554,13 @@ class CommandConfig(BaseModel):
182
554
  index_import: SkipValidation[Callable]
183
555
  exclude_files: SkipValidation[Callable]
184
556
 
185
- class AgenticEditConversationConfig(BaseModel):
557
+
558
+ class AgenticEditConversationConfig(BaseModel):
186
559
  conversation_name: Optional[str] = "current"
187
- conversation_id: Optional[str] = None
560
+ conversation_id: Optional[str] = None
188
561
  action: Optional[str] = None
189
562
  query: Optional[str] = None
190
563
  pull_request: bool = False
564
+ pre_commit: bool = False
565
+ post_commit: bool = False
566
+ is_sub_agent: bool = False
@@ -0,0 +1,31 @@
1
+ """
2
+ Runner 模块提供了多种运行模式,用于在不同环境下执行 AgenticEdit 代理。
3
+
4
+ 这个模块包含三种主要的运行器:
5
+ 1. TerminalRunner: 在终端环境中运行代理,提供格式化输出
6
+ 2. FileBasedEventRunner: 将代理事件转换为标准事件系统格式
7
+ 3. SdkRunner: 提供生成器接口,适用于SDK环境
8
+
9
+ 使用示例:
10
+ ```python
11
+ from autocoder.common.v2.agent.runner import TerminalRunner
12
+ from autocoder.common.v2.agent.agentic_edit_types import AgenticEditRequest
13
+
14
+ runner = TerminalRunner(llm=llm, args=args, ...)
15
+ runner.run(AgenticEditRequest(user_input="请帮我实现一个HTTP服务器"))
16
+ ```
17
+ """
18
+
19
+ from .base_runner import BaseRunner
20
+ from .terminal_runner import TerminalRunner
21
+ from .file_based_event_runner import FileBasedEventRunner
22
+ from .sdk_runner import SdkRunner
23
+ from .tool_display import get_tool_display_message
24
+
25
+ __all__ = [
26
+ "BaseRunner",
27
+ "TerminalRunner",
28
+ "FileBasedEventRunner",
29
+ "SdkRunner",
30
+ "get_tool_display_message"
31
+ ]
@@ -0,0 +1,92 @@
1
+ """
2
+ BaseRunner 提供了所有运行器的基础实现和接口定义。
3
+
4
+ 这个模块定义了代理运行的核心流程,包括请求处理、事件流生成和变更应用等。
5
+ 各种具体运行器通过继承 BaseRunner 并实现特定的运行逻辑来提供不同的运行模式。
6
+ """
7
+
8
+ import logging
9
+ from typing import Generator, Any, Dict, Optional, Callable, List
10
+
11
+ from autocoder.common.v2.agent.agentic_edit_types import (
12
+ AgenticEditRequest, AgentEvent,
13
+ AgenticEditConversationConfig
14
+ )
15
+ from autocoder.common import AutoCoderArgs
16
+ from autocoder.common.printer import Printer
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+ class BaseRunner:
21
+ """
22
+ 代理运行器的基类,定义了运行代理的核心流程和接口。
23
+
24
+ 所有具体的运行器实现(终端、事件系统、SDK)都应该继承这个类,
25
+ 并根据特定需求实现 run 方法。
26
+ """
27
+
28
+ def __init__(
29
+ self,
30
+ llm: Any,
31
+ args: AutoCoderArgs,
32
+ conversation_config: Optional[AgenticEditConversationConfig] = None,
33
+ cancel_token: Optional[str] = None,
34
+ system_prompt: Optional[str] = None
35
+ ):
36
+ """
37
+ 初始化代理运行器。
38
+
39
+ Args:
40
+ llm: 大语言模型实例
41
+ args: 自动编码器参数
42
+ conversation_config: 会话配置(可选)
43
+ """
44
+ from autocoder.common.v2.agent.agentic_edit import AgenticEdit
45
+
46
+ self.llm = llm
47
+ self.args = args
48
+ self.conversation_config = conversation_config
49
+ self.system_prompt = system_prompt
50
+ self.printer = Printer()
51
+
52
+ self.agent = AgenticEdit(
53
+ llm=llm,
54
+ args=args,
55
+ conversation_config=conversation_config,
56
+ cancel_token=cancel_token,
57
+ custom_system_prompt=system_prompt
58
+ )
59
+
60
+ def run(self, request: AgenticEditRequest) -> Any:
61
+ """
62
+ 运行代理处理请求。
63
+
64
+ 这是一个抽象方法,需要由子类实现。
65
+
66
+ Args:
67
+ request: 代理编辑请求
68
+
69
+ Returns:
70
+ 根据具体实现返回不同类型的结果
71
+ """
72
+ raise NotImplementedError("子类必须实现run方法")
73
+
74
+ def apply_pre_changes(self) -> None:
75
+ """应用预处理变更"""
76
+ self.agent.apply_pre_changes()
77
+
78
+ def apply_changes(self) -> None:
79
+ """应用代理执行后的变更"""
80
+ self.agent.apply_changes()
81
+
82
+ def analyze(self, request: AgenticEditRequest) -> Generator[AgentEvent, None, None]:
83
+ """
84
+ 分析请求并生成事件流。
85
+
86
+ Args:
87
+ request: 代理编辑请求
88
+
89
+ Returns:
90
+ 事件生成器
91
+ """
92
+ return self.agent.analyze(request)