auto-coder 0.1.361__tar.gz → 0.1.362__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 (307) hide show
  1. {auto_coder-0.1.361 → auto_coder-0.1.362}/PKG-INFO +2 -1
  2. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/auto_coder.egg-info/PKG-INFO +2 -1
  3. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/auto_coder.egg-info/requires.txt +1 -0
  4. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/auto_learn.py +249 -262
  5. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/auto_coder.py +1 -1
  6. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/auto_coder_runner.py +34 -12
  7. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/commands/auto_command.py +227 -159
  8. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/__init__.py +2 -2
  9. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/ignorefiles/ignore_file_utils.py +12 -8
  10. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/result_manager.py +10 -2
  11. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/rulefiles/autocoderrules_utils.py +145 -0
  12. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit.py +32 -22
  13. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +15 -12
  14. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_generate_editblock.py +3 -1
  15. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/index.py +14 -8
  16. auto_coder-0.1.362/src/autocoder/privacy/model_filter.py +362 -0
  17. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/_markitdown.py +22 -3
  18. auto_coder-0.1.362/src/autocoder/version.py +1 -0
  19. auto_coder-0.1.361/src/autocoder/privacy/model_filter.py +0 -100
  20. auto_coder-0.1.361/src/autocoder/version.py +0 -1
  21. {auto_coder-0.1.361 → auto_coder-0.1.362}/LICENSE +0 -0
  22. {auto_coder-0.1.361 → auto_coder-0.1.362}/README.md +0 -0
  23. {auto_coder-0.1.361 → auto_coder-0.1.362}/setup.cfg +0 -0
  24. {auto_coder-0.1.361 → auto_coder-0.1.362}/setup.py +0 -0
  25. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/auto_coder.egg-info/SOURCES.txt +0 -0
  26. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  27. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/auto_coder.egg-info/entry_points.txt +0 -0
  28. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/auto_coder.egg-info/top_level.txt +0 -0
  29. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/__init__.py +0 -0
  30. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/__init__.py +0 -0
  31. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/agentic_filter.py +0 -0
  32. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  33. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/auto_filegroup.py +0 -0
  34. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/auto_guess_query.py +0 -0
  35. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  36. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/auto_review_commit.py +0 -0
  37. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/auto_tool.py +0 -0
  38. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/coder.py +0 -0
  39. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/designer.py +0 -0
  40. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/planner.py +0 -0
  41. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/agent/project_reader.py +0 -0
  42. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/auto_coder_rag.py +0 -0
  43. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/auto_coder_server.py +0 -0
  44. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/benchmark.py +0 -0
  45. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/chat/__init__.py +0 -0
  46. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/chat/conf_command.py +0 -0
  47. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/chat/models_command.py +0 -0
  48. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/chat/rules_command.py +0 -0
  49. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/chat_auto_coder.py +0 -0
  50. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/chat_auto_coder_lang.py +0 -0
  51. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/command_args.py +0 -0
  52. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/command_parser.py +0 -0
  53. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/commands/__init__.py +0 -0
  54. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/commands/auto_web.py +0 -0
  55. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/commands/tools.py +0 -0
  56. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/JupyterClient.py +0 -0
  57. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/ShellClient.py +0 -0
  58. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/action_yml_file_manager.py +0 -0
  59. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/anything2images.py +0 -0
  60. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/anything2img.py +0 -0
  61. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/audio.py +0 -0
  62. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/auto_coder_lang.py +0 -0
  63. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/auto_configure.py +0 -0
  64. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/buildin_tokenizer.py +0 -0
  65. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/chunk_validation.py +0 -0
  66. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/cleaner.py +0 -0
  67. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_execute.py +0 -0
  68. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_generate.py +0 -0
  69. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  70. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  71. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  72. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_merge.py +0 -0
  73. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  74. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  75. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  76. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/code_modification_ranker.py +0 -0
  77. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/command_completer.py +0 -0
  78. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/command_completer_v2.py +0 -0
  79. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/command_generator.py +0 -0
  80. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/command_templates.py +0 -0
  81. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/computer_use.py +0 -0
  82. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conf_import_export.py +0 -0
  83. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conf_utils.py +0 -0
  84. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conf_validator.py +0 -0
  85. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/const.py +0 -0
  86. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/context_pruner.py +0 -0
  87. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conversation_pruner.py +0 -0
  88. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conversations/__init__.py +0 -0
  89. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conversations/compatibility.py +0 -0
  90. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conversations/conversation_manager.py +0 -0
  91. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/conversations/example.py +0 -0
  92. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/directory_cache/__init__.py +0 -0
  93. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/directory_cache/cache.py +0 -0
  94. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/directory_cache/test_cache.py +0 -0
  95. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/file_monitor/__init__.py +0 -0
  96. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/file_monitor/monitor.py +0 -0
  97. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/files.py +0 -0
  98. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/git_utils.py +0 -0
  99. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/global_cancel.py +0 -0
  100. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/ignorefiles/__init__.py +0 -0
  101. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
  102. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/image_to_page.py +0 -0
  103. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/index_import_export.py +0 -0
  104. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/interpreter.py +0 -0
  105. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/llm_rerank.py +0 -0
  106. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_hub.py +0 -0
  107. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_server.py +0 -0
  108. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_server_install.py +0 -0
  109. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_server_types.py +0 -0
  110. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  111. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  112. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  113. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/mcp_tools.py +0 -0
  114. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/memory_manager.py +0 -0
  115. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/model_speed_tester.py +0 -0
  116. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/openai_content.py +0 -0
  117. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/printer.py +0 -0
  118. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/recall_validation.py +0 -0
  119. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/rulefiles/__init__.py +0 -0
  120. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/run_cmd.py +0 -0
  121. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/save_formatted_log.py +0 -0
  122. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/screenshots.py +0 -0
  123. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/search.py +0 -0
  124. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/search_replace.py +0 -0
  125. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/shells.py +0 -0
  126. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/stats_panel.py +0 -0
  127. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/stream_out_type.py +0 -0
  128. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/sys_prompt.py +0 -0
  129. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/test_run_cmd.py +0 -0
  130. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/text.py +0 -0
  131. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/token_cost_caculate.py +0 -0
  132. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/types.py +0 -0
  133. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  134. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/__init__.py +0 -0
  135. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/__init__.py +0 -0
  136. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
  137. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
  138. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
  139. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
  140. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
  141. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
  142. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
  143. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
  144. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
  145. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +0 -0
  146. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -0
  147. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -0
  148. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
  149. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +0 -0
  150. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
  151. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
  152. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
  153. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_generate.py +0 -0
  154. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
  155. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
  156. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_merge.py +0 -0
  157. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
  158. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
  159. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
  160. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_diff_manager.py +0 -0
  161. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
  162. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_manager.py +0 -0
  163. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
  164. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/__init__.py +0 -0
  165. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/base_compiler.py +0 -0
  166. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/compiler_config_api.py +0 -0
  167. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/compiler_config_manager.py +0 -0
  168. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/compiler_factory.py +0 -0
  169. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/java_compiler.py +0 -0
  170. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/models.py +0 -0
  171. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/provided_compiler.py +0 -0
  172. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/python_compiler.py +0 -0
  173. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/reactjs_compiler.py +0 -0
  174. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/shadow_compiler.py +0 -0
  175. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/compilers/vue_compiler.py +0 -0
  176. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/data/byzerllm.md +0 -0
  177. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/data/tokenizer.json +0 -0
  178. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/db/__init__.py +0 -0
  179. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/db/store.py +0 -0
  180. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/dispacher/__init__.py +0 -0
  181. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/dispacher/actions/__init__.py +0 -0
  182. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/dispacher/actions/action.py +0 -0
  183. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/dispacher/actions/copilot.py +0 -0
  184. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  185. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  186. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/events/__init__.py +0 -0
  187. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/events/event_content.py +0 -0
  188. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/events/event_manager.py +0 -0
  189. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/events/event_manager_singleton.py +0 -0
  190. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/events/event_store.py +0 -0
  191. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/events/event_types.py +0 -0
  192. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/helper/__init__.py +0 -0
  193. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/helper/project_creator.py +0 -0
  194. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/helper/rag_doc_creator.py +0 -0
  195. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/__init__.py +0 -0
  196. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/entry.py +0 -0
  197. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/filter/__init__.py +0 -0
  198. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/filter/normal_filter.py +0 -0
  199. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/filter/quick_filter.py +0 -0
  200. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/for_command.py +0 -0
  201. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/symbols_utils.py +0 -0
  202. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/index/types.py +0 -0
  203. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/lang.py +0 -0
  204. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/__init__.py +0 -0
  205. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/base_linter.py +0 -0
  206. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/linter_factory.py +0 -0
  207. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/models.py +0 -0
  208. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/python_linter.py +0 -0
  209. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/reactjs_linter.py +0 -0
  210. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/shadow_linter.py +0 -0
  211. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/linters/vue_linter.py +0 -0
  212. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/memory/__init__.py +0 -0
  213. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/memory/active_context_manager.py +0 -0
  214. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/memory/active_package.py +0 -0
  215. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/memory/async_processor.py +0 -0
  216. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/memory/directory_mapper.py +0 -0
  217. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/models.py +0 -0
  218. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/plugins/__init__.py +0 -0
  219. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  220. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  221. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/plugins/sample_plugin.py +0 -0
  222. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  223. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/plugins/utils.py +0 -0
  224. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/privacy/__init__.py +0 -0
  225. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/pyproject/__init__.py +0 -0
  226. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/__init__.py +0 -0
  227. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/api_server.py +0 -0
  228. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/__init__.py +0 -0
  229. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/base_cache.py +0 -0
  230. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  231. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  232. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
  233. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  234. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  235. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  236. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  237. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/cache/simple_cache.py +0 -0
  238. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/conversation_to_queries.py +0 -0
  239. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/doc_filter.py +0 -0
  240. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/document_retriever.py +0 -0
  241. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/lang.py +0 -0
  242. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/llm_wrapper.py +0 -0
  243. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/__init__.py +0 -0
  244. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  245. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  246. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/filter_utils.py +0 -0
  247. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/image_loader.py +0 -0
  248. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  249. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  250. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/loaders/test_image_loader.py +0 -0
  251. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/long_context_rag.py +0 -0
  252. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  253. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/rag_config.py +0 -0
  254. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/rag_entry.py +0 -0
  255. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/raw_rag.py +0 -0
  256. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/relevant_utils.py +0 -0
  257. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/searchable.py +0 -0
  258. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/simple_directory_reader.py +0 -0
  259. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/simple_rag.py +0 -0
  260. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/stream_event/__init__.py +0 -0
  261. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  262. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/stream_event/types.py +0 -0
  263. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/token_checker.py +0 -0
  264. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/token_counter.py +0 -0
  265. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/token_limiter.py +0 -0
  266. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/token_limiter_utils.py +0 -0
  267. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/types.py +0 -0
  268. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/utils.py +0 -0
  269. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/rag/variable_holder.py +0 -0
  270. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/regexproject/__init__.py +0 -0
  271. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/run_context.py +0 -0
  272. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/shadows/__init__.py +0 -0
  273. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/shadows/shadow_manager.py +0 -0
  274. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/suffixproject/__init__.py +0 -0
  275. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/tsproject/__init__.py +0 -0
  276. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/__init__.py +0 -0
  277. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  278. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  279. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/auto_project_type.py +0 -0
  280. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  281. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/conversation_store.py +0 -0
  282. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  283. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/llms.py +0 -0
  284. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/log_capture.py +0 -0
  285. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/model_provider_selector.py +0 -0
  286. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/multi_turn.py +0 -0
  287. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/operate_config_api.py +0 -0
  288. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/print_table.py +0 -0
  289. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/project_structure.py +0 -0
  290. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/queue_communicate.py +0 -0
  291. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/request_event_queue.py +0 -0
  292. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/request_queue.py +0 -0
  293. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/rest.py +0 -0
  294. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/stream_thinking.py +0 -0
  295. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/tests.py +0 -0
  296. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/thread_utils.py +0 -0
  297. {auto_coder-0.1.361 → auto_coder-0.1.362}/src/autocoder/utils/types.py +0 -0
  298. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_action_regex_project.py +0 -0
  299. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_action_yml_file_manager.py +0 -0
  300. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_chat_auto_coder.py +0 -0
  301. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_code_auto_merge_editblock.py +0 -0
  302. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_command_completer.py +0 -0
  303. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_planner.py +0 -0
  304. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_plugins.py +0 -0
  305. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_privacy.py +0 -0
  306. {auto_coder-0.1.361 → auto_coder-0.1.362}/tests/test_queue_communicate.py +0 -0
  307. {auto_coder-0.1.361 → auto_coder-0.1.362}/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.361
