auto-coder 0.1.351__tar.gz → 0.1.353__tar.gz
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-0.1.351 → auto_coder-0.1.353}/PKG-INFO +2 -1
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/auto_coder.egg-info/PKG-INFO +2 -1
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/auto_coder.egg-info/SOURCES.txt +1 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/auto_coder.egg-info/requires.txt +1 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/agentic_filter.py +6 -1
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/commands/tools.py +16 -3
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/git_utils.py +1 -1
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit.py +33 -0
- auto_coder-0.1.353/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +163 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/entry.py +2 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/models.py +14 -1
- auto_coder-0.1.353/src/autocoder/version.py +1 -0
- auto_coder-0.1.351/src/autocoder/version.py +0 -1
- {auto_coder-0.1.351 → auto_coder-0.1.353}/LICENSE +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/README.md +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/setup.cfg +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/setup.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/command_parser.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/action_yml_file_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/conf_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_server_install.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_server_types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/model_speed_tester.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/openai_content.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/run_cmd.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/stream_out_type.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/test_run_cmd.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/token_cost_caculate.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_conversation.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_generate.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_merge.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_diff_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/base_compiler.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/compiler_config_api.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/compiler_config_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/compiler_factory.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/java_compiler.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/models.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/provided_compiler.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/python_compiler.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/reactjs_compiler.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/shadow_compiler.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/compilers/vue_compiler.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/events/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/events/event_content.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/events/event_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/events/event_manager_singleton.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/events/event_store.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/events/event_types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/helper/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/helper/project_creator.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/helper/rag_doc_creator.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/ignorefiles/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/ignorefiles/ignore_file_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/ignorefiles/test_ignore_file_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/base_linter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/linter_factory.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/models.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/python_linter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/reactjs_linter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/shadow_linter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/linters/vue_linter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/memory/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/memory/active_context_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/memory/active_package.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/memory/async_processor.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/memory/directory_mapper.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/filter_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/image_loader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/loaders/test_image_loader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/run_context.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/shadows/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/shadows/shadow_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_action_yml_file_manager.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_planner.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.351 → auto_coder-0.1.353}/tests/test_symbols_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: auto-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.353
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -61,6 +61,7 @@ Requires-Dist: pydub
|
|
|
61
61
|
Requires-Dist: youtube-transcript-api
|
|
62
62
|
Requires-Dist: SpeechRecognition
|
|
63
63
|
Requires-Dist: pathvalidate
|
|
64
|
+
Requires-Dist: pexpect
|
|
64
65
|
Requires-Dist: mcp; python_version >= "3.10"
|
|
65
66
|
Requires-Dist: setuptools
|
|
66
67
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: auto-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.353
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -61,6 +61,7 @@ Requires-Dist: pydub
|
|
|
61
61
|
Requires-Dist: youtube-transcript-api
|
|
62
62
|
Requires-Dist: SpeechRecognition
|
|
63
63
|
Requires-Dist: pathvalidate
|
|
64
|
+
Requires-Dist: pexpect
|
|
64
65
|
Requires-Dist: mcp; python_version >= "3.10"
|
|
65
66
|
Requires-Dist: setuptools
|
|
66
67
|
|
|
@@ -135,6 +135,7 @@ src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver
|
|
|
135
135
|
src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py
|
|
136
136
|
src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py
|
|
137
137
|
src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py
|
|
138
|
+
src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py
|
|
138
139
|
src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py
|
|
139
140
|
src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py
|
|
140
141
|
src/autocoder/compilers/__init__.py
|
|
@@ -933,4 +933,9 @@ class AgenticFilter:
|
|
|
933
933
|
v = self.printer.get_message_from_key_with_format(
|
|
934
934
|
"auto_command_failed", style="red", command=command, error=error_msg
|
|
935
935
|
)
|
|
936
|
-
|
|
936
|
+
self.result_manager = ResultManager()
|
|
937
|
+
result = f"command {command} with parameters {parameters} execution failed with error {error_msg}"
|
|
938
|
+
self.result_manager.add_result(content=result, meta={
|
|
939
|
+
"action": command,
|
|
940
|
+
"input": parameters
|
|
941
|
+
})
|
|
@@ -48,6 +48,8 @@ from autocoder.common.mcp_server_types import (
|
|
|
48
48
|
McpListRunningRequest, McpRefreshRequest
|
|
49
49
|
)
|
|
50
50
|
|
|
51
|
+
from autocoder.ignorefiles.ignore_file_utils import should_ignore
|
|
52
|
+
|
|
51
53
|
|
|
52
54
|
@byzerllm.prompt()
|
|
53
55
|
def detect_rm_command(command: str) -> Bool:
|
|
@@ -394,7 +396,13 @@ class AutoCommandTools:
|
|
|
394
396
|
# 解析文件路径列表(如果提供了)
|
|
395
397
|
file_path_list = []
|
|
396
398
|
if file_paths:
|
|
397
|
-
|
|
399
|
+
# 处理可能是列表或字符串的file_paths
|
|
400
|
+
if isinstance(file_paths, list):
|
|
401
|
+
file_path_list = file_paths
|
|
402
|
+
elif isinstance(file_paths, str):
|
|
403
|
+
file_path_list = [path.strip() for path in file_paths.split(",")]
|
|
404
|
+
else:
|
|
405
|
+
file_path_list = [str(file_paths)]
|
|
398
406
|
|
|
399
407
|
for k in index_data.values():
|
|
400
408
|
value = {}
|
|
@@ -739,10 +747,15 @@ class AutoCommandTools:
|
|
|
739
747
|
搜索不区分大小写。
|
|
740
748
|
"""
|
|
741
749
|
matched_files = []
|
|
742
|
-
for root,
|
|
750
|
+
for root, dirs, files in os.walk(self.args.source_dir):
|
|
751
|
+
# 过滤忽略的目录,避免递归进入
|
|
752
|
+
dirs[:] = [d for d in dirs if not should_ignore(os.path.join(root, d))]
|
|
743
753
|
for file in files:
|
|
754
|
+
file_path = os.path.join(root, file)
|
|
755
|
+
if should_ignore(file_path):
|
|
756
|
+
continue
|
|
744
757
|
if keyword.lower() in file.lower():
|
|
745
|
-
matched_files.append(
|
|
758
|
+
matched_files.append(file_path)
|
|
746
759
|
|
|
747
760
|
v = ",".join(matched_files)
|
|
748
761
|
|
|
@@ -64,7 +64,7 @@ def commit_changes(repo_path: str, message: str) -> CommitResult:
|
|
|
64
64
|
try:
|
|
65
65
|
repo.git.add(all=True)
|
|
66
66
|
if repo.is_dirty():
|
|
67
|
-
commit = repo.index.commit(message)
|
|
67
|
+
commit = repo.index.commit(message,skip_hooks=True)
|
|
68
68
|
result = CommitResult(
|
|
69
69
|
success=True,
|
|
70
70
|
commit_message=message,
|
|
@@ -1177,6 +1177,8 @@ Below are some files the user is focused on, and the content is up to date. Thes
|
|
|
1177
1177
|
# If no event was processed in this iteration, break inner loop
|
|
1178
1178
|
if not found_event:
|
|
1179
1179
|
break
|
|
1180
|
+
|
|
1181
|
+
yield TokenUsageEvent(usage=meta_holder.meta)
|
|
1180
1182
|
|
|
1181
1183
|
# After generator exhausted, yield any remaining content
|
|
1182
1184
|
if in_thinking_block:
|
|
@@ -1440,6 +1442,37 @@ Below are some files the user is focused on, and the content is up to date. Thes
|
|
|
1440
1442
|
self.apply_pre_changes()
|
|
1441
1443
|
event_stream = self.analyze(request)
|
|
1442
1444
|
for event in event_stream:
|
|
1445
|
+
if isinstance(event, TokenUsageEvent):
|
|
1446
|
+
last_meta: SingleOutputMeta = event.usage
|
|
1447
|
+
# Get model info for pricing
|
|
1448
|
+
from autocoder.utils import llms as llm_utils
|
|
1449
|
+
model_name = ",".join(llm_utils.get_llm_names(self.llm))
|
|
1450
|
+
model_info = llm_utils.get_model_info(
|
|
1451
|
+
model_name, self.args.product_mode) or {}
|
|
1452
|
+
input_price = model_info.get(
|
|
1453
|
+
"input_price", 0.0) if model_info else 0.0
|
|
1454
|
+
output_price = model_info.get(
|
|
1455
|
+
"output_price", 0.0) if model_info else 0.0
|
|
1456
|
+
|
|
1457
|
+
# Calculate costs
|
|
1458
|
+
input_cost = (last_meta.input_tokens_count *
|
|
1459
|
+
input_price) / 1000000 # Convert to millions
|
|
1460
|
+
# Convert to millions
|
|
1461
|
+
output_cost = (
|
|
1462
|
+
last_meta.generated_tokens_count * output_price) / 1000000
|
|
1463
|
+
|
|
1464
|
+
self.printer.print_in_terminal(
|
|
1465
|
+
"code_generation_complete",
|
|
1466
|
+
duration=0.0,
|
|
1467
|
+
input_tokens=last_meta.input_tokens_count,
|
|
1468
|
+
output_tokens=last_meta.generated_tokens_count,
|
|
1469
|
+
input_cost=input_cost,
|
|
1470
|
+
output_cost=output_cost,
|
|
1471
|
+
speed=0.0,
|
|
1472
|
+
model_names=model_name,
|
|
1473
|
+
sampling_count=1
|
|
1474
|
+
)
|
|
1475
|
+
|
|
1443
1476
|
if isinstance(event, LLMThinkingEvent):
|
|
1444
1477
|
# Render thinking within a less prominent style, maybe grey?
|
|
1445
1478
|
console.print(f"[grey50]{event.text}[/grey50]", end="")
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
import os
|
|
3
|
+
import tempfile
|
|
4
|
+
import shutil
|
|
5
|
+
from unittest.mock import patch, MagicMock
|
|
6
|
+
|
|
7
|
+
from autocoder.common.v2.agent.agentic_edit_tools.search_files_tool_resolver import SearchFilesToolResolver
|
|
8
|
+
from autocoder.common.v2.agent.agentic_edit_types import SearchFilesTool, ToolResult
|
|
9
|
+
from autocoder.common import AutoCoderArgs
|
|
10
|
+
|
|
11
|
+
# Helper function to create a directory structure with files for testing
|
|
12
|
+
def create_test_files(base_dir, structure):
|
|
13
|
+
"""
|
|
14
|
+
Creates a directory structure with files based on the provided dictionary.
|
|
15
|
+
Keys are filenames (relative to base_dir), values are file contents.
|
|
16
|
+
Directories are created automatically.
|
|
17
|
+
"""
|
|
18
|
+
for path, content in structure.items():
|
|
19
|
+
full_path = os.path.join(base_dir, path)
|
|
20
|
+
os.makedirs(os.path.dirname(full_path), exist_ok=True)
|
|
21
|
+
with open(full_path, 'w') as f:
|
|
22
|
+
f.write(content)
|
|
23
|
+
|
|
24
|
+
@pytest.fixture
|
|
25
|
+
def search_tool_resolver(temp_search_dir):
|
|
26
|
+
"""Fixture to provide an instance of SearchFilesToolResolver."""
|
|
27
|
+
# Create AutoCoderArgs with the temp directory as source_dir to allow the security check to pass
|
|
28
|
+
args = AutoCoderArgs()
|
|
29
|
+
args.source_dir = temp_search_dir # Set the source_dir to our temp directory
|
|
30
|
+
return SearchFilesToolResolver(None, SearchFilesTool(path="", regex=""), args)
|
|
31
|
+
|
|
32
|
+
@pytest.fixture(scope="function")
|
|
33
|
+
def temp_search_dir():
|
|
34
|
+
"""Fixture to create a temporary directory with test files for searching."""
|
|
35
|
+
temp_dir = tempfile.mkdtemp()
|
|
36
|
+
test_structure = {
|
|
37
|
+
"file1.txt": "Hello world\nThis is a test file.",
|
|
38
|
+
"subdir/file2.py": "import sys\n\ndef main():\n print('Python script')\n",
|
|
39
|
+
"subdir/another.txt": "Another text file with world.",
|
|
40
|
+
".hiddenfile": "This should be ignored by default",
|
|
41
|
+
"no_match.md": "Markdown file."
|
|
42
|
+
}
|
|
43
|
+
create_test_files(temp_dir, test_structure)
|
|
44
|
+
yield temp_dir # Provide the path to the test function
|
|
45
|
+
shutil.rmtree(temp_dir) # Cleanup after test
|
|
46
|
+
|
|
47
|
+
# --- Test Cases ---
|
|
48
|
+
|
|
49
|
+
def test_resolve_finds_matches(search_tool_resolver, temp_search_dir):
|
|
50
|
+
"""Test that resolve finds matches correctly."""
|
|
51
|
+
# Set up the tool with the pattern we want to search for
|
|
52
|
+
tool = SearchFilesTool(
|
|
53
|
+
path="", # Use empty path to search in the source_dir itself
|
|
54
|
+
regex="world",
|
|
55
|
+
file_pattern="*.txt"
|
|
56
|
+
)
|
|
57
|
+
search_tool_resolver.tool = tool
|
|
58
|
+
|
|
59
|
+
# Call the resolve method directly
|
|
60
|
+
response = search_tool_resolver.resolve()
|
|
61
|
+
|
|
62
|
+
# Check the response
|
|
63
|
+
assert isinstance(response, ToolResult)
|
|
64
|
+
assert response.success
|
|
65
|
+
assert "Search completed. Found 2 matches" in response.message
|
|
66
|
+
|
|
67
|
+
# Check that the correct files were found
|
|
68
|
+
assert len(response.content) == 2
|
|
69
|
+
paths = [result["path"] for result in response.content]
|
|
70
|
+
assert any("file1.txt" in path for path in paths)
|
|
71
|
+
assert any("another.txt" in path for path in paths)
|
|
72
|
+
|
|
73
|
+
# Check that the match lines contain our search pattern
|
|
74
|
+
for result in response.content:
|
|
75
|
+
assert "world" in result["match_line"]
|
|
76
|
+
|
|
77
|
+
def test_resolve_no_matches(search_tool_resolver, temp_search_dir):
|
|
78
|
+
"""Test that resolve handles no matches correctly."""
|
|
79
|
+
tool = SearchFilesTool(
|
|
80
|
+
path="", # Use empty path to search in the source_dir itself
|
|
81
|
+
regex="nonexistent_pattern",
|
|
82
|
+
file_pattern="*"
|
|
83
|
+
)
|
|
84
|
+
search_tool_resolver.tool = tool
|
|
85
|
+
|
|
86
|
+
response = search_tool_resolver.resolve()
|
|
87
|
+
|
|
88
|
+
assert isinstance(response, ToolResult)
|
|
89
|
+
assert response.success # Still success, just no results
|
|
90
|
+
assert "Search completed. Found 0 matches" in response.message
|
|
91
|
+
assert len(response.content) == 0
|
|
92
|
+
|
|
93
|
+
def test_resolve_file_pattern(search_tool_resolver, temp_search_dir):
|
|
94
|
+
"""Test that the file_pattern is correctly applied."""
|
|
95
|
+
# Test .txt pattern
|
|
96
|
+
tool_txt = SearchFilesTool(
|
|
97
|
+
path="", # Use empty path to search in the source_dir itself
|
|
98
|
+
regex="world",
|
|
99
|
+
file_pattern="*.txt" # Only search .txt files
|
|
100
|
+
)
|
|
101
|
+
search_tool_resolver.tool = tool_txt
|
|
102
|
+
|
|
103
|
+
response_txt = search_tool_resolver.resolve()
|
|
104
|
+
|
|
105
|
+
assert isinstance(response_txt, ToolResult)
|
|
106
|
+
assert response_txt.success
|
|
107
|
+
assert "Search completed. Found 2 matches" in response_txt.message
|
|
108
|
+
# Ensure only .txt files were matched
|
|
109
|
+
for result in response_txt.content:
|
|
110
|
+
assert result["path"].endswith(".txt")
|
|
111
|
+
|
|
112
|
+
# Test .py pattern
|
|
113
|
+
tool_py = SearchFilesTool(
|
|
114
|
+
path="", # Use empty path to search in the source_dir itself
|
|
115
|
+
regex="print",
|
|
116
|
+
file_pattern="*.py" # Only search .py files
|
|
117
|
+
)
|
|
118
|
+
search_tool_resolver.tool = tool_py
|
|
119
|
+
|
|
120
|
+
response_py = search_tool_resolver.resolve()
|
|
121
|
+
|
|
122
|
+
assert isinstance(response_py, ToolResult)
|
|
123
|
+
assert response_py.success
|
|
124
|
+
assert "Search completed. Found 1 matches" in response_py.message
|
|
125
|
+
# Ensure only .py files were matched
|
|
126
|
+
for result in response_py.content:
|
|
127
|
+
assert result["path"].endswith(".py")
|
|
128
|
+
|
|
129
|
+
def test_invalid_regex(search_tool_resolver, temp_search_dir):
|
|
130
|
+
"""Test that an invalid regex pattern is properly handled."""
|
|
131
|
+
tool = SearchFilesTool(
|
|
132
|
+
path="", # Use empty path to search in the source_dir itself
|
|
133
|
+
regex="[invalid regex", # Invalid regex pattern
|
|
134
|
+
file_pattern="*"
|
|
135
|
+
)
|
|
136
|
+
search_tool_resolver.tool = tool
|
|
137
|
+
|
|
138
|
+
response = search_tool_resolver.resolve()
|
|
139
|
+
|
|
140
|
+
assert isinstance(response, ToolResult)
|
|
141
|
+
assert not response.success
|
|
142
|
+
assert "Invalid regex pattern" in response.message
|
|
143
|
+
|
|
144
|
+
def test_nonexistent_path(search_tool_resolver, temp_search_dir):
|
|
145
|
+
"""Test that a nonexistent path is properly handled."""
|
|
146
|
+
# Create a path that we know doesn't exist under temp_search_dir
|
|
147
|
+
nonexistent_path = "nonexistent_subdirectory"
|
|
148
|
+
|
|
149
|
+
tool = SearchFilesTool(
|
|
150
|
+
path=nonexistent_path, # This path doesn't exist in our temp directory
|
|
151
|
+
regex="pattern",
|
|
152
|
+
file_pattern="*"
|
|
153
|
+
)
|
|
154
|
+
search_tool_resolver.tool = tool
|
|
155
|
+
|
|
156
|
+
response = search_tool_resolver.resolve()
|
|
157
|
+
|
|
158
|
+
assert isinstance(response, ToolResult)
|
|
159
|
+
assert not response.success
|
|
160
|
+
assert "Error: Search path not found" in response.message
|
|
161
|
+
|
|
162
|
+
# Add more tests as needed
|
|
163
|
+
|
|
@@ -120,6 +120,8 @@ def build_index_and_filter_files(
|
|
|
120
120
|
response = tuner.analyze(
|
|
121
121
|
AgenticFilterRequest(user_input=args.query))
|
|
122
122
|
if response:
|
|
123
|
+
print("收集文件。。。。。。")
|
|
124
|
+
print(response)
|
|
123
125
|
for file in response.files:
|
|
124
126
|
final_files[file.path] = TargetFile(
|
|
125
127
|
file_path=file.path, reason="Agentic Filter")
|
|
@@ -71,7 +71,20 @@ default_models_list = [
|
|
|
71
71
|
"output_price": 0.0,
|
|
72
72
|
"average_speed": 0.0,
|
|
73
73
|
"max_output_tokens": 8096*2
|
|
74
|
-
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "openrouter/optimus-alpha",
|
|
77
|
+
"description": "",
|
|
78
|
+
"model_name": "openrouter/optimus-alpha",
|
|
79
|
+
"model_type": "saas/openai",
|
|
80
|
+
"base_url": "https://openrouter.ai/api/v1",
|
|
81
|
+
"api_key_path": "",
|
|
82
|
+
"is_reasoning": False,
|
|
83
|
+
"input_price": 0.0,
|
|
84
|
+
"output_price": 0.0,
|
|
85
|
+
"average_speed": 0.0,
|
|
86
|
+
"max_output_tokens": 8096*2
|
|
87
|
+
},
|
|
75
88
|
{
|
|
76
89
|
"name": "openrouter/google/gemini-2.5-pro-preview-03-25",
|
|
77
90
|
"description": "",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.353"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.1.351"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_generate_editblock.py
RENAMED
|
File without changes
|
{auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_generate_strict_diff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/code_auto_merge_strict_diff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{auto_coder-0.1.351 → auto_coder-0.1.353}/src/autocoder/common/v2/agent/agentic_edit_conversation.py
RENAMED
|
File without changes
|
|
File without changes
|