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
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Project Tracker API
|
|
3
|
+
|
|
4
|
+
Provides a high-level API interface for project tracking and exploration functionality.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
from typing import Optional, Dict, Any
|
|
9
|
+
from loguru import logger
|
|
10
|
+
|
|
11
|
+
from autocoder.common import AutoCoderArgs
|
|
12
|
+
from autocoder.utils.llms import get_single_llm
|
|
13
|
+
|
|
14
|
+
from .tracker import ProjectTracker
|
|
15
|
+
from .types import (
|
|
16
|
+
ProjectTrackerRequest,
|
|
17
|
+
ProjectTrackerResponse,
|
|
18
|
+
ExplorationMode
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
class ProjectTrackerAPI:
|
|
22
|
+
"""
|
|
23
|
+
High-level API for project tracking and exploration.
|
|
24
|
+
|
|
25
|
+
This class provides a simplified interface for common project tracking operations,
|
|
26
|
+
making it easy to integrate project exploration into various workflows.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
def __init__(self, source_dir: Optional[str] = None, args: Optional[AutoCoderArgs] = None):
|
|
30
|
+
"""
|
|
31
|
+
Initialize the Project Tracker API.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
source_dir: Source directory path (optional if args provided)
|
|
35
|
+
args: AutoCoder arguments (optional, will create minimal config if not provided)
|
|
36
|
+
"""
|
|
37
|
+
if args is None:
|
|
38
|
+
raise ValueError("args is required")
|
|
39
|
+
else:
|
|
40
|
+
self.args = args
|
|
41
|
+
|
|
42
|
+
self.tracker = None
|
|
43
|
+
self._llm = None
|
|
44
|
+
|
|
45
|
+
def _get_tracker(self) -> ProjectTracker:
|
|
46
|
+
"""Get or create a ProjectTracker instance."""
|
|
47
|
+
if self.tracker is None:
|
|
48
|
+
if self._llm is None:
|
|
49
|
+
self._llm = get_single_llm(
|
|
50
|
+
self.args.code_model or self.args.model,
|
|
51
|
+
product_mode=self.args.product_mode
|
|
52
|
+
)
|
|
53
|
+
self.tracker = ProjectTracker(self.args, self._llm)
|
|
54
|
+
return self.tracker
|
|
55
|
+
|
|
56
|
+
def quick_scan(self, custom_prompt: Optional[str] = None) -> ProjectTrackerResponse:
|
|
57
|
+
"""
|
|
58
|
+
Perform a quick project scan for rapid overview.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
custom_prompt: Optional custom instructions for the scan
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
ProjectTrackerResponse with quick scan results
|
|
65
|
+
"""
|
|
66
|
+
request = ProjectTrackerRequest(
|
|
67
|
+
mode=ExplorationMode.QUICK_OVERVIEW,
|
|
68
|
+
custom_prompt=custom_prompt
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
tracker = self._get_tracker()
|
|
72
|
+
return tracker.explore_project(request)
|
|
73
|
+
|
|
74
|
+
def full_exploration(self, custom_prompt: Optional[str] = None) -> ProjectTrackerResponse:
|
|
75
|
+
"""
|
|
76
|
+
Perform comprehensive project exploration.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
custom_prompt: Optional custom instructions for exploration
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
ProjectTrackerResponse with full exploration results
|
|
83
|
+
"""
|
|
84
|
+
request = ProjectTrackerRequest(
|
|
85
|
+
mode=ExplorationMode.FULL_SCAN,
|
|
86
|
+
custom_prompt=custom_prompt
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
tracker = self._get_tracker()
|
|
90
|
+
return tracker.explore_project(request)
|
|
91
|
+
|
|
92
|
+
def analyze_ac_modules(self, custom_prompt: Optional[str] = None) -> ProjectTrackerResponse:
|
|
93
|
+
"""
|
|
94
|
+
Focus specifically on AC module analysis.
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
custom_prompt: Optional custom instructions for AC module analysis
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
ProjectTrackerResponse with AC module analysis results
|
|
101
|
+
"""
|
|
102
|
+
request = ProjectTrackerRequest(
|
|
103
|
+
mode=ExplorationMode.AC_MODULES_ONLY,
|
|
104
|
+
custom_prompt=custom_prompt
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
tracker = self._get_tracker()
|
|
108
|
+
return tracker.explore_project(request)
|
|
109
|
+
|
|
110
|
+
def targeted_exploration(
|
|
111
|
+
self,
|
|
112
|
+
target_paths: list[str],
|
|
113
|
+
custom_prompt: Optional[str] = None
|
|
114
|
+
) -> ProjectTrackerResponse:
|
|
115
|
+
"""
|
|
116
|
+
Perform targeted exploration of specific paths.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
target_paths: List of paths to focus exploration on
|
|
120
|
+
custom_prompt: Optional custom instructions for targeted exploration
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
ProjectTrackerResponse with targeted exploration results
|
|
124
|
+
"""
|
|
125
|
+
request = ProjectTrackerRequest(
|
|
126
|
+
mode=ExplorationMode.TARGETED_SCAN,
|
|
127
|
+
target_paths=target_paths,
|
|
128
|
+
custom_prompt=custom_prompt
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
tracker = self._get_tracker()
|
|
132
|
+
return tracker.explore_project(request)
|
|
133
|
+
|
|
134
|
+
def get_project_overview(self) -> Dict[str, Any]:
|
|
135
|
+
"""
|
|
136
|
+
Get basic project information without AI analysis.
|
|
137
|
+
|
|
138
|
+
Returns:
|
|
139
|
+
Dictionary with basic project overview
|
|
140
|
+
"""
|
|
141
|
+
tracker = self._get_tracker()
|
|
142
|
+
return tracker.get_project_overview()
|
|
143
|
+
|
|
144
|
+
def explore_for_requirements(self, user_requirements: str) -> ProjectTrackerResponse:
|
|
145
|
+
"""
|
|
146
|
+
Explore project specifically to understand how to implement user requirements.
|
|
147
|
+
|
|
148
|
+
This method creates a custom prompt that focuses on finding relevant modules,
|
|
149
|
+
patterns, and approaches that would be useful for implementing the given requirements.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
user_requirements: Description of what the user wants to implement
|
|
153
|
+
|
|
154
|
+
Returns:
|
|
155
|
+
ProjectTrackerResponse with exploration focused on requirements
|
|
156
|
+
"""
|
|
157
|
+
custom_prompt = f"""
|
|
158
|
+
## User Requirements Analysis
|
|
159
|
+
|
|
160
|
+
The user wants to implement the following:
|
|
161
|
+
{user_requirements}
|
|
162
|
+
|
|
163
|
+
Please focus your exploration on:
|
|
164
|
+
|
|
165
|
+
1. **Relevant AC Modules**: Find AC modules that might be related to these requirements
|
|
166
|
+
2. **Implementation Patterns**: Identify common patterns and approaches used in the project
|
|
167
|
+
3. **Similar Features**: Look for existing implementations that are similar to the requirements
|
|
168
|
+
4. **Dependencies**: Understand what dependencies and tools are available
|
|
169
|
+
5. **Best Practices**: Identify best practices and conventions used in the project
|
|
170
|
+
6. **Integration Points**: Find where new functionality should be integrated
|
|
171
|
+
|
|
172
|
+
## Specific Analysis Goals:
|
|
173
|
+
|
|
174
|
+
- Which AC modules provide functionality similar to the requirements?
|
|
175
|
+
- What patterns and conventions should be followed?
|
|
176
|
+
- Where would be the best place to implement these requirements?
|
|
177
|
+
- What existing code can be leveraged or extended?
|
|
178
|
+
- What tools and utilities are available to help with implementation?
|
|
179
|
+
|
|
180
|
+
Provide specific, actionable insights that will help the user implement their requirements
|
|
181
|
+
efficiently and in a way that fits well with the existing project structure.
|
|
182
|
+
"""
|
|
183
|
+
|
|
184
|
+
return self.full_exploration(custom_prompt=custom_prompt)
|
|
185
|
+
|
|
186
|
+
# Convenience functions for direct usage
|
|
187
|
+
def quick_project_scan(source_dir: Optional[str] = None) -> ProjectTrackerResponse:
|
|
188
|
+
"""
|
|
189
|
+
Convenience function for quick project scanning.
|
|
190
|
+
|
|
191
|
+
Args:
|
|
192
|
+
source_dir: Source directory path (defaults to current directory)
|
|
193
|
+
|
|
194
|
+
Returns:
|
|
195
|
+
ProjectTrackerResponse with quick scan results
|
|
196
|
+
"""
|
|
197
|
+
api = ProjectTrackerAPI(source_dir=source_dir)
|
|
198
|
+
return api.quick_scan()
|
|
199
|
+
|
|
200
|
+
def explore_project_for_requirements(
|
|
201
|
+
user_requirements: str,
|
|
202
|
+
source_dir: Optional[str] = None
|
|
203
|
+
) -> ProjectTrackerResponse:
|
|
204
|
+
"""
|
|
205
|
+
Convenience function for requirement-focused project exploration.
|
|
206
|
+
|
|
207
|
+
Args:
|
|
208
|
+
user_requirements: Description of what user wants to implement
|
|
209
|
+
source_dir: Source directory path (defaults to current directory)
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
ProjectTrackerResponse with requirement-focused exploration
|
|
213
|
+
"""
|
|
214
|
+
api = ProjectTrackerAPI(source_dir=source_dir)
|
|
215
|
+
return api.explore_for_requirements(user_requirements)
|
|
216
|
+
|
|
217
|
+
def get_basic_project_info(source_dir: Optional[str] = None) -> Dict[str, Any]:
|
|
218
|
+
"""
|
|
219
|
+
Convenience function for basic project information.
|
|
220
|
+
|
|
221
|
+
Args:
|
|
222
|
+
source_dir: Source directory path (defaults to current directory)
|
|
223
|
+
|
|
224
|
+
Returns:
|
|
225
|
+
Dictionary with basic project information
|
|
226
|
+
"""
|
|
227
|
+
api = ProjectTrackerAPI(source_dir=source_dir)
|
|
228
|
+
return api.get_project_overview()
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Project Tracker Demo
|
|
4
|
+
|
|
5
|
+
演示如何使用 LLM 模块和 Project Tracker 模块来分析项目并生成 AUTO-CODER.md 文件。
|
|
6
|
+
使用指定的模型 idea/k2 进行项目探索和文档生成。
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sys
|
|
10
|
+
import os
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
from loguru import logger
|
|
13
|
+
|
|
14
|
+
from autocoder.common import AutoCoderArgs
|
|
15
|
+
from autocoder.common.llms.manager import LLMManager
|
|
16
|
+
from autocoder.common.project_tracker.api import ProjectTrackerAPI
|
|
17
|
+
from autocoder.common.project_tracker.types import ExplorationMode
|
|
18
|
+
from autocoder.auto_coder_runner import load_tokenizer
|
|
19
|
+
|
|
20
|
+
# 配置日志级别为 INFO
|
|
21
|
+
logger.remove()
|
|
22
|
+
logger.add(sys.stderr, level="INFO", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}")
|
|
23
|
+
|
|
24
|
+
project_root = "/Users/williamzhu/projects/auto-coder"
|
|
25
|
+
load_tokenizer()
|
|
26
|
+
|
|
27
|
+
def setup_autocoder_args(source_dir: str, model_name: str = "v3_chat") -> AutoCoderArgs:
|
|
28
|
+
"""
|
|
29
|
+
设置 AutoCoder 参数配置
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
source_dir: 项目源代码目录
|
|
33
|
+
model_name: 使用的模型名称
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
配置好的 AutoCoderArgs 实例
|
|
37
|
+
"""
|
|
38
|
+
args = AutoCoderArgs()
|
|
39
|
+
args.source_dir = source_dir
|
|
40
|
+
args.model = model_name
|
|
41
|
+
args.code_model = model_name
|
|
42
|
+
args.product_mode = "lite" # 使用 lite 模式
|
|
43
|
+
args.project_type = "python"
|
|
44
|
+
|
|
45
|
+
return args
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def verify_model_availability(model_name: str) -> bool:
|
|
49
|
+
"""
|
|
50
|
+
验证指定模型是否可用
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
model_name: 模型名称
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
模型是否可用
|
|
57
|
+
"""
|
|
58
|
+
try:
|
|
59
|
+
manager = LLMManager()
|
|
60
|
+
model = manager.get_model(model_name)
|
|
61
|
+
|
|
62
|
+
if model:
|
|
63
|
+
print(f"✓ 找到模型: {model.name}")
|
|
64
|
+
print(f" 描述: {model.description}")
|
|
65
|
+
print(f" 类型: {model.model_type}")
|
|
66
|
+
print(f" 基础URL: {model.base_url}")
|
|
67
|
+
print(f" 是否配置密钥: {'是' if manager.has_key(model_name) else '否'}")
|
|
68
|
+
|
|
69
|
+
if not manager.has_key(model_name):
|
|
70
|
+
print(f"⚠ 警告: 模型 {model_name} 未配置 API 密钥")
|
|
71
|
+
print(f"请在 ~/.auto-coder/keys/{model_name.replace('/', '_')}.key 中配置密钥")
|
|
72
|
+
return False
|
|
73
|
+
|
|
74
|
+
return True
|
|
75
|
+
else:
|
|
76
|
+
print(f"✗ 未找到模型: {model_name}")
|
|
77
|
+
print("请确保在 ~/.auto-coder/keys/models.json 中配置了该模型")
|
|
78
|
+
return False
|
|
79
|
+
|
|
80
|
+
except Exception as e:
|
|
81
|
+
print(f"✗ 验证模型时出错: {e}")
|
|
82
|
+
return False
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def run_project_exploration(source_dir: str, model_name: str = "v3_chat"):
|
|
86
|
+
"""
|
|
87
|
+
运行项目探索并生成 AUTO-CODER.md 文件
|
|
88
|
+
|
|
89
|
+
Args:
|
|
90
|
+
source_dir: 项目源代码目录
|
|
91
|
+
model_name: 使用的模型名称
|
|
92
|
+
"""
|
|
93
|
+
print(f"🚀 开始项目探索...")
|
|
94
|
+
print(f"📁 项目目录: {source_dir}")
|
|
95
|
+
print(f"🤖 使用模型: {model_name}")
|
|
96
|
+
print("=" * 60)
|
|
97
|
+
|
|
98
|
+
# 1. 验证模型可用性
|
|
99
|
+
print("1. 验证模型可用性...")
|
|
100
|
+
if not verify_model_availability(model_name):
|
|
101
|
+
print("❌ 模型验证失败,无法继续")
|
|
102
|
+
return False
|
|
103
|
+
|
|
104
|
+
# 2. 设置配置
|
|
105
|
+
print("\n2. 设置项目配置...")
|
|
106
|
+
try:
|
|
107
|
+
args = setup_autocoder_args(source_dir, model_name)
|
|
108
|
+
print(f"✓ 配置完成: {args.source_dir}")
|
|
109
|
+
except Exception as e:
|
|
110
|
+
print(f"✗ 配置失败: {e}")
|
|
111
|
+
return False
|
|
112
|
+
|
|
113
|
+
# 3. 初始化 Project Tracker API
|
|
114
|
+
print("\n3. 初始化 Project Tracker...")
|
|
115
|
+
try:
|
|
116
|
+
api = ProjectTrackerAPI(args=args)
|
|
117
|
+
print("✓ Project Tracker 初始化成功")
|
|
118
|
+
except Exception as e:
|
|
119
|
+
print(f"✗ Project Tracker 初始化失败: {e}")
|
|
120
|
+
return False
|
|
121
|
+
|
|
122
|
+
# 4. 获取项目概览
|
|
123
|
+
print("\n4. 获取项目基本信息...")
|
|
124
|
+
try:
|
|
125
|
+
overview = api.get_project_overview()
|
|
126
|
+
print(f"✓ 发现 {overview.get('ac_modules_found', 0)} 个 AC 模块")
|
|
127
|
+
if overview.get('ac_module_paths'):
|
|
128
|
+
print(" AC 模块列表:")
|
|
129
|
+
for module_path in overview['ac_module_paths'][:5]: # 显示前5个
|
|
130
|
+
print(f" - {module_path}")
|
|
131
|
+
if len(overview['ac_module_paths']) > 5:
|
|
132
|
+
print(f" ... 还有 {len(overview['ac_module_paths']) - 5} 个模块")
|
|
133
|
+
except Exception as e:
|
|
134
|
+
print(f"✗ 获取项目概览失败: {e}")
|
|
135
|
+
return False
|
|
136
|
+
|
|
137
|
+
# 5. 执行全面项目探索
|
|
138
|
+
print("\n5. 执行项目探索分析...")
|
|
139
|
+
print(" 这可能需要几分钟时间,请耐心等待...")
|
|
140
|
+
|
|
141
|
+
try:
|
|
142
|
+
# 使用自定义提示来确保生成 AUTO-CODER.md 文件
|
|
143
|
+
custom_prompt = """
|
|
144
|
+
请特别关注以下任务:
|
|
145
|
+
|
|
146
|
+
1. 全面分析项目中的所有 AC 模块
|
|
147
|
+
2. 理解项目的整体架构和设计模式
|
|
148
|
+
3. 识别关键组件和它们之间的依赖关系
|
|
149
|
+
4. 提供开发建议和最佳实践
|
|
150
|
+
|
|
151
|
+
**重要**: 完成分析后,必须使用 write_to_file 工具创建 .auto-coder/projects/AUTO-CODER.md 文件,
|
|
152
|
+
包含完整的项目文档,帮助开发者快速理解和使用这个项目。
|
|
153
|
+
|
|
154
|
+
文档应该包括:
|
|
155
|
+
- 项目概述和目标
|
|
156
|
+
- 架构总结
|
|
157
|
+
- AC 模块详细说明
|
|
158
|
+
- 开发工作流程
|
|
159
|
+
- 新手入门指南
|
|
160
|
+
- 最佳实践建议
|
|
161
|
+
"""
|
|
162
|
+
|
|
163
|
+
response = api.full_exploration(custom_prompt=custom_prompt)
|
|
164
|
+
|
|
165
|
+
if response.success:
|
|
166
|
+
print("✓ 项目探索完成!")
|
|
167
|
+
|
|
168
|
+
# 显示探索结果摘要
|
|
169
|
+
if response.exploration_result:
|
|
170
|
+
result = response.exploration_result
|
|
171
|
+
print(f" - 分析模式: {result.mode}")
|
|
172
|
+
print(f" - 发现模块: {len(result.modules_found)} 个")
|
|
173
|
+
print(f" - 关键洞察: {len(result.key_insights)} 条")
|
|
174
|
+
print(f" - 建议事项: {len(result.recommendations)} 条")
|
|
175
|
+
print(f" - 执行时间: {result.exploration_time:.2f} 秒")
|
|
176
|
+
|
|
177
|
+
# 显示部分关键洞察
|
|
178
|
+
if result.key_insights:
|
|
179
|
+
print("\n 关键洞察:")
|
|
180
|
+
for i, insight in enumerate(result.key_insights[:3], 1):
|
|
181
|
+
print(f" {i}. {insight}")
|
|
182
|
+
|
|
183
|
+
# 显示部分建议
|
|
184
|
+
if result.recommendations:
|
|
185
|
+
print("\n 建议事项:")
|
|
186
|
+
for i, rec in enumerate(result.recommendations[:3], 1):
|
|
187
|
+
print(f" {i}. {rec}")
|
|
188
|
+
|
|
189
|
+
print(f"\n✓ 对话ID: {response.conversation_id}")
|
|
190
|
+
|
|
191
|
+
else:
|
|
192
|
+
print(f"✗ 项目探索失败: {response.error_message}")
|
|
193
|
+
return False
|
|
194
|
+
|
|
195
|
+
except Exception as e:
|
|
196
|
+
print(f"✗ 项目探索过程中出错: {e}")
|
|
197
|
+
return False
|
|
198
|
+
|
|
199
|
+
# 6. 验证生成的文档
|
|
200
|
+
print("\n6. 验证生成的文档...")
|
|
201
|
+
auto_coder_md_path = os.path.join(source_dir, ".auto-coder", "projects", "AUTO-CODER.md")
|
|
202
|
+
|
|
203
|
+
if os.path.exists(auto_coder_md_path):
|
|
204
|
+
print(f"✓ AUTO-CODER.md 文件已生成: {auto_coder_md_path}")
|
|
205
|
+
|
|
206
|
+
# 显示文件大小
|
|
207
|
+
file_size = os.path.getsize(auto_coder_md_path)
|
|
208
|
+
print(f" 文件大小: {file_size} 字节")
|
|
209
|
+
|
|
210
|
+
# 显示文件开头内容
|
|
211
|
+
try:
|
|
212
|
+
with open(auto_coder_md_path, 'r', encoding='utf-8') as f:
|
|
213
|
+
content = f.read(500) # 读取前500个字符
|
|
214
|
+
print("\n 文件内容预览:")
|
|
215
|
+
print(" " + "─" * 50)
|
|
216
|
+
for line in content.split('\n')[:10]: # 显示前10行
|
|
217
|
+
print(f" {line}")
|
|
218
|
+
print(" " + "─" * 50)
|
|
219
|
+
except Exception as e:
|
|
220
|
+
print(f" ⚠ 无法读取文件内容: {e}")
|
|
221
|
+
else:
|
|
222
|
+
print(f"⚠ AUTO-CODER.md 文件未找到: {auto_coder_md_path}")
|
|
223
|
+
print(" 可能需要手动检查探索过程中的输出")
|
|
224
|
+
|
|
225
|
+
print("\n" + "=" * 60)
|
|
226
|
+
print("🎉 项目探索演示完成!")
|
|
227
|
+
return True
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def main():
|
|
231
|
+
"""主函数"""
|
|
232
|
+
print("AutoCoder Project Tracker Demo")
|
|
233
|
+
print("使用 LLM 模块和 Project Tracker 模块生成项目文档")
|
|
234
|
+
print("=" * 60)
|
|
235
|
+
|
|
236
|
+
# 使用当前项目作为演示目标
|
|
237
|
+
current_project_dir = str(project_root)
|
|
238
|
+
model_name = "v3_chat"
|
|
239
|
+
|
|
240
|
+
print(f"目标项目: {current_project_dir}")
|
|
241
|
+
print(f"指定模型: {model_name}")
|
|
242
|
+
print()
|
|
243
|
+
|
|
244
|
+
# 确认是否继续
|
|
245
|
+
try:
|
|
246
|
+
user_input = input("是否继续执行项目探索? (y/N): ").strip().lower()
|
|
247
|
+
if user_input not in ['y', 'yes', '是']:
|
|
248
|
+
print("取消执行")
|
|
249
|
+
return
|
|
250
|
+
except KeyboardInterrupt:
|
|
251
|
+
print("\n取消执行")
|
|
252
|
+
return
|
|
253
|
+
|
|
254
|
+
# 执行项目探索
|
|
255
|
+
success = run_project_exploration(current_project_dir, model_name)
|
|
256
|
+
|
|
257
|
+
if success:
|
|
258
|
+
print("\n✅ 演示成功完成!")
|
|
259
|
+
print("\n下一步建议:")
|
|
260
|
+
print("1. 查看生成的 .auto-coder/projects/AUTO-CODER.md 文件")
|
|
261
|
+
print("2. 根据文档内容了解项目结构")
|
|
262
|
+
print("3. 使用文档中的建议进行开发")
|
|
263
|
+
else:
|
|
264
|
+
print("\n❌ 演示执行失败")
|
|
265
|
+
print("\n故障排除建议:")
|
|
266
|
+
print("1. 检查模型配置和 API 密钥")
|
|
267
|
+
print("2. 确认网络连接正常")
|
|
268
|
+
print("3. 查看错误日志获取详细信息")
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
if __name__ == "__main__":
|
|
272
|
+
main()
|