3
+ Version: 0.1.362
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -64,6 +64,7 @@ Requires-Dist: pathvalidate
64
64
  Requires-Dist: pexpect
65
65
  Requires-Dist: mcp; python_version >= "3.10"
66
66
  Requires-Dist: setuptools
67
+ Requires-Dist: filelock
67
68
 
68
69
  <p align="center">
69
70
  <picture>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.361
3
+ Version: 0.1.362
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -64,6 +64,7 @@ Requires-Dist: pathvalidate
64
64
  Requires-Dist: pexpect
65
65
  Requires-Dist: mcp; python_version >= "3.10"
66
66
  Requires-Dist: setuptools
67
+ Requires-Dist: filelock
67
68
 
68
69
  <p align="center">
69
70
  <picture>
@@ -53,6 +53,7 @@ SpeechRecognition
53
53
  pathvalidate
54
54
  pexpect
55
55
  setuptools
56
+ filelock
56
57
 
57
58
  [:python_version >= "3.10"]
58
59
  mcp
@@ -40,9 +40,7 @@ class AutoLearn:
40
40
  - 识别代码变更中具有普遍应用价值的功能点和模式
41
41
  - 将这些功能点提炼为结构化规则,便于在其他项目中快速复用
42
42
  - 生成清晰的使用示例,包含完整依赖和调用方式
