auto-coder 0.1.363__tar.gz → 0.1.364__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.363 → auto_coder-0.1.364}/PKG-INFO +2 -2
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/PKG-INFO +2 -2
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/SOURCES.txt +15 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/requires.txt +1 -1
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py +1 -1
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder_runner.py +2 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/__init__.py +2 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/__init__.py +21 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/backup.py +264 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/examples.py +217 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/manager.py +404 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/models.py +156 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/store.py +383 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_backup.py +242 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_manager.py +570 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_models.py +360 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_store.py +327 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_utils.py +297 -0
- auto_coder-0.1.364/src/autocoder/common/file_checkpoint/utils.py +119 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/rulefiles/autocoderrules_utils.py +114 -55
- auto_coder-0.1.364/src/autocoder/common/save_formatted_log.py +125 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit.py +318 -197
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +2 -2
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +27 -4
- auto_coder-0.1.364/src/autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +322 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +83 -61
- auto_coder-0.1.364/src/autocoder/compilers/normal_compiler.py +64 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_manager_singleton.py +133 -4
- auto_coder-0.1.364/src/autocoder/linters/normal_linter.py +373 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/python_linter.py +4 -2
- auto_coder-0.1.364/src/autocoder/version.py +1 -0
- auto_coder-0.1.363/src/autocoder/common/save_formatted_log.py +0 -54
- auto_coder-0.1.363/src/autocoder/version.py +0 -1
- {auto_coder-0.1.363 → auto_coder-0.1.364}/LICENSE +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/README.md +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/setup.cfg +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/setup.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/dependency_links.txt +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/entry_points.txt +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/top_level.txt +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/agentic_filter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_demand_organizer.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_filegroup.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_guess_query.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_learn.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_review_commit.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_tool.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/agent_hub.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/agentic_lang.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/agentic_tool_display.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/base_agent.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/default_tools.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/test_base_agent.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tool_registry.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/base_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/example_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/replace_in_file_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/use_mcp_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/coder.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/designer.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/planner.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/project_reader.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder_rag.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder_server.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/benchmark.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/conf_command.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/models_command.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/rules_command.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat_auto_coder.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat_auto_coder_lang.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/command_args.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/command_parser.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/auto_command.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/auto_web.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/tools.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/JupyterClient.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ShellClient.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/action_yml_file_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/anything2images.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/anything2img.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/audio.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/auto_coder_lang.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/auto_configure.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/buildin_tokenizer.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/chunk_validation.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/cleaner.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_execute.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_modification_ranker.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_completer.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_completer_v2.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_generator.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_templates.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/computer_use.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conf_import_export.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conf_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conf_validator.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/const.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/context_pruner.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversation_pruner.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/compatibility.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/conversation_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/example.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/directory_cache/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/directory_cache/cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/directory_cache/test_cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/file_monitor/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/file_monitor/monitor.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/files.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/git_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/global_cancel.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ignorefiles/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ignorefiles/ignore_file_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/image_to_page.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/index_import_export.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/interpreter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/llm_rerank.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_hub.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_server.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_server_install.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_server_types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_servers/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_tools.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/memory_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/model_speed_tester.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/openai_content.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/printer.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/recall_validation.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/result_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/rulefiles/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/run_cmd.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/screenshots.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/search.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/search_replace.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/shells.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/stats_panel.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/stream_out_type.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/sys_prompt.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/test_run_cmd.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/text.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/token_cost_caculate.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/utils_code_auto_generate.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_diff_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/base_compiler.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/compiler_config_api.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/compiler_config_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/compiler_factory.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/java_compiler.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/models.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/provided_compiler.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/python_compiler.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/reactjs_compiler.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/shadow_compiler.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/vue_compiler.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/data/byzerllm.md +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/data/tokenizer.json +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/db/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/db/store.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/action.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/copilot.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_content.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_store.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/helper/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/helper/project_creator.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/helper/rag_doc_creator.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/entry.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/filter/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/filter/normal_filter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/filter/quick_filter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/for_command.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/index.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/symbols_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/lang.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/base_linter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/linter_factory.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/models.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/reactjs_linter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/shadow_linter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/vue_linter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/active_context_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/active_package.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/async_processor.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/directory_mapper.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/models.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/git_helper_plugin.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/sample_plugin.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/token_helper_plugin.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/privacy/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/privacy/model_filter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/pyproject/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/api_server.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/base_cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/simple_cache.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/conversation_to_queries.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/doc_filter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/document_retriever.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/lang.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/llm_wrapper.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/docx_loader.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/excel_loader.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/filter_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/image_loader.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/long_context_rag.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/rag_config.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/rag_entry.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/raw_rag.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/relevant_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/searchable.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/simple_directory_reader.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/simple_rag.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/stream_event/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/stream_event/event_writer.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/stream_event/types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/test_doc_filter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/test_long_context_rag.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/test_token_limiter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_checker.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_counter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_limiter.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_limiter_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/variable_holder.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/regexproject/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/run_context.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/shadows/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/shadows/shadow_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/suffixproject/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/tsproject/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/_markitdown.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/auto_project_type.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/conversation_store.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/llm_client_interceptors.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/llms.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/log_capture.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/model_provider_selector.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/multi_turn.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/operate_config_api.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/print_table.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/project_structure.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/queue_communicate.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/request_event_queue.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/request_queue.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/rest.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/stream_thinking.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/tests.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/thread_utils.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/types.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_action_regex_project.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_action_yml_file_manager.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_chat_auto_coder.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_code_auto_merge_editblock.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_command_completer.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_planner.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_plugins.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_privacy.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_queue_communicate.py +0 -0
- {auto_coder-0.1.363 → auto_coder-0.1.364}/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.364
|
|
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.182
|
|
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.364
|
|
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.182
|
|
32
32
|
Requires-Dist: patch
|
|
33
33
|
Requires-Dist: diff_match_patch
|
|
34
34
|
Requires-Dist: GitPython
|
|
@@ -139,6 +139,18 @@ src/autocoder/common/conversations/example.py
|
|
|
139
139
|
src/autocoder/common/directory_cache/__init__.py
|
|
140
140
|
src/autocoder/common/directory_cache/cache.py
|
|
141
141
|
src/autocoder/common/directory_cache/test_cache.py
|
|
142
|
+
src/autocoder/common/file_checkpoint/__init__.py
|
|
143
|
+
src/autocoder/common/file_checkpoint/backup.py
|
|
144
|
+
src/autocoder/common/file_checkpoint/examples.py
|
|
145
|
+
src/autocoder/common/file_checkpoint/manager.py
|
|
146
|
+
src/autocoder/common/file_checkpoint/models.py
|
|
147
|
+
src/autocoder/common/file_checkpoint/store.py
|
|
148
|
+
src/autocoder/common/file_checkpoint/test_backup.py
|
|
149
|
+
src/autocoder/common/file_checkpoint/test_manager.py
|
|
150
|
+
src/autocoder/common/file_checkpoint/test_models.py
|
|
151
|
+
src/autocoder/common/file_checkpoint/test_store.py
|
|
152
|
+
src/autocoder/common/file_checkpoint/test_utils.py
|
|
153
|
+
src/autocoder/common/file_checkpoint/utils.py
|
|
142
154
|
src/autocoder/common/file_monitor/__init__.py
|
|
143
155
|
src/autocoder/common/file_monitor/monitor.py
|
|
144
156
|
src/autocoder/common/ignorefiles/__init__.py
|
|
@@ -180,6 +192,7 @@ src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py
|
|
|
180
192
|
src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py
|
|
181
193
|
src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py
|
|
182
194
|
src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py
|
|
195
|
+
src/autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py
|
|
183
196
|
src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py
|
|
184
197
|
src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py
|
|
185
198
|
src/autocoder/compilers/__init__.py
|
|
@@ -189,6 +202,7 @@ src/autocoder/compilers/compiler_config_manager.py
|
|
|
189
202
|
src/autocoder/compilers/compiler_factory.py
|
|
190
203
|
src/autocoder/compilers/java_compiler.py
|
|
191
204
|
src/autocoder/compilers/models.py
|
|
205
|
+
src/autocoder/compilers/normal_compiler.py
|
|
192
206
|
src/autocoder/compilers/provided_compiler.py
|
|
193
207
|
src/autocoder/compilers/python_compiler.py
|
|
194
208
|
src/autocoder/compilers/reactjs_compiler.py
|
|
@@ -226,6 +240,7 @@ src/autocoder/linters/__init__.py
|
|
|
226
240
|
src/autocoder/linters/base_linter.py
|
|
227
241
|
src/autocoder/linters/linter_factory.py
|
|
228
242
|
src/autocoder/linters/models.py
|
|
243
|
+
src/autocoder/linters/normal_linter.py
|
|
229
244
|
src/autocoder/linters/python_linter.py
|
|
230
245
|
src/autocoder/linters/reactjs_linter.py
|
|
231
246
|
src/autocoder/linters/shadow_linter.py
|
|
@@ -3,13 +3,13 @@ import subprocess
|
|
|
3
3
|
from typing import Dict, Any, Optional
|
|
4
4
|
from autocoder.agent.base_agentic.tools.base_tool_resolver import BaseToolResolver
|
|
5
5
|
from autocoder.agent.base_agentic.types import ExecuteCommandTool, ToolResult # Import ToolResult from types
|
|
6
|
-
from autocoder.common import shells
|
|
7
6
|
from autocoder.common.printer import Printer
|
|
8
7
|
from loguru import logger
|
|
9
8
|
import typing
|
|
10
9
|
from autocoder.common import AutoCoderArgs
|
|
11
10
|
from autocoder.events.event_manager_singleton import get_event_manager
|
|
12
11
|
from autocoder.run_context import get_run_context
|
|
12
|
+
from autocoder.common.run_cmd import run_cmd_subprocess
|
|
13
13
|
if typing.TYPE_CHECKING:
|
|
14
14
|
from ..base_agent import BaseAgent
|
|
15
15
|
|
|
@@ -2850,6 +2850,7 @@ def auto_command(query: str,extra_args: Dict[str,Any]={}):
|
|
|
2850
2850
|
else:
|
|
2851
2851
|
agent.run_in_terminal(AgenticEditRequest(user_input=query))
|
|
2852
2852
|
|
|
2853
|
+
completer.refresh_files()
|
|
2853
2854
|
return
|
|
2854
2855
|
|
|
2855
2856
|
args = get_final_config()
|
|
@@ -2902,3 +2903,4 @@ def auto_command(query: str,extra_args: Dict[str,Any]={}):
|
|
|
2902
2903
|
border_style="blue",
|
|
2903
2904
|
padding=(1, 2)
|
|
2904
2905
|
))
|
|
2906
|
+
completer.refresh_files()
|
|
@@ -432,6 +432,8 @@ class AutoCoderArgs(pydantic.BaseModel):
|
|
|
432
432
|
auto_fix_lint_max_attempts: Optional[int] = 5
|
|
433
433
|
auto_fix_compile_max_attempts: Optional[int] = 5
|
|
434
434
|
auto_fix_merge_max_attempts: Optional[int] = 5
|
|
435
|
+
|
|
436
|
+
enable_auto_select_rules: Optional[bool] = True
|
|
435
437
|
|
|
436
438
|
ignore_clean_shadows: Optional[bool] = False
|
|
437
439
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
文件变更管理模块
|
|
3
|
+
|
|
4
|
+
该模块提供了一种可靠的机制来应用、记录和撤销对项目文件的修改。
|
|
5
|
+
主要功能包括:
|
|
6
|
+
1. 将影子系统中的文件变更安全地应用到用户的实际项目中
|
|
7
|
+
2. 记录每次变更的历史,支持多版本撤销功能
|
|
8
|
+
3. 提供简单直观的API,便于集成到现有的编辑流程中
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from autocoder.common.file_checkpoint.models import (
|
|
12
|
+
FileChange, ChangeRecord, ApplyResult, UndoResult, DiffResult
|
|
13
|
+
)
|
|
14
|
+
from autocoder.common.file_checkpoint.manager import FileChangeManager
|
|
15
|
+
from autocoder.common.file_checkpoint.store import FileChangeStore
|
|
16
|
+
from autocoder.common.file_checkpoint.backup import FileBackupManager
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
'FileChange', 'ChangeRecord', 'ApplyResult', 'UndoResult', 'DiffResult',
|
|
20
|
+
'FileChangeManager', 'FileChangeStore', 'FileBackupManager'
|
|
21
|
+
]
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"""
|
|
2
|
+
文件备份管理器
|
|
3
|
+
|
|
4
|
+
负责文件的备份和恢复操作,支持多版本文件备份。
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import uuid
|
|
9
|
+
import shutil
|
|
10
|
+
import logging
|
|
11
|
+
from typing import Optional, Dict, List, Tuple
|
|
12
|
+
from datetime import datetime
|
|
13
|
+
import json
|
|
14
|
+
import threading
|
|
15
|
+
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class FileBackupManager:
|
|
20
|
+
"""负责文件的备份和恢复操作"""
|
|
21
|
+
|
|
22
|
+
def __init__(self, backup_dir: Optional[str] = None):
|
|
23
|
+
"""
|
|
24
|
+
初始化备份管理器
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
backup_dir: 备份文件存储目录,如果为None则使用默认目录
|
|
28
|
+
"""
|
|
29
|
+
if backup_dir is None:
|
|
30
|
+
# 默认备份目录为项目根目录下的.auto-coder/checkpoint
|
|
31
|
+
backup_dir = os.path.join(os.getcwd(), ".auto-coder", "checkpoint")
|
|
32
|
+
|
|
33
|
+
self.backup_dir = backup_dir
|
|
34
|
+
self.metadata_file = os.path.join(backup_dir, "backup_metadata.json")
|
|
35
|
+
self.lock = threading.RLock()
|
|
36
|
+
|
|
37
|
+
# 确保备份目录存在
|
|
38
|
+
os.makedirs(backup_dir, exist_ok=True)
|
|
39
|
+
|
|
40
|
+
# 加载备份元数据
|
|
41
|
+
self.metadata = self._load_metadata()
|
|
42
|
+
|
|
43
|
+
def backup_file(self, file_path: str) -> Optional[str]:
|
|
44
|
+
"""
|
|
45
|
+
备份指定文件
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
file_path: 文件路径
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
str: 备份文件ID,如果文件不存在则返回None
|
|
52
|
+
"""
|
|
53
|
+
if not os.path.exists(file_path):
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
with self.lock:
|
|
57
|
+
# 生成唯一的备份ID
|
|
58
|
+
backup_id = str(uuid.uuid4())
|
|
59
|
+
|
|
60
|
+
# 构建备份文件路径
|
|
61
|
+
backup_file_path = os.path.join(self.backup_dir, backup_id)
|
|
62
|
+
|
|
63
|
+
try:
|
|
64
|
+
# 复制文件到备份目录
|
|
65
|
+
shutil.copy2(file_path, backup_file_path)
|
|
66
|
+
|
|
67
|
+
# 更新元数据
|
|
68
|
+
self.metadata[backup_id] = {
|
|
69
|
+
"original_path": file_path,
|
|
70
|
+
"timestamp": datetime.now().timestamp(),
|
|
71
|
+
"size": os.path.getsize(file_path)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
# 保存元数据
|
|
75
|
+
self._save_metadata()
|
|
76
|
+
|
|
77
|
+
logger.debug(f"已备份文件 {file_path} 到 {backup_file_path}")
|
|
78
|
+
return backup_id
|
|
79
|
+
|
|
80
|
+
except Exception as e:
|
|
81
|
+
logger.error(f"备份文件 {file_path} 失败: {str(e)}")
|
|
82
|
+
# 清理可能部分创建的备份文件
|
|
83
|
+
if os.path.exists(backup_file_path):
|
|
84
|
+
os.remove(backup_file_path)
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
def restore_file(self, file_path: str, backup_id: str) -> bool:
|
|
88
|
+
"""
|
|
89
|
+
从备份恢复文件
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
file_path: 目标文件路径
|
|
93
|
+
backup_id: 备份文件ID
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
bool: 恢复是否成功
|
|
97
|
+
"""
|
|
98
|
+
with self.lock:
|
|
99
|
+
# 检查备份ID是否存在
|
|
100
|
+
if backup_id not in self.metadata:
|
|
101
|
+
logger.error(f"备份ID {backup_id} 不存在")
|
|
102
|
+
return False
|
|
103
|
+
|
|
104
|
+
# 构建备份文件路径
|
|
105
|
+
backup_file_path = os.path.join(self.backup_dir, backup_id)
|
|
106
|
+
|
|
107
|
+
# 检查备份文件是否存在
|
|
108
|
+
if not os.path.exists(backup_file_path):
|
|
109
|
+
logger.error(f"备份文件 {backup_file_path} 不存在")
|
|
110
|
+
return False
|
|
111
|
+
|
|
112
|
+
try:
|
|
113
|
+
# 确保目标目录存在
|
|
114
|
+
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
|
115
|
+
|
|
116
|
+
# 复制备份文件到目标路径
|
|
117
|
+
shutil.copy2(backup_file_path, file_path)
|
|
118
|
+
|
|
119
|
+
logger.debug(f"已从 {backup_file_path} 恢复文件到 {file_path}")
|
|
120
|
+
return True
|
|
121
|
+
|
|
122
|
+
except Exception as e:
|
|
123
|
+
logger.error(f"恢复文件 {file_path} 失败: {str(e)}")
|
|
124
|
+
return False
|
|
125
|
+
|
|
126
|
+
def get_backup_content(self, backup_id: str) -> Optional[str]:
|
|
127
|
+
"""
|
|
128
|
+
获取备份文件的内容
|
|
129
|
+
|
|
130
|
+
Args:
|
|
131
|
+
backup_id: 备份文件ID
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
str: 备份文件内容,如果备份不存在则返回None
|
|
135
|
+
"""
|
|
136
|
+
with self.lock:
|
|
137
|
+
# 检查备份ID是否存在
|
|
138
|
+
if backup_id not in self.metadata:
|
|
139
|
+
logger.error(f"备份ID {backup_id} 不存在")
|
|
140
|
+
return None
|
|
141
|
+
|
|
142
|
+
# 构建备份文件路径
|
|
143
|
+
backup_file_path = os.path.join(self.backup_dir, backup_id)
|
|
144
|
+
|
|
145
|
+
# 检查备份文件是否存在
|
|
146
|
+
if not os.path.exists(backup_file_path):
|
|
147
|
+
logger.error(f"备份文件 {backup_file_path} 不存在")
|
|
148
|
+
return None
|
|
149
|
+
|
|
150
|
+
try:
|
|
151
|
+
# 读取备份文件内容
|
|
152
|
+
with open(backup_file_path, 'r', encoding='utf-8') as f:
|
|
153
|
+
return f.read()
|
|
154
|
+
|
|
155
|
+
except Exception as e:
|
|
156
|
+
logger.error(f"读取备份文件 {backup_file_path} 失败: {str(e)}")
|
|
157
|
+
return None
|
|
158
|
+
|
|
159
|
+
def delete_backup(self, backup_id: str) -> bool:
|
|
160
|
+
"""
|
|
161
|
+
删除指定的备份文件
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
backup_id: 备份文件ID
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
bool: 删除是否成功
|
|
168
|
+
"""
|
|
169
|
+
with self.lock:
|
|
170
|
+
# 检查备份ID是否存在
|
|
171
|
+
if backup_id not in self.metadata:
|
|
172
|
+
logger.error(f"备份ID {backup_id} 不存在")
|
|
173
|
+
return False
|
|
174
|
+
|
|
175
|
+
# 构建备份文件路径
|
|
176
|
+
backup_file_path = os.path.join(self.backup_dir, backup_id)
|
|
177
|
+
|
|
178
|
+
try:
|
|
179
|
+
# 删除备份文件
|
|
180
|
+
if os.path.exists(backup_file_path):
|
|
181
|
+
os.remove(backup_file_path)
|
|
182
|
+
|
|
183
|
+
# 更新元数据
|
|
184
|
+
del self.metadata[backup_id]
|
|
185
|
+
|
|
186
|
+
# 保存元数据
|
|
187
|
+
self._save_metadata()
|
|
188
|
+
|
|
189
|
+
logger.debug(f"已删除备份 {backup_id}")
|
|
190
|
+
return True
|
|
191
|
+
|
|
192
|
+
except Exception as e:
|
|
193
|
+
logger.error(f"删除备份 {backup_id} 失败: {str(e)}")
|
|
194
|
+
return False
|
|
195
|
+
|
|
196
|
+
def clean_old_backups(self, max_age_days: int = 30) -> int:
|
|
197
|
+
"""
|
|
198
|
+
清理过旧的备份文件
|
|
199
|
+
|
|
200
|
+
Args:
|
|
201
|
+
max_age_days: 最大保留天数
|
|
202
|
+
|
|
203
|
+
Returns:
|
|
204
|
+
int: 清理的备份文件数量
|
|
205
|
+
"""
|
|
206
|
+
with self.lock:
|
|
207
|
+
now = datetime.now().timestamp()
|
|
208
|
+
max_age_seconds = max_age_days * 24 * 60 * 60
|
|
209
|
+
|
|
210
|
+
backup_ids_to_delete = []
|
|
211
|
+
|
|
212
|
+
# 找出过旧的备份
|
|
213
|
+
for backup_id, metadata in self.metadata.items():
|
|
214
|
+
if now - metadata["timestamp"] > max_age_seconds:
|
|
215
|
+
backup_ids_to_delete.append(backup_id)
|
|
216
|
+
|
|
217
|
+
# 删除过旧的备份
|
|
218
|
+
deleted_count = 0
|
|
219
|
+
for backup_id in backup_ids_to_delete:
|
|
220
|
+
if self.delete_backup(backup_id):
|
|
221
|
+
deleted_count += 1
|
|
222
|
+
|
|
223
|
+
return deleted_count
|
|
224
|
+
|
|
225
|
+
def get_backups_for_file(self, file_path: str) -> List[Tuple[str, float]]:
|
|
226
|
+
"""
|
|
227
|
+
获取指定文件的所有备份
|
|
228
|
+
|
|
229
|
+
Args:
|
|
230
|
+
file_path: 文件路径
|
|
231
|
+
|
|
232
|
+
Returns:
|
|
233
|
+
List[Tuple[str, float]]: 备份ID和时间戳的列表,按时间戳降序排序
|
|
234
|
+
"""
|
|
235
|
+
with self.lock:
|
|
236
|
+
backups = []
|
|
237
|
+
|
|
238
|
+
for backup_id, metadata in self.metadata.items():
|
|
239
|
+
if metadata["original_path"] == file_path:
|
|
240
|
+
backups.append((backup_id, metadata["timestamp"]))
|
|
241
|
+
|
|
242
|
+
# 按时间戳降序排序
|
|
243
|
+
backups.sort(key=lambda x: x[1], reverse=True)
|
|
244
|
+
|
|
245
|
+
return backups
|
|
246
|
+
|
|
247
|
+
def _load_metadata(self) -> Dict:
|
|
248
|
+
"""加载备份元数据"""
|
|
249
|
+
if os.path.exists(self.metadata_file):
|
|
250
|
+
try:
|
|
251
|
+
with open(self.metadata_file, 'r', encoding='utf-8') as f:
|
|
252
|
+
return json.load(f)
|
|
253
|
+
except Exception as e:
|
|
254
|
+
logger.error(f"加载备份元数据失败: {str(e)}")
|
|
255
|
+
|
|
256
|
+
return {}
|
|
257
|
+
|
|
258
|
+
def _save_metadata(self) -> None:
|
|
259
|
+
"""保存备份元数据"""
|
|
260
|
+
try:
|
|
261
|
+
with open(self.metadata_file, 'w', encoding='utf-8') as f:
|
|
262
|
+
json.dump(self.metadata, f, indent=2)
|
|
263
|
+
except Exception as e:
|
|
264
|
+
logger.error(f"保存备份元数据失败: {str(e)}")
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"""
|
|
2
|
+
文件变更管理模块的使用示例
|
|
3
|
+
|
|
4
|
+
展示如何使用文件变更管理模块进行文件变更的应用和撤销。
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
import json
|
|
10
|
+
from typing import Dict, Any
|
|
11
|
+
|
|
12
|
+
from autocoder.common.file_checkpoint.models import FileChange
|
|
13
|
+
from autocoder.common.file_checkpoint.manager import FileChangeManager
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def example_apply_changes(project_dir: str):
|
|
17
|
+
"""
|
|
18
|
+
示例:应用文件变更
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
project_dir: 项目目录
|
|
22
|
+
"""
|
|
23
|
+
print(f"示例:应用文件变更到项目 {project_dir}")
|
|
24
|
+
|
|
25
|
+
# 创建文件变更管理器
|
|
26
|
+
manager = FileChangeManager(project_dir)
|
|
27
|
+
|
|
28
|
+
# 准备文件变更
|
|
29
|
+
changes = {
|
|
30
|
+
"example.txt": FileChange(
|
|
31
|
+
file_path="example.txt",
|
|
32
|
+
content="这是一个示例文件\n用于演示文件变更管理模块的功能\n",
|
|
33
|
+
is_new=True
|
|
34
|
+
),
|
|
35
|
+
"README.md": FileChange(
|
|
36
|
+
file_path="README.md",
|
|
37
|
+
content="# 示例项目\n\n这是一个用于演示文件变更管理模块的示例项目。\n",
|
|
38
|
+
is_new=True
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
# 应用变更
|
|
43
|
+
result = manager.apply_changes(changes)
|
|
44
|
+
|
|
45
|
+
# 输出结果
|
|
46
|
+
if result.success:
|
|
47
|
+
print(f"成功应用了 {len(result.change_ids)} 个文件变更")
|
|
48
|
+
for change_id in result.change_ids:
|
|
49
|
+
print(f" - 变更ID: {change_id}")
|
|
50
|
+
else:
|
|
51
|
+
print("应用变更失败")
|
|
52
|
+
for file_path, error in result.errors.items():
|
|
53
|
+
print(f" - {file_path}: {error}")
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def example_preview_changes(project_dir: str):
|
|
57
|
+
"""
|
|
58
|
+
示例:预览文件变更
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
project_dir: 项目目录
|
|
62
|
+
"""
|
|
63
|
+
print(f"示例:预览文件变更")
|
|
64
|
+
|
|
65
|
+
# 创建文件变更管理器
|
|
66
|
+
manager = FileChangeManager(project_dir)
|
|
67
|
+
|
|
68
|
+
# 准备文件变更
|
|
69
|
+
changes = {
|
|
70
|
+
"example.txt": FileChange(
|
|
71
|
+
file_path="example.txt",
|
|
72
|
+
content="这是一个修改后的示例文件\n用于演示文件变更管理模块的功能\n新增的一行\n",
|
|
73
|
+
is_new=False
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
# 预览变更
|
|
78
|
+
diff_results = manager.preview_changes(changes)
|
|
79
|
+
|
|
80
|
+
# 输出差异
|
|
81
|
+
for file_path, diff_result in diff_results.items():
|
|
82
|
+
print(f"\n文件: {file_path}")
|
|
83
|
+
print(diff_result.get_diff_summary())
|
|
84
|
+
if diff_result.old_content is not None and not diff_result.is_new and not diff_result.is_deletion:
|
|
85
|
+
diff_text = manager.get_diff_text(diff_result.old_content, diff_result.new_content)
|
|
86
|
+
print("\n差异:")
|
|
87
|
+
print(diff_text)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def example_undo_changes(project_dir: str):
|
|
91
|
+
"""
|
|
92
|
+
示例:撤销文件变更
|
|
93
|
+
|
|
94
|
+
Args:
|
|
95
|
+
project_dir: 项目目录
|
|
96
|
+
"""
|
|
97
|
+
print(f"示例:撤销文件变更")
|
|
98
|
+
|
|
99
|
+
# 创建文件变更管理器
|
|
100
|
+
manager = FileChangeManager(project_dir)
|
|
101
|
+
|
|
102
|
+
# 撤销最近的变更
|
|
103
|
+
result = manager.undo_last_change()
|
|
104
|
+
|
|
105
|
+
# 输出结果
|
|
106
|
+
if result.success:
|
|
107
|
+
print(f"成功撤销了变更,恢复了 {len(result.restored_files)} 个文件")
|
|
108
|
+
for file_path in result.restored_files:
|
|
109
|
+
print(f" - {file_path}")
|
|
110
|
+
else:
|
|
111
|
+
print("撤销变更失败")
|
|
112
|
+
for file_path, error in result.errors.items():
|
|
113
|
+
print(f" - {file_path}: {error}")
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def example_get_history(project_dir: str):
|
|
117
|
+
"""
|
|
118
|
+
示例:获取变更历史
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
project_dir: 项目目录
|
|
122
|
+
"""
|
|
123
|
+
print(f"示例:获取变更历史")
|
|
124
|
+
|
|
125
|
+
# 创建文件变更管理器
|
|
126
|
+
manager = FileChangeManager(project_dir)
|
|
127
|
+
|
|
128
|
+
# 获取变更历史
|
|
129
|
+
changes = manager.get_change_history(limit=5)
|
|
130
|
+
|
|
131
|
+
# 输出历史记录
|
|
132
|
+
print(f"最近 {len(changes)} 条变更记录:")
|
|
133
|
+
for change in changes:
|
|
134
|
+
timestamp = change.timestamp
|
|
135
|
+
file_path = change.file_path
|
|
136
|
+
change_type = "新建" if change.is_new else "删除" if change.is_deletion else "修改"
|
|
137
|
+
print(f" - [{timestamp}] {change_type} {file_path} (ID: {change.change_id})")
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def example_integration_with_agentic_edit():
|
|
141
|
+
"""
|
|
142
|
+
示例:与 AgenticEdit 集成
|
|
143
|
+
|
|
144
|
+
展示如何将文件变更管理模块集成到 AgenticEdit 中
|
|
145
|
+
"""
|
|
146
|
+
print("示例:与 AgenticEdit 集成")
|
|
147
|
+
|
|
148
|
+
# 这是一个伪代码示例,展示如何修改 AgenticEdit.apply_changes 方法
|
|
149
|
+
code = """
|
|
150
|
+
def apply_changes(self):
|
|
151
|
+
\"\"\"
|
|
152
|
+
Apply all tracked file changes to the original project directory.
|
|
153
|
+
\"\"\"
|
|
154
|
+
from autocoder.common.file_checkpoint.models import FileChange
|
|
155
|
+
from autocoder.common.file_checkpoint.manager import FileChangeManager
|
|
156
|
+
|
|
157
|
+
# 创建文件变更管理器
|
|
158
|
+
manager = FileChangeManager(self.args.source_dir)
|
|
159
|
+
|
|
160
|
+
# 将影子系统的变更转换为 FileChange 对象
|
|
161
|
+
changes = {}
|
|
162
|
+
for file_path, change in self.get_all_file_changes().items():
|
|
163
|
+
changes[file_path] = FileChange(
|
|
164
|
+
file_path=file_path,
|
|
165
|
+
content=change.content,
|
|
166
|
+
is_new=not os.path.exists(file_path)
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
# 应用变更
|
|
170
|
+
result = manager.apply_changes(changes)
|
|
171
|
+
|
|
172
|
+
# 处理结果
|
|
173
|
+
if result.success:
|
|
174
|
+
# 继续执行原有的 Git 提交等逻辑
|
|
175
|
+
if not self.args.skip_commit:
|
|
176
|
+
try:
|
|
177
|
+
# ... 原有的 Git 提交代码 ...
|
|
178
|
+
except Exception as e:
|
|
179
|
+
# ... 原有的错误处理 ...
|
|
180
|
+
else:
|
|
181
|
+
# 处理应用变更失败的情况
|
|
182
|
+
error_messages = "\\n".join([f"{path}: {error}" for path, error in result.errors.items()])
|
|
183
|
+
self.printer.print_str_in_terminal(
|
|
184
|
+
f"Failed to apply changes:\\n{error_messages}",
|
|
185
|
+
style="red"
|
|
186
|
+
)
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
print(code)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def main():
|
|
193
|
+
"""主函数"""
|
|
194
|
+
if len(sys.argv) < 2:
|
|
195
|
+
print("用法: python examples.py <项目目录>")
|
|
196
|
+
return
|
|
197
|
+
|
|
198
|
+
project_dir = sys.argv[1]
|
|
199
|
+
|
|
200
|
+
# 运行示例
|
|
201
|
+
example_apply_changes(project_dir)
|
|
202
|
+
print("\n" + "-" * 50 + "\n")
|
|
203
|
+
|
|
204
|
+
example_preview_changes(project_dir)
|
|
205
|
+
print("\n" + "-" * 50 + "\n")
|
|
206
|
+
|
|
207
|
+
example_get_history(project_dir)
|
|
208
|
+
print("\n" + "-" * 50 + "\n")
|
|
209
|
+
|
|
210
|
+
example_undo_changes(project_dir)
|
|
211
|
+
print("\n" + "-" * 50 + "\n")
|
|
212
|
+
|
|
213
|
+
example_integration_with_agentic_edit()
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
if __name__ == "__main__":
|
|
217
|
+
main()
|