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
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from autocoder.common import AutoCoderArgs
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TestAutoCoderArgsDefaults:
|
|
6
|
+
"""Test all default values of AutoCoderArgs"""
|
|
7
|
+
|
|
8
|
+
def test_all_field_defaults(self):
|
|
9
|
+
"""Test all field default values by creating instance without parameters"""
|
|
10
|
+
args = AutoCoderArgs()
|
|
11
|
+
|
|
12
|
+
# Test basic fields
|
|
13
|
+
assert args.request_id is None
|
|
14
|
+
assert args.source_dir == "."
|
|
15
|
+
assert args.git_url is None
|
|
16
|
+
assert args.target_file is None
|
|
17
|
+
assert args.query is None
|
|
18
|
+
assert args.template is None
|
|
19
|
+
assert args.project_type is None
|
|
20
|
+
assert args.execute is None
|
|
21
|
+
assert args.package_name == ""
|
|
22
|
+
assert args.script_path == ""
|
|
23
|
+
|
|
24
|
+
# Test model fields
|
|
25
|
+
assert args.model == ""
|
|
26
|
+
assert args.chat_model == ""
|
|
27
|
+
assert args.model_max_length == 2000
|
|
28
|
+
assert args.model_max_input_length == 6000
|
|
29
|
+
assert args.vl_model == ""
|
|
30
|
+
assert args.sd_model == ""
|
|
31
|
+
assert args.emb_model == ""
|
|
32
|
+
assert args.code_model == ""
|
|
33
|
+
assert args.generate_rerank_model == ""
|
|
34
|
+
assert args.context_prune_model == ""
|
|
35
|
+
assert args.conversation_prune_model == ""
|
|
36
|
+
assert args.inference_model == ""
|
|
37
|
+
assert args.system_prompt == ""
|
|
38
|
+
assert args.planner_model == ""
|
|
39
|
+
assert args.voice2text_model == ""
|
|
40
|
+
assert args.text2voice_model == ""
|
|
41
|
+
assert args.commit_model == ""
|
|
42
|
+
|
|
43
|
+
# Test index fields
|
|
44
|
+
assert args.skip_build_index is False
|
|
45
|
+
assert args.skip_filter_index is False
|
|
46
|
+
assert args.index_model == ""
|
|
47
|
+
assert args.index_filter_model == ""
|
|
48
|
+
assert args.index_filter_model_max_input_length == 50*1024
|
|
49
|
+
assert args.index_model_max_length == 0
|
|
50
|
+
assert args.index_model_max_input_length == 0
|
|
51
|
+
assert args.index_model_anti_quota_limit == 0
|
|
52
|
+
|
|
53
|
+
# Test agentic fields
|
|
54
|
+
assert args.enable_agentic_filter is False
|
|
55
|
+
assert args.enable_agentic_edit is True
|
|
56
|
+
assert args.enable_agentic_auto_approve is False
|
|
57
|
+
assert args.enable_agentic_dangerous_command_check is False
|
|
58
|
+
|
|
59
|
+
# Test filter fields
|
|
60
|
+
assert args.index_filter_level == 0
|
|
61
|
+
assert args.index_filter_enable_relevance_verification is True
|
|
62
|
+
assert args.index_filter_workers == 1
|
|
63
|
+
assert args.index_filter_file_num == 10
|
|
64
|
+
assert args.index_build_workers == 1
|
|
65
|
+
|
|
66
|
+
# Test other model fields
|
|
67
|
+
assert args.designer_model == ""
|
|
68
|
+
assert args.file is None
|
|
69
|
+
assert args.ray_address == ""
|
|
70
|
+
assert args.anti_quota_limit == 1
|
|
71
|
+
assert args.print_request is False
|
|
72
|
+
assert args.py_packages == ""
|
|
73
|
+
|
|
74
|
+
# Test search fields
|
|
75
|
+
assert args.search == ""
|
|
76
|
+
assert args.search_engine == ""
|
|
77
|
+
assert args.search_engine_token == ""
|
|
78
|
+
|
|
79
|
+
# Test RAG fields
|
|
80
|
+
assert args.rag_url == ""
|
|
81
|
+
assert args.rag_token == ""
|
|
82
|
+
assert args.rag_type == "storage"
|
|
83
|
+
assert args.rag_storage_type == "duckdb"
|
|
84
|
+
assert args.rag_params_max_tokens == 500000
|
|
85
|
+
assert args.rag_doc_filter_relevance == 2
|
|
86
|
+
assert args.rag_context_window_limit == 120000
|
|
87
|
+
assert args.rag_duckdb_vector_dim == 1024
|
|
88
|
+
assert args.rag_duckdb_query_similarity == 0.1
|
|
89
|
+
assert args.rag_duckdb_query_top_k == 10000
|
|
90
|
+
assert args.rag_index_build_workers == 10
|
|
91
|
+
assert args.rag_emb_dim == 1024
|
|
92
|
+
assert args.rag_emb_text_size == 1024
|
|
93
|
+
assert args.local_image_host == ""
|
|
94
|
+
assert args.rag_recall_max_queries == 5
|
|
95
|
+
assert args.rag_qa_conversation_strategy == "multi_round"
|
|
96
|
+
|
|
97
|
+
# Test relevance and context fields
|
|
98
|
+
assert args.verify_file_relevance_score == 6
|
|
99
|
+
assert args.enable_rag_search is False
|
|
100
|
+
assert args.enable_rag_context is False
|
|
101
|
+
assert args.collection is None
|
|
102
|
+
assert args.collections is None
|
|
103
|
+
|
|
104
|
+
# Test merge and human fields
|
|
105
|
+
assert args.auto_merge is False
|
|
106
|
+
assert args.human_as_model is False
|
|
107
|
+
assert args.human_model_num == 1
|
|
108
|
+
|
|
109
|
+
# Test image fields
|
|
110
|
+
assert args.image_file == ""
|
|
111
|
+
assert args.image_mode == "direct"
|
|
112
|
+
assert args.image_max_iter == 1
|
|
113
|
+
|
|
114
|
+
# Test URL fields
|
|
115
|
+
assert args.urls == ""
|
|
116
|
+
assert args.urls_use_model is False
|
|
117
|
+
assert args.command is None
|
|
118
|
+
assert args.doc_command is None
|
|
119
|
+
assert args.required_exts is None
|
|
120
|
+
assert args.hybrid_index_max_output_tokens == 1000000
|
|
121
|
+
|
|
122
|
+
# Test various enable fields
|
|
123
|
+
assert args.enable_multi_round_generate is False
|
|
124
|
+
assert args.monitor_mode is False
|
|
125
|
+
assert args.enable_hybrid_index is False
|
|
126
|
+
assert args.rag_build_name is None
|
|
127
|
+
assert args.disable_auto_window is False
|
|
128
|
+
assert args.filter_batch_size == 5
|
|
129
|
+
assert args.disable_segment_reorder is False
|
|
130
|
+
assert args.tokenizer_path is None
|
|
131
|
+
assert args.skip_confirm is False
|
|
132
|
+
assert args.silence is False
|
|
133
|
+
assert args.exclude_files == ""
|
|
134
|
+
assert args.output == ""
|
|
135
|
+
assert args.single_file is False
|
|
136
|
+
assert args.query_prefix is None
|
|
137
|
+
assert args.query_suffix is None
|
|
138
|
+
assert args.from_yaml is None
|
|
139
|
+
assert args.base_dir is None
|
|
140
|
+
assert args.context is None
|
|
141
|
+
assert args.editblock_similarity == 0.9
|
|
142
|
+
assert args.include_project_structure is False
|
|
143
|
+
assert args.new_session is False
|
|
144
|
+
|
|
145
|
+
# Test prompt and review fields
|
|
146
|
+
assert args.prompt_review is None
|
|
147
|
+
assert args.agent_designer_mode == "svg"
|
|
148
|
+
|
|
149
|
+
# Test ratio fields
|
|
150
|
+
assert args.full_text_ratio == 0.7
|
|
151
|
+
assert args.segment_ratio == 0.2
|
|
152
|
+
assert args.buff_ratio == 0.1
|
|
153
|
+
|
|
154
|
+
# Test inference fields
|
|
155
|
+
assert args.disable_inference_enhance is True
|
|
156
|
+
assert args.inference_deep_thought is False
|
|
157
|
+
assert args.inference_slow_without_deep_thought is False
|
|
158
|
+
assert args.inference_compute_precision == 64
|
|
159
|
+
assert args.without_contexts is False
|
|
160
|
+
assert args.skip_events is False
|
|
161
|
+
assert args.data_cells_max_num == 2000
|
|
162
|
+
assert args.generate_times_same_model == 1
|
|
163
|
+
assert args.rank_times_same_model == 1
|
|
164
|
+
|
|
165
|
+
# Test strategy fields
|
|
166
|
+
assert args.rank_strategy == "file"
|
|
167
|
+
|
|
168
|
+
# Test action and mode fields
|
|
169
|
+
assert args.action == []
|
|
170
|
+
assert args.enable_global_memory is False
|
|
171
|
+
assert args.product_mode == "lite"
|
|
172
|
+
|
|
173
|
+
# Test reasoning content fields
|
|
174
|
+
assert args.keep_reasoning_content is False
|
|
175
|
+
assert args.keep_only_reasoning_content is False
|
|
176
|
+
|
|
177
|
+
# Test code apply fields
|
|
178
|
+
assert args.in_code_apply is False
|
|
179
|
+
assert args.model_filter_path is None
|
|
180
|
+
|
|
181
|
+
# Test conversation prune fields
|
|
182
|
+
assert args.conversation_prune_safe_zone_tokens == 50*1024
|
|
183
|
+
assert args.conversation_prune_group_size == 4
|
|
184
|
+
assert args.conversation_prune_strategy == "summarize"
|
|
185
|
+
|
|
186
|
+
# Test context prune fields
|
|
187
|
+
assert args.context_prune_strategy == "extract"
|
|
188
|
+
assert args.context_prune is True
|
|
189
|
+
assert args.context_prune_safe_zone_tokens == 24*1024
|
|
190
|
+
assert args.context_prune_sliding_window_size == 1000
|
|
191
|
+
assert args.context_prune_sliding_window_overlap == 100
|
|
192
|
+
|
|
193
|
+
# Test command fields
|
|
194
|
+
assert args.auto_command_max_iterations == 10
|
|
195
|
+
assert args.use_shell_commands is True
|
|
196
|
+
assert args.skip_commit is False
|
|
197
|
+
|
|
198
|
+
# Test beta and reproduction fields
|
|
199
|
+
assert args.enable_beta is False
|
|
200
|
+
assert args.how_to_reproduce is None
|
|
201
|
+
|
|
202
|
+
# Test URL lists
|
|
203
|
+
assert args.dynamic_urls == []
|
|
204
|
+
assert args.add_updated_urls == []
|
|
205
|
+
|
|
206
|
+
# Test history fields
|
|
207
|
+
assert args.enable_task_history is False
|
|
208
|
+
assert args.event_file is None
|
|
209
|
+
|
|
210
|
+
# Test active context fields
|
|
211
|
+
assert args.enable_active_context is False
|
|
212
|
+
assert args.enable_active_context_in_generate is False
|
|
213
|
+
|
|
214
|
+
# Test generate fields
|
|
215
|
+
assert args.generate_max_rounds == 5
|
|
216
|
+
|
|
217
|
+
# Test revert fields
|
|
218
|
+
assert args.revert_commit_id is None
|
|
219
|
+
|
|
220
|
+
# Test auto fix fields
|
|
221
|
+
assert args.enable_auto_fix_lint is False
|
|
222
|
+
assert args.enable_auto_fix_compile is False
|
|
223
|
+
assert args.enable_auto_fix_merge is False
|
|
224
|
+
assert args.auto_fix_lint_max_attempts == 5
|
|
225
|
+
assert args.auto_fix_compile_max_attempts == 5
|
|
226
|
+
assert args.auto_fix_merge_max_attempts == 5
|
|
227
|
+
|
|
228
|
+
# Test rules fields
|
|
229
|
+
assert args.enable_auto_select_rules is True
|
|
230
|
+
|
|
231
|
+
# Test shadows fields
|
|
232
|
+
assert args.ignore_clean_shadows is False
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
|
|
2
|
+
#!/usr/bin/env python3
|
|
3
|
+
"""
|
|
4
|
+
环境变量管理模块测试脚本
|
|
5
|
+
|
|
6
|
+
用于测试 env_manager.py 模块的各项功能
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import sys
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
# 添加项目根目录到路径,以便导入模块
|
|
14
|
+
project_root = Path(__file__).parent.parent.parent.parent
|
|
15
|
+
sys.path.insert(0, str(project_root))
|
|
16
|
+
|
|
17
|
+
from src.autocoder.common.env_manager import (
|
|
18
|
+
EnvManager, Environment,
|
|
19
|
+
get_environment, is_production, is_development,
|
|
20
|
+
get_env, get_env_bool, get_env_int, get_env_float,
|
|
21
|
+
set_env, has_env, get_env_info
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_basic_functionality():
|
|
26
|
+
"""测试基本功能"""
|
|
27
|
+
print("=== 测试基本功能 ===")
|
|
28
|
+
|
|
29
|
+
# 测试默认环境
|
|
30
|
+
print(f"默认环境: {get_environment()}")
|
|
31
|
+
print(f"是否为生产环境: {is_production()}")
|
|
32
|
+
print(f"是否为开发环境: {is_development()}")
|
|
33
|
+
print()
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_environment_detection():
|
|
37
|
+
"""测试环境检测功能"""
|
|
38
|
+
print("=== 测试环境检测功能 ===")
|
|
39
|
+
|
|
40
|
+
# 保存原始环境变量
|
|
41
|
+
original_env = os.environ.get("AUTO_CODER_ENV")
|
|
42
|
+
|
|
43
|
+
# 测试生产环境
|
|
44
|
+
test_cases = [
|
|
45
|
+
("production", Environment.PRODUCTION),
|
|
46
|
+
("prod", Environment.PRODUCTION),
|
|
47
|
+
("PRODUCTION", Environment.PRODUCTION),
|
|
48
|
+
("development", Environment.DEVELOPMENT),
|
|
49
|
+
("dev", Environment.DEVELOPMENT),
|
|
50
|
+
("DEV", Environment.DEVELOPMENT),
|
|
51
|
+
("unknown", Environment.DEVELOPMENT), # 未知值默认为开发环境
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
for env_value, expected in test_cases:
|
|
55
|
+
set_env("AUTO_CODER_ENV", env_value)
|
|
56
|
+
result = get_environment()
|
|
57
|
+
status = "✓" if result == expected else "✗"
|
|
58
|
+
print(f"{status} 设置 AUTO_CODER_ENV={env_value}, 期望: {expected.value}, 实际: {result.value}")
|
|
59
|
+
|
|
60
|
+
# 恢复原始环境变量
|
|
61
|
+
if original_env is not None:
|
|
62
|
+
os.environ["AUTO_CODER_ENV"] = original_env
|
|
63
|
+
elif "AUTO_CODER_ENV" in os.environ:
|
|
64
|
+
del os.environ["AUTO_CODER_ENV"]
|
|
65
|
+
|
|
66
|
+
print()
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def test_type_conversion():
|
|
70
|
+
"""测试类型转换功能"""
|
|
71
|
+
print("=== 测试类型转换功能 ===")
|
|
72
|
+
|
|
73
|
+
# 测试布尔值转换
|
|
74
|
+
bool_test_cases = [
|
|
75
|
+
("true", True),
|
|
76
|
+
("True", True),
|
|
77
|
+
("1", True),
|
|
78
|
+
("yes", True),
|
|
79
|
+
("on", True),
|
|
80
|
+
("false", False),
|
|
81
|
+
("False", False),
|
|
82
|
+
("0", False),
|
|
83
|
+
("no", False),
|
|
84
|
+
("off", False),
|
|
85
|
+
("", False),
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
for value, expected in bool_test_cases:
|
|
89
|
+
set_env("TEST_BOOL", value)
|
|
90
|
+
result = get_env_bool("TEST_BOOL")
|
|
91
|
+
status = "✓" if result == expected else "✗"
|
|
92
|
+
print(f"{status} 布尔值 '{value}' -> {result} (期望: {expected})")
|
|
93
|
+
|
|
94
|
+
# 测试整数转换
|
|
95
|
+
set_env("TEST_INT", "42")
|
|
96
|
+
result = get_env_int("TEST_INT")
|
|
97
|
+
print(f"{'✓' if result == 42 else '✗'} 整数 '42' -> {result}")
|
|
98
|
+
|
|
99
|
+
# 测试浮点数转换
|
|
100
|
+
set_env("TEST_FLOAT", "3.14")
|
|
101
|
+
result = get_env_float("TEST_FLOAT")
|
|
102
|
+
print(f"{'✓' if abs(result - 3.14) < 0.001 else '✗'} 浮点数 '3.14' -> {result}")
|
|
103
|
+
|
|
104
|
+
# 测试无效值的默认值处理
|
|
105
|
+
set_env("TEST_INVALID_INT", "not_a_number")
|
|
106
|
+
result = get_env_int("TEST_INVALID_INT", 999)
|
|
107
|
+
print(f"{'✓' if result == 999 else '✗'} 无效整数使用默认值 -> {result}")
|
|
108
|
+
|
|
109
|
+
# 清理测试环境变量
|
|
110
|
+
for key in ["TEST_BOOL", "TEST_INT", "TEST_FLOAT", "TEST_INVALID_INT"]:
|
|
111
|
+
if key in os.environ:
|
|
112
|
+
del os.environ[key]
|
|
113
|
+
|
|
114
|
+
print()
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def test_env_management():
|
|
118
|
+
"""测试环境变量管理功能"""
|
|
119
|
+
print("=== 测试环境变量管理功能 ===")
|
|
120
|
+
|
|
121
|
+
# 测试设置和获取
|
|
122
|
+
set_env("TEST_VAR", "test_value")
|
|
123
|
+
result = get_env("TEST_VAR")
|
|
124
|
+
print(f"{'✓' if result == 'test_value' else '✗'} 设置和获取环境变量: {result}")
|
|
125
|
+
|
|
126
|
+
# 测试环境变量存在性检查
|
|
127
|
+
exists = has_env("TEST_VAR")
|
|
128
|
+
print(f"{'✓' if exists else '✗'} 环境变量存在性检查: {exists}")
|
|
129
|
+
|
|
130
|
+
# 测试不存在的环境变量
|
|
131
|
+
not_exists = has_env("NON_EXISTENT_VAR")
|
|
132
|
+
print(f"{'✓' if not not_exists else '✗'} 不存在的环境变量检查: {not_exists}")
|
|
133
|
+
|
|
134
|
+
# 测试默认值
|
|
135
|
+
default_result = get_env("NON_EXISTENT_VAR", "default_value")
|
|
136
|
+
print(f"{'✓' if default_result == 'default_value' else '✗'} 使用默认值: {default_result}")
|
|
137
|
+
|
|
138
|
+
# 清理测试环境变量
|
|
139
|
+
if "TEST_VAR" in os.environ:
|
|
140
|
+
del os.environ["TEST_VAR"]
|
|
141
|
+
|
|
142
|
+
print()
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def test_env_info():
|
|
146
|
+
"""测试环境信息获取功能"""
|
|
147
|
+
print("=== 测试环境信息获取功能 ===")
|
|
148
|
+
|
|
149
|
+
env_info = get_env_info()
|
|
150
|
+
print("环境信息:")
|
|
151
|
+
for key, value in env_info.items():
|
|
152
|
+
print(f" {key}: {value}")
|
|
153
|
+
|
|
154
|
+
print()
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def main():
|
|
158
|
+
"""主测试函数"""
|
|
159
|
+
print("环境变量管理模块测试")
|
|
160
|
+
print("=" * 50)
|
|
161
|
+
|
|
162
|
+
test_basic_functionality()
|
|
163
|
+
test_environment_detection()
|
|
164
|
+
test_type_conversion()
|
|
165
|
+
test_env_management()
|
|
166
|
+
test_env_info()
|
|
167
|
+
|
|
168
|
+
print("测试完成!")
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
if __name__ == "__main__":
|
|
172
|
+
main()
|
|
173
|
+
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
|
|
2
|
+
#!/usr/bin/env python3
|
|
3
|
+
"""
|
|
4
|
+
环境变量管理模块集成测试
|
|
5
|
+
|
|
6
|
+
验证模块在项目中的集成情况
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sys
|
|
10
|
+
import os
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
# 确保可以导入项目模块
|
|
14
|
+
project_root = Path(__file__).parent.parent.parent.parent
|
|
15
|
+
sys.path.insert(0, str(project_root))
|
|
16
|
+
|
|
17
|
+
def test_import():
|
|
18
|
+
"""测试模块导入"""
|
|
19
|
+
try:
|
|
20
|
+
# 测试直接导入
|
|
21
|
+
from src.autocoder.common.env_manager import (
|
|
22
|
+
EnvManager, Environment,
|
|
23
|
+
get_environment, is_production, is_development
|
|
24
|
+
)
|
|
25
|
+
print("✓ 模块导入成功")
|
|
26
|
+
return True
|
|
27
|
+
except ImportError as e:
|
|
28
|
+
print(f"✗ 模块导入失败: {e}")
|
|
29
|
+
return False
|
|
30
|
+
|
|
31
|
+
def test_basic_functionality():
|
|
32
|
+
"""测试基本功能"""
|
|
33
|
+
try:
|
|
34
|
+
from src.autocoder.common.env_manager import (
|
|
35
|
+
get_environment, is_production, is_development,
|
|
36
|
+
get_env, set_env
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
# 测试环境检测
|
|
40
|
+
env = get_environment()
|
|
41
|
+
print(f"✓ 当前环境: {env.value}")
|
|
42
|
+
|
|
43
|
+
# 测试环境变量设置和获取
|
|
44
|
+
test_key = "TEST_INTEGRATION_VAR"
|
|
45
|
+
test_value = "integration_test_value"
|
|
46
|
+
|
|
47
|
+
set_env(test_key, test_value)
|
|
48
|
+
retrieved_value = get_env(test_key)
|
|
49
|
+
|
|
50
|
+
if retrieved_value == test_value:
|
|
51
|
+
print("✓ 环境变量设置和获取功能正常")
|
|
52
|
+
else:
|
|
53
|
+
print(f"✗ 环境变量功能异常: 期望 {test_value}, 实际 {retrieved_value}")
|
|
54
|
+
return False
|
|
55
|
+
|
|
56
|
+
# 清理测试环境变量
|
|
57
|
+
if test_key in os.environ:
|
|
58
|
+
del os.environ[test_key]
|
|
59
|
+
|
|
60
|
+
return True
|
|
61
|
+
|
|
62
|
+
except Exception as e:
|
|
63
|
+
print(f"✗ 基本功能测试失败: {e}")
|
|
64
|
+
return False
|
|
65
|
+
|
|
66
|
+
def test_with_existing_project_modules():
|
|
67
|
+
"""测试与现有项目模块的兼容性"""
|
|
68
|
+
try:
|
|
69
|
+
# 测试与现有的 detect_env 函数兼容性
|
|
70
|
+
from src.autocoder.common import detect_env
|
|
71
|
+
from src.autocoder.common.env_manager import get_env_info
|
|
72
|
+
|
|
73
|
+
# 获取现有的环境信息
|
|
74
|
+
existing_env_info = detect_env()
|
|
75
|
+
print(f"✓ 现有环境检测正常: {existing_env_info.os_name}")
|
|
76
|
+
|
|
77
|
+
# 获取新模块的环境信息
|
|
78
|
+
new_env_info = get_env_info()
|
|
79
|
+
print(f"✓ 新环境管理模块正常: {new_env_info['environment']}")
|
|
80
|
+
|
|
81
|
+
return True
|
|
82
|
+
|
|
83
|
+
except Exception as e:
|
|
84
|
+
print(f"✗ 项目模块兼容性测试失败: {e}")
|
|
85
|
+
return False
|
|
86
|
+
|
|
87
|
+
def test_environment_switching():
|
|
88
|
+
"""测试环境切换功能"""
|
|
89
|
+
try:
|
|
90
|
+
from src.autocoder.common.env_manager import (
|
|
91
|
+
get_environment, is_production, is_development, set_env
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
# 保存原始环境
|
|
95
|
+
original_env = os.environ.get("AUTO_CODER_ENV")
|
|
96
|
+
|
|
97
|
+
# 测试切换到生产环境
|
|
98
|
+
set_env("AUTO_CODER_ENV", "production")
|
|
99
|
+
if is_production() and not is_development():
|
|
100
|
+
print("✓ 生产环境切换成功")
|
|
101
|
+
else:
|
|
102
|
+
print("✗ 生产环境切换失败")
|
|
103
|
+
return False
|
|
104
|
+
|
|
105
|
+
# 测试切换到开发环境
|
|
106
|
+
set_env("AUTO_CODER_ENV", "development")
|
|
107
|
+
if is_development() and not is_production():
|
|
108
|
+
print("✓ 开发环境切换成功")
|
|
109
|
+
else:
|
|
110
|
+
print("✗ 开发环境切换失败")
|
|
111
|
+
return False
|
|
112
|
+
|
|
113
|
+
# 恢复原始环境
|
|
114
|
+
if original_env:
|
|
115
|
+
os.environ["AUTO_CODER_ENV"] = original_env
|
|
116
|
+
elif "AUTO_CODER_ENV" in os.environ:
|
|
117
|
+
del os.environ["AUTO_CODER_ENV"]
|
|
118
|
+
|
|
119
|
+
return True
|
|
120
|
+
|
|
121
|
+
except Exception as e:
|
|
122
|
+
print(f"✗ 环境切换测试失败: {e}")
|
|
123
|
+
return False
|
|
124
|
+
|
|
125
|
+
def main():
|
|
126
|
+
"""主测试函数"""
|
|
127
|
+
print("环境变量管理模块集成测试")
|
|
128
|
+
print("=" * 50)
|
|
129
|
+
|
|
130
|
+
tests = [
|
|
131
|
+
test_import,
|
|
132
|
+
test_basic_functionality,
|
|
133
|
+
test_with_existing_project_modules,
|
|
134
|
+
test_environment_switching,
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
passed = 0
|
|
138
|
+
total = len(tests)
|
|
139
|
+
|
|
140
|
+
for test in tests:
|
|
141
|
+
print(f"\n运行测试: {test.__name__}")
|
|
142
|
+
if test():
|
|
143
|
+
passed += 1
|
|
144
|
+
else:
|
|
145
|
+
print(f"测试 {test.__name__} 失败")
|
|
146
|
+
|
|
147
|
+
print(f"\n测试结果: {passed}/{total} 通过")
|
|
148
|
+
|
|
149
|
+
if passed == total:
|
|
150
|
+
print("🎉 所有集成测试通过!")
|
|
151
|
+
return True
|
|
152
|
+
else:
|
|
153
|
+
print("❌ 部分集成测试失败")
|
|
154
|
+
return False
|
|
155
|
+
|
|
156
|
+
if __name__ == "__main__":
|
|
157
|
+
success = main()
|
|
158
|
+
sys.exit(0 if success else 1)
|
|
159
|
+
|