43
- - 这些规则将被存储在项目的 .autocoderrules 目录,供后续自动化代码生成使用
44
-
45
- 项目根目录: {{ project_root }}
43
+ - 这些规则将被存储在项目的 {{ project_root }}/.autocoderrules 目录,供后续自动化代码生成使用
46
44
 
47
45
  ## 分析对象
48
46
  下面是本次提交的代码变更:
@@ -86,144 +84,138 @@ class AutoLearn:
86
84
  ## 用户需求
87
85
  {{ new_query }}
88
86
 
89
- ## 输出格式要求
90
-
91
- 请按照以下结构(<markdown>...</markdown>包裹的内容)输出规则文件内容:
92
-
93
- <markdown>
94
- ---
95
- description: [简明描述规则的功能,20字以内]
96
- globs: [匹配应用此规则的文件路径,如"src/services/*.py"]
97
- alwaysApply: [是否总是应用,通常为false]
98
- ---
99
-
100
- # [规则主标题]
101
-
102
- ## 简要说明
103
- [该规则的功能、适用场景和价值,100字以内]
104
-
105
- ## 典型用法
106
- ```python
107
- # 完整的代码示例,包含:
108
- # 1. 必要的import语句
109
- # 2. 类/函数定义
110
- # 3. 参数说明
111
- # 4. 调用方式
112
- # 5. 关键注释
113
- ```
114
-
115
- ## 依赖说明
116
- - [必要的依赖库及版本]
117
- - [环境要求]
118
- - [初始化流程(如有)]
119
-
120
- ## 学习来源
121
- [从哪个提交变更的哪部分代码中提取的该功能点]
122
- </markdown>
123
-
124
- ## 示例
125
-
126
- <markdown>
127
- ---
128
- description: Git提交分析工具
129
- globs: "src/utils/git_analyzer.py"
130
- alwaysApply: false
131
- ---
132
-
133
- # Git提交分析工具
134
-
135
- ## 简要说明
136
- 提供从Git仓库中获取提交变更并分析差异的工具函数,支持首次提交和普通提交的差异获取,适用于代码审查、变更追踪和自动化分析场景。
137
-
138
- ## 典型用法
139
- ```python
140
- import git
141
- from typing import Dict, Tuple, List, Optional
142
-
143
- def get_commit_changes(repo_path: str, commit_id: str) -> Dict[str, Tuple[Optional[str], Optional[str]]]:
144
- '''
145
- 获取指定commit的文件变更内容
146
-
147
- Args:
148
- repo_path: Git仓库路径
149
- commit_id: 提交ID
150
-
151
- Returns:
152
- Dict[str, Tuple[Optional[str], Optional[str]]]: 文件路径到(变更前内容,变更后内容)的映射
153
- '''
154
- changes = {}
155
- try:
156
- repo = git.Repo(repo_path)
157
- commit = repo.commit(commit_id)
158
-
159
- # 检查是否是首次提交(没有父提交)
160
- if not commit.parents:
161
- # 首次提交,获取所有文件
162
- for item in commit.tree.traverse():
163
- if item.type == 'blob': # 只处理文件,不处理目录
164
- file_path = item.path
165
- # 首次提交前没有内容
166
- before_content = None
167
- # 获取提交后的内容
168
- after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
169
- changes[file_path] = (before_content, after_content)
170
- else:
171
- # 获取parent commit
172
- parent = commit.parents[0]
173
- # 获取变更的文件列表
174
- for diff_item in parent.diff(commit):
175
- file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
176
-
177
- # 获取变更前内容
178
- before_content = None
179
- try:
180
- if diff_item.a_blob:
181
- before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
182
- except git.exc.GitCommandError:
183
- pass # 文件可能是新增的
184
-
185
- # 获取变更后内容
186
- after_content = None
187
- try:
188
- if diff_item.b_blob:
87
+ ## 生成或者更新的规则文件结构
88
+
89
+ ---
90
+ description: [简明描述规则的功能,20字以内]
91
+ globs: [匹配应用此规则的文件路径,如"src/services/*.py"]
92
+ alwaysApply: [是否总是应用,通常为false]
93
+ ---
94
+
95
+ # [规则主标题]
96
+
97
+ ## 简要说明
98
+ [该规则的功能、适用场景和价值,100字以内]
99
+
100
+ ## 典型用法
101
+ ```python
102
+ # 完整的代码示例,包含:
103
+ # 1. 必要的import语句
104
+ # 2. 类/函数定义
105
+ # 3. 参数说明
106
+ # 4. 调用方式
107
+ # 5. 关键注释
108
+ ```
109
+
110
+ ## 依赖说明
111
+ - [必要的依赖库及版本]
112
+ - [环境要求]
113
+ - [初始化流程(如有)]
114
+
115
+ ## 学习来源
116
+ [从哪个提交变更的哪部分代码中提取的该功能点]
117
+
118
+ ## 生成或者更新的规则文件示例
119
+
120
+ ---
121
+ description: Git提交分析工具
122
+ globs: "src/utils/git_analyzer.py"
123
+ alwaysApply: false
124
+ ---
125
+
126
+ # Git提交分析工具
127
+
128
+ ## 简要说明
129
+ 提供从Git仓库中获取提交变更并分析差异的工具函数,支持首次提交和普通提交的差异获取,适用于代码审查、变更追踪和自动化分析场景。
130
+
131
+ ## 典型用法
132
+ ```python
133
+ import git
134
+ from typing import Dict, Tuple, List, Optional
135
+
136
+ def get_commit_changes(repo_path: str, commit_id: str) -> Dict[str, Tuple[Optional[str], Optional[str]]]:
137
+ '''
138
+ 获取指定commit的文件变更内容
139
+
140
+ Args:
141
+ repo_path: Git仓库路径
142
+ commit_id: 提交ID
143
+
144
+ Returns:
145
+ Dict[str, Tuple[Optional[str], Optional[str]]]: 文件路径到(变更前内容,变更后内容)的映射
146
+ '''
147
+ changes = {}
148
+ try:
149
+ repo = git.Repo(repo_path)
150
+ commit = repo.commit(commit_id)
151
+
152
+ # 检查是否是首次提交(没有父提交)
153
+ if not commit.parents:
154
+ # 首次提交,获取所有文件
155
+ for item in commit.tree.traverse():
156
+ if item.type == 'blob': # 只处理文件,不处理目录
157
+ file_path = item.path
158
+ # 首次提交前没有内容
159
+ before_content = None
160
+ # 获取提交后的内容
189
161
  after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
