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