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.
- 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-0.1.400.dist-info → auto_coder-2.0.0.dist-info}/WHEEL +1 -1
- {auto_coder-0.1.400.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 +25 -4
- 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 +1029 -2310
- 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 +1021 -372
- autocoder/chat_auto_coder_lang.py +23 -732
- autocoder/commands/auto_command.py +26 -9
- 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/file_monitor/test_file_monitor.py +307 -0
- autocoder/common/git_utils.py +51 -10
- 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 +746 -0
- autocoder/common/{context_pruner.py → pruner/context_pruner.py} +137 -40
- 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/{conversation_pruner.py → pruner/conversation_pruner.py} +26 -6
- autocoder/common/pruner/test_agentic_conversation_pruner.py +784 -0
- autocoder/common/pruner/test_context_pruner.py +546 -0
- 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/__init__.py +15 -0
- autocoder/common/tokens/counter.py +44 -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 +2729 -2052
- autocoder/common/v2/agent/agentic_edit_change_manager.py +474 -0
- autocoder/common/v2/agent/agentic_edit_tools/__init__.py +43 -2
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_list_tool_resolver.py +279 -0
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_read_tool_resolver.py +40 -0
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_write_tool_resolver.py +52 -0
- autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +8 -0
- 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 +565 -30
- 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 +244 -51
- 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 +409 -140
- 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 +209 -194
- autocoder/common/v2/agent/agentic_edit_tools/todo_read_tool_resolver.py +135 -0
- autocoder/common/v2/agent/agentic_edit_tools/todo_write_tool_resolver.py +328 -0
- 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 +386 -10
- autocoder/common/v2/agent/runner/__init__.py +31 -0
- autocoder/common/v2/agent/runner/base_runner.py +92 -0
- autocoder/common/v2/agent/runner/file_based_event_runner.py +217 -0
- autocoder/common/v2/agent/runner/sdk_runner.py +182 -0
- autocoder/common/v2/agent/runner/terminal_runner.py +396 -0
- autocoder/common/v2/agent/runner/tool_display.py +589 -0
- 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 +117 -125
- autocoder/{agent → index/filter}/agentic_filter.py +323 -334
- 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 +156 -37
- 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/run_context.py +9 -0
- autocoder/sdk/__init__.py +50 -161
- 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 +158 -170
- autocoder/sdk/cli/options.py +95 -22
- autocoder/sdk/constants.py +139 -51
- autocoder/sdk/core/auto_coder_core.py +484 -267
- autocoder/sdk/core/bridge.py +298 -118
- 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-0.1.400.dist-info/METADATA +0 -396
- auto_coder-0.1.400.dist-info/RECORD +0 -425
- auto_coder-0.1.400.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/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-0.1.400.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
|
@@ -20,19 +20,21 @@ from autocoder.common import detect_env
|
|
|
20
20
|
from autocoder.common import shells
|
|
21
21
|
from loguru import logger
|
|
22
22
|
from autocoder.utils import llms as llms_utils
|
|
23
|
-
from autocoder.
|
|
23
|
+
from autocoder.common.tokens import count_string_tokens as count_tokens
|
|
24
24
|
from autocoder.common.global_cancel import global_cancel,CancelRequestedException
|
|
25
25
|
from autocoder.common.auto_configure import config_readme
|
|
26
26
|
from autocoder.utils.auto_project_type import ProjectTypeAnalyzer
|
|
27
27
|
from rich.text import Text
|
|
28
|
-
from autocoder.common.
|
|
28
|
+
from autocoder.common.mcp_tools.server import get_mcp_server, McpServerInfoRequest
|
|
29
29
|
from autocoder.common.action_yml_file_manager import ActionYmlFileManager
|
|
30
30
|
from autocoder.events.event_manager_singleton import get_event_manager
|
|
31
31
|
from autocoder.events import event_content as EventContentCreator
|
|
32
32
|
from autocoder.events.event_types import Event, EventType, EventMetadata
|
|
33
33
|
from autocoder.run_context import get_run_context
|
|
34
34
|
from autocoder.common.stream_out_type import AutoCommandStreamOutType
|
|
35
|
-
from autocoder.common.rulefiles
|
|
35
|
+
from autocoder.common.rulefiles import get_rules
|
|
36
|
+
from autocoder.common.autocoderargs_parser import AutoCoderArgsParser
|
|
37
|
+
|
|
36
38
|
class CommandSuggestion(BaseModel):
|
|
37
39
|
command: str
|
|
38
40
|
parameters: Dict[str, Any]
|
|
@@ -99,6 +101,7 @@ class CommandAutoTuner:
|
|
|
99
101
|
self.tools = AutoCommandTools(args=args, llm=self.llm)
|
|
100
102
|
self.project_type_analyzer = ProjectTypeAnalyzer(
|
|
101
103
|
args=args, llm=self.llm)
|
|
104
|
+
self.args_parser = AutoCoderArgsParser()
|
|
102
105
|
try:
|
|
103
106
|
self.mcp_server = get_mcp_server()
|
|
104
107
|
mcp_server_info_response = self.mcp_server.send_request(McpServerInfoRequest(
|
|
@@ -110,6 +113,18 @@ class CommandAutoTuner:
|
|
|
110
113
|
logger.error(f"Error getting MCP server info: {str(e)}")
|
|
111
114
|
self.mcp_server_info = ""
|
|
112
115
|
|
|
116
|
+
def _get_parsed_safe_zone_tokens(self) -> int:
|
|
117
|
+
"""
|
|
118
|
+
解析 conversation_prune_safe_zone_tokens 参数,支持多种格式
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
解析后的 token 数量
|
|
122
|
+
"""
|
|
123
|
+
return self.args_parser.parse_conversation_prune_safe_zone_tokens(
|
|
124
|
+
self.args.conversation_prune_safe_zone_tokens,
|
|
125
|
+
self.args.code_model
|
|
126
|
+
)
|
|
127
|
+
|
|
113
128
|
@byzerllm.prompt()
|
|
114
129
|
def _analyze(self, request: AutoCommandRequest) -> str:
|
|
115
130
|
"""
|
|
@@ -252,7 +267,7 @@ class CommandAutoTuner:
|
|
|
252
267
|
"env_info": env_info,
|
|
253
268
|
"shell_type": shell_type,
|
|
254
269
|
"shell_encoding": shells.get_terminal_encoding(),
|
|
255
|
-
"conversation_safe_zone_tokens": self.
|
|
270
|
+
"conversation_safe_zone_tokens": self._get_parsed_safe_zone_tokens(),
|
|
256
271
|
"os_distribution": shells.get_os_distribution(),
|
|
257
272
|
"current_user": shells.get_current_username(),
|
|
258
273
|
"command_combination_readme": self._command_combination_readme.prompt(),
|
|
@@ -327,7 +342,7 @@ class CommandAutoTuner:
|
|
|
327
342
|
'''
|
|
328
343
|
return {
|
|
329
344
|
"auto_command_max_iterations": self.args.auto_command_max_iterations,
|
|
330
|
-
"conversation_safe_zone_tokens": self.
|
|
345
|
+
"conversation_safe_zone_tokens": self._get_parsed_safe_zone_tokens()
|
|
331
346
|
}
|
|
332
347
|
|
|
333
348
|
def analyze(self, request: AutoCommandRequest) -> AutoCommandResponse:
|
|
@@ -440,7 +455,7 @@ class CommandAutoTuner:
|
|
|
440
455
|
result_manager = ResultManager()
|
|
441
456
|
|
|
442
457
|
while True:
|
|
443
|
-
global_cancel.check_and_raise(token=self.args.
|
|
458
|
+
global_cancel.check_and_raise(token=self.args.cancel_token)
|
|
444
459
|
# 执行命令
|
|
445
460
|
command = response.suggestions[0].command
|
|
446
461
|
parameters = response.suggestions[0].parameters
|
|
@@ -536,14 +551,15 @@ class CommandAutoTuner:
|
|
|
536
551
|
conversations, ensure_ascii=False))
|
|
537
552
|
|
|
538
553
|
# 如果对话过长,使用默认策略进行修剪
|
|
539
|
-
|
|
554
|
+
parsed_safe_zone_tokens = self._get_parsed_safe_zone_tokens()
|
|
555
|
+
if total_tokens > parsed_safe_zone_tokens:
|
|
540
556
|
self.printer.print_in_terminal(
|
|
541
557
|
"conversation_pruning_start",
|
|
542
558
|
style="yellow",
|
|
543
559
|
total_tokens=total_tokens,
|
|
544
|
-
safe_zone=
|
|
560
|
+
safe_zone=parsed_safe_zone_tokens
|
|
545
561
|
)
|
|
546
|
-
from autocoder.common.conversation_pruner import ConversationPruner
|
|
562
|
+
from autocoder.common.pruner.conversation_pruner import ConversationPruner
|
|
547
563
|
pruner = ConversationPruner(self.args, self.llm)
|
|
548
564
|
conversations = pruner.prune_conversations(conversations)
|
|
549
565
|
|
|
@@ -1094,6 +1110,7 @@ class CommandAutoTuner:
|
|
|
1094
1110
|
使用例子:
|
|
1095
1111
|
ask_user(question="请输入火山引擎的 R1 模型推理点")
|
|
1096
1112
|
|
|
1113
|
+
</usage>
|
|
1097
1114
|
</function>
|
|
1098
1115
|
|
|
1099
1116
|
<function>
|
autocoder/commands/auto_web.py
CHANGED
|
@@ -794,7 +794,7 @@ class AutoWebTuner:
|
|
|
794
794
|
logger.info(f"开始执行迭代 {iterations}/{max_iterations}")
|
|
795
795
|
|
|
796
796
|
# 检查是否需要取消操作
|
|
797
|
-
global_cancel.check_and_raise(token=self.args.
|
|
797
|
+
global_cancel.check_and_raise(token=self.args.cancel_token)
|
|
798
798
|
|
|
799
799
|
# 如果没有更多操作,认为任务完成
|
|
800
800
|
if not plan.actions:
|
autocoder/commands/tools.py
CHANGED
|
@@ -5,33 +5,26 @@ from autocoder.pyproject import PyProject
|
|
|
5
5
|
from autocoder.tsproject import TSProject
|
|
6
6
|
from autocoder.suffixproject import SuffixProject
|
|
7
7
|
from autocoder.common import AutoCoderArgs, SourceCode
|
|
8
|
+
from autocoder.common.autocoderargs_parser import AutoCoderArgsParser
|
|
8
9
|
from autocoder.common.interpreter import Interpreter
|
|
9
|
-
from autocoder.common import ExecuteSteps, ExecuteStep
|
|
10
|
-
from
|
|
11
|
-
from typing import List, Tuple,Dict
|
|
10
|
+
from autocoder.common import ExecuteSteps, ExecuteStep
|
|
11
|
+
from typing import List, Tuple, Dict
|
|
12
12
|
import os
|
|
13
13
|
import byzerllm
|
|
14
14
|
import json
|
|
15
|
-
from pydantic import BaseModel
|
|
16
15
|
from byzerllm.types import Bool
|
|
17
16
|
from contextlib import contextmanager
|
|
18
17
|
from rich.console import Console
|
|
19
18
|
from rich.panel import Panel
|
|
20
19
|
from rich.text import Text
|
|
21
|
-
from rich.prompt import Prompt
|
|
22
20
|
from typing import Union
|
|
23
|
-
from autocoder.utils.queue_communicate import (
|
|
24
|
-
queue_communicate,
|
|
25
|
-
CommunicateEvent,
|
|
26
|
-
CommunicateEventType,
|
|
27
|
-
)
|
|
28
21
|
import sys
|
|
29
22
|
import io
|
|
30
23
|
from autocoder.common import files as files_utils
|
|
31
24
|
from autocoder.common.printer import Printer
|
|
32
25
|
from prompt_toolkit import PromptSession
|
|
33
26
|
from prompt_toolkit.styles import Style
|
|
34
|
-
from autocoder.
|
|
27
|
+
from autocoder.common.tokens import count_string_tokens as count_tokens
|
|
35
28
|
from autocoder.index.symbols_utils import (
|
|
36
29
|
extract_symbols,
|
|
37
30
|
SymbolType,
|
|
@@ -42,10 +35,9 @@ from autocoder.events.event_manager_singleton import get_event_manager
|
|
|
42
35
|
from autocoder.events import event_content as EventContentCreator
|
|
43
36
|
from autocoder.linters.linter_factory import LinterFactory, lint_file, lint_project, format_lint_result
|
|
44
37
|
import traceback
|
|
45
|
-
from autocoder.common.
|
|
46
|
-
from autocoder.common.
|
|
47
|
-
McpRequest,
|
|
48
|
-
McpListRunningRequest, McpRefreshRequest
|
|
38
|
+
from autocoder.common.mcp_tools.server import get_mcp_server
|
|
39
|
+
from autocoder.common.mcp_tools.types import (
|
|
40
|
+
McpRequest,
|
|
49
41
|
)
|
|
50
42
|
|
|
51
43
|
from autocoder.common.ignorefiles.ignore_file_utils import should_ignore
|
|
@@ -81,6 +73,19 @@ class AutoCommandTools:
|
|
|
81
73
|
self.llm = llm
|
|
82
74
|
self.result_manager = ResultManager()
|
|
83
75
|
self.printer = Printer()
|
|
76
|
+
self.args_parser = AutoCoderArgsParser()
|
|
77
|
+
|
|
78
|
+
def _get_parsed_safe_zone_tokens(self) -> int:
|
|
79
|
+
"""
|
|
80
|
+
解析 conversation_prune_safe_zone_tokens 参数,支持多种格式
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
解析后的 token 数量
|
|
84
|
+
"""
|
|
85
|
+
return self.args_parser.parse_conversation_prune_safe_zone_tokens(
|
|
86
|
+
self.args.conversation_prune_safe_zone_tokens,
|
|
87
|
+
self.args.code_model
|
|
88
|
+
)
|
|
84
89
|
|
|
85
90
|
def execute_mcp_server(self, query: str) -> str:
|
|
86
91
|
mcp_server = get_mcp_server()
|
|
@@ -156,7 +161,7 @@ class AutoCommandTools:
|
|
|
156
161
|
def response_user(self, response: Union[str, Dict]):
|
|
157
162
|
# 如果是在web模式下,则使用event_manager事件来询问用户
|
|
158
163
|
if isinstance(response, dict):
|
|
159
|
-
response = json.dumps(response, ensure_ascii=False,indent=4)
|
|
164
|
+
response = json.dumps(response, ensure_ascii=False, indent=4)
|
|
160
165
|
|
|
161
166
|
if get_run_context().is_web():
|
|
162
167
|
try:
|
|
@@ -202,11 +207,11 @@ class AutoCommandTools:
|
|
|
202
207
|
})
|
|
203
208
|
|
|
204
209
|
return response
|
|
205
|
-
|
|
210
|
+
|
|
206
211
|
def output_result(self, response: Union[str, Dict]):
|
|
207
212
|
# 如果是在web模式下,则使用event_manager事件来询问用户
|
|
208
213
|
if isinstance(response, dict):
|
|
209
|
-
response = json.dumps(response, ensure_ascii=False,indent=4)
|
|
214
|
+
response = json.dumps(response, ensure_ascii=False, indent=4)
|
|
210
215
|
|
|
211
216
|
if get_run_context().is_web():
|
|
212
217
|
try:
|
|
@@ -400,7 +405,8 @@ class AutoCommandTools:
|
|
|
400
405
|
if isinstance(file_paths, list):
|
|
401
406
|
file_path_list = file_paths
|
|
402
407
|
elif isinstance(file_paths, str):
|
|
403
|
-
file_path_list = [path.strip()
|
|
408
|
+
file_path_list = [path.strip()
|
|
409
|
+
for path in file_paths.split(",")]
|
|
404
410
|
else:
|
|
405
411
|
file_path_list = [str(file_paths)]
|
|
406
412
|
|
|
@@ -422,7 +428,8 @@ class AutoCommandTools:
|
|
|
422
428
|
|
|
423
429
|
v = json.dumps(final_result, ensure_ascii=False)
|
|
424
430
|
tokens = count_tokens(v)
|
|
425
|
-
|
|
431
|
+
parsed_safe_zone_tokens = self._get_parsed_safe_zone_tokens()
|
|
432
|
+
if tokens > parsed_safe_zone_tokens/2.0:
|
|
426
433
|
result = f"The project map is too large to return. (tokens: {tokens}). Try to use another function."
|
|
427
434
|
self.result_manager.add_result(content=result, meta={
|
|
428
435
|
"action": "get_project_map",
|
|
@@ -663,7 +670,7 @@ class AutoCommandTools:
|
|
|
663
670
|
该工具用于列出指定目录下的所有文件(不包括子目录中的文件)。
|
|
664
671
|
输入参数 path: 要列出文件的目录路径
|
|
665
672
|
返回值是目录下所有文件的列表,以逗号分隔。
|
|
666
|
-
"""
|
|
673
|
+
"""
|
|
667
674
|
# 处理绝对路径和相对路径
|
|
668
675
|
target_path = path
|
|
669
676
|
if not os.path.isabs(path):
|
|
@@ -695,7 +702,7 @@ class AutoCommandTools:
|
|
|
695
702
|
file_list = []
|
|
696
703
|
for item in os.listdir(target_path):
|
|
697
704
|
item_path = os.path.join(target_path, item)
|
|
698
|
-
file_list.append(item_path)
|
|
705
|
+
file_list.append(item_path)
|
|
699
706
|
|
|
700
707
|
# 生成以逗号分隔的文件列表
|
|
701
708
|
result = "\n".join(file_list)
|
|
@@ -721,7 +728,8 @@ class AutoCommandTools:
|
|
|
721
728
|
s = pp.get_tree_like_directory_structure()
|
|
722
729
|
|
|
723
730
|
tokens = count_tokens(s)
|
|
724
|
-
|
|
731
|
+
parsed_safe_zone_tokens = self._get_parsed_safe_zone_tokens()
|
|
732
|
+
if tokens > parsed_safe_zone_tokens / 2.0:
|
|
725
733
|
result = f"The project structure is too large to return. (tokens: {tokens}). Try to use another function."
|
|
726
734
|
self.result_manager.add_result(content=result, meta={
|
|
727
735
|
"action": "get_project_structure",
|
|
@@ -749,7 +757,8 @@ class AutoCommandTools:
|
|
|
749
757
|
matched_files = []
|
|
750
758
|
for root, dirs, files in os.walk(self.args.source_dir):
|
|
751
759
|
# 过滤忽略的目录,避免递归进入
|
|
752
|
-
dirs[:] = [d for d in dirs if not should_ignore(
|
|
760
|
+
dirs[:] = [d for d in dirs if not should_ignore(
|
|
761
|
+
os.path.join(root, d))]
|
|
753
762
|
for file in files:
|
|
754
763
|
file_path = os.path.join(root, file)
|
|
755
764
|
if should_ignore(file_path):
|
|
@@ -758,9 +767,10 @@ class AutoCommandTools:
|
|
|
758
767
|
matched_files.append(file_path)
|
|
759
768
|
|
|
760
769
|
v = ",".join(matched_files)
|
|
761
|
-
|
|
770
|
+
|
|
762
771
|
tokens = count_tokens(v)
|
|
763
|
-
|
|
772
|
+
parsed_safe_zone_tokens = self._get_parsed_safe_zone_tokens()
|
|
773
|
+
if tokens > parsed_safe_zone_tokens / 2.0:
|
|
764
774
|
result = f"The result is too large to return. (tokens: {tokens}). Try to use another function or use another keyword to search."
|
|
765
775
|
self.result_manager.add_result(content=result, meta={
|
|
766
776
|
"action": "find_files_by_name",
|
|
@@ -805,31 +815,21 @@ class AutoCommandTools:
|
|
|
805
815
|
如果结果过多,只返回前10个匹配项。
|
|
806
816
|
搜索不区分大小写。
|
|
807
817
|
|
|
808
|
-
|
|
818
|
+
使用 ignorefiles 模块进行文件过滤,基于 .autocoderignore 配置文件和默认排除规则。
|
|
809
819
|
"""
|
|
810
|
-
# 需要排除的目录和文件模式
|
|
811
|
-
excluded_dirs = [
|
|
812
|
-
'node_modules', '.git', '.venv', 'venv', '__pycache__', 'dist', 'build',
|
|
813
|
-
'.DS_Store', '.idea', '.vscode', 'tmp', 'temp', 'cache', 'coverage',
|
|
814
|
-
'htmlcov', '.mypy_cache', '.pytest_cache', '.hypothesis',".auto-coder"
|
|
815
|
-
]
|
|
816
|
-
excluded_file_patterns = [
|
|
817
|
-
'*.pyc', '*.pyo', '*.pyd', '*.egg-info', '*.log'
|
|
818
|
-
]
|
|
819
|
-
|
|
820
820
|
matched_files = []
|
|
821
821
|
|
|
822
822
|
for root, dirs, files in os.walk(self.args.source_dir):
|
|
823
|
-
#
|
|
824
|
-
dirs[:] = [d for d in dirs if
|
|
825
|
-
|
|
826
|
-
# 过滤掉需要排除的文件
|
|
827
|
-
files[:] = [f for f in files if not any(
|
|
828
|
-
f.endswith(pattern[1:]) for pattern in excluded_file_patterns
|
|
829
|
-
)]
|
|
823
|
+
# 使用 should_ignore 过滤目录
|
|
824
|
+
dirs[:] = [d for d in dirs if not should_ignore(os.path.join(root, d), self.args.source_dir)]
|
|
830
825
|
|
|
831
826
|
for file in files:
|
|
832
827
|
file_path = os.path.join(root, file)
|
|
828
|
+
|
|
829
|
+
# 使用 should_ignore 过滤文件
|
|
830
|
+
if should_ignore(file_path, self.args.source_dir):
|
|
831
|
+
continue
|
|
832
|
+
|
|
833
833
|
try:
|
|
834
834
|
content = files_utils.read_file(file_path)
|
|
835
835
|
if keyword.lower() in content.lower():
|