190
- except git.exc.GitCommandError:
191
- pass # 文件可能被删除
162
+ changes[file_path] = (before_content, after_content)
163
+ else:
164
+ # 获取parent commit
165
+ parent = commit.parents[0]
166
+ # 获取变更的文件列表
167
+ for diff_item in parent.diff(commit):
168
+ file_path = diff_item.a_path if diff_item.a_path else diff_item.b_path
169
+
170
+ # 获取变更前内容
171
+ before_content = None
172
+ try:
173
+ if diff_item.a_blob:
174
+ before_content = repo.git.show(f"{parent.hexsha}:{file_path}")
175
+ except git.exc.GitCommandError:
176
+ pass # 文件可能是新增的
177
+
178
+ # 获取变更后内容
179
+ after_content = None
180
+ try:
181
+ if diff_item.b_blob:
182
+ after_content = repo.git.show(f"{commit.hexsha}:{file_path}")
183
+ except git.exc.GitCommandError:
184
+ pass # 文件可能被删除
192
185
 
193
- changes[file_path] = (before_content, after_content)
186
+ changes[file_path] = (before_content, after_content)
194
187
 
195
- return changes
196
- except Exception as e:
197
- print(f"获取提交变更时出错: {str(e)}")
198
- return {}
199
- ```
188
+ return changes
189
+ except Exception as e:
190
+ print(f"获取提交变更时出错: {str(e)}")
191
+ return {}
192
+ ```
200
193
 
