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.
- auto_coder-2.0.0.dist-info/LICENSE +158 -0
- auto_coder-2.0.0.dist-info/METADATA +558 -0
- auto_coder-2.0.0.dist-info/RECORD +795 -0
- {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/WHEEL +1 -1
- {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/entry_points.txt +3 -3
- autocoder/__init__.py +31 -0
- autocoder/agent/auto_filegroup.py +32 -13
- autocoder/agent/auto_learn_from_commit.py +9 -1
- autocoder/agent/base_agentic/__init__.py +3 -0
- autocoder/agent/base_agentic/agent_hub.py +1 -1
- autocoder/agent/base_agentic/base_agent.py +235 -136
- autocoder/agent/base_agentic/default_tools.py +119 -118
- autocoder/agent/base_agentic/test_base_agent.py +1 -1
- autocoder/agent/base_agentic/tool_registry.py +32 -20
- autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +24 -3
- autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +24 -11
- autocoder/agent/base_agentic/types.py +42 -0
- autocoder/agent/entry_command_agent/chat.py +73 -59
- autocoder/auto_coder.py +31 -40
- autocoder/auto_coder_rag.py +11 -1084
- autocoder/auto_coder_runner.py +970 -2345
- autocoder/auto_coder_terminal.py +26 -0
- autocoder/auto_coder_terminal_v3.py +190 -0
- autocoder/chat/conf_command.py +224 -124
- autocoder/chat/models_command.py +361 -299
- autocoder/chat/rules_command.py +79 -31
- autocoder/chat_auto_coder.py +988 -398
- autocoder/chat_auto_coder_lang.py +23 -732
- autocoder/commands/auto_command.py +25 -8
- autocoder/commands/auto_web.py +1 -1
- autocoder/commands/tools.py +44 -44
- autocoder/common/__init__.py +150 -128
- autocoder/common/ac_style_command_parser/__init__.py +39 -2
- autocoder/common/ac_style_command_parser/config.py +422 -0
- autocoder/common/ac_style_command_parser/parser.py +292 -78
- autocoder/common/ac_style_command_parser/test_parser.py +241 -16
- autocoder/common/ac_style_command_parser/test_typed_parser.py +342 -0
- autocoder/common/ac_style_command_parser/typed_parser.py +653 -0
- autocoder/common/action_yml_file_manager.py +25 -13
- autocoder/common/agent_events/__init__.py +52 -0
- autocoder/common/agent_events/agent_event_emitter.py +193 -0
- autocoder/common/agent_events/event_factory.py +177 -0
- autocoder/common/agent_events/examples.py +307 -0
- autocoder/common/agent_events/types.py +113 -0
- autocoder/common/agent_events/utils.py +68 -0
- autocoder/common/agent_hooks/__init__.py +44 -0
- autocoder/common/agent_hooks/examples.py +582 -0
- autocoder/common/agent_hooks/hook_executor.py +217 -0
- autocoder/common/agent_hooks/hook_manager.py +288 -0
- autocoder/common/agent_hooks/types.py +133 -0
- autocoder/common/agent_hooks/utils.py +99 -0
- autocoder/common/agent_query_queue/queue_executor.py +324 -0
- autocoder/common/agent_query_queue/queue_manager.py +325 -0
- autocoder/common/agents/__init__.py +11 -0
- autocoder/common/agents/agent_manager.py +323 -0
- autocoder/common/agents/agent_parser.py +189 -0
- autocoder/common/agents/example_usage.py +344 -0
- autocoder/common/agents/integration_example.py +330 -0
- autocoder/common/agents/test_agent_parser.py +545 -0
- autocoder/common/async_utils.py +101 -0
- autocoder/common/auto_coder_lang.py +23 -972
- autocoder/common/autocoderargs_parser/__init__.py +14 -0
- autocoder/common/autocoderargs_parser/parser.py +184 -0
- autocoder/common/autocoderargs_parser/tests/__init__.py +1 -0
- autocoder/common/autocoderargs_parser/tests/test_args_parser.py +235 -0
- autocoder/common/autocoderargs_parser/tests/test_token_parser.py +195 -0
- autocoder/common/autocoderargs_parser/token_parser.py +290 -0
- autocoder/common/buildin_tokenizer.py +2 -4
- autocoder/common/code_auto_generate.py +149 -74
- autocoder/common/code_auto_generate_diff.py +163 -70
- autocoder/common/code_auto_generate_editblock.py +179 -89
- autocoder/common/code_auto_generate_strict_diff.py +167 -72
- autocoder/common/code_auto_merge_editblock.py +13 -6
- autocoder/common/code_modification_ranker.py +1 -1
- autocoder/common/command_completer.py +3 -3
- autocoder/common/command_file_manager/manager.py +183 -47
- autocoder/common/command_file_manager/test_command_file_manager.py +507 -0
- autocoder/common/command_templates.py +1 -1
- autocoder/common/conf_utils.py +2 -4
- autocoder/common/conversations/config.py +11 -3
- autocoder/common/conversations/get_conversation_manager.py +100 -2
- autocoder/common/conversations/llm_stats_models.py +264 -0
- autocoder/common/conversations/manager.py +112 -28
- autocoder/common/conversations/models.py +16 -2
- autocoder/common/conversations/storage/index_manager.py +134 -10
- autocoder/common/core_config/__init__.py +63 -0
- autocoder/common/core_config/agentic_mode_manager.py +109 -0
- autocoder/common/core_config/base_manager.py +123 -0
- autocoder/common/core_config/compatibility.py +151 -0
- autocoder/common/core_config/config_manager.py +156 -0
- autocoder/common/core_config/conversation_manager.py +31 -0
- autocoder/common/core_config/exclude_manager.py +72 -0
- autocoder/common/core_config/file_manager.py +177 -0
- autocoder/common/core_config/human_as_model_manager.py +129 -0
- autocoder/common/core_config/lib_manager.py +54 -0
- autocoder/common/core_config/main_manager.py +81 -0
- autocoder/common/core_config/mode_manager.py +126 -0
- autocoder/common/core_config/models.py +70 -0
- autocoder/common/core_config/test_memory_manager.py +1056 -0
- autocoder/common/env_manager.py +282 -0
- autocoder/common/env_manager_usage_example.py +211 -0
- autocoder/common/file_checkpoint/conversation_checkpoint.py +19 -19
- autocoder/common/file_checkpoint/manager.py +264 -48
- autocoder/common/file_checkpoint/test_backup.py +1 -18
- autocoder/common/file_checkpoint/test_manager.py +270 -1
- autocoder/common/file_checkpoint/test_store.py +1 -17
- autocoder/common/file_handler/__init__.py +23 -0
- autocoder/common/file_handler/active_context_handler.py +159 -0
- autocoder/common/file_handler/add_files_handler.py +409 -0
- autocoder/common/file_handler/chat_handler.py +180 -0
- autocoder/common/file_handler/coding_handler.py +401 -0
- autocoder/common/file_handler/commit_handler.py +200 -0
- autocoder/common/file_handler/lib_handler.py +156 -0
- autocoder/common/file_handler/list_files_handler.py +111 -0
- autocoder/common/file_handler/mcp_handler.py +268 -0
- autocoder/common/file_handler/models_handler.py +493 -0
- autocoder/common/file_handler/remove_files_handler.py +172 -0
- autocoder/common/git_utils.py +44 -8
- autocoder/common/global_cancel.py +15 -6
- autocoder/common/ignorefiles/test_ignore_file_utils.py +1 -1
- autocoder/common/international/__init__.py +31 -0
- autocoder/common/international/demo_international.py +92 -0
- autocoder/common/international/message_manager.py +157 -0
- autocoder/common/international/messages/__init__.py +56 -0
- autocoder/common/international/messages/async_command_messages.py +507 -0
- autocoder/common/international/messages/auto_coder_messages.py +2208 -0
- autocoder/common/international/messages/chat_auto_coder_messages.py +1547 -0
- autocoder/common/international/messages/command_help_messages.py +986 -0
- autocoder/common/international/messages/conversation_command_messages.py +191 -0
- autocoder/common/international/messages/git_helper_plugin_messages.py +159 -0
- autocoder/common/international/messages/queue_command_messages.py +751 -0
- autocoder/common/international/messages/rules_command_messages.py +77 -0
- autocoder/common/international/messages/sdk_messages.py +1707 -0
- autocoder/common/international/messages/token_helper_plugin_messages.py +361 -0
- autocoder/common/international/messages/tool_display_messages.py +1212 -0
- autocoder/common/international/messages/workflow_exception_messages.py +473 -0
- autocoder/common/international/test_international.py +612 -0
- autocoder/common/linter_core/__init__.py +28 -0
- autocoder/common/linter_core/base_linter.py +61 -0
- autocoder/common/linter_core/config_loader.py +271 -0
- autocoder/common/linter_core/formatters/__init__.py +0 -0
- autocoder/common/linter_core/formatters/base_formatter.py +38 -0
- autocoder/common/linter_core/formatters/raw_formatter.py +17 -0
- autocoder/common/linter_core/linter.py +166 -0
- autocoder/common/linter_core/linter_factory.py +216 -0
- autocoder/common/linter_core/linter_manager.py +333 -0
- autocoder/common/linter_core/linters/__init__.py +9 -0
- autocoder/common/linter_core/linters/java_linter.py +342 -0
- autocoder/common/linter_core/linters/python_linter.py +115 -0
- autocoder/common/linter_core/linters/typescript_linter.py +119 -0
- autocoder/common/linter_core/models/__init__.py +7 -0
- autocoder/common/linter_core/models/lint_result.py +91 -0
- autocoder/common/linter_core/models.py +33 -0
- autocoder/common/linter_core/tests/__init__.py +3 -0
- autocoder/common/linter_core/tests/test_config_loader.py +323 -0
- autocoder/common/linter_core/tests/test_config_loading.py +308 -0
- autocoder/common/linter_core/tests/test_factory_manager.py +234 -0
- autocoder/common/linter_core/tests/test_formatters.py +147 -0
- autocoder/common/linter_core/tests/test_integration.py +317 -0
- autocoder/common/linter_core/tests/test_java_linter.py +496 -0
- autocoder/common/linter_core/tests/test_linters.py +265 -0
- autocoder/common/linter_core/tests/test_models.py +81 -0
- autocoder/common/linter_core/tests/verify_config_loading.py +296 -0
- autocoder/common/linter_core/tests/verify_fixes.py +183 -0
- autocoder/common/llm_friendly_package/__init__.py +31 -0
- autocoder/common/llm_friendly_package/base_manager.py +102 -0
- autocoder/common/llm_friendly_package/docs_manager.py +121 -0
- autocoder/common/llm_friendly_package/library_manager.py +171 -0
- autocoder/common/{llm_friendly_package.py → llm_friendly_package/main_manager.py} +204 -231
- autocoder/common/llm_friendly_package/models.py +40 -0
- autocoder/common/llm_friendly_package/test_llm_friendly_package.py +536 -0
- autocoder/common/llms/__init__.py +15 -0
- autocoder/common/llms/demo_error_handling.py +85 -0
- autocoder/common/llms/factory.py +142 -0
- autocoder/common/llms/manager.py +264 -0
- autocoder/common/llms/pricing.py +121 -0
- autocoder/common/llms/registry.py +288 -0
- autocoder/common/llms/schema.py +77 -0
- autocoder/common/llms/simple_demo.py +45 -0
- autocoder/common/llms/test_quick_model.py +116 -0
- autocoder/common/llms/test_remove_functionality.py +182 -0
- autocoder/common/llms/tests/__init__.py +1 -0
- autocoder/common/llms/tests/test_manager.py +330 -0
- autocoder/common/llms/tests/test_registry.py +364 -0
- autocoder/common/mcp_tools/__init__.py +62 -0
- autocoder/common/{mcp_tools.py → mcp_tools/executor.py} +49 -40
- autocoder/common/{mcp_hub.py → mcp_tools/hub.py} +42 -68
- autocoder/common/{mcp_server_install.py → mcp_tools/installer.py} +16 -28
- autocoder/common/{mcp_server.py → mcp_tools/server.py} +176 -48
- autocoder/common/mcp_tools/test_keyboard_interrupt.py +93 -0
- autocoder/common/mcp_tools/test_mcp_tools.py +391 -0
- autocoder/common/{mcp_server_types.py → mcp_tools/types.py} +121 -48
- autocoder/common/mcp_tools/verify_functionality.py +202 -0
- autocoder/common/model_speed_tester.py +32 -26
- autocoder/common/priority_directory_finder/__init__.py +142 -0
- autocoder/common/priority_directory_finder/examples.py +230 -0
- autocoder/common/priority_directory_finder/finder.py +283 -0
- autocoder/common/priority_directory_finder/models.py +236 -0
- autocoder/common/priority_directory_finder/test_priority_directory_finder.py +431 -0
- autocoder/common/project_scanner/__init__.py +18 -0
- autocoder/common/project_scanner/compat.py +77 -0
- autocoder/common/project_scanner/scanner.py +436 -0
- autocoder/common/project_tracker/__init__.py +27 -0
- autocoder/common/project_tracker/api.py +228 -0
- autocoder/common/project_tracker/demo.py +272 -0
- autocoder/common/project_tracker/tracker.py +487 -0
- autocoder/common/project_tracker/types.py +53 -0
- autocoder/common/pruner/__init__.py +67 -0
- autocoder/common/pruner/agentic_conversation_pruner.py +651 -102
- autocoder/common/pruner/conversation_message_ids_api.py +386 -0
- autocoder/common/pruner/conversation_message_ids_manager.py +347 -0
- autocoder/common/pruner/conversation_message_ids_pruner.py +473 -0
- autocoder/common/pruner/conversation_normalizer.py +347 -0
- autocoder/common/pruner/conversation_pruner.py +26 -6
- autocoder/common/pruner/test_agentic_conversation_pruner.py +554 -112
- autocoder/common/pruner/test_conversation_normalizer.py +502 -0
- autocoder/common/pruner/test_tool_content_detector.py +324 -0
- autocoder/common/pruner/tool_content_detector.py +227 -0
- autocoder/common/pruner/tools/__init__.py +18 -0
- autocoder/common/pruner/tools/query_message_ids.py +264 -0
- autocoder/common/pruner/tools/test_agentic_pruning_logic.py +432 -0
- autocoder/common/pruner/tools/test_message_ids_pruning_only.py +192 -0
- autocoder/common/pull_requests/__init__.py +9 -1
- autocoder/common/pull_requests/utils.py +122 -1
- autocoder/common/rag_manager/rag_manager.py +36 -40
- autocoder/common/rulefiles/__init__.py +53 -1
- autocoder/common/rulefiles/api.py +250 -0
- autocoder/common/rulefiles/core/__init__.py +14 -0
- autocoder/common/rulefiles/core/manager.py +241 -0
- autocoder/common/rulefiles/core/selector.py +805 -0
- autocoder/common/rulefiles/models/__init__.py +20 -0
- autocoder/common/rulefiles/models/index.py +16 -0
- autocoder/common/rulefiles/models/init_rule.py +18 -0
- autocoder/common/rulefiles/models/rule_file.py +18 -0
- autocoder/common/rulefiles/models/rule_relevance.py +14 -0
- autocoder/common/rulefiles/models/summary.py +16 -0
- autocoder/common/rulefiles/test_rulefiles.py +776 -0
- autocoder/common/rulefiles/utils/__init__.py +34 -0
- autocoder/common/rulefiles/utils/monitor.py +86 -0
- autocoder/common/rulefiles/utils/parser.py +230 -0
- autocoder/common/save_formatted_log.py +67 -10
- autocoder/common/search_replace.py +8 -1
- autocoder/common/search_replace_patch/__init__.py +24 -0
- autocoder/common/search_replace_patch/base.py +115 -0
- autocoder/common/search_replace_patch/manager.py +248 -0
- autocoder/common/search_replace_patch/patch_replacer.py +304 -0
- autocoder/common/search_replace_patch/similarity_replacer.py +306 -0
- autocoder/common/search_replace_patch/string_replacer.py +181 -0
- autocoder/common/search_replace_patch/tests/__init__.py +3 -0
- autocoder/common/search_replace_patch/tests/run_tests.py +126 -0
- autocoder/common/search_replace_patch/tests/test_base.py +188 -0
- autocoder/common/search_replace_patch/tests/test_empty_line_insert.py +233 -0
- autocoder/common/search_replace_patch/tests/test_integration.py +389 -0
- autocoder/common/search_replace_patch/tests/test_manager.py +351 -0
- autocoder/common/search_replace_patch/tests/test_patch_replacer.py +316 -0
- autocoder/common/search_replace_patch/tests/test_regex_replacer.py +306 -0
- autocoder/common/search_replace_patch/tests/test_similarity_replacer.py +384 -0
- autocoder/common/shell_commands/__init__.py +197 -0
- autocoder/common/shell_commands/background_process_notifier.py +346 -0
- autocoder/common/shell_commands/command_executor.py +1127 -0
- autocoder/common/shell_commands/error_recovery.py +541 -0
- autocoder/common/shell_commands/exceptions.py +120 -0
- autocoder/common/shell_commands/interactive_executor.py +476 -0
- autocoder/common/shell_commands/interactive_pexpect_process.py +623 -0
- autocoder/common/shell_commands/interactive_process.py +744 -0
- autocoder/common/shell_commands/interactive_session_manager.py +1014 -0
- autocoder/common/shell_commands/monitoring.py +529 -0
- autocoder/common/shell_commands/process_cleanup.py +386 -0
- autocoder/common/shell_commands/process_manager.py +606 -0
- autocoder/common/shell_commands/test_interactive_pexpect_process.py +281 -0
- autocoder/common/shell_commands/tests/__init__.py +6 -0
- autocoder/common/shell_commands/tests/conftest.py +118 -0
- autocoder/common/shell_commands/tests/test_background_process_notifier.py +703 -0
- autocoder/common/shell_commands/tests/test_command_executor.py +448 -0
- autocoder/common/shell_commands/tests/test_error_recovery.py +305 -0
- autocoder/common/shell_commands/tests/test_exceptions.py +299 -0
- autocoder/common/shell_commands/tests/test_execute_batch.py +588 -0
- autocoder/common/shell_commands/tests/test_indented_batch_commands.py +244 -0
- autocoder/common/shell_commands/tests/test_integration.py +664 -0
- autocoder/common/shell_commands/tests/test_monitoring.py +546 -0
- autocoder/common/shell_commands/tests/test_performance.py +632 -0
- autocoder/common/shell_commands/tests/test_process_cleanup.py +397 -0
- autocoder/common/shell_commands/tests/test_process_manager.py +606 -0
- autocoder/common/shell_commands/tests/test_timeout_config.py +343 -0
- autocoder/common/shell_commands/tests/test_timeout_manager.py +520 -0
- autocoder/common/shell_commands/timeout_config.py +315 -0
- autocoder/common/shell_commands/timeout_manager.py +352 -0
- autocoder/common/terminal_paste/__init__.py +14 -0
- autocoder/common/terminal_paste/demo.py +145 -0
- autocoder/common/terminal_paste/demo_paste_functionality.py +95 -0
- autocoder/common/terminal_paste/paste_handler.py +200 -0
- autocoder/common/terminal_paste/paste_manager.py +118 -0
- autocoder/common/terminal_paste/tests/__init__.py +1 -0
- autocoder/common/terminal_paste/tests/test_paste_handler.py +182 -0
- autocoder/common/terminal_paste/tests/test_paste_manager.py +126 -0
- autocoder/common/terminal_paste/utils.py +163 -0
- autocoder/common/test_autocoder_args.py +232 -0
- autocoder/common/test_env_manager.py +173 -0
- autocoder/common/test_env_manager_integration.py +159 -0
- autocoder/common/text_similarity/__init__.py +9 -0
- autocoder/common/text_similarity/demo.py +216 -0
- autocoder/common/text_similarity/examples.py +266 -0
- autocoder/common/text_similarity/test_text_similarity.py +306 -0
- autocoder/common/text_similarity/text_similarity.py +194 -0
- autocoder/common/text_similarity/utils.py +125 -0
- autocoder/common/todos/__init__.py +61 -0
- autocoder/common/todos/cache/__init__.py +16 -0
- autocoder/common/todos/cache/base_cache.py +89 -0
- autocoder/common/todos/cache/cache_manager.py +228 -0
- autocoder/common/todos/cache/memory_cache.py +225 -0
- autocoder/common/todos/config.py +155 -0
- autocoder/common/todos/exceptions.py +35 -0
- autocoder/common/todos/get_todo_manager.py +161 -0
- autocoder/common/todos/manager.py +537 -0
- autocoder/common/todos/models.py +239 -0
- autocoder/common/todos/storage/__init__.py +14 -0
- autocoder/common/todos/storage/base_storage.py +76 -0
- autocoder/common/todos/storage/file_storage.py +278 -0
- autocoder/common/tokens/counter.py +24 -2
- autocoder/common/tools_manager/__init__.py +17 -0
- autocoder/common/tools_manager/examples.py +162 -0
- autocoder/common/tools_manager/manager.py +385 -0
- autocoder/common/tools_manager/models.py +39 -0
- autocoder/common/tools_manager/test_tools_manager.py +303 -0
- autocoder/common/tools_manager/utils.py +191 -0
- autocoder/common/v2/agent/agentic_callbacks.py +270 -0
- autocoder/common/v2/agent/agentic_edit.py +2699 -1856
- autocoder/common/v2/agent/agentic_edit_change_manager.py +474 -0
- autocoder/common/v2/agent/agentic_edit_tools/__init__.py +35 -1
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_list_tool_resolver.py +279 -0
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_write_tool_resolver.py +10 -1
- autocoder/common/v2/agent/agentic_edit_tools/background_task_tool_resolver.py +1167 -0
- autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +2 -2
- autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_read_tool_resolver.py +214 -0
- autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_write_tool_resolver.py +299 -0
- autocoder/common/v2/agent/agentic_edit_tools/count_tokens_tool_resolver.py +290 -0
- autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +564 -29
- autocoder/common/v2/agent/agentic_edit_tools/execute_workflow_tool_resolver.py +485 -0
- autocoder/common/v2/agent/agentic_edit_tools/extract_to_text_tool_resolver.py +225 -0
- autocoder/common/v2/agent/agentic_edit_tools/lint_report.py +79 -0
- autocoder/common/v2/agent/agentic_edit_tools/linter_config_models.py +343 -0
- autocoder/common/v2/agent/agentic_edit_tools/linter_enabled_tool_resolver.py +189 -0
- autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +169 -101
- autocoder/common/v2/agent/agentic_edit_tools/load_extra_document_tool_resolver.py +349 -0
- autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +243 -50
- autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +667 -147
- autocoder/common/v2/agent/agentic_edit_tools/run_named_subagents_tool_resolver.py +691 -0
- autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +410 -86
- autocoder/common/v2/agent/agentic_edit_tools/session_interactive_tool_resolver.py +115 -0
- autocoder/common/v2/agent/agentic_edit_tools/session_start_tool_resolver.py +190 -0
- autocoder/common/v2/agent/agentic_edit_tools/session_stop_tool_resolver.py +76 -0
- autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +207 -192
- autocoder/common/v2/agent/agentic_edit_tools/todo_read_tool_resolver.py +80 -63
- autocoder/common/v2/agent/agentic_edit_tools/todo_write_tool_resolver.py +237 -233
- autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +2 -2
- autocoder/common/v2/agent/agentic_edit_tools/web_crawl_tool_resolver.py +557 -0
- autocoder/common/v2/agent/agentic_edit_tools/web_search_tool_resolver.py +600 -0
- autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +56 -121
- autocoder/common/v2/agent/agentic_edit_types.py +343 -9
- autocoder/common/v2/agent/runner/__init__.py +3 -3
- autocoder/common/v2/agent/runner/base_runner.py +12 -26
- autocoder/common/v2/agent/runner/{event_runner.py → file_based_event_runner.py} +3 -2
- autocoder/common/v2/agent/runner/sdk_runner.py +150 -8
- autocoder/common/v2/agent/runner/terminal_runner.py +170 -57
- autocoder/common/v2/agent/runner/tool_display.py +557 -159
- autocoder/common/v2/agent/test_agentic_callbacks.py +265 -0
- autocoder/common/v2/agent/test_agentic_edit.py +194 -0
- autocoder/common/v2/agent/tool_caller/__init__.py +24 -0
- autocoder/common/v2/agent/tool_caller/default_tool_resolver_map.py +135 -0
- autocoder/common/v2/agent/tool_caller/integration_test.py +172 -0
- autocoder/common/v2/agent/tool_caller/plugins/__init__.py +14 -0
- autocoder/common/v2/agent/tool_caller/plugins/base_plugin.py +126 -0
- autocoder/common/v2/agent/tool_caller/plugins/examples/__init__.py +13 -0
- autocoder/common/v2/agent/tool_caller/plugins/examples/logging_plugin.py +164 -0
- autocoder/common/v2/agent/tool_caller/plugins/examples/security_filter_plugin.py +198 -0
- autocoder/common/v2/agent/tool_caller/plugins/plugin_interface.py +141 -0
- autocoder/common/v2/agent/tool_caller/test_tool_caller.py +278 -0
- autocoder/common/v2/agent/tool_caller/tool_call_plugin_manager.py +331 -0
- autocoder/common/v2/agent/tool_caller/tool_caller.py +337 -0
- autocoder/common/v2/agent/tool_caller/usage_example.py +193 -0
- autocoder/common/v2/code_agentic_editblock_manager.py +4 -4
- autocoder/common/v2/code_auto_generate.py +136 -78
- autocoder/common/v2/code_auto_generate_diff.py +135 -79
- autocoder/common/v2/code_auto_generate_editblock.py +174 -99
- autocoder/common/v2/code_auto_generate_strict_diff.py +151 -71
- autocoder/common/v2/code_auto_merge.py +1 -1
- autocoder/common/v2/code_auto_merge_editblock.py +13 -1
- autocoder/common/v2/code_diff_manager.py +3 -3
- autocoder/common/v2/code_editblock_manager.py +4 -14
- autocoder/common/v2/code_manager.py +1 -1
- autocoder/common/v2/code_strict_diff_manager.py +2 -2
- autocoder/common/wrap_llm_hint/__init__.py +10 -0
- autocoder/common/wrap_llm_hint/test_wrap_llm_hint.py +1067 -0
- autocoder/common/wrap_llm_hint/utils.py +432 -0
- autocoder/common/wrap_llm_hint/wrap_llm_hint.py +323 -0
- autocoder/completer/__init__.py +8 -0
- autocoder/completer/command_completer_v2.py +1051 -0
- autocoder/default_project/__init__.py +501 -0
- autocoder/dispacher/__init__.py +4 -12
- autocoder/dispacher/actions/action.py +165 -7
- autocoder/dispacher/actions/plugins/action_regex_project.py +2 -2
- autocoder/index/entry.py +116 -124
- autocoder/{agent → index/filter}/agentic_filter.py +322 -333
- autocoder/index/filter/normal_filter.py +5 -11
- autocoder/index/filter/quick_filter.py +1 -1
- autocoder/index/index.py +36 -9
- autocoder/index/tests/__init__.py +1 -0
- autocoder/index/tests/run_tests.py +195 -0
- autocoder/index/tests/test_entry.py +303 -0
- autocoder/index/tests/test_index_manager.py +314 -0
- autocoder/index/tests/test_module_integration.py +300 -0
- autocoder/index/tests/test_symbols_utils.py +183 -0
- autocoder/inner/__init__.py +4 -0
- autocoder/inner/agentic.py +932 -0
- autocoder/inner/async_command_handler.py +992 -0
- autocoder/inner/conversation_command_handlers.py +623 -0
- autocoder/inner/merge_command_handler.py +213 -0
- autocoder/inner/queue_command_handler.py +684 -0
- autocoder/models.py +95 -266
- autocoder/plugins/git_helper_plugin.py +31 -29
- autocoder/plugins/token_helper_plugin.py +65 -46
- autocoder/pyproject/__init__.py +32 -29
- autocoder/rag/agentic_rag.py +215 -75
- autocoder/rag/cache/simple_cache.py +1 -2
- autocoder/rag/loaders/image_loader.py +1 -1
- autocoder/rag/long_context_rag.py +42 -26
- autocoder/rag/qa_conversation_strategy.py +1 -1
- autocoder/rag/terminal/__init__.py +17 -0
- autocoder/rag/terminal/args.py +581 -0
- autocoder/rag/terminal/bootstrap.py +61 -0
- autocoder/rag/terminal/command_handlers.py +653 -0
- autocoder/rag/terminal/formatters/__init__.py +20 -0
- autocoder/rag/terminal/formatters/base.py +70 -0
- autocoder/rag/terminal/formatters/json_format.py +66 -0
- autocoder/rag/terminal/formatters/stream_json.py +95 -0
- autocoder/rag/terminal/formatters/text.py +28 -0
- autocoder/rag/terminal/init.py +120 -0
- autocoder/rag/terminal/utils.py +106 -0
- autocoder/rag/test_agentic_rag.py +389 -0
- autocoder/rag/test_doc_filter.py +3 -3
- autocoder/rag/test_long_context_rag.py +1 -1
- autocoder/rag/test_token_limiter.py +517 -10
- autocoder/rag/token_counter.py +3 -0
- autocoder/rag/token_limiter.py +19 -15
- autocoder/rag/tools/__init__.py +26 -2
- autocoder/rag/tools/bochaai_example.py +343 -0
- autocoder/rag/tools/bochaai_sdk.py +541 -0
- autocoder/rag/tools/metaso_example.py +268 -0
- autocoder/rag/tools/metaso_sdk.py +417 -0
- autocoder/rag/tools/recall_tool.py +28 -7
- autocoder/rag/tools/run_integration_tests.py +204 -0
- autocoder/rag/tools/test_all_providers.py +318 -0
- autocoder/rag/tools/test_bochaai_integration.py +482 -0
- autocoder/rag/tools/test_final_integration.py +215 -0
- autocoder/rag/tools/test_metaso_integration.py +424 -0
- autocoder/rag/tools/test_metaso_real.py +171 -0
- autocoder/rag/tools/test_web_crawl_tool.py +639 -0
- autocoder/rag/tools/test_web_search_tool.py +509 -0
- autocoder/rag/tools/todo_read_tool.py +202 -0
- autocoder/rag/tools/todo_write_tool.py +412 -0
- autocoder/rag/tools/web_crawl_tool.py +634 -0
- autocoder/rag/tools/web_search_tool.py +558 -0
- autocoder/rag/tools/web_tools_example.py +119 -0
- autocoder/rag/types.py +16 -0
- autocoder/rag/variable_holder.py +4 -2
- autocoder/rags.py +86 -79
- autocoder/regexproject/__init__.py +23 -21
- autocoder/sdk/__init__.py +46 -190
- autocoder/sdk/api.py +370 -0
- autocoder/sdk/async_runner/__init__.py +26 -0
- autocoder/sdk/async_runner/async_executor.py +650 -0
- autocoder/sdk/async_runner/async_handler.py +356 -0
- autocoder/sdk/async_runner/markdown_processor.py +595 -0
- autocoder/sdk/async_runner/task_metadata.py +284 -0
- autocoder/sdk/async_runner/worktree_manager.py +438 -0
- autocoder/sdk/cli/__init__.py +2 -5
- autocoder/sdk/cli/formatters.py +28 -204
- autocoder/sdk/cli/handlers.py +77 -44
- autocoder/sdk/cli/main.py +154 -171
- autocoder/sdk/cli/options.py +95 -22
- autocoder/sdk/constants.py +139 -51
- autocoder/sdk/core/auto_coder_core.py +484 -109
- autocoder/sdk/core/bridge.py +297 -115
- autocoder/sdk/exceptions.py +18 -12
- autocoder/sdk/formatters/__init__.py +19 -0
- autocoder/sdk/formatters/input.py +64 -0
- autocoder/sdk/formatters/output.py +247 -0
- autocoder/sdk/formatters/stream.py +54 -0
- autocoder/sdk/models/__init__.py +6 -5
- autocoder/sdk/models/options.py +55 -18
- autocoder/sdk/utils/formatters.py +27 -195
- autocoder/suffixproject/__init__.py +28 -25
- autocoder/terminal/__init__.py +14 -0
- autocoder/terminal/app.py +454 -0
- autocoder/terminal/args.py +32 -0
- autocoder/terminal/bootstrap.py +178 -0
- autocoder/terminal/command_processor.py +521 -0
- autocoder/terminal/command_registry.py +57 -0
- autocoder/terminal/help.py +97 -0
- autocoder/terminal/tasks/__init__.py +5 -0
- autocoder/terminal/tasks/background.py +77 -0
- autocoder/terminal/tasks/task_event.py +70 -0
- autocoder/terminal/ui/__init__.py +13 -0
- autocoder/terminal/ui/completer.py +268 -0
- autocoder/terminal/ui/keybindings.py +75 -0
- autocoder/terminal/ui/session.py +41 -0
- autocoder/terminal/ui/toolbar.py +64 -0
- autocoder/terminal/utils/__init__.py +13 -0
- autocoder/terminal/utils/errors.py +18 -0
- autocoder/terminal/utils/paths.py +19 -0
- autocoder/terminal/utils/shell.py +43 -0
- autocoder/terminal_v3/__init__.py +10 -0
- autocoder/terminal_v3/app.py +201 -0
- autocoder/terminal_v3/handlers/__init__.py +5 -0
- autocoder/terminal_v3/handlers/command_handler.py +131 -0
- autocoder/terminal_v3/models/__init__.py +6 -0
- autocoder/terminal_v3/models/conversation_buffer.py +214 -0
- autocoder/terminal_v3/models/message.py +50 -0
- autocoder/terminal_v3/models/tool_display.py +247 -0
- autocoder/terminal_v3/ui/__init__.py +7 -0
- autocoder/terminal_v3/ui/keybindings.py +56 -0
- autocoder/terminal_v3/ui/layout.py +141 -0
- autocoder/terminal_v3/ui/styles.py +43 -0
- autocoder/tsproject/__init__.py +23 -23
- autocoder/utils/auto_coder_utils/chat_stream_out.py +1 -1
- autocoder/utils/llms.py +88 -80
- autocoder/utils/math_utils.py +101 -0
- autocoder/utils/model_provider_selector.py +16 -4
- autocoder/utils/operate_config_api.py +33 -5
- autocoder/utils/thread_utils.py +2 -2
- autocoder/version.py +4 -2
- autocoder/workflow_agents/__init__.py +84 -0
- autocoder/workflow_agents/agent.py +143 -0
- autocoder/workflow_agents/exceptions.py +573 -0
- autocoder/workflow_agents/executor.py +489 -0
- autocoder/workflow_agents/loader.py +737 -0
- autocoder/workflow_agents/runner.py +267 -0
- autocoder/workflow_agents/types.py +172 -0
- autocoder/workflow_agents/utils.py +434 -0
- autocoder/workflow_agents/workflow_manager.py +211 -0
- auto_coder-1.0.0.dist-info/METADATA +0 -396
- auto_coder-1.0.0.dist-info/RECORD +0 -442
- auto_coder-1.0.0.dist-info/licenses/LICENSE +0 -201
- autocoder/auto_coder_server.py +0 -672
- autocoder/benchmark.py +0 -138
- autocoder/common/ac_style_command_parser/example.py +0 -7
- autocoder/common/cleaner.py +0 -31
- autocoder/common/command_completer_v2.py +0 -615
- autocoder/common/context_pruner.py +0 -477
- autocoder/common/conversation_pruner.py +0 -132
- autocoder/common/directory_cache/__init__.py +0 -1
- autocoder/common/directory_cache/cache.py +0 -192
- autocoder/common/directory_cache/test_cache.py +0 -190
- autocoder/common/file_checkpoint/examples.py +0 -217
- autocoder/common/llm_friendly_package_example.py +0 -138
- autocoder/common/llm_friendly_package_test.py +0 -63
- autocoder/common/pull_requests/test_module.py +0 -1
- autocoder/common/rulefiles/autocoderrules_utils.py +0 -484
- autocoder/common/text.py +0 -30
- autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -42
- autocoder/common/v2/agent/agentic_edit_tools/test_execute_command_tool_resolver.py +0 -70
- autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -163
- autocoder/common/v2/agent/agentic_tool_display.py +0 -183
- autocoder/plugins/dynamic_completion_example.py +0 -148
- autocoder/plugins/sample_plugin.py +0 -160
- autocoder/sdk/cli/__main__.py +0 -26
- autocoder/sdk/cli/completion_wrapper.py +0 -38
- autocoder/sdk/cli/install_completion.py +0 -301
- autocoder/sdk/models/messages.py +0 -209
- autocoder/sdk/session/__init__.py +0 -32
- autocoder/sdk/session/session.py +0 -106
- autocoder/sdk/session/session_manager.py +0 -56
- {auto_coder-1.0.0.dist-info → auto_coder-2.0.0.dist-info}/top_level.txt +0 -0
- /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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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 .
|
|
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
|
-
"
|
|
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,
|
|
13
|
-
AgenticEditConversationConfig
|
|
12
|
+
AgenticEditRequest, AgentEvent,
|
|
13
|
+
AgenticEditConversationConfig
|
|
14
14
|
)
|
|
15
|
-
from autocoder.common import AutoCoderArgs
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
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
|
|
26
|
+
class FileBasedEventRunner(BaseRunner):
|
|
26
27
|
"""
|
|
27
28
|
将代理事件转换为标准事件系统格式并写入事件管理器。
|
|
28
29
|
|