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.

Files changed (349) hide show
  1. {auto_coder-0.1.363 → auto_coder-0.1.364}/PKG-INFO +2 -2
  2. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/PKG-INFO +2 -2
  3. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/SOURCES.txt +15 -0
  4. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/requires.txt +1 -1
  5. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py +1 -1
  6. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder_runner.py +2 -0
  7. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/__init__.py +2 -0
  8. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/__init__.py +21 -0
  9. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/backup.py +264 -0
  10. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/examples.py +217 -0
  11. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/manager.py +404 -0
  12. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/models.py +156 -0
  13. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/store.py +383 -0
  14. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_backup.py +242 -0
  15. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_manager.py +570 -0
  16. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_models.py +360 -0
  17. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_store.py +327 -0
  18. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/test_utils.py +297 -0
  19. auto_coder-0.1.364/src/autocoder/common/file_checkpoint/utils.py +119 -0
  20. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/rulefiles/autocoderrules_utils.py +114 -55
  21. auto_coder-0.1.364/src/autocoder/common/save_formatted_log.py +125 -0
  22. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit.py +318 -197
  23. {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
  24. {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
  25. auto_coder-0.1.364/src/autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +322 -0
  26. {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
  27. auto_coder-0.1.364/src/autocoder/compilers/normal_compiler.py +64 -0
  28. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_manager_singleton.py +133 -4
  29. auto_coder-0.1.364/src/autocoder/linters/normal_linter.py +373 -0
  30. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/python_linter.py +4 -2
  31. auto_coder-0.1.364/src/autocoder/version.py +1 -0
  32. auto_coder-0.1.363/src/autocoder/common/save_formatted_log.py +0 -54
  33. auto_coder-0.1.363/src/autocoder/version.py +0 -1
  34. {auto_coder-0.1.363 → auto_coder-0.1.364}/LICENSE +0 -0
  35. {auto_coder-0.1.363 → auto_coder-0.1.364}/README.md +0 -0
  36. {auto_coder-0.1.363 → auto_coder-0.1.364}/setup.cfg +0 -0
  37. {auto_coder-0.1.363 → auto_coder-0.1.364}/setup.py +0 -0
  38. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  39. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/entry_points.txt +0 -0
  40. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/auto_coder.egg-info/top_level.txt +0 -0
  41. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/__init__.py +0 -0
  42. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/__init__.py +0 -0
  43. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/agentic_filter.py +0 -0
  44. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  45. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_filegroup.py +0 -0
  46. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_guess_query.py +0 -0
  47. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_learn.py +0 -0
  48. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  49. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_review_commit.py +0 -0
  50. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/auto_tool.py +0 -0
  51. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/__init__.py +0 -0
  52. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/agent_hub.py +0 -0
  53. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/agentic_lang.py +0 -0
  54. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/agentic_tool_display.py +0 -0
  55. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/base_agent.py +0 -0
  56. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/default_tools.py +0 -0
  57. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/test_base_agent.py +0 -0
  58. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tool_registry.py +0 -0
  59. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/__init__.py +0 -0
  60. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py +0 -0
  61. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py +0 -0
  62. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/base_tool_resolver.py +0 -0
  63. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/example_tool_resolver.py +0 -0
  64. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py +0 -0
  65. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py +0 -0
  66. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +0 -0
  67. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/replace_in_file_tool_resolver.py +0 -0
  68. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py +0 -0
  69. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py +0 -0
  70. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py +0 -0
  71. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/use_mcp_tool_resolver.py +0 -0
  72. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +0 -0
  73. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/types.py +0 -0
  74. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/base_agentic/utils.py +0 -0
  75. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/coder.py +0 -0
  76. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/designer.py +0 -0
  77. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/planner.py +0 -0
  78. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/agent/project_reader.py +0 -0
  79. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder.py +0 -0
  80. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder_rag.py +0 -0
  81. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/auto_coder_server.py +0 -0
  82. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/benchmark.py +0 -0
  83. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/__init__.py +0 -0
  84. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/conf_command.py +0 -0
  85. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/models_command.py +0 -0
  86. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat/rules_command.py +0 -0
  87. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat_auto_coder.py +0 -0
  88. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/chat_auto_coder_lang.py +0 -0
  89. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/command_args.py +0 -0
  90. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/command_parser.py +0 -0
  91. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/__init__.py +0 -0
  92. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/auto_command.py +0 -0
  93. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/auto_web.py +0 -0
  94. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/commands/tools.py +0 -0
  95. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/JupyterClient.py +0 -0
  96. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ShellClient.py +0 -0
  97. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/action_yml_file_manager.py +0 -0
  98. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/anything2images.py +0 -0
  99. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/anything2img.py +0 -0
  100. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/audio.py +0 -0
  101. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/auto_coder_lang.py +0 -0
  102. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/auto_configure.py +0 -0
  103. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/buildin_tokenizer.py +0 -0
  104. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/chunk_validation.py +0 -0
  105. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/cleaner.py +0 -0
  106. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_execute.py +0 -0
  107. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate.py +0 -0
  108. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  109. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  110. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  111. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge.py +0 -0
  112. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  113. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  114. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  115. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/code_modification_ranker.py +0 -0
  116. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_completer.py +0 -0
  117. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_completer_v2.py +0 -0
  118. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_generator.py +0 -0
  119. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/command_templates.py +0 -0
  120. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/computer_use.py +0 -0
  121. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conf_import_export.py +0 -0
  122. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conf_utils.py +0 -0
  123. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conf_validator.py +0 -0
  124. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/const.py +0 -0
  125. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/context_pruner.py +0 -0
  126. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversation_pruner.py +0 -0
  127. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/__init__.py +0 -0
  128. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/compatibility.py +0 -0
  129. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/conversation_manager.py +0 -0
  130. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/conversations/example.py +0 -0
  131. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/directory_cache/__init__.py +0 -0
  132. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/directory_cache/cache.py +0 -0
  133. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/directory_cache/test_cache.py +0 -0
  134. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/file_monitor/__init__.py +0 -0
  135. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/file_monitor/monitor.py +0 -0
  136. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/files.py +0 -0
  137. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/git_utils.py +0 -0
  138. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/global_cancel.py +0 -0
  139. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ignorefiles/__init__.py +0 -0
  140. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ignorefiles/ignore_file_utils.py +0 -0
  141. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
  142. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/image_to_page.py +0 -0
  143. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/index_import_export.py +0 -0
  144. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/interpreter.py +0 -0
  145. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/llm_rerank.py +0 -0
  146. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_hub.py +0 -0
  147. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_server.py +0 -0
  148. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_server_install.py +0 -0
  149. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_server_types.py +0 -0
  150. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  151. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  152. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  153. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/mcp_tools.py +0 -0
  154. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/memory_manager.py +0 -0
  155. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/model_speed_tester.py +0 -0
  156. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/openai_content.py +0 -0
  157. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/printer.py +0 -0
  158. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/recall_validation.py +0 -0
  159. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/result_manager.py +0 -0
  160. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/rulefiles/__init__.py +0 -0
  161. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/run_cmd.py +0 -0
  162. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/screenshots.py +0 -0
  163. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/search.py +0 -0
  164. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/search_replace.py +0 -0
  165. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/shells.py +0 -0
  166. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/stats_panel.py +0 -0
  167. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/stream_out_type.py +0 -0
  168. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/sys_prompt.py +0 -0
  169. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/test_run_cmd.py +0 -0
  170. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/text.py +0 -0
  171. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/token_cost_caculate.py +0 -0
  172. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/types.py +0 -0
  173. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  174. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/__init__.py +0 -0
  175. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/__init__.py +0 -0
  176. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
  177. {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
  178. {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
  179. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
  189. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
  190. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
  191. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate.py +0 -0
  192. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
  193. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
  194. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
  195. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge.py +0 -0
  196. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
  197. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
  198. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
  199. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_diff_manager.py +0 -0
  200. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
  201. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_manager.py +0 -0
  202. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
  203. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/__init__.py +0 -0
  204. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/base_compiler.py +0 -0
  205. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/compiler_config_api.py +0 -0
  206. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/compiler_config_manager.py +0 -0
  207. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/compiler_factory.py +0 -0
  208. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/java_compiler.py +0 -0
  209. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/models.py +0 -0
  210. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/provided_compiler.py +0 -0
  211. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/python_compiler.py +0 -0
  212. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/reactjs_compiler.py +0 -0
  213. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/shadow_compiler.py +0 -0
  214. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/compilers/vue_compiler.py +0 -0
  215. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/data/byzerllm.md +0 -0
  216. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/data/tokenizer.json +0 -0
  217. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/db/__init__.py +0 -0
  218. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/db/store.py +0 -0
  219. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/__init__.py +0 -0
  220. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/__init__.py +0 -0
  221. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/action.py +0 -0
  222. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/copilot.py +0 -0
  223. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  224. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  225. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/__init__.py +0 -0
  226. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_content.py +0 -0
  227. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_manager.py +0 -0
  228. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_store.py +0 -0
  229. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/events/event_types.py +0 -0
  230. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/helper/__init__.py +0 -0
  231. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/helper/project_creator.py +0 -0
  232. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/helper/rag_doc_creator.py +0 -0
  233. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/__init__.py +0 -0
  234. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/entry.py +0 -0
  235. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/filter/__init__.py +0 -0
  236. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/filter/normal_filter.py +0 -0
  237. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/filter/quick_filter.py +0 -0
  238. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/for_command.py +0 -0
  239. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/index.py +0 -0
  240. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/symbols_utils.py +0 -0
  241. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/index/types.py +0 -0
  242. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/lang.py +0 -0
  243. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/__init__.py +0 -0
  244. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/base_linter.py +0 -0
  245. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/linter_factory.py +0 -0
  246. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/models.py +0 -0
  247. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/reactjs_linter.py +0 -0
  248. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/shadow_linter.py +0 -0
  249. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/linters/vue_linter.py +0 -0
  250. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/__init__.py +0 -0
  251. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/active_context_manager.py +0 -0
  252. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/active_package.py +0 -0
  253. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/async_processor.py +0 -0
  254. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/memory/directory_mapper.py +0 -0
  255. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/models.py +0 -0
  256. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/__init__.py +0 -0
  257. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  258. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  259. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/sample_plugin.py +0 -0
  260. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  261. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/plugins/utils.py +0 -0
  262. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/privacy/__init__.py +0 -0
  263. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/privacy/model_filter.py +0 -0
  264. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/pyproject/__init__.py +0 -0
  265. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/__init__.py +0 -0
  266. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/api_server.py +0 -0
  267. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/__init__.py +0 -0
  268. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/base_cache.py +0 -0
  269. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  270. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  271. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
  272. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  273. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  274. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  275. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  276. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/cache/simple_cache.py +0 -0
  277. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/conversation_to_queries.py +0 -0
  278. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/doc_filter.py +0 -0
  279. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/document_retriever.py +0 -0
  280. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/lang.py +0 -0
  281. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/llm_wrapper.py +0 -0
  282. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/__init__.py +0 -0
  283. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  284. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  285. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/filter_utils.py +0 -0
  286. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/image_loader.py +0 -0
  287. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  288. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  289. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/long_context_rag.py +0 -0
  290. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  291. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/rag_config.py +0 -0
  292. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/rag_entry.py +0 -0
  293. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/raw_rag.py +0 -0
  294. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/relevant_utils.py +0 -0
  295. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/searchable.py +0 -0
  296. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/simple_directory_reader.py +0 -0
  297. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/simple_rag.py +0 -0
  298. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/stream_event/__init__.py +0 -0
  299. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  300. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/stream_event/types.py +0 -0
  301. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/test_doc_filter.py +0 -0
  302. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/test_long_context_rag.py +0 -0
  303. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/test_token_limiter.py +0 -0
  304. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_checker.py +0 -0
  305. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_counter.py +0 -0
  306. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_limiter.py +0 -0
  307. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/token_limiter_utils.py +0 -0
  308. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/types.py +0 -0
  309. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/utils.py +0 -0
  310. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/rag/variable_holder.py +0 -0
  311. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/regexproject/__init__.py +0 -0
  312. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/run_context.py +0 -0
  313. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/shadows/__init__.py +0 -0
  314. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/shadows/shadow_manager.py +0 -0
  315. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/suffixproject/__init__.py +0 -0
  316. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/tsproject/__init__.py +0 -0
  317. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/__init__.py +0 -0
  318. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/_markitdown.py +0 -0
  319. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  320. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  321. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/auto_project_type.py +0 -0
  322. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  323. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/conversation_store.py +0 -0
  324. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  325. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/llms.py +0 -0
  326. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/log_capture.py +0 -0
  327. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/model_provider_selector.py +0 -0
  328. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/multi_turn.py +0 -0
  329. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/operate_config_api.py +0 -0
  330. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/print_table.py +0 -0
  331. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/project_structure.py +0 -0
  332. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/queue_communicate.py +0 -0
  333. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/request_event_queue.py +0 -0
  334. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/request_queue.py +0 -0
  335. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/rest.py +0 -0
  336. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/stream_thinking.py +0 -0
  337. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/tests.py +0 -0
  338. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/thread_utils.py +0 -0
  339. {auto_coder-0.1.363 → auto_coder-0.1.364}/src/autocoder/utils/types.py +0 -0
  340. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_action_regex_project.py +0 -0
  341. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_action_yml_file_manager.py +0 -0
  342. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_chat_auto_coder.py +0 -0
  343. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_code_auto_merge_editblock.py +0 -0
  344. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_command_completer.py +0 -0
  345. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_planner.py +0 -0
  346. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_plugins.py +0 -0
  347. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_privacy.py +0 -0
  348. {auto_coder-0.1.363 → auto_coder-0.1.364}/tests/test_queue_communicate.py +0 -0
  349. {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.363
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.181
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.363
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.181
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
@@ -18,7 +18,7 @@ prompt-toolkit
18
18
  tokenizers
19
19
  aiofiles
20
20
  readerwriterlock
21
- byzerllm[saas]>=0.1.181
21
+ byzerllm[saas]>=0.1.182
22
22
  patch
23
23
  diff_match_patch
24
24
  GitPython
@@ -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()