201
- ## 依赖说明
202
- - GitPython>=3.1.0
203
- - Python>=3.7
194
+ ## 依赖说明
195
+ - GitPython>=3.1.0
196
+ - Python>=3.7
204
197
 
205
- ## 学习来源
206
- 从代码提交变更中提取的Git仓库差异分析功能
207
- </markdown>
198
+ ## 学习来源
199
+ 从代码提交变更中提取的Git仓库差异分析功能
208
200
 
209
201
  ## 索引文件更新说明
210
202
 
211
203
  除了生成规则文件外,请务必更新index.md索引文件,记录所有规则及其作用。如果 index.md 当前内容为空,请按如下格式创建:
212
-
213
- <markdown>
204
+
214
205
  # Rules索引
215
206
 
216
207
  本文档记录项目中所有可用的代码规则(rules)及其用途。
217
208
 
218
209
  ## [规则文件路径]
219
210
  [规则文件的主要功能和适用场景简述]
220
- </markdown>
221
211
 
222
212
  ## 评价标准
223
213
  - 提取的功能点必须具备独立价值,能在其他项目中实际复用
224
214
  - 代码示例必须完整、可执行,包含所有必要组件
225
215
  - 文档结构清晰,遵循规定格式
226
216
  - 依赖说明明确具体,便于用户快速配置环境
