auto-coder 0.1.400__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of auto-coder might be problematic. Click here for more details.
- auto_coder-2.0.0.dist-info/LICENSE +158 -0
- auto_coder-2.0.0.dist-info/METADATA +558 -0
- auto_coder-2.0.0.dist-info/RECORD +795 -0
- {auto_coder-0.1.400.dist-info → auto_coder-2.0.0.dist-info}/WHEEL +1 -1
- {auto_coder-0.1.400.dist-info → auto_coder-2.0.0.dist-info}/entry_points.txt +3 -3
- autocoder/__init__.py +31 -0
- autocoder/agent/auto_filegroup.py +32 -13
- autocoder/agent/auto_learn_from_commit.py +9 -1
- autocoder/agent/base_agentic/__init__.py +3 -0
- autocoder/agent/base_agentic/agent_hub.py +1 -1
- autocoder/agent/base_agentic/base_agent.py +235 -136
- autocoder/agent/base_agentic/default_tools.py +119 -118
- autocoder/agent/base_agentic/test_base_agent.py +1 -1
- autocoder/agent/base_agentic/tool_registry.py +32 -20
- autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +25 -4
- autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +24 -11
- autocoder/agent/base_agentic/types.py +42 -0
- autocoder/agent/entry_command_agent/chat.py +73 -59
- autocoder/auto_coder.py +31 -40
- autocoder/auto_coder_rag.py +11 -1084
- autocoder/auto_coder_runner.py +1029 -2310
- autocoder/auto_coder_terminal.py +26 -0
- autocoder/auto_coder_terminal_v3.py +190 -0
- autocoder/chat/conf_command.py +224 -124
- autocoder/chat/models_command.py +361 -299
- autocoder/chat/rules_command.py +79 -31
- autocoder/chat_auto_coder.py +1021 -372
- autocoder/chat_auto_coder_lang.py +23 -732
- autocoder/commands/auto_command.py +26 -9
- autocoder/commands/auto_web.py +1 -1
- autocoder/commands/tools.py +44 -44
- autocoder/common/__init__.py +150 -128
- autocoder/common/ac_style_command_parser/__init__.py +39 -2
- autocoder/common/ac_style_command_parser/config.py +422 -0
- autocoder/common/ac_style_command_parser/parser.py +292 -78
- autocoder/common/ac_style_command_parser/test_parser.py +241 -16
- autocoder/common/ac_style_command_parser/test_typed_parser.py +342 -0
- autocoder/common/ac_style_command_parser/typed_parser.py +653 -0
- autocoder/common/action_yml_file_manager.py +25 -13
- autocoder/common/agent_events/__init__.py +52 -0
- autocoder/common/agent_events/agent_event_emitter.py +193 -0
- autocoder/common/agent_events/event_factory.py +177 -0
- autocoder/common/agent_events/examples.py +307 -0
- autocoder/common/agent_events/types.py +113 -0
- autocoder/common/agent_events/utils.py +68 -0
- autocoder/common/agent_hooks/__init__.py +44 -0
- autocoder/common/agent_hooks/examples.py +582 -0
- autocoder/common/agent_hooks/hook_executor.py +217 -0
- autocoder/common/agent_hooks/hook_manager.py +288 -0
- autocoder/common/agent_hooks/types.py +133 -0
- autocoder/common/agent_hooks/utils.py +99 -0
- autocoder/common/agent_query_queue/queue_executor.py +324 -0
- autocoder/common/agent_query_queue/queue_manager.py +325 -0
- autocoder/common/agents/__init__.py +11 -0
- autocoder/common/agents/agent_manager.py +323 -0
- autocoder/common/agents/agent_parser.py +189 -0
- autocoder/common/agents/example_usage.py +344 -0
- autocoder/common/agents/integration_example.py +330 -0
- autocoder/common/agents/test_agent_parser.py +545 -0
- autocoder/common/async_utils.py +101 -0
- autocoder/common/auto_coder_lang.py +23 -972
- autocoder/common/autocoderargs_parser/__init__.py +14 -0
- autocoder/common/autocoderargs_parser/parser.py +184 -0
- autocoder/common/autocoderargs_parser/tests/__init__.py +1 -0
- autocoder/common/autocoderargs_parser/tests/test_args_parser.py +235 -0
- autocoder/common/autocoderargs_parser/tests/test_token_parser.py +195 -0
- autocoder/common/autocoderargs_parser/token_parser.py +290 -0
- autocoder/common/buildin_tokenizer.py +2 -4
- autocoder/common/code_auto_generate.py +149 -74
- autocoder/common/code_auto_generate_diff.py +163 -70
- autocoder/common/code_auto_generate_editblock.py +179 -89
- autocoder/common/code_auto_generate_strict_diff.py +167 -72
- autocoder/common/code_auto_merge_editblock.py +13 -6
- autocoder/common/code_modification_ranker.py +1 -1
- autocoder/common/command_completer.py +3 -3
- autocoder/common/command_file_manager/manager.py +183 -47
- autocoder/common/command_file_manager/test_command_file_manager.py +507 -0
- autocoder/common/command_templates.py +1 -1
- autocoder/common/conf_utils.py +2 -4
- autocoder/common/conversations/config.py +11 -3
- autocoder/common/conversations/get_conversation_manager.py +100 -2
- autocoder/common/conversations/llm_stats_models.py +264 -0
- autocoder/common/conversations/manager.py +112 -28
- autocoder/common/conversations/models.py +16 -2
- autocoder/common/conversations/storage/index_manager.py +134 -10
- autocoder/common/core_config/__init__.py +63 -0
- autocoder/common/core_config/agentic_mode_manager.py +109 -0
- autocoder/common/core_config/base_manager.py +123 -0
- autocoder/common/core_config/compatibility.py +151 -0
- autocoder/common/core_config/config_manager.py +156 -0
- autocoder/common/core_config/conversation_manager.py +31 -0
- autocoder/common/core_config/exclude_manager.py +72 -0
- autocoder/common/core_config/file_manager.py +177 -0
- autocoder/common/core_config/human_as_model_manager.py +129 -0
- autocoder/common/core_config/lib_manager.py +54 -0
- autocoder/common/core_config/main_manager.py +81 -0
- autocoder/common/core_config/mode_manager.py +126 -0
- autocoder/common/core_config/models.py +70 -0
- autocoder/common/core_config/test_memory_manager.py +1056 -0
- autocoder/common/env_manager.py +282 -0
- autocoder/common/env_manager_usage_example.py +211 -0
- autocoder/common/file_checkpoint/conversation_checkpoint.py +19 -19
- autocoder/common/file_checkpoint/manager.py +264 -48
- autocoder/common/file_checkpoint/test_backup.py +1 -18
- autocoder/common/file_checkpoint/test_manager.py +270 -1
- autocoder/common/file_checkpoint/test_store.py +1 -17
- autocoder/common/file_handler/__init__.py +23 -0
- autocoder/common/file_handler/active_context_handler.py +159 -0
- autocoder/common/file_handler/add_files_handler.py +409 -0
- autocoder/common/file_handler/chat_handler.py +180 -0
- autocoder/common/file_handler/coding_handler.py +401 -0
- autocoder/common/file_handler/commit_handler.py +200 -0
- autocoder/common/file_handler/lib_handler.py +156 -0
- autocoder/common/file_handler/list_files_handler.py +111 -0
- autocoder/common/file_handler/mcp_handler.py +268 -0
- autocoder/common/file_handler/models_handler.py +493 -0
- autocoder/common/file_handler/remove_files_handler.py +172 -0
- autocoder/common/file_monitor/test_file_monitor.py +307 -0
- autocoder/common/git_utils.py +51 -10
- autocoder/common/global_cancel.py +15 -6
- autocoder/common/ignorefiles/test_ignore_file_utils.py +1 -1
- autocoder/common/international/__init__.py +31 -0
- autocoder/common/international/demo_international.py +92 -0
- autocoder/common/international/message_manager.py +157 -0
- autocoder/common/international/messages/__init__.py +56 -0
- autocoder/common/international/messages/async_command_messages.py +507 -0
- autocoder/common/international/messages/auto_coder_messages.py +2208 -0
- autocoder/common/international/messages/chat_auto_coder_messages.py +1547 -0
- autocoder/common/international/messages/command_help_messages.py +986 -0
- autocoder/common/international/messages/conversation_command_messages.py +191 -0
- autocoder/common/international/messages/git_helper_plugin_messages.py +159 -0
- autocoder/common/international/messages/queue_command_messages.py +751 -0
- autocoder/common/international/messages/rules_command_messages.py +77 -0
- autocoder/common/international/messages/sdk_messages.py +1707 -0
- autocoder/common/international/messages/token_helper_plugin_messages.py +361 -0
- autocoder/common/international/messages/tool_display_messages.py +1212 -0
- autocoder/common/international/messages/workflow_exception_messages.py +473 -0
- autocoder/common/international/test_international.py +612 -0
- autocoder/common/linter_core/__init__.py +28 -0
- autocoder/common/linter_core/base_linter.py +61 -0
- autocoder/common/linter_core/config_loader.py +271 -0
- autocoder/common/linter_core/formatters/__init__.py +0 -0
- autocoder/common/linter_core/formatters/base_formatter.py +38 -0
- autocoder/common/linter_core/formatters/raw_formatter.py +17 -0
- autocoder/common/linter_core/linter.py +166 -0
- autocoder/common/linter_core/linter_factory.py +216 -0
- autocoder/common/linter_core/linter_manager.py +333 -0
- autocoder/common/linter_core/linters/__init__.py +9 -0
- autocoder/common/linter_core/linters/java_linter.py +342 -0
- autocoder/common/linter_core/linters/python_linter.py +115 -0
- autocoder/common/linter_core/linters/typescript_linter.py +119 -0
- autocoder/common/linter_core/models/__init__.py +7 -0
- autocoder/common/linter_core/models/lint_result.py +91 -0
- autocoder/common/linter_core/models.py +33 -0
- autocoder/common/linter_core/tests/__init__.py +3 -0
- autocoder/common/linter_core/tests/test_config_loader.py +323 -0
- autocoder/common/linter_core/tests/test_config_loading.py +308 -0
- autocoder/common/linter_core/tests/test_factory_manager.py +234 -0
- autocoder/common/linter_core/tests/test_formatters.py +147 -0
- autocoder/common/linter_core/tests/test_integration.py +317 -0
- autocoder/common/linter_core/tests/test_java_linter.py +496 -0
- autocoder/common/linter_core/tests/test_linters.py +265 -0
- autocoder/common/linter_core/tests/test_models.py +81 -0
- autocoder/common/linter_core/tests/verify_config_loading.py +296 -0
- autocoder/common/linter_core/tests/verify_fixes.py +183 -0
- autocoder/common/llm_friendly_package/__init__.py +31 -0
- autocoder/common/llm_friendly_package/base_manager.py +102 -0
- autocoder/common/llm_friendly_package/docs_manager.py +121 -0
- autocoder/common/llm_friendly_package/library_manager.py +171 -0
- autocoder/common/{llm_friendly_package.py → llm_friendly_package/main_manager.py} +204 -231
- autocoder/common/llm_friendly_package/models.py +40 -0
- autocoder/common/llm_friendly_package/test_llm_friendly_package.py +536 -0
- autocoder/common/llms/__init__.py +15 -0
- autocoder/common/llms/demo_error_handling.py +85 -0
- autocoder/common/llms/factory.py +142 -0
- autocoder/common/llms/manager.py +264 -0
- autocoder/common/llms/pricing.py +121 -0
- autocoder/common/llms/registry.py +288 -0
- autocoder/common/llms/schema.py +77 -0
- autocoder/common/llms/simple_demo.py +45 -0
- autocoder/common/llms/test_quick_model.py +116 -0
- autocoder/common/llms/test_remove_functionality.py +182 -0
- autocoder/common/llms/tests/__init__.py +1 -0
- autocoder/common/llms/tests/test_manager.py +330 -0
- autocoder/common/llms/tests/test_registry.py +364 -0
- autocoder/common/mcp_tools/__init__.py +62 -0
- autocoder/common/{mcp_tools.py → mcp_tools/executor.py} +49 -40
- autocoder/common/{mcp_hub.py → mcp_tools/hub.py} +42 -68
- autocoder/common/{mcp_server_install.py → mcp_tools/installer.py} +16 -28
- autocoder/common/{mcp_server.py → mcp_tools/server.py} +176 -48
- autocoder/common/mcp_tools/test_keyboard_interrupt.py +93 -0
- autocoder/common/mcp_tools/test_mcp_tools.py +391 -0
- autocoder/common/{mcp_server_types.py → mcp_tools/types.py} +121 -48
- autocoder/common/mcp_tools/verify_functionality.py +202 -0
- autocoder/common/model_speed_tester.py +32 -26
- autocoder/common/priority_directory_finder/__init__.py +142 -0
- autocoder/common/priority_directory_finder/examples.py +230 -0
- autocoder/common/priority_directory_finder/finder.py +283 -0
- autocoder/common/priority_directory_finder/models.py +236 -0
- autocoder/common/priority_directory_finder/test_priority_directory_finder.py +431 -0
- autocoder/common/project_scanner/__init__.py +18 -0
- autocoder/common/project_scanner/compat.py +77 -0
- autocoder/common/project_scanner/scanner.py +436 -0
- autocoder/common/project_tracker/__init__.py +27 -0
- autocoder/common/project_tracker/api.py +228 -0
- autocoder/common/project_tracker/demo.py +272 -0
- autocoder/common/project_tracker/tracker.py +487 -0
- autocoder/common/project_tracker/types.py +53 -0
- autocoder/common/pruner/__init__.py +67 -0
- autocoder/common/pruner/agentic_conversation_pruner.py +746 -0
- autocoder/common/{context_pruner.py → pruner/context_pruner.py} +137 -40
- autocoder/common/pruner/conversation_message_ids_api.py +386 -0
- autocoder/common/pruner/conversation_message_ids_manager.py +347 -0
- autocoder/common/pruner/conversation_message_ids_pruner.py +473 -0
- autocoder/common/pruner/conversation_normalizer.py +347 -0
- autocoder/common/{conversation_pruner.py → pruner/conversation_pruner.py} +26 -6
- autocoder/common/pruner/test_agentic_conversation_pruner.py +784 -0
- autocoder/common/pruner/test_context_pruner.py +546 -0
- autocoder/common/pruner/test_conversation_normalizer.py +502 -0
- autocoder/common/pruner/test_tool_content_detector.py +324 -0
- autocoder/common/pruner/tool_content_detector.py +227 -0
- autocoder/common/pruner/tools/__init__.py +18 -0
- autocoder/common/pruner/tools/query_message_ids.py +264 -0
- autocoder/common/pruner/tools/test_agentic_pruning_logic.py +432 -0
- autocoder/common/pruner/tools/test_message_ids_pruning_only.py +192 -0
- autocoder/common/pull_requests/__init__.py +9 -1
- autocoder/common/pull_requests/utils.py +122 -1
- autocoder/common/rag_manager/rag_manager.py +36 -40
- autocoder/common/rulefiles/__init__.py +53 -1
- autocoder/common/rulefiles/api.py +250 -0
- autocoder/common/rulefiles/core/__init__.py +14 -0
- autocoder/common/rulefiles/core/manager.py +241 -0
- autocoder/common/rulefiles/core/selector.py +805 -0
- autocoder/common/rulefiles/models/__init__.py +20 -0
- autocoder/common/rulefiles/models/index.py +16 -0
- autocoder/common/rulefiles/models/init_rule.py +18 -0
- autocoder/common/rulefiles/models/rule_file.py +18 -0
- autocoder/common/rulefiles/models/rule_relevance.py +14 -0
- autocoder/common/rulefiles/models/summary.py +16 -0
- autocoder/common/rulefiles/test_rulefiles.py +776 -0
- autocoder/common/rulefiles/utils/__init__.py +34 -0
- autocoder/common/rulefiles/utils/monitor.py +86 -0
- autocoder/common/rulefiles/utils/parser.py +230 -0
- autocoder/common/save_formatted_log.py +67 -10
- autocoder/common/search_replace.py +8 -1
- autocoder/common/search_replace_patch/__init__.py +24 -0
- autocoder/common/search_replace_patch/base.py +115 -0
- autocoder/common/search_replace_patch/manager.py +248 -0
- autocoder/common/search_replace_patch/patch_replacer.py +304 -0
- autocoder/common/search_replace_patch/similarity_replacer.py +306 -0
- autocoder/common/search_replace_patch/string_replacer.py +181 -0
- autocoder/common/search_replace_patch/tests/__init__.py +3 -0
- autocoder/common/search_replace_patch/tests/run_tests.py +126 -0
- autocoder/common/search_replace_patch/tests/test_base.py +188 -0
- autocoder/common/search_replace_patch/tests/test_empty_line_insert.py +233 -0
- autocoder/common/search_replace_patch/tests/test_integration.py +389 -0
- autocoder/common/search_replace_patch/tests/test_manager.py +351 -0
- autocoder/common/search_replace_patch/tests/test_patch_replacer.py +316 -0
- autocoder/common/search_replace_patch/tests/test_regex_replacer.py +306 -0
- autocoder/common/search_replace_patch/tests/test_similarity_replacer.py +384 -0
- autocoder/common/shell_commands/__init__.py +197 -0
- autocoder/common/shell_commands/background_process_notifier.py +346 -0
- autocoder/common/shell_commands/command_executor.py +1127 -0
- autocoder/common/shell_commands/error_recovery.py +541 -0
- autocoder/common/shell_commands/exceptions.py +120 -0
- autocoder/common/shell_commands/interactive_executor.py +476 -0
- autocoder/common/shell_commands/interactive_pexpect_process.py +623 -0
- autocoder/common/shell_commands/interactive_process.py +744 -0
- autocoder/common/shell_commands/interactive_session_manager.py +1014 -0
- autocoder/common/shell_commands/monitoring.py +529 -0
- autocoder/common/shell_commands/process_cleanup.py +386 -0
- autocoder/common/shell_commands/process_manager.py +606 -0
- autocoder/common/shell_commands/test_interactive_pexpect_process.py +281 -0
- autocoder/common/shell_commands/tests/__init__.py +6 -0
- autocoder/common/shell_commands/tests/conftest.py +118 -0
- autocoder/common/shell_commands/tests/test_background_process_notifier.py +703 -0
- autocoder/common/shell_commands/tests/test_command_executor.py +448 -0
- autocoder/common/shell_commands/tests/test_error_recovery.py +305 -0
- autocoder/common/shell_commands/tests/test_exceptions.py +299 -0
- autocoder/common/shell_commands/tests/test_execute_batch.py +588 -0
- autocoder/common/shell_commands/tests/test_indented_batch_commands.py +244 -0
- autocoder/common/shell_commands/tests/test_integration.py +664 -0
- autocoder/common/shell_commands/tests/test_monitoring.py +546 -0
- autocoder/common/shell_commands/tests/test_performance.py +632 -0
- autocoder/common/shell_commands/tests/test_process_cleanup.py +397 -0
- autocoder/common/shell_commands/tests/test_process_manager.py +606 -0
- autocoder/common/shell_commands/tests/test_timeout_config.py +343 -0
- autocoder/common/shell_commands/tests/test_timeout_manager.py +520 -0
- autocoder/common/shell_commands/timeout_config.py +315 -0
- autocoder/common/shell_commands/timeout_manager.py +352 -0
- autocoder/common/terminal_paste/__init__.py +14 -0
- autocoder/common/terminal_paste/demo.py +145 -0
- autocoder/common/terminal_paste/demo_paste_functionality.py +95 -0
- autocoder/common/terminal_paste/paste_handler.py +200 -0
- autocoder/common/terminal_paste/paste_manager.py +118 -0
- autocoder/common/terminal_paste/tests/__init__.py +1 -0
- autocoder/common/terminal_paste/tests/test_paste_handler.py +182 -0
- autocoder/common/terminal_paste/tests/test_paste_manager.py +126 -0
- autocoder/common/terminal_paste/utils.py +163 -0
- autocoder/common/test_autocoder_args.py +232 -0
- autocoder/common/test_env_manager.py +173 -0
- autocoder/common/test_env_manager_integration.py +159 -0
- autocoder/common/text_similarity/__init__.py +9 -0
- autocoder/common/text_similarity/demo.py +216 -0
- autocoder/common/text_similarity/examples.py +266 -0
- autocoder/common/text_similarity/test_text_similarity.py +306 -0
- autocoder/common/text_similarity/text_similarity.py +194 -0
- autocoder/common/text_similarity/utils.py +125 -0
- autocoder/common/todos/__init__.py +61 -0
- autocoder/common/todos/cache/__init__.py +16 -0
- autocoder/common/todos/cache/base_cache.py +89 -0
- autocoder/common/todos/cache/cache_manager.py +228 -0
- autocoder/common/todos/cache/memory_cache.py +225 -0
- autocoder/common/todos/config.py +155 -0
- autocoder/common/todos/exceptions.py +35 -0
- autocoder/common/todos/get_todo_manager.py +161 -0
- autocoder/common/todos/manager.py +537 -0
- autocoder/common/todos/models.py +239 -0
- autocoder/common/todos/storage/__init__.py +14 -0
- autocoder/common/todos/storage/base_storage.py +76 -0
- autocoder/common/todos/storage/file_storage.py +278 -0
- autocoder/common/tokens/__init__.py +15 -0
- autocoder/common/tokens/counter.py +44 -2
- autocoder/common/tools_manager/__init__.py +17 -0
- autocoder/common/tools_manager/examples.py +162 -0
- autocoder/common/tools_manager/manager.py +385 -0
- autocoder/common/tools_manager/models.py +39 -0
- autocoder/common/tools_manager/test_tools_manager.py +303 -0
- autocoder/common/tools_manager/utils.py +191 -0
- autocoder/common/v2/agent/agentic_callbacks.py +270 -0
- autocoder/common/v2/agent/agentic_edit.py +2729 -2052
- autocoder/common/v2/agent/agentic_edit_change_manager.py +474 -0
- autocoder/common/v2/agent/agentic_edit_tools/__init__.py +43 -2
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_list_tool_resolver.py +279 -0
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_read_tool_resolver.py +40 -0
- autocoder/common/v2/agent/agentic_edit_tools/ac_mod_write_tool_resolver.py +52 -0
- autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +8 -0
- autocoder/common/v2/agent/agentic_edit_tools/background_task_tool_resolver.py +1167 -0
- autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +2 -2
- autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_read_tool_resolver.py +214 -0
- autocoder/common/v2/agent/agentic_edit_tools/conversation_message_ids_write_tool_resolver.py +299 -0
- autocoder/common/v2/agent/agentic_edit_tools/count_tokens_tool_resolver.py +290 -0
- autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +565 -30
- autocoder/common/v2/agent/agentic_edit_tools/execute_workflow_tool_resolver.py +485 -0
- autocoder/common/v2/agent/agentic_edit_tools/extract_to_text_tool_resolver.py +225 -0
- autocoder/common/v2/agent/agentic_edit_tools/lint_report.py +79 -0
- autocoder/common/v2/agent/agentic_edit_tools/linter_config_models.py +343 -0
- autocoder/common/v2/agent/agentic_edit_tools/linter_enabled_tool_resolver.py +189 -0
- autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +169 -101
- autocoder/common/v2/agent/agentic_edit_tools/load_extra_document_tool_resolver.py +349 -0
- autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +244 -51
- autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +667 -147
- autocoder/common/v2/agent/agentic_edit_tools/run_named_subagents_tool_resolver.py +691 -0
- autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +409 -140
- autocoder/common/v2/agent/agentic_edit_tools/session_interactive_tool_resolver.py +115 -0
- autocoder/common/v2/agent/agentic_edit_tools/session_start_tool_resolver.py +190 -0
- autocoder/common/v2/agent/agentic_edit_tools/session_stop_tool_resolver.py +76 -0
- autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +209 -194
- autocoder/common/v2/agent/agentic_edit_tools/todo_read_tool_resolver.py +135 -0
- autocoder/common/v2/agent/agentic_edit_tools/todo_write_tool_resolver.py +328 -0
- autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +2 -2
- autocoder/common/v2/agent/agentic_edit_tools/web_crawl_tool_resolver.py +557 -0
- autocoder/common/v2/agent/agentic_edit_tools/web_search_tool_resolver.py +600 -0
- autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +56 -121
- autocoder/common/v2/agent/agentic_edit_types.py +386 -10
- autocoder/common/v2/agent/runner/__init__.py +31 -0
- autocoder/common/v2/agent/runner/base_runner.py +92 -0
- autocoder/common/v2/agent/runner/file_based_event_runner.py +217 -0
- autocoder/common/v2/agent/runner/sdk_runner.py +182 -0
- autocoder/common/v2/agent/runner/terminal_runner.py +396 -0
- autocoder/common/v2/agent/runner/tool_display.py +589 -0
- autocoder/common/v2/agent/test_agentic_callbacks.py +265 -0
- autocoder/common/v2/agent/test_agentic_edit.py +194 -0
- autocoder/common/v2/agent/tool_caller/__init__.py +24 -0
- autocoder/common/v2/agent/tool_caller/default_tool_resolver_map.py +135 -0
- autocoder/common/v2/agent/tool_caller/integration_test.py +172 -0
- autocoder/common/v2/agent/tool_caller/plugins/__init__.py +14 -0
- autocoder/common/v2/agent/tool_caller/plugins/base_plugin.py +126 -0
- autocoder/common/v2/agent/tool_caller/plugins/examples/__init__.py +13 -0
- autocoder/common/v2/agent/tool_caller/plugins/examples/logging_plugin.py +164 -0
- autocoder/common/v2/agent/tool_caller/plugins/examples/security_filter_plugin.py +198 -0
- autocoder/common/v2/agent/tool_caller/plugins/plugin_interface.py +141 -0
- autocoder/common/v2/agent/tool_caller/test_tool_caller.py +278 -0
- autocoder/common/v2/agent/tool_caller/tool_call_plugin_manager.py +331 -0
- autocoder/common/v2/agent/tool_caller/tool_caller.py +337 -0
- autocoder/common/v2/agent/tool_caller/usage_example.py +193 -0
- autocoder/common/v2/code_agentic_editblock_manager.py +4 -4
- autocoder/common/v2/code_auto_generate.py +136 -78
- autocoder/common/v2/code_auto_generate_diff.py +135 -79
- autocoder/common/v2/code_auto_generate_editblock.py +174 -99
- autocoder/common/v2/code_auto_generate_strict_diff.py +151 -71
- autocoder/common/v2/code_auto_merge.py +1 -1
- autocoder/common/v2/code_auto_merge_editblock.py +13 -1
- autocoder/common/v2/code_diff_manager.py +3 -3
- autocoder/common/v2/code_editblock_manager.py +4 -14
- autocoder/common/v2/code_manager.py +1 -1
- autocoder/common/v2/code_strict_diff_manager.py +2 -2
- autocoder/common/wrap_llm_hint/__init__.py +10 -0
- autocoder/common/wrap_llm_hint/test_wrap_llm_hint.py +1067 -0
- autocoder/common/wrap_llm_hint/utils.py +432 -0
- autocoder/common/wrap_llm_hint/wrap_llm_hint.py +323 -0
- autocoder/completer/__init__.py +8 -0
- autocoder/completer/command_completer_v2.py +1051 -0
- autocoder/default_project/__init__.py +501 -0
- autocoder/dispacher/__init__.py +4 -12
- autocoder/dispacher/actions/action.py +165 -7
- autocoder/dispacher/actions/plugins/action_regex_project.py +2 -2
- autocoder/index/entry.py +117 -125
- autocoder/{agent → index/filter}/agentic_filter.py +323 -334
- autocoder/index/filter/normal_filter.py +5 -11
- autocoder/index/filter/quick_filter.py +1 -1
- autocoder/index/index.py +36 -9
- autocoder/index/tests/__init__.py +1 -0
- autocoder/index/tests/run_tests.py +195 -0
- autocoder/index/tests/test_entry.py +303 -0
- autocoder/index/tests/test_index_manager.py +314 -0
- autocoder/index/tests/test_module_integration.py +300 -0
- autocoder/index/tests/test_symbols_utils.py +183 -0
- autocoder/inner/__init__.py +4 -0
- autocoder/inner/agentic.py +932 -0
- autocoder/inner/async_command_handler.py +992 -0
- autocoder/inner/conversation_command_handlers.py +623 -0
- autocoder/inner/merge_command_handler.py +213 -0
- autocoder/inner/queue_command_handler.py +684 -0
- autocoder/models.py +95 -266
- autocoder/plugins/git_helper_plugin.py +31 -29
- autocoder/plugins/token_helper_plugin.py +156 -37
- autocoder/pyproject/__init__.py +32 -29
- autocoder/rag/agentic_rag.py +215 -75
- autocoder/rag/cache/simple_cache.py +1 -2
- autocoder/rag/loaders/image_loader.py +1 -1
- autocoder/rag/long_context_rag.py +42 -26
- autocoder/rag/qa_conversation_strategy.py +1 -1
- autocoder/rag/terminal/__init__.py +17 -0
- autocoder/rag/terminal/args.py +581 -0
- autocoder/rag/terminal/bootstrap.py +61 -0
- autocoder/rag/terminal/command_handlers.py +653 -0
- autocoder/rag/terminal/formatters/__init__.py +20 -0
- autocoder/rag/terminal/formatters/base.py +70 -0
- autocoder/rag/terminal/formatters/json_format.py +66 -0
- autocoder/rag/terminal/formatters/stream_json.py +95 -0
- autocoder/rag/terminal/formatters/text.py +28 -0
- autocoder/rag/terminal/init.py +120 -0
- autocoder/rag/terminal/utils.py +106 -0
- autocoder/rag/test_agentic_rag.py +389 -0
- autocoder/rag/test_doc_filter.py +3 -3
- autocoder/rag/test_long_context_rag.py +1 -1
- autocoder/rag/test_token_limiter.py +517 -10
- autocoder/rag/token_counter.py +3 -0
- autocoder/rag/token_limiter.py +19 -15
- autocoder/rag/tools/__init__.py +26 -2
- autocoder/rag/tools/bochaai_example.py +343 -0
- autocoder/rag/tools/bochaai_sdk.py +541 -0
- autocoder/rag/tools/metaso_example.py +268 -0
- autocoder/rag/tools/metaso_sdk.py +417 -0
- autocoder/rag/tools/recall_tool.py +28 -7
- autocoder/rag/tools/run_integration_tests.py +204 -0
- autocoder/rag/tools/test_all_providers.py +318 -0
- autocoder/rag/tools/test_bochaai_integration.py +482 -0
- autocoder/rag/tools/test_final_integration.py +215 -0
- autocoder/rag/tools/test_metaso_integration.py +424 -0
- autocoder/rag/tools/test_metaso_real.py +171 -0
- autocoder/rag/tools/test_web_crawl_tool.py +639 -0
- autocoder/rag/tools/test_web_search_tool.py +509 -0
- autocoder/rag/tools/todo_read_tool.py +202 -0
- autocoder/rag/tools/todo_write_tool.py +412 -0
- autocoder/rag/tools/web_crawl_tool.py +634 -0
- autocoder/rag/tools/web_search_tool.py +558 -0
- autocoder/rag/tools/web_tools_example.py +119 -0
- autocoder/rag/types.py +16 -0
- autocoder/rag/variable_holder.py +4 -2
- autocoder/rags.py +86 -79
- autocoder/regexproject/__init__.py +23 -21
- autocoder/run_context.py +9 -0
- autocoder/sdk/__init__.py +50 -161
- autocoder/sdk/api.py +370 -0
- autocoder/sdk/async_runner/__init__.py +26 -0
- autocoder/sdk/async_runner/async_executor.py +650 -0
- autocoder/sdk/async_runner/async_handler.py +356 -0
- autocoder/sdk/async_runner/markdown_processor.py +595 -0
- autocoder/sdk/async_runner/task_metadata.py +284 -0
- autocoder/sdk/async_runner/worktree_manager.py +438 -0
- autocoder/sdk/cli/__init__.py +2 -5
- autocoder/sdk/cli/formatters.py +28 -204
- autocoder/sdk/cli/handlers.py +77 -44
- autocoder/sdk/cli/main.py +158 -170
- autocoder/sdk/cli/options.py +95 -22
- autocoder/sdk/constants.py +139 -51
- autocoder/sdk/core/auto_coder_core.py +484 -267
- autocoder/sdk/core/bridge.py +298 -118
- autocoder/sdk/exceptions.py +18 -12
- autocoder/sdk/formatters/__init__.py +19 -0
- autocoder/sdk/formatters/input.py +64 -0
- autocoder/sdk/formatters/output.py +247 -0
- autocoder/sdk/formatters/stream.py +54 -0
- autocoder/sdk/models/__init__.py +6 -5
- autocoder/sdk/models/options.py +55 -18
- autocoder/sdk/utils/formatters.py +27 -195
- autocoder/suffixproject/__init__.py +28 -25
- autocoder/terminal/__init__.py +14 -0
- autocoder/terminal/app.py +454 -0
- autocoder/terminal/args.py +32 -0
- autocoder/terminal/bootstrap.py +178 -0
- autocoder/terminal/command_processor.py +521 -0
- autocoder/terminal/command_registry.py +57 -0
- autocoder/terminal/help.py +97 -0
- autocoder/terminal/tasks/__init__.py +5 -0
- autocoder/terminal/tasks/background.py +77 -0
- autocoder/terminal/tasks/task_event.py +70 -0
- autocoder/terminal/ui/__init__.py +13 -0
- autocoder/terminal/ui/completer.py +268 -0
- autocoder/terminal/ui/keybindings.py +75 -0
- autocoder/terminal/ui/session.py +41 -0
- autocoder/terminal/ui/toolbar.py +64 -0
- autocoder/terminal/utils/__init__.py +13 -0
- autocoder/terminal/utils/errors.py +18 -0
- autocoder/terminal/utils/paths.py +19 -0
- autocoder/terminal/utils/shell.py +43 -0
- autocoder/terminal_v3/__init__.py +10 -0
- autocoder/terminal_v3/app.py +201 -0
- autocoder/terminal_v3/handlers/__init__.py +5 -0
- autocoder/terminal_v3/handlers/command_handler.py +131 -0
- autocoder/terminal_v3/models/__init__.py +6 -0
- autocoder/terminal_v3/models/conversation_buffer.py +214 -0
- autocoder/terminal_v3/models/message.py +50 -0
- autocoder/terminal_v3/models/tool_display.py +247 -0
- autocoder/terminal_v3/ui/__init__.py +7 -0
- autocoder/terminal_v3/ui/keybindings.py +56 -0
- autocoder/terminal_v3/ui/layout.py +141 -0
- autocoder/terminal_v3/ui/styles.py +43 -0
- autocoder/tsproject/__init__.py +23 -23
- autocoder/utils/auto_coder_utils/chat_stream_out.py +1 -1
- autocoder/utils/llms.py +88 -80
- autocoder/utils/math_utils.py +101 -0
- autocoder/utils/model_provider_selector.py +16 -4
- autocoder/utils/operate_config_api.py +33 -5
- autocoder/utils/thread_utils.py +2 -2
- autocoder/version.py +4 -2
- autocoder/workflow_agents/__init__.py +84 -0
- autocoder/workflow_agents/agent.py +143 -0
- autocoder/workflow_agents/exceptions.py +573 -0
- autocoder/workflow_agents/executor.py +489 -0
- autocoder/workflow_agents/loader.py +737 -0
- autocoder/workflow_agents/runner.py +267 -0
- autocoder/workflow_agents/types.py +172 -0
- autocoder/workflow_agents/utils.py +434 -0
- autocoder/workflow_agents/workflow_manager.py +211 -0
- auto_coder-0.1.400.dist-info/METADATA +0 -396
- auto_coder-0.1.400.dist-info/RECORD +0 -425
- auto_coder-0.1.400.dist-info/licenses/LICENSE +0 -201
- autocoder/auto_coder_server.py +0 -672
- autocoder/benchmark.py +0 -138
- autocoder/common/ac_style_command_parser/example.py +0 -7
- autocoder/common/cleaner.py +0 -31
- autocoder/common/command_completer_v2.py +0 -615
- autocoder/common/directory_cache/__init__.py +0 -1
- autocoder/common/directory_cache/cache.py +0 -192
- autocoder/common/directory_cache/test_cache.py +0 -190
- autocoder/common/file_checkpoint/examples.py +0 -217
- autocoder/common/llm_friendly_package_example.py +0 -138
- autocoder/common/llm_friendly_package_test.py +0 -63
- autocoder/common/pull_requests/test_module.py +0 -1
- autocoder/common/rulefiles/autocoderrules_utils.py +0 -484
- autocoder/common/text.py +0 -30
- autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -42
- autocoder/common/v2/agent/agentic_edit_tools/test_execute_command_tool_resolver.py +0 -70
- autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -163
- autocoder/common/v2/agent/agentic_tool_display.py +0 -183
- autocoder/plugins/dynamic_completion_example.py +0 -148
- autocoder/plugins/sample_plugin.py +0 -160
- autocoder/sdk/cli/__main__.py +0 -26
- autocoder/sdk/cli/completion_wrapper.py +0 -38
- autocoder/sdk/cli/install_completion.py +0 -301
- autocoder/sdk/models/messages.py +0 -209
- autocoder/sdk/session/__init__.py +0 -32
- autocoder/sdk/session/session.py +0 -106
- autocoder/sdk/session/session_manager.py +0 -56
- {auto_coder-0.1.400.dist-info → auto_coder-2.0.0.dist-info}/top_level.txt +0 -0
- /autocoder/{sdk/example.py → common/agent_query_queue/__init__.py} +0 -0
|
@@ -2,22 +2,31 @@ from typing import List, Dict, Tuple
|
|
|
2
2
|
from autocoder.common.types import Mode, CodeGenerateResult
|
|
3
3
|
from autocoder.common import AutoCoderArgs
|
|
4
4
|
import byzerllm
|
|
5
|
-
from autocoder.utils.queue_communicate import queue_communicate, CommunicateEvent, CommunicateEventType
|
|
6
5
|
from autocoder.common import sys_prompt
|
|
7
6
|
from concurrent.futures import ThreadPoolExecutor
|
|
8
7
|
import json
|
|
9
|
-
from autocoder.common.utils_code_auto_generate import
|
|
8
|
+
from autocoder.common.utils_code_auto_generate import (
|
|
9
|
+
chat_with_continue,
|
|
10
|
+
stream_chat_with_continue,
|
|
11
|
+
ChatWithContinueResult,
|
|
12
|
+
)
|
|
10
13
|
from autocoder.utils.auto_coder_utils.chat_stream_out import stream_out
|
|
11
14
|
from autocoder.common.stream_out_type import CodeGenerateStreamOutType
|
|
12
15
|
from autocoder.common.auto_coder_lang import get_message_with_format
|
|
13
16
|
from autocoder.common.printer import Printer
|
|
14
|
-
from autocoder.
|
|
17
|
+
from autocoder.common.tokens import count_string_tokens as count_tokens
|
|
15
18
|
from autocoder.utils import llms as llm_utils
|
|
16
19
|
from autocoder.common import SourceCodeList
|
|
17
20
|
from autocoder.privacy.model_filter import ModelPathFilter
|
|
18
21
|
from autocoder.memory.active_context_manager import ActiveContextManager
|
|
19
|
-
from autocoder.common.rulefiles
|
|
20
|
-
from autocoder.run_context import get_run_context,RunMode
|
|
22
|
+
from autocoder.common.rulefiles import get_rules
|
|
23
|
+
from autocoder.run_context import get_run_context, RunMode
|
|
24
|
+
import os
|
|
25
|
+
import uuid
|
|
26
|
+
from datetime import datetime
|
|
27
|
+
from autocoder.common.save_formatted_log import save_formatted_log
|
|
28
|
+
import platform
|
|
29
|
+
|
|
21
30
|
|
|
22
31
|
class CodeAutoGenerateStrictDiff:
|
|
23
32
|
def __init__(
|
|
@@ -31,14 +40,18 @@ class CodeAutoGenerateStrictDiff:
|
|
|
31
40
|
if not self.llm:
|
|
32
41
|
raise ValueError(
|
|
33
42
|
"Please provide a valid model instance to use for code generation."
|
|
34
|
-
)
|
|
43
|
+
)
|
|
35
44
|
self.llms = self.llm.get_sub_client("code_model") or [self.llm]
|
|
36
45
|
if not isinstance(self.llms, list):
|
|
37
46
|
self.llms = [self.llms]
|
|
38
47
|
|
|
39
48
|
@byzerllm.prompt(llm=lambda self: self.llm)
|
|
40
49
|
def multi_round_instruction(
|
|
41
|
-
self,
|
|
50
|
+
self,
|
|
51
|
+
instruction: str,
|
|
52
|
+
content: str,
|
|
53
|
+
context: str = "",
|
|
54
|
+
package_context: str = "",
|
|
42
55
|
) -> str:
|
|
43
56
|
"""
|
|
44
57
|
如果你需要生成代码,对于每个需要更改的文件,写出类似于 unified diff 的更改,就像`diff -U0`会产生的那样。
|
|
@@ -120,6 +133,12 @@ class CodeAutoGenerateStrictDiff:
|
|
|
120
133
|
|
|
121
134
|
现在让我们开始一个新的任务:
|
|
122
135
|
|
|
136
|
+
<env>
|
|
137
|
+
当前工作目录: {{ current_dir }}
|
|
138
|
+
操作系统: {{ os_info }}
|
|
139
|
+
当前时间: {{ current_time }}
|
|
140
|
+
</env>
|
|
141
|
+
|
|
123
142
|
{%- if structure %}
|
|
124
143
|
====
|
|
125
144
|
{{ structure }}
|
|
@@ -159,7 +178,7 @@ class CodeAutoGenerateStrictDiff:
|
|
|
159
178
|
##File: {{ key }}
|
|
160
179
|
{{ value }}
|
|
161
180
|
</user_rule>
|
|
162
|
-
{% endfor %}
|
|
181
|
+
{% endfor %}
|
|
163
182
|
{% endif %}
|
|
164
183
|
|
|
165
184
|
====
|
|
@@ -170,12 +189,19 @@ class CodeAutoGenerateStrictDiff:
|
|
|
170
189
|
|
|
171
190
|
每次生成一个文件的diff,然后询问我是否继续,当我回复继续,继续生成下一个文件的diff。当没有后续任务时,请回复 "__完成__" 或者 "__EOF__"。
|
|
172
191
|
"""
|
|
173
|
-
|
|
192
|
+
# 收集环境信息
|
|
193
|
+
current_dir = os.getcwd()
|
|
194
|
+
os_info = f"{platform.system()} {platform.release()}"
|
|
195
|
+
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
196
|
+
|
|
174
197
|
if not self.args.include_project_structure:
|
|
175
198
|
return {
|
|
176
|
-
"structure": "",
|
|
199
|
+
"structure": "",
|
|
200
|
+
"current_dir": current_dir,
|
|
201
|
+
"os_info": os_info,
|
|
202
|
+
"current_time": current_time,
|
|
177
203
|
}
|
|
178
|
-
|
|
204
|
+
|
|
179
205
|
extra_docs = get_rules()
|
|
180
206
|
|
|
181
207
|
return {
|
|
@@ -185,11 +211,18 @@ class CodeAutoGenerateStrictDiff:
|
|
|
185
211
|
else ""
|
|
186
212
|
),
|
|
187
213
|
"extra_docs": extra_docs,
|
|
214
|
+
"current_dir": current_dir,
|
|
215
|
+
"os_info": os_info,
|
|
216
|
+
"current_time": current_time,
|
|
188
217
|
}
|
|
189
218
|
|
|
190
219
|
@byzerllm.prompt(llm=lambda self: self.llm)
|
|
191
220
|
def single_round_instruction(
|
|
192
|
-
self,
|
|
221
|
+
self,
|
|
222
|
+
instruction: str,
|
|
223
|
+
content: str,
|
|
224
|
+
context: str = "",
|
|
225
|
+
package_context: str = "",
|
|
193
226
|
) -> str:
|
|
194
227
|
"""
|
|
195
228
|
如果你需要生成代码,对于每个需要更改的文件,写出类似于 unified diff 的更改,就像`diff -U0`会产生的那样。
|
|
@@ -274,6 +307,12 @@ class CodeAutoGenerateStrictDiff:
|
|
|
274
307
|
|
|
275
308
|
现在让我们开始一个新的任务:
|
|
276
309
|
|
|
310
|
+
<env>
|
|
311
|
+
当前工作目录: {{ current_dir }}
|
|
312
|
+
操作系统: {{ os_info }}
|
|
313
|
+
当前时间: {{ current_time }}
|
|
314
|
+
</env>
|
|
315
|
+
|
|
277
316
|
{%- if structure %}
|
|
278
317
|
{{ structure }}
|
|
279
318
|
{%- endif %}
|
|
@@ -302,10 +341,17 @@ class CodeAutoGenerateStrictDiff:
|
|
|
302
341
|
|
|
303
342
|
{{ instruction }}
|
|
304
343
|
"""
|
|
305
|
-
|
|
344
|
+
# 收集环境信息
|
|
345
|
+
current_dir = os.getcwd()
|
|
346
|
+
os_info = f"{platform.system()} {platform.release()}"
|
|
347
|
+
current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
348
|
+
|
|
306
349
|
if not self.args.include_project_structure:
|
|
307
350
|
return {
|
|
308
|
-
"structure": "",
|
|
351
|
+
"structure": "",
|
|
352
|
+
"current_dir": current_dir,
|
|
353
|
+
"os_info": os_info,
|
|
354
|
+
"current_time": current_time,
|
|
309
355
|
}
|
|
310
356
|
|
|
311
357
|
return {
|
|
@@ -313,21 +359,30 @@ class CodeAutoGenerateStrictDiff:
|
|
|
313
359
|
self.action.pp.get_tree_like_directory_structure()
|
|
314
360
|
if self.action
|
|
315
361
|
else ""
|
|
316
|
-
)
|
|
362
|
+
),
|
|
363
|
+
"current_dir": current_dir,
|
|
364
|
+
"os_info": os_info,
|
|
365
|
+
"current_time": current_time,
|
|
317
366
|
}
|
|
318
367
|
|
|
319
368
|
def single_round_run(
|
|
320
369
|
self, query: str, source_code_list: SourceCodeList
|
|
321
370
|
) -> CodeGenerateResult:
|
|
322
371
|
llm_config = {"human_as_model": self.args.human_as_model}
|
|
372
|
+
|
|
323
373
|
source_content = source_code_list.to_str()
|
|
324
374
|
|
|
325
375
|
# 获取包上下文信息
|
|
326
376
|
package_context = ""
|
|
327
|
-
|
|
328
|
-
if
|
|
377
|
+
|
|
378
|
+
if (
|
|
379
|
+
self.args.enable_active_context
|
|
380
|
+
and self.args.enable_active_context_in_generate
|
|
381
|
+
):
|
|
329
382
|
# 初始化活动上下文管理器
|
|
330
|
-
active_context_manager = ActiveContextManager(
|
|
383
|
+
active_context_manager = ActiveContextManager(
|
|
384
|
+
self.llm, self.args.source_dir
|
|
385
|
+
)
|
|
331
386
|
# 获取活动上下文信息
|
|
332
387
|
result = active_context_manager.load_active_contexts_for_files(
|
|
333
388
|
[source.module_name for source in source_code_list.sources]
|
|
@@ -336,35 +391,52 @@ class CodeAutoGenerateStrictDiff:
|
|
|
336
391
|
if result.contexts:
|
|
337
392
|
package_context_parts = []
|
|
338
393
|
for dir_path, context in result.contexts.items():
|
|
339
|
-
package_context_parts.append(
|
|
340
|
-
|
|
394
|
+
package_context_parts.append(
|
|
395
|
+
f"<package_info>{context.content}</package_info>"
|
|
396
|
+
)
|
|
397
|
+
|
|
341
398
|
package_context = "\n".join(package_context_parts)
|
|
342
399
|
|
|
343
400
|
if self.args.template == "common":
|
|
344
401
|
init_prompt = self.single_round_instruction.prompt(
|
|
345
|
-
instruction=query,
|
|
346
|
-
|
|
402
|
+
instruction=query,
|
|
403
|
+
content=source_content,
|
|
404
|
+
context=self.args.context,
|
|
405
|
+
package_context=package_context,
|
|
347
406
|
)
|
|
348
407
|
elif self.args.template == "auto_implement":
|
|
349
408
|
init_prompt = self.auto_implement_function.prompt(
|
|
350
409
|
instruction=query, content=source_content
|
|
351
410
|
)
|
|
352
411
|
|
|
353
|
-
with open(self.args.target_file, "w",encoding="utf-8") as file:
|
|
412
|
+
with open(self.args.target_file, "w", encoding="utf-8") as file:
|
|
354
413
|
file.write(init_prompt)
|
|
355
414
|
|
|
356
415
|
conversations = []
|
|
357
416
|
|
|
358
417
|
if self.args.system_prompt and self.args.system_prompt.strip() == "claude":
|
|
359
418
|
conversations.append(
|
|
360
|
-
{"role": "system", "content": sys_prompt.claude_sys_prompt.prompt()}
|
|
419
|
+
{"role": "system", "content": sys_prompt.claude_sys_prompt.prompt()}
|
|
420
|
+
)
|
|
361
421
|
elif self.args.system_prompt:
|
|
362
|
-
conversations.append(
|
|
363
|
-
{"role": "system", "content": self.args.system_prompt})
|
|
422
|
+
conversations.append({"role": "system", "content": self.args.system_prompt})
|
|
364
423
|
|
|
365
424
|
conversations.append({"role": "user", "content": init_prompt})
|
|
366
|
-
|
|
367
|
-
|
|
425
|
+
|
|
426
|
+
# 保存 conversations 到 manuals 目录
|
|
427
|
+
try:
|
|
428
|
+
conversations_json = json.dumps(conversations, ensure_ascii=False, indent=2)
|
|
429
|
+
save_formatted_log(
|
|
430
|
+
project_root=self.args.source_dir,
|
|
431
|
+
json_text=conversations_json,
|
|
432
|
+
suffix="conversations",
|
|
433
|
+
log_subdir="manuals",
|
|
434
|
+
)
|
|
435
|
+
except Exception as e:
|
|
436
|
+
printer.print_in_terminal(
|
|
437
|
+
"conversations_save_failed", style="red", error=str(e)
|
|
438
|
+
)
|
|
439
|
+
|
|
368
440
|
conversations_list = []
|
|
369
441
|
results = []
|
|
370
442
|
input_tokens_count = 0
|
|
@@ -374,90 +446,113 @@ class CodeAutoGenerateStrictDiff:
|
|
|
374
446
|
model_names = []
|
|
375
447
|
|
|
376
448
|
printer = Printer()
|
|
377
|
-
estimated_input_tokens = count_tokens(
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
449
|
+
estimated_input_tokens = count_tokens(
|
|
450
|
+
json.dumps(conversations, ensure_ascii=False)
|
|
451
|
+
)
|
|
452
|
+
printer.print_in_terminal(
|
|
453
|
+
"estimated_input_tokens_in_generate",
|
|
454
|
+
style="yellow",
|
|
455
|
+
estimated_input_tokens_in_generate=estimated_input_tokens,
|
|
456
|
+
generate_mode="strict_diff",
|
|
457
|
+
)
|
|
382
458
|
|
|
383
459
|
if not self.args.human_as_model or get_run_context().mode == RunMode.WEB:
|
|
384
|
-
with ThreadPoolExecutor(
|
|
460
|
+
with ThreadPoolExecutor(
|
|
461
|
+
max_workers=len(self.llms) * self.generate_times_same_model
|
|
462
|
+
) as executor:
|
|
385
463
|
futures = []
|
|
386
464
|
count = 0
|
|
387
465
|
for llm in self.llms:
|
|
388
466
|
for _ in range(self.generate_times_same_model):
|
|
389
|
-
|
|
467
|
+
|
|
390
468
|
model_names_list = llm_utils.get_llm_names(llm)
|
|
391
469
|
model_name = None
|
|
392
470
|
if model_names_list:
|
|
393
|
-
model_name = model_names_list[0]
|
|
394
|
-
|
|
471
|
+
model_name = model_names_list[0]
|
|
472
|
+
|
|
395
473
|
for _ in range(self.generate_times_same_model):
|
|
396
474
|
model_names.append(model_name)
|
|
397
475
|
if count == 0:
|
|
476
|
+
|
|
398
477
|
def job():
|
|
399
478
|
stream_generator = stream_chat_with_continue(
|
|
400
|
-
llm=llm,
|
|
401
|
-
conversations=conversations,
|
|
479
|
+
llm=llm,
|
|
480
|
+
conversations=conversations,
|
|
402
481
|
llm_config=llm_config,
|
|
403
|
-
args=self.args
|
|
482
|
+
args=self.args,
|
|
404
483
|
)
|
|
405
484
|
full_response, last_meta = stream_out(
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
485
|
+
stream_generator,
|
|
486
|
+
model_name=model_name,
|
|
487
|
+
title=get_message_with_format(
|
|
488
|
+
"code_generate_title", model_name=model_name
|
|
489
|
+
),
|
|
490
|
+
args=self.args,
|
|
491
|
+
extra_meta={
|
|
492
|
+
"stream_out_type": CodeGenerateStreamOutType.CODE_GENERATE.value
|
|
493
|
+
},
|
|
494
|
+
)
|
|
414
495
|
return ChatWithContinueResult(
|
|
415
496
|
content=full_response,
|
|
416
497
|
input_tokens_count=last_meta.input_tokens_count,
|
|
417
|
-
generated_tokens_count=last_meta.generated_tokens_count
|
|
498
|
+
generated_tokens_count=last_meta.generated_tokens_count,
|
|
418
499
|
)
|
|
500
|
+
|
|
419
501
|
futures.append(executor.submit(job))
|
|
420
|
-
else:
|
|
421
|
-
futures.append(
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
502
|
+
else:
|
|
503
|
+
futures.append(
|
|
504
|
+
executor.submit(
|
|
505
|
+
chat_with_continue,
|
|
506
|
+
llm=llm,
|
|
507
|
+
conversations=conversations,
|
|
508
|
+
llm_config=llm_config,
|
|
509
|
+
args=self.args,
|
|
510
|
+
)
|
|
511
|
+
)
|
|
428
512
|
count += 1
|
|
429
513
|
temp_results = [future.result() for future in futures]
|
|
430
514
|
for result in temp_results:
|
|
431
515
|
results.append(result.content)
|
|
432
516
|
input_tokens_count += result.input_tokens_count
|
|
433
517
|
generated_tokens_count += result.generated_tokens_count
|
|
434
|
-
model_info = llm_utils.get_model_info(
|
|
518
|
+
model_info = llm_utils.get_model_info(
|
|
519
|
+
model_name, self.args.product_mode
|
|
520
|
+
)
|
|
435
521
|
input_cost = model_info.get("input_price", 0) if model_info else 0
|
|
436
522
|
output_cost = model_info.get("output_price", 0) if model_info else 0
|
|
437
|
-
input_tokens_cost +=
|
|
438
|
-
|
|
523
|
+
input_tokens_cost += (
|
|
524
|
+
input_cost * result.input_tokens_count / 1000000
|
|
525
|
+
)
|
|
526
|
+
generated_tokens_cost += (
|
|
527
|
+
output_cost * result.generated_tokens_count / 1000000
|
|
528
|
+
)
|
|
439
529
|
for result in results:
|
|
440
530
|
conversations_list.append(
|
|
441
|
-
conversations + [{"role": "assistant", "content": result}]
|
|
442
|
-
|
|
531
|
+
conversations + [{"role": "assistant", "content": result}]
|
|
532
|
+
)
|
|
533
|
+
else:
|
|
443
534
|
for _ in range(self.args.human_model_num):
|
|
444
535
|
single_result = chat_with_continue(
|
|
445
|
-
llm=self.llms[0],
|
|
446
|
-
conversations=conversations,
|
|
536
|
+
llm=self.llms[0],
|
|
537
|
+
conversations=conversations,
|
|
447
538
|
llm_config=llm_config,
|
|
448
|
-
args=self.args
|
|
449
|
-
)
|
|
539
|
+
args=self.args,
|
|
540
|
+
)
|
|
450
541
|
results.append(single_result.content)
|
|
451
542
|
input_tokens_count += single_result.input_tokens_count
|
|
452
543
|
generated_tokens_count += single_result.generated_tokens_count
|
|
453
|
-
conversations_list.append(
|
|
454
|
-
|
|
544
|
+
conversations_list.append(
|
|
545
|
+
conversations
|
|
546
|
+
+ [{"role": "assistant", "content": single_result.content}]
|
|
547
|
+
)
|
|
548
|
+
|
|
455
549
|
statistics = {
|
|
456
550
|
"input_tokens_count": input_tokens_count,
|
|
457
551
|
"generated_tokens_count": generated_tokens_count,
|
|
458
552
|
"input_tokens_cost": input_tokens_cost,
|
|
459
|
-
"generated_tokens_cost": generated_tokens_cost
|
|
460
|
-
}
|
|
553
|
+
"generated_tokens_cost": generated_tokens_cost,
|
|
554
|
+
}
|
|
461
555
|
|
|
462
|
-
return CodeGenerateResult(
|
|
463
|
-
|
|
556
|
+
return CodeGenerateResult(
|
|
557
|
+
contents=results, conversations=conversations_list, metadata=statistics
|
|
558
|
+
)
|
|
@@ -2,13 +2,9 @@ import os
|
|
|
2
2
|
from byzerllm.utils.client import code_utils
|
|
3
3
|
from autocoder.common import AutoCoderArgs, git_utils
|
|
4
4
|
from autocoder.common.action_yml_file_manager import ActionYmlFileManager
|
|
5
|
-
from autocoder.common.
|
|
5
|
+
from autocoder.common.text_similarity import TextSimilarity
|
|
6
6
|
from autocoder.memory.active_context_manager import ActiveContextManager
|
|
7
|
-
from autocoder.
|
|
8
|
-
queue_communicate,
|
|
9
|
-
CommunicateEvent,
|
|
10
|
-
CommunicateEventType,
|
|
11
|
-
)
|
|
7
|
+
from autocoder.common.core_config import get_memory_manager
|
|
12
8
|
import pydantic
|
|
13
9
|
import byzerllm
|
|
14
10
|
|
|
@@ -321,6 +317,17 @@ class CodeAutoMergeEditBlock:
|
|
|
321
317
|
self._print_unmerged_blocks(unmerged_blocks)
|
|
322
318
|
return
|
|
323
319
|
|
|
320
|
+
# 收集新创建的文件
|
|
321
|
+
new_files = []
|
|
322
|
+
for file_path in file_content_mapping.keys():
|
|
323
|
+
if not os.path.exists(file_path):
|
|
324
|
+
new_files.append(file_path)
|
|
325
|
+
|
|
326
|
+
# 在 commit 之前,如果有变更且有新文件,添加到 memory_manager
|
|
327
|
+
if changes_made and new_files:
|
|
328
|
+
memory_manager = get_memory_manager(self.args.source_dir)
|
|
329
|
+
memory_manager.add_files(new_files)
|
|
330
|
+
|
|
324
331
|
if changes_made and not force_skip_git and not self.args.skip_commit:
|
|
325
332
|
try:
|
|
326
333
|
git_utils.commit_changes(
|
|
@@ -12,7 +12,7 @@ from autocoder.utils.auto_coder_utils.chat_stream_out import stream_out
|
|
|
12
12
|
from autocoder.utils.llms import get_llm_names, get_model_info
|
|
13
13
|
from autocoder.common.types import CodeGenerateResult, MergeCodeWithoutEffect
|
|
14
14
|
import os
|
|
15
|
-
from autocoder.
|
|
15
|
+
from autocoder.common.tokens import count_string_tokens as count_tokens
|
|
16
16
|
from autocoder.common.stream_out_type import CodeRankStreamOutType
|
|
17
17
|
|
|
18
18
|
class RankResult(BaseModel):
|
|
@@ -5,7 +5,7 @@ from pydantic import BaseModel,SkipValidation # Added import
|
|
|
5
5
|
from prompt_toolkit.completion import Completer, Completion, CompleteEvent
|
|
6
6
|
from prompt_toolkit.document import Document
|
|
7
7
|
|
|
8
|
-
from autocoder import
|
|
8
|
+
from autocoder.common.llms import LLMManager
|
|
9
9
|
from autocoder.common import AutoCoderArgs # Ensure AutoCoderArgs is imported
|
|
10
10
|
|
|
11
11
|
COMMANDS = {
|
|
@@ -373,8 +373,8 @@ class CommandCompleter(Completer):
|
|
|
373
373
|
self.all_files_with_dot = self.file_system_model.get_all_file_in_project_with_dot()
|
|
374
374
|
self.symbol_list = self.file_system_model.get_symbol_list()
|
|
375
375
|
# Refresh model names if they can change dynamically (optional)
|
|
376
|
-
|
|
377
|
-
self.all_model_names =
|
|
376
|
+
llm_manager = LLMManager()
|
|
377
|
+
self.all_model_names = list(llm_manager.get_all_models().keys())
|
|
378
378
|
self.current_file_names = []
|
|
379
379
|
|
|
380
380
|
def get_completions(self, document, complete_event):
|