auto-coder 0.1.372__tar.gz → 0.1.374__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.372 → auto_coder-0.1.374}/PKG-INFO +2 -2
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/auto_coder.egg-info/PKG-INFO +2 -2
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/auto_coder.egg-info/SOURCES.txt +0 -4
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/auto_coder.egg-info/requires.txt +1 -1
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/auto_tool.py +4 -3
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/planner.py +3 -3
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/project_reader.py +4 -4
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/chat_auto_coder.py +10 -19
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit.py +10 -6
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +2 -1
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +47 -141
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +47 -102
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/index.py +1 -1
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/linter_factory.py +4 -1
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/normal_linter.py +2 -4
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/python_linter.py +18 -115
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/llm_wrapper.py +1 -2
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/rag_entry.py +2 -6
- auto_coder-0.1.374/src/autocoder/version.py +2 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_planner.py +0 -3
- auto_coder-0.1.372/src/autocoder/common/llm_rerank.py +0 -84
- auto_coder-0.1.372/src/autocoder/rag/simple_directory_reader.py +0 -646
- auto_coder-0.1.372/src/autocoder/rag/simple_rag.py +0 -404
- auto_coder-0.1.372/src/autocoder/utils/tests.py +0 -37
- auto_coder-0.1.372/src/autocoder/version.py +0 -2
- {auto_coder-0.1.372 → auto_coder-0.1.374}/LICENSE +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/README.md +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/setup.cfg +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/setup.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/agentic_filter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/auto_learn.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/agent_hub.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/agentic_lang.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/agentic_tool_display.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/base_agent.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/default_tools.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/test_base_agent.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tool_registry.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/base_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/example_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/replace_in_file_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/use_mcp_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/base_agentic/utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/auto_coder_runner.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/chat/conf_command.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/chat/models_command.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/chat/rules_command.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/command_parser.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/action_yml_file_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_completer_v2.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_file_manager/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_file_manager/examples.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_file_manager/manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_file_manager/models.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_file_manager/utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conf_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conversations/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conversations/compatibility.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conversations/conversation_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/conversations/example.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/directory_cache/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/directory_cache/cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/directory_cache/test_cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/backup.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/conversation_checkpoint.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/examples.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/models.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/store.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/test_backup.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/test_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/test_models.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/test_store.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/test_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_checkpoint/utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_monitor/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/file_monitor/monitor.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/ignorefiles/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/ignorefiles/ignore_file_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_server_install.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_server_types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/model_speed_tester.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/openai_content.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/rulefiles/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/rulefiles/autocoderrules_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/run_cmd.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/save_formatted_log.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/stream_out_type.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/test_run_cmd.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/token_cost_caculate.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_generate.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_merge.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_diff_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/base_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/compiler_config_api.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/compiler_config_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/compiler_factory.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/java_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/models.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/normal_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/provided_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/python_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/reactjs_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/shadow_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/compilers/vue_compiler.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/events/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/events/event_content.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/events/event_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/events/event_manager_singleton.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/events/event_store.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/events/event_types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/helper/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/helper/project_creator.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/helper/rag_doc_creator.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/base_linter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/models.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/reactjs_linter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/shadow_linter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/linters/vue_linter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/memory/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/memory/active_context_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/memory/active_package.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/memory/async_processor.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/memory/directory_mapper.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/loaders/filter_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/loaders/image_loader.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/test_doc_filter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/test_long_context_rag.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/test_token_limiter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/run_context.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/shadows/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/shadows/shadow_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_action_yml_file_manager.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.372 → auto_coder-0.1.374}/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.374
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -28,7 +28,7 @@ Requires-Dist: prompt-toolkit
|
|
|
28
28
|
Requires-Dist: tokenizers
|
|
29
29
|
Requires-Dist: aiofiles
|
|
30
30
|
Requires-Dist: readerwriterlock
|
|
31
|
-
Requires-Dist: byzerllm[saas]>=0.1.
|
|
31
|
+
Requires-Dist: byzerllm[saas]>=0.1.184
|
|
32
32
|
Requires-Dist: patch
|
|
33
33
|
Requires-Dist: diff_match_patch
|
|
34
34
|
Requires-Dist: GitPython
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: auto-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.374
|
|
4
4
|
Summary: AutoCoder: AutoCoder
|
|
5
5
|
Author: allwefantasy
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -28,7 +28,7 @@ Requires-Dist: prompt-toolkit
|
|
|
28
28
|
Requires-Dist: tokenizers
|
|
29
29
|
Requires-Dist: aiofiles
|
|
30
30
|
Requires-Dist: readerwriterlock
|
|
31
|
-
Requires-Dist: byzerllm[saas]>=0.1.
|
|
31
|
+
Requires-Dist: byzerllm[saas]>=0.1.184
|
|
32
32
|
Requires-Dist: patch
|
|
33
33
|
Requires-Dist: diff_match_patch
|
|
34
34
|
Requires-Dist: GitPython
|
|
@@ -106,7 +106,6 @@ src/autocoder/common/global_cancel.py
|
|
|
106
106
|
src/autocoder/common/image_to_page.py
|
|
107
107
|
src/autocoder/common/index_import_export.py
|
|
108
108
|
src/autocoder/common/interpreter.py
|
|
109
|
-
src/autocoder/common/llm_rerank.py
|
|
110
109
|
src/autocoder/common/mcp_hub.py
|
|
111
110
|
src/autocoder/common/mcp_server.py
|
|
112
111
|
src/autocoder/common/mcp_server_install.py
|
|
@@ -279,8 +278,6 @@ src/autocoder/rag/rag_entry.py
|
|
|
279
278
|
src/autocoder/rag/raw_rag.py
|
|
280
279
|
src/autocoder/rag/relevant_utils.py
|
|
281
280
|
src/autocoder/rag/searchable.py
|
|
282
|
-
src/autocoder/rag/simple_directory_reader.py
|
|
283
|
-
src/autocoder/rag/simple_rag.py
|
|
284
281
|
src/autocoder/rag/test_doc_filter.py
|
|
285
282
|
src/autocoder/rag/test_long_context_rag.py
|
|
286
283
|
src/autocoder/rag/test_token_limiter.py
|
|
@@ -333,7 +330,6 @@ src/autocoder/utils/request_event_queue.py
|
|
|
333
330
|
src/autocoder/utils/request_queue.py
|
|
334
331
|
src/autocoder/utils/rest.py
|
|
335
332
|
src/autocoder/utils/stream_thinking.py
|
|
336
|
-
src/autocoder/utils/tests.py
|
|
337
333
|
src/autocoder/utils/thread_utils.py
|
|
338
334
|
src/autocoder/utils/types.py
|
|
339
335
|
src/autocoder/utils/auto_coder_utils/__init__.py
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from llama_index.core.agent import ReActAgent
|
|
2
|
-
from llama_index.core.tools import FunctionTool
|
|
3
1
|
from autocoder.pyproject import PyProject
|
|
4
2
|
from autocoder.tsproject import TSProject
|
|
5
3
|
from autocoder.suffixproject import SuffixProject
|
|
@@ -7,7 +5,6 @@ from autocoder.common import AutoCoderArgs
|
|
|
7
5
|
from autocoder.common.interpreter import Interpreter
|
|
8
6
|
from autocoder.common import ExecuteSteps, ExecuteStep, detect_env
|
|
9
7
|
from autocoder.common import code_auto_execute
|
|
10
|
-
from byzerllm.apps.llama_index.byzerai import ByzerAI
|
|
11
8
|
from loguru import logger
|
|
12
9
|
import os
|
|
13
10
|
import io
|
|
@@ -252,6 +249,8 @@ def get_tools(args: AutoCoderArgs, llm: byzerllm.ByzerLLM):
|
|
|
252
249
|
|
|
253
250
|
console.print("[bold red]达到最大尝试次数,任务未能完成。[/bold red]")
|
|
254
251
|
return result
|
|
252
|
+
|
|
253
|
+
from llama_index.core.tools import FunctionTool
|
|
255
254
|
|
|
256
255
|
tools = [
|
|
257
256
|
FunctionTool.from_defaults(run_python_code),
|
|
@@ -284,6 +283,8 @@ class AutoTool:
|
|
|
284
283
|
return self.pp.get_tree_like_directory_structure.prompt()
|
|
285
284
|
|
|
286
285
|
def run(self, query: str, max_iterations: int = 20):
|
|
286
|
+
from byzerllm.apps.llama_index.byzerai import ByzerAI
|
|
287
|
+
from llama_index.core.agent import ReActAgent
|
|
287
288
|
agent = ReActAgent.from_tools(
|
|
288
289
|
tools=self.tools,
|
|
289
290
|
llm=ByzerAI(llm=self.code_model),
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from llama_index.core.agent import ReActAgent
|
|
2
|
-
from llama_index.core.tools import FunctionTool
|
|
3
1
|
from autocoder.index.index import IndexManager
|
|
4
2
|
from autocoder.pyproject import PyProject
|
|
5
3
|
from autocoder.tsproject import TSProject
|
|
@@ -182,7 +180,8 @@ def get_tools(args: AutoCoderArgs, llm: byzerllm.ByzerLLM):
|
|
|
182
180
|
args.collections = old_collections
|
|
183
181
|
|
|
184
182
|
return "\n".join([sc.source_code for sc in source_codes])
|
|
185
|
-
|
|
183
|
+
|
|
184
|
+
from llama_index.core.tools import FunctionTool
|
|
186
185
|
tools = [
|
|
187
186
|
FunctionTool.from_defaults(get_project_related_files),
|
|
188
187
|
FunctionTool.from_defaults(generate_auto_coder_yaml),
|
|
@@ -202,6 +201,7 @@ class Planner:
|
|
|
202
201
|
|
|
203
202
|
def run(self, query: str, max_iterations: int = 10):
|
|
204
203
|
from byzerllm.apps.llama_index.byzerai import ByzerAI
|
|
204
|
+
from llama_index.core.agent import ReActAgent
|
|
205
205
|
agent = ReActAgent.from_tools(
|
|
206
206
|
tools=self.tools,
|
|
207
207
|
llm=ByzerAI(llm=self.llm),
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from llama_index.core.agent import ReActAgent
|
|
2
|
-
from llama_index.core.tools import FunctionTool
|
|
3
1
|
from autocoder.index.index import IndexManager
|
|
4
2
|
from autocoder.pyproject import PyProject
|
|
5
3
|
from autocoder.tsproject import TSProject
|
|
@@ -176,7 +174,7 @@ def detect_rm_command(command: str) -> Bool:
|
|
|
176
174
|
|
|
177
175
|
|
|
178
176
|
def get_tools(args: AutoCoderArgs, llm: byzerllm.ByzerLLM):
|
|
179
|
-
|
|
177
|
+
|
|
180
178
|
def ask_user(question:str) -> str:
|
|
181
179
|
'''
|
|
182
180
|
如果你对用户的问题有什么疑问,或者你想从用户收集一些额外信息,可以调用
|
|
@@ -404,7 +402,8 @@ def get_tools(args: AutoCoderArgs, llm: byzerllm.ByzerLLM):
|
|
|
404
402
|
pass
|
|
405
403
|
|
|
406
404
|
return ",".join(matched_files)
|
|
407
|
-
|
|
405
|
+
|
|
406
|
+
from llama_index.core.tools import FunctionTool
|
|
408
407
|
tools = [
|
|
409
408
|
# FunctionTool.from_defaults(get_project_related_files),
|
|
410
409
|
FunctionTool.from_defaults(get_related_files_by_symbols),
|
|
@@ -440,6 +439,7 @@ class ProjectReader:
|
|
|
440
439
|
|
|
441
440
|
def run(self, query: str, max_iterations: int = 20):
|
|
442
441
|
from byzerllm.apps.llama_index.byzerai import ByzerAI
|
|
442
|
+
from llama_index.core.agent import ReActAgent
|
|
443
443
|
agent = ReActAgent.from_tools(
|
|
444
444
|
tools=self.tools,
|
|
445
445
|
llm=ByzerAI(llm=self.llm),
|
|
@@ -19,12 +19,11 @@ from autocoder.events.event_manager_singleton import gengerate_event_file_path
|
|
|
19
19
|
from autocoder.common.global_cancel import global_cancel
|
|
20
20
|
from autocoder.chat.models_command import handle_models_command
|
|
21
21
|
from autocoder.auto_coder_runner import (
|
|
22
|
-
auto_command,
|
|
23
|
-
load_memory,
|
|
24
|
-
save_memory,
|
|
22
|
+
auto_command,
|
|
25
23
|
configure, # Keep configure if it's used elsewhere or by handle_conf_command internally (though we adapted handle_conf_command not to)
|
|
26
24
|
# manage_models, # Removed
|
|
27
25
|
# print_conf, # Removed
|
|
26
|
+
save_memory,
|
|
28
27
|
exclude_dirs,
|
|
29
28
|
exclude_files,
|
|
30
29
|
ask,
|
|
@@ -122,10 +121,7 @@ def show_help():
|
|
|
122
121
|
)
|
|
123
122
|
print(
|
|
124
123
|
f" \033[94m/coding\033[0m \033[93m<query>\033[0m - \033[92m{get_message('coding_desc')}\033[0m"
|
|
125
|
-
)
|
|
126
|
-
print(
|
|
127
|
-
f" \033[94m/ask\033[0m \033[93m<query>\033[0m - \033[92m{get_message('ask_desc')}\033[0m"
|
|
128
|
-
)
|
|
124
|
+
)
|
|
129
125
|
print(
|
|
130
126
|
f" \033[94m/summon\033[0m \033[93m<query>\033[0m - \033[92m{get_message('summon_desc')}\033[0m"
|
|
131
127
|
)
|
|
@@ -302,7 +298,6 @@ def main():
|
|
|
302
298
|
# 加载保存的运行时配置
|
|
303
299
|
plugin_manager.load_runtime_cfg()
|
|
304
300
|
|
|
305
|
-
load_memory()
|
|
306
301
|
memory = get_memory()
|
|
307
302
|
|
|
308
303
|
configure(f"product_mode:{ARGS.product_mode}")
|
|
@@ -345,7 +340,8 @@ def main():
|
|
|
345
340
|
memory["mode"] = "voice_input"
|
|
346
341
|
else: # voice_input
|
|
347
342
|
memory["mode"] = "normal"
|
|
348
|
-
|
|
343
|
+
|
|
344
|
+
save_memory()
|
|
349
345
|
event.app.invalidate()
|
|
350
346
|
|
|
351
347
|
@kb.add("c-n")
|
|
@@ -467,8 +463,8 @@ def main():
|
|
|
467
463
|
else:
|
|
468
464
|
user_input = session.prompt(FormattedText(prompt_message), style=style)
|
|
469
465
|
new_prompt = ""
|
|
470
|
-
|
|
471
|
-
if "mode" not in memory:
|
|
466
|
+
|
|
467
|
+
if "mode" not in memory:
|
|
472
468
|
memory["mode"] = "auto_detect"
|
|
473
469
|
|
|
474
470
|
# 处理 user_input 的空格
|
|
@@ -545,9 +541,11 @@ def main():
|
|
|
545
541
|
print(memory["mode"])
|
|
546
542
|
else:
|
|
547
543
|
memory["mode"] = conf
|
|
544
|
+
save_memory()
|
|
548
545
|
|
|
549
546
|
elif user_input.startswith("/conf/export"):
|
|
550
547
|
from autocoder.common.conf_import_export import export_conf
|
|
548
|
+
export_conf(os.getcwd(), user_input[len("/conf/export") :].strip() or ".")
|
|
551
549
|
|
|
552
550
|
elif user_input.startswith("/plugins"):
|
|
553
551
|
# 提取命令参数并交由 plugin_manager 处理
|
|
@@ -580,14 +578,7 @@ def main():
|
|
|
580
578
|
|
|
581
579
|
elif user_input.startswith("/exclude_files"):
|
|
582
580
|
query = user_input[len("/exclude_files") :].strip()
|
|
583
|
-
exclude_files(query)
|
|
584
|
-
|
|
585
|
-
elif user_input.startswith("/ask"):
|
|
586
|
-
query = user_input[len("/ask") :].strip()
|
|
587
|
-
if not query:
|
|
588
|
-
print("Please enter your question.")
|
|
589
|
-
else:
|
|
590
|
-
ask(query)
|
|
581
|
+
exclude_files(query)
|
|
591
582
|
|
|
592
583
|
elif user_input.startswith("/exit"):
|
|
593
584
|
raise EOFError()
|
|
@@ -850,7 +850,8 @@ class AgenticEdit:
|
|
|
850
850
|
|
|
851
851
|
iteration_count = 0
|
|
852
852
|
tool_executed = False
|
|
853
|
-
should_yield_completion_event = False
|
|
853
|
+
should_yield_completion_event = False
|
|
854
|
+
completion_event = None
|
|
854
855
|
|
|
855
856
|
while True:
|
|
856
857
|
iteration_count += 1
|
|
@@ -860,10 +861,13 @@ class AgenticEdit:
|
|
|
860
861
|
if last_message["role"] == "assistant":
|
|
861
862
|
logger.info(f"Last message is assistant, skipping LLM interaction cycle")
|
|
862
863
|
if should_yield_completion_event:
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
864
|
+
if completion_event is None:
|
|
865
|
+
yield CompletionEvent(completion=AttemptCompletionTool(
|
|
866
|
+
result=last_message["content"],
|
|
867
|
+
command=""
|
|
868
|
+
), completion_xml="")
|
|
869
|
+
else:
|
|
870
|
+
yield completion_event
|
|
867
871
|
break
|
|
868
872
|
logger.info(
|
|
869
873
|
f"Starting LLM interaction cycle. History size: {len(conversations)}")
|
|
@@ -935,7 +939,7 @@ class AgenticEdit:
|
|
|
935
939
|
logger.info(
|
|
936
940
|
"AttemptCompletionTool received. Finalizing session.")
|
|
937
941
|
logger.info(f"Completion result: {tool_obj.result[:50]}...")
|
|
938
|
-
|
|
942
|
+
completion_event = CompletionEvent(completion=tool_obj, completion_xml=tool_xml)
|
|
939
943
|
logger.info(
|
|
940
944
|
"AgenticEdit analyze loop finished due to AttemptCompletion.")
|
|
941
945
|
save_formatted_log(self.args.source_dir, json.dumps(conversations, ensure_ascii=False), "agentic_conversation")
|
|
@@ -13,7 +13,7 @@ from rich.console import Console
|
|
|
13
13
|
from rich.panel import Panel
|
|
14
14
|
from rich.text import Text
|
|
15
15
|
from autocoder.common.result_manager import ResultManager
|
|
16
|
-
|
|
16
|
+
from autocoder.common.printer import Printer
|
|
17
17
|
if typing.TYPE_CHECKING:
|
|
18
18
|
from autocoder.common.v2.agent.agentic_edit import AgenticEdit
|
|
19
19
|
|
|
@@ -22,6 +22,7 @@ class AskFollowupQuestionToolResolver(BaseToolResolver):
|
|
|
22
22
|
super().__init__(agent, tool, args)
|
|
23
23
|
self.tool: AskFollowupQuestionTool = tool # For type hinting
|
|
24
24
|
self.result_manager = ResultManager()
|
|
25
|
+
self.printer = Printer()
|
|
25
26
|
|
|
26
27
|
def resolve(self) -> ToolResult:
|
|
27
28
|
"""
|
|
@@ -7,6 +7,7 @@ from autocoder.common.v2.agent.agentic_edit_tools.base_tool_resolver import Base
|
|
|
7
7
|
from autocoder.common.v2.agent.agentic_edit_types import ReplaceInFileTool, ToolResult
|
|
8
8
|
from autocoder.common.file_checkpoint.models import FileChange as CheckpointFileChange
|
|
9
9
|
from autocoder.common.file_checkpoint.manager import FileChangeManager as CheckpointFileChangeManager
|
|
10
|
+
from autocoder.linters.models import IssueSeverity, FileLintResult
|
|
10
11
|
from loguru import logger
|
|
11
12
|
from autocoder.common.auto_coder_lang import get_message_with_format
|
|
12
13
|
if typing.TYPE_CHECKING:
|
|
@@ -62,7 +63,38 @@ class ReplaceInFileToolResolver(BaseToolResolver):
|
|
|
62
63
|
logger.warning(f"Could not parse any SEARCH/REPLACE blocks from diff: {diff_content}")
|
|
63
64
|
return blocks
|
|
64
65
|
|
|
65
|
-
def
|
|
66
|
+
def _filter_lint_issues(self, lint_result:FileLintResult, levels: List[IssueSeverity] = [IssueSeverity.ERROR, IssueSeverity.WARNING]):
|
|
67
|
+
"""
|
|
68
|
+
过滤 lint 结果,只保留指定级别的问题
|
|
69
|
+
|
|
70
|
+
参数:
|
|
71
|
+
lint_result: 单个文件的 lint 结果对象
|
|
72
|
+
levels: 要保留的问题级别列表,默认保留 ERROR 和 WARNING 级别
|
|
73
|
+
|
|
74
|
+
返回:
|
|
75
|
+
过滤后的 lint 结果对象(原对象的副本)
|
|
76
|
+
"""
|
|
77
|
+
if not lint_result or not lint_result.issues:
|
|
78
|
+
return lint_result
|
|
79
|
+
|
|
80
|
+
# 创建一个新的 issues 列表,只包含指定级别的问题
|
|
81
|
+
filtered_issues = []
|
|
82
|
+
for issue in lint_result.issues:
|
|
83
|
+
if issue.severity in levels:
|
|
84
|
+
filtered_issues.append(issue)
|
|
85
|
+
|
|
86
|
+
# 更新 lint_result 的副本
|
|
87
|
+
filtered_result = lint_result
|
|
88
|
+
filtered_result.issues = filtered_issues
|
|
89
|
+
|
|
90
|
+
# 更新计数
|
|
91
|
+
filtered_result.error_count = sum(1 for issue in filtered_result.issues if issue.severity == IssueSeverity.ERROR)
|
|
92
|
+
filtered_result.warning_count = sum(1 for issue in filtered_result.issues if issue.severity == IssueSeverity.WARNING)
|
|
93
|
+
filtered_result.info_count = sum(1 for issue in filtered_result.issues if issue.severity == IssueSeverity.INFO)
|
|
94
|
+
|
|
95
|
+
return filtered_result
|
|
96
|
+
|
|
97
|
+
def _format_lint_issues(self, lint_result:FileLintResult):
|
|
66
98
|
"""
|
|
67
99
|
将 lint 结果格式化为可读的文本格式
|
|
68
100
|
|
|
@@ -86,130 +118,7 @@ class ReplaceInFileToolResolver(BaseToolResolver):
|
|
|
86
118
|
|
|
87
119
|
return "\n".join(formatted_issues)
|
|
88
120
|
|
|
89
|
-
|
|
90
|
-
"""Replace content in file using shadow manager for path translation"""
|
|
91
|
-
try:
|
|
92
|
-
# Determine target path: shadow file
|
|
93
|
-
target_path = self.shadow_manager.to_shadow_path(abs_file_path)
|
|
94
|
-
|
|
95
|
-
# Read original content
|
|
96
|
-
if os.path.exists(target_path) and os.path.isfile(target_path):
|
|
97
|
-
with open(target_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
98
|
-
original_content = f.read()
|
|
99
|
-
elif os.path.exists(abs_file_path) and os.path.isfile(abs_file_path):
|
|
100
|
-
# If shadow doesn't exist, but original exists, read original content
|
|
101
|
-
with open(abs_file_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
102
|
-
original_content = f.read()
|
|
103
|
-
# create parent dirs of shadow if needed
|
|
104
|
-
os.makedirs(os.path.dirname(target_path), exist_ok=True)
|
|
105
|
-
# write original content into shadow file as baseline
|
|
106
|
-
with open(target_path, 'w', encoding='utf-8') as f:
|
|
107
|
-
f.write(original_content)
|
|
108
|
-
logger.info(f"[Shadow] Initialized shadow file from original: {target_path}")
|
|
109
|
-
else:
|
|
110
|
-
return ToolResult(success=False, message=get_message_with_format("replace_in_file.file_not_found", file_path=file_path))
|
|
111
|
-
|
|
112
|
-
parsed_blocks = self.parse_diff(diff_content)
|
|
113
|
-
if not parsed_blocks:
|
|
114
|
-
return ToolResult(success=False, message=get_message_with_format("replace_in_file.no_valid_blocks"))
|
|
115
|
-
|
|
116
|
-
current_content = original_content
|
|
117
|
-
applied_count = 0
|
|
118
|
-
errors = []
|
|
119
|
-
|
|
120
|
-
# Apply blocks sequentially
|
|
121
|
-
for i, (search_block, replace_block) in enumerate(parsed_blocks):
|
|
122
|
-
start_index = current_content.find(search_block)
|
|
123
|
-
|
|
124
|
-
if start_index != -1:
|
|
125
|
-
current_content = current_content[:start_index] + replace_block + current_content[start_index + len(search_block):]
|
|
126
|
-
applied_count += 1
|
|
127
|
-
logger.info(f"Applied SEARCH/REPLACE block {i+1} in file {file_path}")
|
|
128
|
-
else:
|
|
129
|
-
error_message = f"SEARCH block {i+1} not found in the current file content. Content to search:\n---\n{search_block}\n---"
|
|
130
|
-
logger.warning(error_message)
|
|
131
|
-
context_start = max(0, original_content.find(search_block[:20]) - 100)
|
|
132
|
-
context_end = min(len(original_content), context_start + 200 + len(search_block[:20]))
|
|
133
|
-
logger.warning(f"Approximate context in file:\n---\n{original_content[context_start:context_end]}\n---")
|
|
134
|
-
errors.append(error_message)
|
|
135
|
-
|
|
136
|
-
if applied_count == 0 and errors:
|
|
137
|
-
return ToolResult(success=False, message=get_message_with_format("replace_in_file.apply_failed", errors="\n".join(errors)))
|
|
138
|
-
|
|
139
|
-
# Write the modified content back to shadow file
|
|
140
|
-
os.makedirs(os.path.dirname(target_path), exist_ok=True)
|
|
141
|
-
with open(target_path, 'w', encoding='utf-8') as f:
|
|
142
|
-
f.write(current_content)
|
|
143
|
-
|
|
144
|
-
logger.info(f"Successfully applied {applied_count}/{len(parsed_blocks)} changes to shadow file: {file_path}")
|
|
145
|
-
|
|
146
|
-
# 新增:执行代码质量检查
|
|
147
|
-
lint_results = None
|
|
148
|
-
lint_message = ""
|
|
149
|
-
formatted_issues = ""
|
|
150
|
-
has_lint_issues = False
|
|
151
|
-
|
|
152
|
-
# 检查是否启用了Lint功能
|
|
153
|
-
enable_lint = self.args.enable_auto_fix_lint
|
|
154
|
-
|
|
155
|
-
if enable_lint:
|
|
156
|
-
try:
|
|
157
|
-
if self.shadow_linter and self.shadow_manager:
|
|
158
|
-
# 对修改后的文件进行 lint 检查
|
|
159
|
-
shadow_path = target_path # 已经是影子路径
|
|
160
|
-
lint_results = self.shadow_linter.lint_shadow_file(shadow_path)
|
|
161
|
-
|
|
162
|
-
if lint_results and lint_results.issues:
|
|
163
|
-
has_lint_issues = True
|
|
164
|
-
# 格式化 lint 问题
|
|
165
|
-
formatted_issues = self._format_lint_issues(lint_results)
|
|
166
|
-
lint_message = f"\n\n代码质量检查发现 {len(lint_results.issues)} 个问题:\n{formatted_issues}"
|
|
167
|
-
else:
|
|
168
|
-
lint_message = "\n\n代码质量检查通过,未发现问题。"
|
|
169
|
-
except Exception as e:
|
|
170
|
-
logger.error(f"Lint 检查失败: {str(e)}")
|
|
171
|
-
lint_message = "\n\n尝试进行代码质量检查时出错。"
|
|
172
|
-
else:
|
|
173
|
-
logger.info("代码质量检查已禁用")
|
|
174
|
-
|
|
175
|
-
# 构建包含 lint 结果的返回消息
|
|
176
|
-
if errors:
|
|
177
|
-
message = get_message_with_format("replace_in_file.apply_success_with_warnings",
|
|
178
|
-
applied=applied_count,
|
|
179
|
-
total=len(parsed_blocks),
|
|
180
|
-
file_path=file_path,
|
|
181
|
-
errors="\n".join(errors))
|
|
182
|
-
else:
|
|
183
|
-
message = get_message_with_format("replace_in_file.apply_success",
|
|
184
|
-
applied=applied_count,
|
|
185
|
-
total=len(parsed_blocks),
|
|
186
|
-
file_path=file_path)
|
|
187
|
-
|
|
188
|
-
# 将 lint 消息添加到结果中,如果启用了Lint
|
|
189
|
-
if enable_lint:
|
|
190
|
-
message += lint_message
|
|
191
|
-
|
|
192
|
-
# 变更跟踪,回调AgenticEdit
|
|
193
|
-
if self.agent:
|
|
194
|
-
rel_path = os.path.relpath(abs_file_path, abs_project_dir)
|
|
195
|
-
self.agent.record_file_change(rel_path, "modified", diff=diff_content, content=current_content)
|
|
196
|
-
|
|
197
|
-
# 附加 lint 结果到返回内容
|
|
198
|
-
result_content = {
|
|
199
|
-
"content": current_content,
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
# 只有在启用Lint时才添加Lint结果
|
|
203
|
-
if enable_lint:
|
|
204
|
-
result_content["lint_results"] = {
|
|
205
|
-
"has_issues": has_lint_issues,
|
|
206
|
-
"issues": formatted_issues if has_lint_issues else None
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
return ToolResult(success=True, message=message, content=result_content)
|
|
210
|
-
except Exception as e:
|
|
211
|
-
logger.error(f"Error writing replaced content to shadow file '{file_path}': {str(e)}")
|
|
212
|
-
return ToolResult(success=False, message=get_message_with_format("replace_in_file.write_error", error=str(e)))
|
|
121
|
+
|
|
213
122
|
|
|
214
123
|
def replace_in_file_normal(self, file_path: str, diff_content: str, source_dir: str, abs_project_dir: str, abs_file_path: str) -> ToolResult:
|
|
215
124
|
"""Replace content in file directly without using shadow manager"""
|
|
@@ -282,16 +191,20 @@ class ReplaceInFileToolResolver(BaseToolResolver):
|
|
|
282
191
|
|
|
283
192
|
# 检查是否启用了Lint功能
|
|
284
193
|
enable_lint = self.args.enable_auto_fix_lint
|
|
194
|
+
logger.info(f"检查Lint功能状态: enable_lint={enable_lint}")
|
|
285
195
|
|
|
286
196
|
if enable_lint:
|
|
287
197
|
try:
|
|
288
198
|
if self.agent.linter:
|
|
289
199
|
lint_results = self.agent.linter.lint_file(file_path)
|
|
290
200
|
if lint_results and lint_results.issues:
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
201
|
+
# 过滤 lint 结果,只保留 ERROR 和 WARNING 级别的问题
|
|
202
|
+
filtered_results = self._filter_lint_issues(lint_results)
|
|
203
|
+
if filtered_results.issues:
|
|
204
|
+
has_lint_issues = True
|
|
205
|
+
# 格式化 lint 问题
|
|
206
|
+
formatted_issues = self._format_lint_issues(filtered_results)
|
|
207
|
+
lint_message = f"\n\n代码质量检查发现 {len(filtered_results.issues)} 个问题"
|
|
295
208
|
except Exception as e:
|
|
296
209
|
logger.error(f"Lint 检查失败: {str(e)}")
|
|
297
210
|
lint_message = "\n\n尝试进行代码质量检查时出错。"
|
|
@@ -309,17 +222,13 @@ class ReplaceInFileToolResolver(BaseToolResolver):
|
|
|
309
222
|
message = get_message_with_format("replace_in_file.apply_success",
|
|
310
223
|
applied=applied_count,
|
|
311
224
|
total=len(parsed_blocks),
|
|
312
|
-
file_path=file_path)
|
|
313
|
-
|
|
314
|
-
# 将 lint 消息添加到结果中,如果启用了Lint
|
|
315
|
-
if enable_lint:
|
|
316
|
-
message += lint_message
|
|
225
|
+
file_path=file_path)
|
|
317
226
|
|
|
318
227
|
# 变更跟踪,回调AgenticEdit
|
|
319
228
|
if self.agent:
|
|
320
229
|
rel_path = os.path.relpath(abs_file_path, abs_project_dir)
|
|
321
230
|
self.agent.record_file_change(rel_path, "modified", diff=diff_content, content=current_content)
|
|
322
|
-
|
|
231
|
+
|
|
323
232
|
# 附加 lint 结果到返回内容
|
|
324
233
|
result_content = {
|
|
325
234
|
"content": current_content,
|
|
@@ -327,6 +236,7 @@ class ReplaceInFileToolResolver(BaseToolResolver):
|
|
|
327
236
|
|
|
328
237
|
# 只有在启用Lint时才添加Lint结果
|
|
329
238
|
if enable_lint:
|
|
239
|
+
message = message + "\n" + lint_message
|
|
330
240
|
result_content["lint_results"] = {
|
|
331
241
|
"has_issues": has_lint_issues,
|
|
332
242
|
"issues": formatted_issues if has_lint_issues else None
|
|
@@ -348,9 +258,5 @@ class ReplaceInFileToolResolver(BaseToolResolver):
|
|
|
348
258
|
# Security check
|
|
349
259
|
if not abs_file_path.startswith(abs_project_dir):
|
|
350
260
|
return ToolResult(success=False, message=get_message_with_format("replace_in_file.access_denied", file_path=file_path))
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
if self.shadow_manager:
|
|
354
|
-
return self.replace_in_file_with_shadow(file_path, diff_content, source_dir, abs_project_dir, abs_file_path)
|
|
355
|
-
else:
|
|
356
|
-
return self.replace_in_file_normal(file_path, diff_content, source_dir, abs_project_dir, abs_file_path)
|
|
261
|
+
|
|
262
|
+
return self.replace_in_file_normal(file_path, diff_content, source_dir, abs_project_dir, abs_file_path)
|