217
+
218
+ 请根据要求生成或者更新规则文件(markdown文件),并将规则文件存储在项目的 {{ project_root }}/.autocoderrules 目录,供后续自动化代码生成使用。
227
219
  """
228
220
  return {
229
221
  "project_root": os.path.abspath(self.args.source_dir),
@@ -239,7 +231,7 @@ class AutoLearn:
239
231
  - 识别代码中具有普遍应用价值的功能点和模式
240
232
  - 将这些功能点提炼为结构化规则,便于在其他项目中快速复用
241
233
  - 生成清晰的使用示例,包含完整依赖和调用方式
242
- - 这些规则将被存储在项目的 .autocoderrules 目录,供后续自动化代码生成使用
234
+ - 这些规则将被存储在项目的 {{ project_root }}/.autocoderrules 目录,供后续自动化代码生成使用
243
235
 
244
236
  项目根目录: {{ project_root }}
245
237
 
@@ -277,165 +269,160 @@ class AutoLearn:
277
269
  ## 用户需求
278
270
  {{ query }}
279
271
 
280
- ## 输出格式要求
281
-
282
- 请按照以下结构(<markdown>...</markdown>包裹的内容)输出规则文件内容:
283
-
284
- <markdown>
285
- ---
286
- description: [简明描述规则的功能,20字以内]
287
- globs: [匹配应用此规则的文件路径,如"src/services/*.py"]
288
- alwaysApply: [是否总是应用,通常为false]
289
- ---
290
-
291
- # [规则主标题]
292
-
293
- ## 简要说明
294
- [该规则的功能、适用场景和价值,100字以内]
295
-
296
- ## 典型用法
297
- ```python
298
- # 完整的代码示例,包含:
299
- # 1. 必要的import语句
300
- # 2. 类/函数定义
301
- # 3. 参数说明
302
- # 4. 调用方式
303
- # 5. 关键注释
304
-
305
- ## 依赖说明
306
- - [必要的依赖库及版本]
307
- - [环境要求]
308
- - [初始化流程(如有)]
309
-
310
- ## 学习来源
311
- [从哪个模块的哪部分代码中提取的该功能点]
312
- </markdown>
313
-
314
- ## 示例
315
-
316
- <markdown>
317
- ---
318
- description: RPC服务模板
319
- globs: "src/services/rpc_service.py"
320
- alwaysApply: false
321
- ---
322
-
323
- # RPC服务快速实现模板
324
-
325
- ## 简要说明
326
- 提供gRPC服务端与客户端的标准实现模板,包含服务定义、请求处理、错误处理和客户端调用。适用于需要高性能RPC通信的微服务架构。
327
-
328
- ## 典型用法
329
- ```python
330
- # 服务端实现
331
- import grpc
332
- from concurrent import futures
333
- import logging
334
- import time
335
- from typing import Dict, Any
336
-
337
- import service_pb2
338
- import service_pb2_grpc
339
-
340
- class ServiceImplementation(service_pb2_grpc.MyServiceServicer):
341
- def __init__(self, config: Dict[str, Any] = None):
342
- self.config = config or {}
343
- logging.info("RPC服务初始化完成")
272
+ ## 生成或者更新的规则文件结构
273
+
274
+ ---
275
+ description: [简明描述规则的功能,20字以内]
276
+ globs: [匹配应用此规则的文件路径,如"src/services/*.py"]
277
+ alwaysApply: [是否总是应用,通常为false]
278
+ ---
279
+
280
+ # [规则主标题]
281
+
282
+ ## 简要说明
283
+ [该规则的功能、适用场景和价值,100字以内]
284
+
285
+ ## 典型用法
286
+ ```python
287
+ # 完整的代码示例,包含:
288
+ # 1. 必要的import语句
289
+ # 2. 类/函数定义
290
+ # 3. 参数说明
291
+ # 4. 调用方式
292
+ # 5. 关键注释
293
+
294
+ ## 依赖说明
295
+ - [必要的依赖库及版本]
296
+ - [环境要求]
297
+ - [初始化流程(如有)]
298
+
299
+ ## 学习来源
300
+ [从哪个模块的哪部分代码中提取的该功能点]
301
+ </markdown>
302
+
303
+ ## 生成或者更新的规则文件示例
304
+
305
+ ---
306
+ description: RPC服务模板
307
+ globs: "src/services/rpc_service.py"
308
+ alwaysApply: false
309
+ ---
310
+
311
+ # RPC服务快速实现模板
312
+
313
+ ## 简要说明
314
+ 提供gRPC服务端与客户端的标准实现模板,包含服务定义、请求处理、错误处理和客户端调用。适用于需要高性能RPC通信的微服务架构。
315
+
316
+ ## 典型用法
317
+ ```python
318
+ # 服务端实现
319
+ import grpc
320
+ from concurrent import futures
321
+ import logging
322
+ import time
323
+ from typing import Dict, Any
324
+
325
+ import service_pb2
326
+ import service_pb2_grpc
327
+
328
+ class ServiceImplementation(service_pb2_grpc.MyServiceServicer):
329
+ def __init__(self, config: Dict[str, Any] = None):
330
+ self.config = config or {}
331
+ logging.info("RPC服务初始化完成")
332
+
333
+ def ProcessRequest(self, request, context):
334
+ try:
335
+ # 业务逻辑处理
336
+ result = self._process_business_logic(request)
337
+
338
+ # 构建响应
339
+ return service_pb2.Response(
340
+ status=200,
341
+ message="处理成功",
342
+ data=result
343
+ )
344
+ except Exception as e:
345
+ logging.error(f"处理请求时发生错误: {str(e)}")
346
+ context.set_code(grpc.StatusCode.INTERNAL)
347
+ context.set_details(f"服务器内部错误: {str(e)}")
348
+ return service_pb2.Response(
349
+ status=500,
350
+ message=f"处理失败: {str(e)}",
351
+ data={}
352
+ )
353
+
354
+ def _process_business_logic(self, request):
355
+ # 实际业务逻辑处理
356
+ return {"result": request.param1 + request.param2}
357
+
358
+ def serve(port=50051, max_workers=10):
359
+ server = grpc.server(futures.ThreadPoolExecutor(max_workers=max_workers))
360
+ service_pb2_grpc.add_MyServiceServicer_to_server(
361
+ ServiceImplementation(), server
362
+ )
363
+ server.add_insecure_port(f'[::]:{port}')
364
+ server.start()
365
+ logging.info(f"服务已启动,监听端口: {port}")
344
366
 
345
- def ProcessRequest(self, request, context):
346
367
  try:
347
- # 业务逻辑处理
348
- result = self._process_business_logic(request)
349
-
350
- # 构建响应
351
- return service_pb2.Response(
352
- status=200,
353
- message="处理成功",
354
- data=result
355
- )
356
- except Exception as e:
357
- logging.error(f"处理请求时发生错误: {str(e)}")
358
- context.set_code(grpc.StatusCode.INTERNAL)
359
- context.set_details(f"服务器内部错误: {str(e)}")
360
- return service_pb2.Response(
361
- status=500,
362
- message=f"处理失败: {str(e)}",
363
- data={}
364
- )
365
-
366
- def _process_business_logic(self, request):
367
- # 实际业务逻辑处理
368
- return {"result": request.param1 + request.param2}
369
-
370
- def serve(port=50051, max_workers=10):
371
- server = grpc.server(futures.ThreadPoolExecutor(max_workers=max_workers))
372
- service_pb2_grpc.add_MyServiceServicer_to_server(
373
- ServiceImplementation(), server
374
- )
375
- server.add_insecure_port(f'[::]:{port}')
376
- server.start()
377
- logging.info(f"服务已启动,监听端口: {port}")
378
-
379
- try:
380
- while True:
381
- time.sleep(86400) # 一天
382
- except KeyboardInterrupt:
383
- server.stop(0)
384
- logging.info("服务已停止")
385
-
386
- if __name__ == '__main__':
387
- logging.basicConfig(level=logging.INFO)
388
- serve()
389
- ```
390
-
391
- ## 依赖说明
392
- - 需要安装 grpcio>=1.44.0 和 grpcio-tools>=1.44.0
393
- - 需要预先定义proto文件并生成对应Python代码:
394
- ```bash
395
- python -m grpc_tools.protoc -I./protos --python_out=. --grpc_python_out=. ./protos/service.proto
396
- ```
397
- - 示例proto文件结构:
398
- ```protobuf
399
- syntax = "proto3";
400
-
401
- service MyService {
402
- rpc ProcessRequest (Request) returns (Response) {}
403
- }
404
-
405
- message Request {
406
- int32 param1 = 1;
407
- int32 param2 = 2;
408
- }
409
-
410
- message Response {
411
- int32 status = 1;
412
- string message = 2;
413
- map<string, string> data = 3;
414
- }
415
- ```
416
-
417
- ## 学习来源
418
- 从src/services/rpc_service.py模块中的Server类和RequestHandler实现提取
419
- </markdown>
368
+ while True:
369
+ time.sleep(86400) # 一天
370
+ except KeyboardInterrupt:
371
+ server.stop(0)
372
+ logging.info("服务已停止")
373
+
374
+ if __name__ == '__main__':
375
+ logging.basicConfig(level=logging.INFO)
376
+ serve()
377
+ ```
378
+
379
+ ## 依赖说明
380
+ - 需要安装 grpcio>=1.44.0 和 grpcio-tools>=1.44.0
381
+ - 需要预先定义proto文件并生成对应Python代码:
382
+ ```bash
383
+ python -m grpc_tools.protoc -I./protos --python_out=. --grpc_python_out=. ./protos/service.proto
384
+ ```
385
+ - 示例proto文件结构:
386
+ ```protobuf
387
+ syntax = "proto3";
388
+
389
+ service MyService {
390
+ rpc ProcessRequest (Request) returns (Response) {}
391
+ }
392
+
393
+ message Request {
394
+ int32 param1 = 1;
395
+ int32 param2 = 2;
396
+ }
397
+
398
+ message Response {
399
+ int32 status = 1;
400
+ string message = 2;
401
+ map<string, string> data = 3;
402
+ }
403
+ ```
404
+
405
+ ## 学习来源
406
+ 从src/services/rpc_service.py模块中的Server类和RequestHandler实现提取
420
407
 
421
408
  ## 索引文件更新说明
422
409
 
423
410
  除了生成规则文件外,请务必更新index.md索引文件,记录所有规则及其作用。如果 index.md 当前内容为空,请按如下格式创建:
424
-
425
- <markdown>
411
+
426
412
  # Rules索引
427
413
 
428
414
  本文档记录项目中所有可用的代码规则(rules)及其用途。
429
415
 
430
416
  ## [规则文件路径]
431
417
  [规则文件的主要功能和适用场景简述]
432
- </markdown>
433
418
 
434
419
  ## 评价标准
435
420
  - 提取的功能点必须具备独立价值,能在其他项目中实际复用
436
421
  - 代码示例必须完整、可执行,包含所有必要组件
437
422
  - 文档结构清晰,遵循规定格式
438
423
  - 依赖说明明确具体,便于用户快速配置环境
424
+
425
+ 请根据要求生成或者更新规则文件(markdown文件),并将规则文件存储在项目的 {{ project_root }}/.autocoderrules 目录,供后续自动化代码生成使用。
439
426
  """
440
427
 
441
428
  # 获取索引文件内容
@@ -1069,7 +1069,7 @@ def main(input_args: Optional[List[str]] = None):
1069
1069
  border_style="green",
1070
1070
  )
1071
1071
  )
1072
- if not args.query:
1072
+ if not args.query or (args.query_prefix and args.query == args.query_prefix) or (args.query_suffix and args.query == args.query_suffix):
1073
1073
  return
1074
1074
 
1075
1075
  if os.path.exists(memory_file):