auto-coder 1.0.0__py3-none-any.whl → 2.0.1__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.1.dist-info/LICENSE +158 -0
- auto_coder-2.0.1.dist-info/METADATA +558 -0
- auto_coder-2.0.1.dist-info/RECORD +795 -0
- {auto_coder-1.0.0.dist-info → auto_coder-2.0.1.dist-info}/WHEEL +1 -1
- {auto_coder-1.0.0.dist-info → auto_coder-2.0.1.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 +77 -73
- autocoder/auto_coder.py +31 -40
- autocoder/auto_coder_rag.py +11 -1084
- autocoder/auto_coder_runner.py +962 -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 +409 -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 +316 -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 +356 -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 +1094 -0
- autocoder/default_project/__init__.py +501 -0
- autocoder/dispacher/__init__.py +4 -12
- autocoder/dispacher/actions/action.py +400 -129
- autocoder/dispacher/actions/plugins/action_regex_project.py +2 -2
- autocoder/index/entry.py +117 -125
- 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 +923 -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 +665 -0
- autocoder/workflow_agents/loader.py +749 -0
- autocoder/workflow_agents/runner.py +267 -0
- autocoder/workflow_agents/types.py +173 -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.1.dist-info}/top_level.txt +0 -0
- /autocoder/{sdk/example.py → common/agent_query_queue/__init__.py} +0 -0
autocoder/sdk/__init__.py
CHANGED
|
@@ -4,13 +4,9 @@ Auto-Coder SDK
|
|
|
4
4
|
为第三方开发者提供的 Python SDK,允许通过命令行工具和 Python API 两种方式使用 Auto-Coder 的核心功能。
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
from .core.auto_coder_core import AutoCoderCore
|
|
7
|
+
# 导入数据模型和异常
|
|
9
8
|
from .models.options import AutoCodeOptions
|
|
10
|
-
from .models.messages import Message
|
|
11
9
|
from .models.responses import StreamEvent, CodeModificationResult
|
|
12
|
-
from .session.session import Session
|
|
13
|
-
from .session.session_manager import SessionManager
|
|
14
10
|
from .exceptions import (
|
|
15
11
|
AutoCoderSDKError,
|
|
16
12
|
SessionNotFoundError,
|
|
@@ -18,204 +14,64 @@ from .exceptions import (
|
|
|
18
14
|
BridgeError,
|
|
19
15
|
ValidationError
|
|
20
16
|
)
|
|
21
|
-
from autocoder.auto_coder_runner import init_project_if_required as init_project_if_required_buildin
|
|
22
|
-
from autocoder.auto_coder_runner import (
|
|
23
|
-
configure as configure_buildin,
|
|
24
|
-
load_tokenizer,
|
|
25
|
-
start as start_engine,
|
|
26
|
-
commit as commit_buildin
|
|
27
|
-
)
|
|
28
|
-
from autocoder.rag.variable_holder import VariableHolder
|
|
29
|
-
from autocoder.utils.llms import get_single_llm
|
|
30
|
-
|
|
31
|
-
async def query(
|
|
32
|
-
prompt: str,
|
|
33
|
-
options: Optional[AutoCodeOptions] = None,
|
|
34
|
-
show_terminal: bool = True
|
|
35
|
-
) -> AsyncIterator[Message]:
|
|
36
|
-
"""
|
|
37
|
-
异步流式查询接口
|
|
38
|
-
|
|
39
|
-
Args:
|
|
40
|
-
prompt: 查询提示
|
|
41
|
-
options: 配置选项
|
|
42
|
-
show_terminal: 是否在终端显示友好的渲染输出
|
|
43
|
-
|
|
44
|
-
Yields:
|
|
45
|
-
Message: 响应消息流
|
|
46
|
-
|
|
47
|
-
Example:
|
|
48
|
-
>>> import asyncio
|
|
49
|
-
>>> from autocoder.sdk import query, AutoCodeOptions
|
|
50
|
-
>>>
|
|
51
|
-
>>> async def main():
|
|
52
|
-
... options = AutoCodeOptions(max_turns=3)
|
|
53
|
-
... async for message in query("Write a hello world function", options):
|
|
54
|
-
... print(f"[{message.role}] {message.content}")
|
|
55
|
-
>>>
|
|
56
|
-
>>> asyncio.run(main())
|
|
57
|
-
"""
|
|
58
|
-
if options is None:
|
|
59
|
-
options = AutoCodeOptions()
|
|
60
|
-
core = AutoCoderCore(options)
|
|
61
|
-
async for message in core.query_stream(f"/new {prompt}", show_terminal):
|
|
62
|
-
yield message
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def query_sync(
|
|
66
|
-
prompt: str,
|
|
67
|
-
options: Optional[AutoCodeOptions] = None,
|
|
68
|
-
show_terminal: bool = True
|
|
69
|
-
) -> str:
|
|
70
|
-
"""
|
|
71
|
-
同步查询接口
|
|
72
|
-
|
|
73
|
-
Args:
|
|
74
|
-
prompt: 查询提示
|
|
75
|
-
options: 配置选项
|
|
76
|
-
show_terminal: 是否在终端显示友好的渲染输出
|
|
77
|
-
|
|
78
|
-
Returns:
|
|
79
|
-
str: 响应内容
|
|
80
|
-
|
|
81
|
-
Example:
|
|
82
|
-
>>> from autocoder.sdk import query_sync, AutoCodeOptions
|
|
83
|
-
>>>
|
|
84
|
-
>>> options = AutoCodeOptions(max_turns=1)
|
|
85
|
-
>>> response = query_sync("Write a simple calculator function", options)
|
|
86
|
-
>>> print(response)
|
|
87
|
-
"""
|
|
88
|
-
if options is None:
|
|
89
|
-
options = AutoCodeOptions()
|
|
90
|
-
core = AutoCoderCore(options)
|
|
91
|
-
return core.query_sync(f"/new {prompt}", show_terminal)
|
|
92
|
-
|
|
93
17
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
Args:
|
|
103
|
-
prompt: 查询提示
|
|
104
|
-
options: 配置选项
|
|
105
|
-
show_terminal: 是否在终端显示友好的渲染输出(默认为False,避免重复显示)
|
|
106
|
-
|
|
107
|
-
Yields:
|
|
108
|
-
StreamEvent: 原始事件流,包含详细的执行过程信息
|
|
109
|
-
|
|
110
|
-
Example:
|
|
111
|
-
>>> import asyncio
|
|
112
|
-
>>> from autocoder.sdk import query_with_events, AutoCodeOptions
|
|
113
|
-
>>>
|
|
114
|
-
>>> async def main():
|
|
115
|
-
... options = AutoCodeOptions(max_turns=3)
|
|
116
|
-
... async for event in query_with_events("Write a hello world function", options):
|
|
117
|
-
... print(f"[{event.event_type}] {event.data}")
|
|
118
|
-
>>>
|
|
119
|
-
>>> asyncio.run(main())
|
|
120
|
-
"""
|
|
121
|
-
if options is None:
|
|
122
|
-
options = AutoCodeOptions()
|
|
123
|
-
core = AutoCoderCore(options)
|
|
18
|
+
# 导入所有 API 函数
|
|
19
|
+
from .api import (
|
|
20
|
+
# 新的清晰 API
|
|
21
|
+
auto_code_stream,
|
|
22
|
+
auto_code,
|
|
23
|
+
auto_code_events_stream,
|
|
24
|
+
auto_code_events,
|
|
124
25
|
|
|
125
|
-
#
|
|
126
|
-
|
|
127
|
-
|
|
26
|
+
# 工具函数
|
|
27
|
+
initialize_project,
|
|
28
|
+
configure_model,
|
|
29
|
+
get_language_model,
|
|
30
|
+
commit_changes,
|
|
31
|
+
cancel_task,
|
|
128
32
|
|
|
129
|
-
#
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if show_terminal:
|
|
140
|
-
core._render_stream_event(event, show_terminal)
|
|
141
|
-
yield event
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
def query_with_events_sync(
|
|
145
|
-
prompt: str,
|
|
146
|
-
options: Optional[AutoCodeOptions] = None,
|
|
147
|
-
show_terminal: bool = False
|
|
148
|
-
) -> Iterator[StreamEvent]:
|
|
149
|
-
"""
|
|
150
|
-
同步查询接口,返回原始事件流生成器
|
|
151
|
-
|
|
152
|
-
Args:
|
|
153
|
-
prompt: 查询提示
|
|
154
|
-
options: 配置选项
|
|
155
|
-
show_terminal: 是否在终端显示友好的渲染输出(默认为False,避免重复显示)
|
|
156
|
-
|
|
157
|
-
Returns:
|
|
158
|
-
Iterator[StreamEvent]: 原始事件流生成器,包含详细的执行过程信息
|
|
159
|
-
|
|
160
|
-
Example:
|
|
161
|
-
>>> from autocoder.sdk import query_with_events_sync, AutoCodeOptions
|
|
162
|
-
>>>
|
|
163
|
-
>>> options = AutoCodeOptions(max_turns=1)
|
|
164
|
-
>>> for event in query_with_events_sync("Write a simple calculator function", options):
|
|
165
|
-
... print(f"[{event.event_type}] {event.data}")
|
|
166
|
-
"""
|
|
167
|
-
if options is None:
|
|
168
|
-
options = AutoCodeOptions()
|
|
169
|
-
core = AutoCoderCore(options)
|
|
170
|
-
|
|
171
|
-
# 直接调用同步方法获取事件流
|
|
172
|
-
event_stream = core._sync_run_auto_command(f"/new {prompt}")
|
|
173
|
-
|
|
174
|
-
# 直接返回事件流
|
|
175
|
-
for event in event_stream:
|
|
176
|
-
# 可选择性地渲染到终端
|
|
177
|
-
if show_terminal:
|
|
178
|
-
core._render_stream_event(event, show_terminal)
|
|
179
|
-
yield event
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
def init_project_if_required(target_dir: str,project_type = ".py,.ts"):
|
|
183
|
-
init_project_if_required_buildin(target_dir,project_type)
|
|
184
|
-
if not VariableHolder.TOKENIZER_MODEL:
|
|
185
|
-
load_tokenizer()
|
|
186
|
-
start_engine()
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
def configure(key:str,value:str):
|
|
190
|
-
configure_buildin(f"{key}:{value}")
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
def get_llm(model:str,product_mode:str="lite"):
|
|
194
|
-
return get_single_llm(model,product_mode)
|
|
195
|
-
|
|
196
|
-
def commit(query: Optional[str] = None):
|
|
197
|
-
commit_buildin(query)
|
|
33
|
+
# 向后兼容的旧 API(带弃用警告)
|
|
34
|
+
query,
|
|
35
|
+
query_sync,
|
|
36
|
+
query_with_events,
|
|
37
|
+
query_with_events_sync,
|
|
38
|
+
init_project_if_required,
|
|
39
|
+
configure,
|
|
40
|
+
get_llm,
|
|
41
|
+
commit,
|
|
42
|
+
)
|
|
198
43
|
|
|
199
44
|
|
|
200
|
-
__version__ = "1.
|
|
45
|
+
__version__ = "1.7.7"
|
|
201
46
|
__all__ = [
|
|
202
|
-
|
|
203
|
-
"
|
|
204
|
-
"
|
|
205
|
-
"
|
|
206
|
-
"
|
|
207
|
-
"
|
|
208
|
-
"
|
|
47
|
+
# 新的清晰 API
|
|
48
|
+
"auto_code_stream",
|
|
49
|
+
"auto_code",
|
|
50
|
+
"auto_code_events_stream",
|
|
51
|
+
"auto_code_events",
|
|
52
|
+
"initialize_project",
|
|
53
|
+
"configure_model",
|
|
54
|
+
"get_language_model",
|
|
55
|
+
"commit_changes",
|
|
56
|
+
"cancel_task",
|
|
57
|
+
|
|
58
|
+
# 数据模型和异常
|
|
209
59
|
"AutoCodeOptions",
|
|
210
|
-
"Message",
|
|
211
60
|
"StreamEvent",
|
|
212
61
|
"CodeModificationResult",
|
|
213
|
-
"Session",
|
|
214
|
-
"SessionManager",
|
|
215
62
|
"AutoCoderSDKError",
|
|
216
63
|
"SessionNotFoundError",
|
|
217
64
|
"InvalidOptionsError",
|
|
218
65
|
"BridgeError",
|
|
219
66
|
"ValidationError",
|
|
67
|
+
|
|
68
|
+
# 向后兼容的旧 API(将在未来版本移除)
|
|
69
|
+
"query",
|
|
70
|
+
"query_sync",
|
|
71
|
+
"query_with_events",
|
|
72
|
+
"query_with_events_sync",
|
|
73
|
+
"init_project_if_required",
|
|
74
|
+
"configure",
|
|
75
|
+
"get_llm",
|
|
220
76
|
"commit",
|
|
221
77
|
]
|
autocoder/sdk/api.py
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Auto-Coder SDK API Functions
|
|
3
|
+
|
|
4
|
+
包含所有主要的公共 API 函数,包括新的清晰 API、工具函数和向后兼容的旧 API。
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import warnings
|
|
8
|
+
from typing import AsyncIterator, Iterator, Optional, Dict, Any
|
|
9
|
+
from .core.auto_coder_core import AutoCoderCore
|
|
10
|
+
from .models.options import AutoCodeOptions
|
|
11
|
+
from .models.responses import StreamEvent, CodeModificationResult
|
|
12
|
+
from autocoder.auto_coder_runner import init_project_if_required as init_project_if_required_buildin
|
|
13
|
+
from autocoder.auto_coder_runner import (
|
|
14
|
+
configure as configure_buildin,
|
|
15
|
+
load_tokenizer,
|
|
16
|
+
start as start_engine,
|
|
17
|
+
commit as commit_buildin
|
|
18
|
+
)
|
|
19
|
+
from autocoder.rag.variable_holder import VariableHolder
|
|
20
|
+
from autocoder.utils.llms import get_single_llm
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# ===== 新的清晰 API 命名 =====
|
|
24
|
+
|
|
25
|
+
async def auto_code_stream(
|
|
26
|
+
prompt: str,
|
|
27
|
+
options: Optional[AutoCodeOptions] = None,
|
|
28
|
+
show_terminal: Optional[bool] = None,
|
|
29
|
+
cancel_token: Optional[str] = None
|
|
30
|
+
) -> AsyncIterator[StreamEvent]:
|
|
31
|
+
"""
|
|
32
|
+
异步流式代码生成接口
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
prompt: 代码生成提示
|
|
36
|
+
options: 配置选项
|
|
37
|
+
show_terminal: 是否在终端显示友好的渲染输出,None时使用配置中的verbose设置
|
|
38
|
+
cancel_token: 取消令牌,用于中断执行
|
|
39
|
+
|
|
40
|
+
Yields:
|
|
41
|
+
StreamEvent: 响应事件流
|
|
42
|
+
|
|
43
|
+
Example:
|
|
44
|
+
>>> import asyncio
|
|
45
|
+
>>> from autocoder.sdk import auto_code_stream, AutoCodeOptions
|
|
46
|
+
>>>
|
|
47
|
+
>>> async def main():
|
|
48
|
+
... options = AutoCodeOptions(max_turns=3)
|
|
49
|
+
... async for event in auto_code_stream("Write a hello world function", options):
|
|
50
|
+
... print(f"[{event.event_type}] {event.data}")
|
|
51
|
+
>>>
|
|
52
|
+
>>> asyncio.run(main())
|
|
53
|
+
"""
|
|
54
|
+
if options is None:
|
|
55
|
+
options = AutoCodeOptions()
|
|
56
|
+
|
|
57
|
+
# 如果直接传递了 cancel_token 参数,优先使用它
|
|
58
|
+
if cancel_token is not None:
|
|
59
|
+
options = options.copy(cancel_token=cancel_token)
|
|
60
|
+
|
|
61
|
+
core = AutoCoderCore(options)
|
|
62
|
+
async for event in core.query_stream(prompt, show_terminal):
|
|
63
|
+
yield event
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def auto_code(
|
|
67
|
+
prompt: str,
|
|
68
|
+
options: Optional[AutoCodeOptions] = None,
|
|
69
|
+
show_terminal: Optional[bool] = None,
|
|
70
|
+
cancel_token: Optional[str] = None
|
|
71
|
+
) -> str:
|
|
72
|
+
"""
|
|
73
|
+
同步代码生成接口
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
prompt: 代码生成提示
|
|
77
|
+
options: 配置选项
|
|
78
|
+
show_terminal: 是否在终端显示友好的渲染输出,None时使用配置中的verbose设置
|
|
79
|
+
cancel_token: 取消令牌,用于中断执行
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
str: 生成的代码内容
|
|
83
|
+
|
|
84
|
+
Example:
|
|
85
|
+
>>> from autocoder.sdk import auto_code, AutoCodeOptions
|
|
86
|
+
>>>
|
|
87
|
+
>>> options = AutoCodeOptions(max_turns=1)
|
|
88
|
+
>>> response = auto_code("Write a simple calculator function", options)
|
|
89
|
+
>>> print(response)
|
|
90
|
+
"""
|
|
91
|
+
if options is None:
|
|
92
|
+
options = AutoCodeOptions()
|
|
93
|
+
|
|
94
|
+
# 如果直接传递了 cancel_token 参数,优先使用它
|
|
95
|
+
if cancel_token is not None:
|
|
96
|
+
options = options.copy(cancel_token=cancel_token)
|
|
97
|
+
|
|
98
|
+
core = AutoCoderCore(options)
|
|
99
|
+
events = core.query_sync(prompt, show_terminal)
|
|
100
|
+
|
|
101
|
+
# 从事件流中提取最终结果
|
|
102
|
+
result_content = ""
|
|
103
|
+
for event in events:
|
|
104
|
+
if event.event_type == "completion":
|
|
105
|
+
result_content = event.data.get("result", "")
|
|
106
|
+
break
|
|
107
|
+
elif event.event_type == "llm_output":
|
|
108
|
+
result_content += event.data.get("text", "")
|
|
109
|
+
|
|
110
|
+
return result_content
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
async def auto_code_events_stream(
|
|
114
|
+
prompt: str,
|
|
115
|
+
options: Optional[AutoCodeOptions] = None,
|
|
116
|
+
show_terminal: bool = False,
|
|
117
|
+
cancel_token: Optional[str] = None
|
|
118
|
+
) -> AsyncIterator[StreamEvent]:
|
|
119
|
+
"""
|
|
120
|
+
异步流式代码生成接口,返回详细事件流
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
prompt: 代码生成提示
|
|
124
|
+
options: 配置选项
|
|
125
|
+
show_terminal: 是否在终端显示友好的渲染输出(默认为False,避免重复显示)
|
|
126
|
+
cancel_token: 取消令牌,用于中断执行
|
|
127
|
+
|
|
128
|
+
Yields:
|
|
129
|
+
StreamEvent: 原始事件流,包含详细的执行过程信息
|
|
130
|
+
|
|
131
|
+
Example:
|
|
132
|
+
>>> import asyncio
|
|
133
|
+
>>> from autocoder.sdk import auto_code_events_stream, AutoCodeOptions
|
|
134
|
+
>>>
|
|
135
|
+
>>> async def main():
|
|
136
|
+
... options = AutoCodeOptions(max_turns=3)
|
|
137
|
+
... async for event in auto_code_events_stream("Write a hello world function", options):
|
|
138
|
+
... print(f"[{event.event_type}] {event.data}")
|
|
139
|
+
>>>
|
|
140
|
+
>>> asyncio.run(main())
|
|
141
|
+
"""
|
|
142
|
+
if options is None:
|
|
143
|
+
options = AutoCodeOptions()
|
|
144
|
+
|
|
145
|
+
# 如果直接传递了 cancel_token 参数,优先使用它
|
|
146
|
+
if cancel_token is not None:
|
|
147
|
+
options = options.copy(cancel_token=cancel_token)
|
|
148
|
+
|
|
149
|
+
core = AutoCoderCore(options)
|
|
150
|
+
|
|
151
|
+
# 使用桥接层直接获取事件流
|
|
152
|
+
import asyncio
|
|
153
|
+
loop = asyncio.get_event_loop()
|
|
154
|
+
|
|
155
|
+
# 在线程池中执行同步调用
|
|
156
|
+
event_stream = await loop.run_in_executor(
|
|
157
|
+
core._executor,
|
|
158
|
+
core._sync_run_auto_command,
|
|
159
|
+
prompt
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
# 直接返回事件流
|
|
163
|
+
for event in event_stream:
|
|
164
|
+
# 可选择性地渲染到终端
|
|
165
|
+
if show_terminal:
|
|
166
|
+
core._render_stream_event(event, show_terminal)
|
|
167
|
+
yield event
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def auto_code_events(
|
|
171
|
+
prompt: str,
|
|
172
|
+
options: Optional[AutoCodeOptions] = None,
|
|
173
|
+
show_terminal: bool = False,
|
|
174
|
+
cancel_token: Optional[str] = None
|
|
175
|
+
) -> Iterator[StreamEvent]:
|
|
176
|
+
"""
|
|
177
|
+
同步代码生成接口,返回详细事件流生成器
|
|
178
|
+
|
|
179
|
+
Args:
|
|
180
|
+
prompt: 代码生成提示
|
|
181
|
+
options: 配置选项
|
|
182
|
+
show_terminal: 是否在终端显示友好的渲染输出(默认为False,避免重复显示)
|
|
183
|
+
cancel_token: 取消令牌,用于中断执行
|
|
184
|
+
|
|
185
|
+
Returns:
|
|
186
|
+
Iterator[StreamEvent]: 原始事件流生成器,包含详细的执行过程信息
|
|
187
|
+
|
|
188
|
+
Example:
|
|
189
|
+
>>> from autocoder.sdk import auto_code_events, AutoCodeOptions
|
|
190
|
+
>>>
|
|
191
|
+
>>> options = AutoCodeOptions(max_turns=1)
|
|
192
|
+
>>> for event in auto_code_events("Write a simple calculator function", options):
|
|
193
|
+
... print(f"[{event.event_type}] {event.data}")
|
|
194
|
+
"""
|
|
195
|
+
if options is None:
|
|
196
|
+
options = AutoCodeOptions()
|
|
197
|
+
|
|
198
|
+
# 如果直接传递了 cancel_token 参数,优先使用它
|
|
199
|
+
if cancel_token is not None:
|
|
200
|
+
options = options.copy(cancel_token=cancel_token)
|
|
201
|
+
|
|
202
|
+
core = AutoCoderCore(options)
|
|
203
|
+
|
|
204
|
+
# 直接调用同步方法获取事件流
|
|
205
|
+
event_stream = core._sync_run_auto_command(prompt)
|
|
206
|
+
|
|
207
|
+
# 直接返回事件流
|
|
208
|
+
for event in event_stream:
|
|
209
|
+
# 可选择性地渲染到终端
|
|
210
|
+
if show_terminal:
|
|
211
|
+
core._render_stream_event(event, show_terminal)
|
|
212
|
+
yield event
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
# ===== 工具函数 =====
|
|
216
|
+
|
|
217
|
+
def initialize_project(target_dir: str, project_type: str = ".py,.ts"):
|
|
218
|
+
"""
|
|
219
|
+
初始化项目环境
|
|
220
|
+
|
|
221
|
+
Args:
|
|
222
|
+
target_dir: 目标目录
|
|
223
|
+
project_type: 项目类型,以逗号分隔的文件扩展名
|
|
224
|
+
"""
|
|
225
|
+
init_project_if_required_buildin(target_dir, project_type)
|
|
226
|
+
if not VariableHolder.TOKENIZER_MODEL:
|
|
227
|
+
load_tokenizer()
|
|
228
|
+
start_engine()
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def configure_model(key: str, value: str):
|
|
232
|
+
"""
|
|
233
|
+
配置模型参数
|
|
234
|
+
|
|
235
|
+
Args:
|
|
236
|
+
key: 配置键
|
|
237
|
+
value: 配置值
|
|
238
|
+
"""
|
|
239
|
+
configure_buildin(f"{key}:{value}")
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def get_language_model(model: str, product_mode: str = "lite"):
|
|
243
|
+
"""
|
|
244
|
+
获取语言模型实例
|
|
245
|
+
|
|
246
|
+
Args:
|
|
247
|
+
model: 模型名称
|
|
248
|
+
product_mode: 产品模式
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
语言模型实例
|
|
252
|
+
"""
|
|
253
|
+
return get_single_llm(model, product_mode)
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def commit_changes(query: Optional[str] = None):
|
|
257
|
+
"""
|
|
258
|
+
根据代码变化自动生成commit信息并提交
|
|
259
|
+
|
|
260
|
+
Args:
|
|
261
|
+
query: 提交信息的生成提示(可选)
|
|
262
|
+
"""
|
|
263
|
+
commit_buildin(query)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def cancel_task(cancel_token: str, context: Optional[Dict[str, Any]] = None):
|
|
267
|
+
"""
|
|
268
|
+
取消指定的任务
|
|
269
|
+
|
|
270
|
+
Args:
|
|
271
|
+
cancel_token: 要取消的任务令牌
|
|
272
|
+
context: 取消上下文信息(可选)
|
|
273
|
+
|
|
274
|
+
Example:
|
|
275
|
+
>>> from autocoder.sdk import cancel_task
|
|
276
|
+
>>>
|
|
277
|
+
>>> # 取消指定任务
|
|
278
|
+
>>> cancel_task("my-cancel-token-123")
|
|
279
|
+
>>>
|
|
280
|
+
>>> # 带上下文信息的取消
|
|
281
|
+
>>> cancel_task("my-token", {"reason": "user_requested", "timestamp": "2024-01-01"})
|
|
282
|
+
"""
|
|
283
|
+
try:
|
|
284
|
+
from autocoder.common.global_cancel import global_cancel
|
|
285
|
+
global_cancel.set(cancel_token, context)
|
|
286
|
+
except ImportError:
|
|
287
|
+
# 如果无法导入,提供一个简单的警告
|
|
288
|
+
print(f"Warning: Unable to cancel task {cancel_token} - global_cancel module not available")
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
# ===== 向后兼容的旧 API(带弃用警告)=====
|
|
292
|
+
|
|
293
|
+
def query(*args, **kwargs):
|
|
294
|
+
"""已弃用,请使用 auto_code_stream"""
|
|
295
|
+
warnings.warn(
|
|
296
|
+
"query() is deprecated, use auto_code_stream() instead",
|
|
297
|
+
DeprecationWarning,
|
|
298
|
+
stacklevel=2
|
|
299
|
+
)
|
|
300
|
+
return auto_code_stream(*args, **kwargs)
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
def query_sync(*args, **kwargs):
|
|
304
|
+
"""已弃用,请使用 auto_code"""
|
|
305
|
+
warnings.warn(
|
|
306
|
+
"query_sync() is deprecated, use auto_code() instead",
|
|
307
|
+
DeprecationWarning,
|
|
308
|
+
stacklevel=2
|
|
309
|
+
)
|
|
310
|
+
return auto_code(*args, **kwargs)
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
def query_with_events(*args, **kwargs):
|
|
314
|
+
"""已弃用,请使用 auto_code_events_stream"""
|
|
315
|
+
warnings.warn(
|
|
316
|
+
"query_with_events() is deprecated, use auto_code_events_stream() instead",
|
|
317
|
+
DeprecationWarning,
|
|
318
|
+
stacklevel=2
|
|
319
|
+
)
|
|
320
|
+
return auto_code_events_stream(*args, **kwargs)
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
def query_with_events_sync(*args, **kwargs):
|
|
324
|
+
"""已弃用,请使用 auto_code_events"""
|
|
325
|
+
warnings.warn(
|
|
326
|
+
"query_with_events_sync() is deprecated, use auto_code_events() instead",
|
|
327
|
+
DeprecationWarning,
|
|
328
|
+
stacklevel=2
|
|
329
|
+
)
|
|
330
|
+
return auto_code_events(*args, **kwargs)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
def init_project_if_required(*args, **kwargs):
|
|
334
|
+
"""已弃用,请使用 initialize_project"""
|
|
335
|
+
warnings.warn(
|
|
336
|
+
"init_project_if_required() is deprecated, use initialize_project() instead",
|
|
337
|
+
DeprecationWarning,
|
|
338
|
+
stacklevel=2
|
|
339
|
+
)
|
|
340
|
+
return initialize_project(*args, **kwargs)
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
def configure(*args, **kwargs):
|
|
344
|
+
"""已弃用,请使用 configure_model"""
|
|
345
|
+
warnings.warn(
|
|
346
|
+
"configure() is deprecated, use configure_model() instead",
|
|
347
|
+
DeprecationWarning,
|
|
348
|
+
stacklevel=2
|
|
349
|
+
)
|
|
350
|
+
return configure_model(*args, **kwargs)
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
def get_llm(*args, **kwargs):
|
|
354
|
+
"""已弃用,请使用 get_language_model"""
|
|
355
|
+
warnings.warn(
|
|
356
|
+
"get_llm() is deprecated, use get_language_model() instead",
|
|
357
|
+
DeprecationWarning,
|
|
358
|
+
stacklevel=2
|
|
359
|
+
)
|
|
360
|
+
return get_language_model(*args, **kwargs)
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
def commit(*args, **kwargs):
|
|
364
|
+
"""已弃用,请使用 commit_changes"""
|
|
365
|
+
warnings.warn(
|
|
366
|
+
"commit() is deprecated, use commit_changes() instead",
|
|
367
|
+
DeprecationWarning,
|
|
368
|
+
stacklevel=2
|
|
369
|
+
)
|
|
370
|
+
return commit_changes(*args, **kwargs)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
|
|
2
|
+
"""
|
|
3
|
+
异步代理运行器模块
|
|
4
|
+
|
|
5
|
+
提供 Markdown 处理、Git worktree 管理和并行执行功能。
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .markdown_processor import MarkdownProcessor, Document, SplitMode
|
|
9
|
+
from .worktree_manager import WorktreeManager, WorktreeInfo
|
|
10
|
+
from .async_executor import AsyncExecutor, AutoCoderExecutor, ExecutionResult
|
|
11
|
+
from .async_handler import AsyncAgentHandler
|
|
12
|
+
from .task_metadata import TaskMetadata, TaskMetadataManager
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"MarkdownProcessor",
|
|
16
|
+
"Document",
|
|
17
|
+
"SplitMode",
|
|
18
|
+
"WorktreeManager",
|
|
19
|
+
"WorktreeInfo",
|
|
20
|
+
"AsyncExecutor",
|
|
21
|
+
"AutoCoderExecutor",
|
|
22
|
+
"ExecutionResult",
|
|
23
|
+
"AsyncAgentHandler",
|
|
24
|
+
"TaskMetadata",
|
|
25
|
+
"TaskMetadataManager"
|
|
26
|
+
]
|