auto-coder 0.1.352__tar.gz → 0.1.354__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 (301) hide show
  1. {auto_coder-0.1.352 → auto_coder-0.1.354}/PKG-INFO +1 -1
  2. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/auto_coder.egg-info/SOURCES.txt +13 -4
  4. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/auto_coder_rag.py +37 -1
  5. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/auto_coder_runner.py +8 -0
  6. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/commands/auto_command.py +59 -131
  7. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/commands/tools.py +1 -1
  8. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/__init__.py +1 -1
  9. auto_coder-0.1.354/src/autocoder/common/conversations/__init__.py +52 -0
  10. auto_coder-0.1.354/src/autocoder/common/conversations/compatibility.py +303 -0
  11. auto_coder-0.1.354/src/autocoder/common/conversations/conversation_manager.py +502 -0
  12. auto_coder-0.1.354/src/autocoder/common/conversations/example.py +152 -0
  13. auto_coder-0.1.354/src/autocoder/common/file_monitor/__init__.py +5 -0
  14. auto_coder-0.1.354/src/autocoder/common/file_monitor/monitor.py +383 -0
  15. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/git_utils.py +1 -1
  16. {auto_coder-0.1.352/src/autocoder → auto_coder-0.1.354/src/autocoder/common}/ignorefiles/ignore_file_utils.py +40 -0
  17. {auto_coder-0.1.352/src/autocoder → auto_coder-0.1.354/src/autocoder/common}/ignorefiles/test_ignore_file_utils.py +1 -1
  18. auto_coder-0.1.354/src/autocoder/common/rulefiles/__init__.py +15 -0
  19. auto_coder-0.1.354/src/autocoder/common/rulefiles/autocoderrules_utils.py +173 -0
  20. auto_coder-0.1.354/src/autocoder/common/save_formatted_log.py +54 -0
  21. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit.py +40 -36
  22. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +1 -1
  23. auto_coder-0.1.354/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +134 -0
  24. auto_coder-0.1.354/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +163 -0
  25. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_editblock_manager.py +20 -8
  26. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/index.py +1 -1
  27. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/models.py +22 -9
  28. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/api_server.py +14 -2
  29. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/simple_cache.py +63 -33
  30. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/loaders/docx_loader.py +1 -1
  31. auto_coder-0.1.354/src/autocoder/rag/loaders/filter_utils.py +163 -0
  32. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/loaders/image_loader.py +15 -3
  33. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/loaders/pdf_loader.py +2 -2
  34. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/long_context_rag.py +11 -0
  35. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/qa_conversation_strategy.py +5 -31
  36. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/utils.py +21 -2
  37. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/_markitdown.py +66 -25
  38. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +1 -0
  39. auto_coder-0.1.354/src/autocoder/version.py +1 -0
  40. auto_coder-0.1.352/src/autocoder/common/v2/agent/agentic_edit_conversation.py +0 -188
  41. auto_coder-0.1.352/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -104
  42. auto_coder-0.1.352/src/autocoder/rag/loaders/filter_utils.py +0 -106
  43. auto_coder-0.1.352/src/autocoder/version.py +0 -1
  44. {auto_coder-0.1.352 → auto_coder-0.1.354}/LICENSE +0 -0
  45. {auto_coder-0.1.352 → auto_coder-0.1.354}/README.md +0 -0
  46. {auto_coder-0.1.352 → auto_coder-0.1.354}/setup.cfg +0 -0
  47. {auto_coder-0.1.352 → auto_coder-0.1.354}/setup.py +0 -0
  48. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  49. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/auto_coder.egg-info/entry_points.txt +0 -0
  50. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/auto_coder.egg-info/requires.txt +0 -0
  51. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/auto_coder.egg-info/top_level.txt +0 -0
  52. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/__init__.py +0 -0
  53. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/__init__.py +0 -0
  54. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/agentic_filter.py +0 -0
  55. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  56. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/auto_filegroup.py +0 -0
  57. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/auto_guess_query.py +0 -0
  58. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  59. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/auto_review_commit.py +0 -0
  60. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/auto_tool.py +0 -0
  61. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/coder.py +0 -0
  62. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/designer.py +0 -0
  63. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/planner.py +0 -0
  64. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/agent/project_reader.py +0 -0
  65. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/auto_coder.py +0 -0
  66. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/auto_coder_server.py +0 -0
  67. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/benchmark.py +0 -0
  68. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/chat/__init__.py +0 -0
  69. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/chat_auto_coder.py +0 -0
  70. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/chat_auto_coder_lang.py +0 -0
  71. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/command_args.py +0 -0
  72. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/command_parser.py +0 -0
  73. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/commands/__init__.py +0 -0
  74. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/commands/auto_web.py +0 -0
  75. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/JupyterClient.py +0 -0
  76. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/ShellClient.py +0 -0
  77. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/action_yml_file_manager.py +0 -0
  78. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/anything2images.py +0 -0
  79. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/anything2img.py +0 -0
  80. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/audio.py +0 -0
  81. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/auto_coder_lang.py +0 -0
  82. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/auto_configure.py +0 -0
  83. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/buildin_tokenizer.py +0 -0
  84. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/chunk_validation.py +0 -0
  85. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/cleaner.py +0 -0
  86. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_execute.py +0 -0
  87. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_generate.py +0 -0
  88. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  89. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  90. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  91. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_merge.py +0 -0
  92. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  93. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  94. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  95. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/code_modification_ranker.py +0 -0
  96. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/command_completer.py +0 -0
  97. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/command_generator.py +0 -0
  98. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/command_templates.py +0 -0
  99. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/computer_use.py +0 -0
  100. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/conf_import_export.py +0 -0
  101. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/conf_utils.py +0 -0
  102. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/conf_validator.py +0 -0
  103. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/const.py +0 -0
  104. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/context_pruner.py +0 -0
  105. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/conversation_pruner.py +0 -0
  106. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/files.py +0 -0
  107. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/global_cancel.py +0 -0
  108. {auto_coder-0.1.352/src/autocoder → auto_coder-0.1.354/src/autocoder/common}/ignorefiles/__init__.py +0 -0
  109. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/image_to_page.py +0 -0
  110. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/index_import_export.py +0 -0
  111. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/interpreter.py +0 -0
  112. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/llm_rerank.py +0 -0
  113. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_hub.py +0 -0
  114. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_server.py +0 -0
  115. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_server_install.py +0 -0
  116. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_server_types.py +0 -0
  117. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  118. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  119. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  120. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/mcp_tools.py +0 -0
  121. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/memory_manager.py +0 -0
  122. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/model_speed_tester.py +0 -0
  123. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/openai_content.py +0 -0
  124. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/printer.py +0 -0
  125. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/recall_validation.py +0 -0
  126. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/result_manager.py +0 -0
  127. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/run_cmd.py +0 -0
  128. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/screenshots.py +0 -0
  129. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/search.py +0 -0
  130. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/search_replace.py +0 -0
  131. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/shells.py +0 -0
  132. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/stats_panel.py +0 -0
  133. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/stream_out_type.py +0 -0
  134. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/sys_prompt.py +0 -0
  135. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/test_run_cmd.py +0 -0
  136. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/text.py +0 -0
  137. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/token_cost_caculate.py +0 -0
  138. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/types.py +0 -0
  139. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  140. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/__init__.py +0 -0
  141. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/__init__.py +0 -0
  142. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
  143. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
  144. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
  145. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
  146. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
  147. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
  148. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
  149. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
  150. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +0 -0
  151. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +0 -0
  152. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
  153. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +0 -0
  154. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
  155. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
  156. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
  157. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_generate.py +0 -0
  158. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
  159. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
  160. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
  161. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_merge.py +0 -0
  162. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
  163. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
  164. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
  165. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_diff_manager.py +0 -0
  166. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_manager.py +0 -0
  167. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
  168. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/__init__.py +0 -0
  169. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/base_compiler.py +0 -0
  170. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/compiler_config_api.py +0 -0
  171. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/compiler_config_manager.py +0 -0
  172. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/compiler_factory.py +0 -0
  173. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/java_compiler.py +0 -0
  174. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/models.py +0 -0
  175. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/provided_compiler.py +0 -0
  176. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/python_compiler.py +0 -0
  177. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/reactjs_compiler.py +0 -0
  178. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/shadow_compiler.py +0 -0
  179. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/compilers/vue_compiler.py +0 -0
  180. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/data/byzerllm.md +0 -0
  181. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/data/tokenizer.json +0 -0
  182. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/db/__init__.py +0 -0
  183. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/db/store.py +0 -0
  184. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/dispacher/__init__.py +0 -0
  185. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/dispacher/actions/__init__.py +0 -0
  186. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/dispacher/actions/action.py +0 -0
  187. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/dispacher/actions/copilot.py +0 -0
  188. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  189. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  190. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/events/__init__.py +0 -0
  191. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/events/event_content.py +0 -0
  192. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/events/event_manager.py +0 -0
  193. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/events/event_manager_singleton.py +0 -0
  194. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/events/event_store.py +0 -0
  195. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/events/event_types.py +0 -0
  196. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/helper/__init__.py +0 -0
  197. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/helper/project_creator.py +0 -0
  198. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/helper/rag_doc_creator.py +0 -0
  199. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/__init__.py +0 -0
  200. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/entry.py +0 -0
  201. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/filter/__init__.py +0 -0
  202. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/filter/normal_filter.py +0 -0
  203. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/filter/quick_filter.py +0 -0
  204. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/for_command.py +0 -0
  205. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/symbols_utils.py +0 -0
  206. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/index/types.py +0 -0
  207. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/lang.py +0 -0
  208. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/__init__.py +0 -0
  209. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/base_linter.py +0 -0
  210. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/linter_factory.py +0 -0
  211. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/models.py +0 -0
  212. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/python_linter.py +0 -0
  213. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/reactjs_linter.py +0 -0
  214. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/shadow_linter.py +0 -0
  215. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/linters/vue_linter.py +0 -0
  216. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/memory/__init__.py +0 -0
  217. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/memory/active_context_manager.py +0 -0
  218. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/memory/active_package.py +0 -0
  219. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/memory/async_processor.py +0 -0
  220. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/memory/directory_mapper.py +0 -0
  221. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/plugins/__init__.py +0 -0
  222. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  223. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  224. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/plugins/sample_plugin.py +0 -0
  225. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  226. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/plugins/utils.py +0 -0
  227. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/privacy/__init__.py +0 -0
  228. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/privacy/model_filter.py +0 -0
  229. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/pyproject/__init__.py +0 -0
  230. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/__init__.py +0 -0
  231. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/__init__.py +0 -0
  232. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/base_cache.py +0 -0
  233. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  234. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  235. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
  236. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  237. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  238. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  239. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  240. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/conversation_to_queries.py +0 -0
  241. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/doc_filter.py +0 -0
  242. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/document_retriever.py +0 -0
  243. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/lang.py +0 -0
  244. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/llm_wrapper.py +0 -0
  245. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/loaders/__init__.py +0 -0
  246. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  247. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  248. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/loaders/test_image_loader.py +0 -0
  249. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/rag_config.py +0 -0
  250. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/rag_entry.py +0 -0
  251. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/raw_rag.py +0 -0
  252. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/relevant_utils.py +0 -0
  253. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/searchable.py +0 -0
  254. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/simple_directory_reader.py +0 -0
  255. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/simple_rag.py +0 -0
  256. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/stream_event/__init__.py +0 -0
  257. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  258. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/stream_event/types.py +0 -0
  259. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/token_checker.py +0 -0
  260. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/token_counter.py +0 -0
  261. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/token_limiter.py +0 -0
  262. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/token_limiter_utils.py +0 -0
  263. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/types.py +0 -0
  264. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/rag/variable_holder.py +0 -0
  265. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/regexproject/__init__.py +0 -0
  266. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/run_context.py +0 -0
  267. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/shadows/__init__.py +0 -0
  268. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/shadows/shadow_manager.py +0 -0
  269. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/suffixproject/__init__.py +0 -0
  270. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/tsproject/__init__.py +0 -0
  271. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/__init__.py +0 -0
  272. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  273. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/auto_project_type.py +0 -0
  274. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  275. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/conversation_store.py +0 -0
  276. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  277. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/llms.py +0 -0
  278. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/log_capture.py +0 -0
  279. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/model_provider_selector.py +0 -0
  280. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/multi_turn.py +0 -0
  281. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/operate_config_api.py +0 -0
  282. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/print_table.py +0 -0
  283. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/project_structure.py +0 -0
  284. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/queue_communicate.py +0 -0
  285. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/request_event_queue.py +0 -0
  286. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/request_queue.py +0 -0
  287. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/rest.py +0 -0
  288. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/stream_thinking.py +0 -0
  289. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/tests.py +0 -0
  290. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/thread_utils.py +0 -0
  291. {auto_coder-0.1.352 → auto_coder-0.1.354}/src/autocoder/utils/types.py +0 -0
  292. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_action_regex_project.py +0 -0
  293. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_action_yml_file_manager.py +0 -0
  294. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_chat_auto_coder.py +0 -0
  295. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_code_auto_merge_editblock.py +0 -0
  296. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_command_completer.py +0 -0
  297. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_planner.py +0 -0
  298. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_plugins.py +0 -0
  299. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_privacy.py +0 -0
  300. {auto_coder-0.1.352 → auto_coder-0.1.354}/tests/test_queue_communicate.py +0 -0
  301. {auto_coder-0.1.352 → auto_coder-0.1.354}/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.352
3
+ Version: 0.1.354
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.352
3
+ Version: 0.1.354
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -89,6 +89,7 @@ src/autocoder/common/printer.py
89
89
  src/autocoder/common/recall_validation.py
90
90
  src/autocoder/common/result_manager.py
91
91
  src/autocoder/common/run_cmd.py
92
+ src/autocoder/common/save_formatted_log.py
92
93
  src/autocoder/common/screenshots.py
93
94
  src/autocoder/common/search.py
94
95
  src/autocoder/common/search_replace.py
@@ -101,9 +102,20 @@ src/autocoder/common/text.py
101
102
  src/autocoder/common/token_cost_caculate.py
102
103
  src/autocoder/common/types.py
103
104
  src/autocoder/common/utils_code_auto_generate.py
105
+ src/autocoder/common/conversations/__init__.py
106
+ src/autocoder/common/conversations/compatibility.py
107
+ src/autocoder/common/conversations/conversation_manager.py
108
+ src/autocoder/common/conversations/example.py
109
+ src/autocoder/common/file_monitor/__init__.py
110
+ src/autocoder/common/file_monitor/monitor.py
111
+ src/autocoder/common/ignorefiles/__init__.py
112
+ src/autocoder/common/ignorefiles/ignore_file_utils.py
113
+ src/autocoder/common/ignorefiles/test_ignore_file_utils.py
104
114
  src/autocoder/common/mcp_servers/__init__.py
105
115
  src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py
106
116
  src/autocoder/common/mcp_servers/mcp_server_perplexity.py
117
+ src/autocoder/common/rulefiles/__init__.py
118
+ src/autocoder/common/rulefiles/autocoderrules_utils.py
107
119
  src/autocoder/common/v2/__init__.py
108
120
  src/autocoder/common/v2/code_agentic_editblock_manager.py
109
121
  src/autocoder/common/v2/code_auto_generate.py
@@ -120,7 +132,6 @@ src/autocoder/common/v2/code_manager.py
120
132
  src/autocoder/common/v2/code_strict_diff_manager.py
121
133
  src/autocoder/common/v2/agent/__init__.py
122
134
  src/autocoder/common/v2/agent/agentic_edit.py
123
- src/autocoder/common/v2/agent/agentic_edit_conversation.py
124
135
  src/autocoder/common/v2/agent/agentic_edit_types.py
125
136
  src/autocoder/common/v2/agent/agentic_tool_display.py
126
137
  src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py
@@ -135,6 +146,7 @@ src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver
135
146
  src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py
136
147
  src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py
137
148
  src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py
149
+ src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py
138
150
  src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py
139
151
  src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py
140
152
  src/autocoder/compilers/__init__.py
@@ -168,9 +180,6 @@ src/autocoder/events/event_types.py
168
180
  src/autocoder/helper/__init__.py
169
181
  src/autocoder/helper/project_creator.py
170
182
  src/autocoder/helper/rag_doc_creator.py
171
- src/autocoder/ignorefiles/__init__.py
172
- src/autocoder/ignorefiles/ignore_file_utils.py
173
- src/autocoder/ignorefiles/test_ignore_file_utils.py
174
183
  src/autocoder/index/__init__.py
175
184
  src/autocoder/index/entry.py
176
185
  src/autocoder/index/for_command.py
@@ -1,3 +1,6 @@
1
+ import logging
2
+ logging.getLogger("ppocr").setLevel(logging.WARNING)
3
+
1
4
  import argparse
2
5
  from typing import Optional, List
3
6
  import byzerllm
@@ -19,8 +22,11 @@ from rich.table import Table
19
22
  import os
20
23
  import hashlib
21
24
  from loguru import logger
25
+ import sys
22
26
  import asyncio
23
27
  from datetime import datetime
28
+ from autocoder.common.file_monitor.monitor import FileMonitor
29
+ from autocoder.common.rulefiles.autocoderrules_utils import get_rules
24
30
 
25
31
  from autocoder.rag.utils import process_file_local
26
32
  import pkg_resources
@@ -567,6 +573,7 @@ def main(input_args: Optional[List[str]] = None):
567
573
  # Generate unique name for RAG build if doc_dir exists
568
574
  if server_args.doc_dir:
569
575
  auto_coder_args.rag_build_name = generate_unique_name_from_path(server_args.doc_dir)
576
+ auto_coder_args.source_dir = server_args.doc_dir
570
577
  logger.info(f"Generated RAG build name: {auto_coder_args.rag_build_name}")
571
578
 
572
579
  if auto_coder_args.enable_hybrid_index and args.product_mode == "pro":
@@ -741,9 +748,38 @@ def main(input_args: Optional[List[str]] = None):
741
748
  service_info.save()
742
749
  except Exception as e:
743
750
  logger.warning(f"Failed to save service info: {str(e)}")
751
+
752
+ # Start FileMonitor if monitor_mode is enabled and source_dir is provided
753
+ if server_args.doc_dir:
754
+ try:
755
+ # Use singleton pattern to get/create monitor instance
756
+ # FileMonitor ensures only one instance runs per root_dir
757
+ monitor = FileMonitor(server_args.doc_dir)
758
+ if not monitor.is_running():
759
+ # TODO: Register specific callbacks here if needed in the future
760
+ # Example: monitor.register(os.path.join(args.source_dir, "specific_file.py"), my_callback)
761
+ monitor.start()
762
+ logger.info(f"File monitor started for directory: {server_args.doc_dir}")
763
+ else:
764
+ # Log if monitor was already running (e.g., started by another part of the app)
765
+ # Check if the existing monitor's root matches the current request
766
+ if monitor.root_dir == os.path.abspath(server_args.doc_dir):
767
+ logger.info(f"File monitor already running for directory: {monitor.root_dir}")
768
+ else:
769
+ logger.warning(f"File monitor is running for a different directory ({monitor.root_dir}), cannot start a new one for {args.source_dir}.")
770
+
771
+ logger.info(f"Getting rules for {server_args.doc_dir}")
772
+ _ = get_rules(server_args.doc_dir)
773
+
774
+ except ValueError as ve: # Catch specific error if root_dir is invalid during init
775
+ logger.error(f"Failed to initialize file monitor for {args.source_dir}: {ve}")
776
+ except ImportError as ie: # Catch if watchfiles is not installed
777
+ logger.error(f"Failed to start file monitor: {ie}")
778
+ except Exception as e:
779
+ logger.error(f"An unexpected error occurred while starting file monitor for {args.source_dir}: {e}")
744
780
 
745
781
  serve(llm=llm_wrapper, args=server_args)
746
- elif args.command == "build_hybrid_index":
782
+ elif args.command == "build_hybrid_index":
747
783
  auto_coder_args = AutoCoderArgs(
748
784
  **{
749
785
  arg: getattr(args, arg)
@@ -63,6 +63,7 @@ from autocoder import command_parser as CommandParser
63
63
  from loguru import logger as global_logger
64
64
  from autocoder.utils.project_structure import EnhancedFileAnalyzer
65
65
  from autocoder.common import SourceCodeList,SourceCode
66
+ from autocoder.common.file_monitor import FileMonitor
66
67
 
67
68
 
68
69
  ## 对外API,用于第三方集成 auto-coder 使用。
@@ -96,6 +97,7 @@ memory = {
96
97
 
97
98
  project_root = os.getcwd()
98
99
 
100
+
99
101
  base_persist_dir = os.path.join(project_root,".auto-coder", "plugins", "chat-auto-coder")
100
102
 
101
103
  defaut_exclude_dirs = [".git", "node_modules", "dist", "build", "__pycache__",".auto-coder"]
@@ -255,6 +257,12 @@ def configure_logger():
255
257
 
256
258
  configure_logger()
257
259
 
260
+ try:
261
+ FileMonitor(project_root).start()
262
+ except Exception as e:
263
+ global_logger.error(f"Failed to start file monitor: {e}")
264
+ global_logger.exception(e)
265
+
258
266
  def initialize_system(args:InitializeSystemRequest):
259
267
  from autocoder.utils.model_provider_selector import ModelProviderSelector
260
268
  from autocoder import models as models_module
@@ -21,7 +21,7 @@ from autocoder.common import shells
21
21
  from loguru import logger
22
22
  from autocoder.utils import llms as llms_utils
23
23
  from autocoder.rag.token_counter import count_tokens
24
- from autocoder.common.global_cancel import global_cancel
24
+ from autocoder.common.global_cancel import global_cancel,CancelRequestedException
25
25
  from autocoder.common.auto_configure import config_readme
26
26
  from autocoder.utils.auto_project_type import ProjectTypeAnalyzer
27
27
  from rich.text import Text
@@ -29,105 +29,10 @@ from autocoder.common.mcp_server import get_mcp_server, McpServerInfoRequest
29
29
  from autocoder.common.action_yml_file_manager import ActionYmlFileManager
30
30
  from autocoder.events.event_manager_singleton import get_event_manager
31
31
  from autocoder.events import event_content as EventContentCreator
32
+ from autocoder.events.event_types import Event, EventType, EventMetadata
32
33
  from autocoder.run_context import get_run_context
33
34
  from autocoder.common.stream_out_type import AutoCommandStreamOutType
34
- class CommandMessage(BaseModel):
35
- role: str
36
- content: str
37
-
38
-
39
- class ExtendedCommandMessage(BaseModel):
40
- message: CommandMessage
41
- timestamp: str
42
-
43
-
44
- class CommandConversation(BaseModel):
45
- history: Dict[str, ExtendedCommandMessage]
46
- current_conversation: List[ExtendedCommandMessage]
47
-
48
-
49
- def load_memory_file(args: AutoCoderArgs) -> CommandConversation:
50
- """Load command conversations from memory file"""
51
-
52
- memory_dir = os.path.join(".auto-coder", "memory")
53
- file_path = os.path.join(memory_dir, "command_chat_history.json")
54
- if os.path.exists(file_path):
55
- with open(file_path, "r", encoding="utf-8") as f:
56
- try:
57
- conversation = CommandConversation.model_validate_json(
58
- f.read())
59
- return conversation
60
- except Exception:
61
- return CommandConversation(history={}, current_conversation=[])
62
- return CommandConversation(history={}, current_conversation=[])
63
-
64
-
65
- class TimeBasedStrategy:
66
- def __init__(self, max_idle_time=3600*24): # 24 hour in seconds
67
- self.max_idle_time = max_idle_time
68
-
69
- def should_archive(self, last_message_time):
70
- """Check if the conversation should be archived based on last message time"""
71
- current_time = time.time()
72
- return current_time - last_message_time > self.max_idle_time
73
-
74
-
75
- def save_to_memory_file(query: str, response: str):
76
- """Save command conversation to memory file using CommandConversation structure"""
77
- memory_dir = os.path.join(".auto-coder", "memory")
78
- os.makedirs(memory_dir, exist_ok=True)
79
- file_path = os.path.join(memory_dir, "command_chat_history.json")
80
-
81
- # Initialize time-based strategy
82
- time_strategy = TimeBasedStrategy()
83
-
84
- # Create new message objects
85
- current_time = time.time()
86
- user_msg = CommandMessage(role="user", content=query)
87
- assistant_msg = CommandMessage(role="assistant", content=response)
88
-
89
- extended_user_msg = ExtendedCommandMessage(
90
- message=user_msg,
91
- timestamp=str(int(current_time))
92
- )
93
- extended_assistant_msg = ExtendedCommandMessage(
94
- message=assistant_msg,
95
- timestamp=str(int(current_time))
96
- )
97
-
98
- # Load existing conversation or create new
99
- if os.path.exists(file_path):
100
- with open(file_path, "r", encoding="utf-8") as f:
101
- try:
102
- existing_conv = CommandConversation.model_validate_json(
103
- f.read())
104
- # Check if we should archive current conversation
105
- if existing_conv.current_conversation:
106
- last_message_time = float(
107
- existing_conv.current_conversation[-1].timestamp)
108
- if time_strategy.should_archive(last_message_time):
109
- # Move current conversation to history
110
- timestamp = str(int(last_message_time))
111
- existing_conv.history[timestamp] = existing_conv.current_conversation
112
- existing_conv.current_conversation = []
113
- except Exception:
114
- existing_conv = CommandConversation(
115
- history={},
116
- current_conversation=[]
117
- )
118
- else:
119
- existing_conv = CommandConversation(
120
- history={},
121
- current_conversation=[]
122
- )
123
-
124
- existing_conv.current_conversation.append(extended_user_msg)
125
- existing_conv.current_conversation.append(extended_assistant_msg)
126
- # Save updated conversation
127
- with open(file_path, "w", encoding="utf-8") as f:
128
- f.write(existing_conv.model_dump_json(indent=2))
129
-
130
-
35
+ from autocoder.common.rulefiles.autocoderrules_utils import get_rules
131
36
  class CommandSuggestion(BaseModel):
132
37
  command: str
133
38
  parameters: Dict[str, Any]
@@ -203,17 +108,14 @@ class CommandAutoTuner:
203
108
  self.mcp_server_info = mcp_server_info_response.result
204
109
  except Exception as e:
205
110
  logger.error(f"Error getting MCP server info: {str(e)}")
206
- self.mcp_server_info = ""
207
-
208
- def get_conversations(self) -> List[CommandMessage]:
209
- """Get conversation history from memory file"""
210
- conversation = load_memory_file(args=self.args)
211
- return [command_message.message for command_message in conversation.current_conversation]
111
+ self.mcp_server_info = ""
212
112
 
213
113
  @byzerllm.prompt()
214
114
  def _analyze(self, request: AutoCommandRequest) -> str:
215
115
  """
216
116
  你是 auto-coder.chat 软件,帮助用户完成编程方面的需求。我们的目标是根据用户输入和当前上下文,组合多个函数来完成用户的需求。
117
+
118
+ ====
217
119
 
218
120
  ## 当前用户环境信息如下:
219
121
  <os_info>
@@ -254,6 +156,8 @@ class CommandAutoTuner:
254
156
  {{ current_conf }}
255
157
  </current_conf>
256
158
 
159
+ ====
160
+
257
161
  ## 可用函数列表:
258
162
  {{ available_commands }}
259
163
 
@@ -263,6 +167,8 @@ class CommandAutoTuner:
263
167
  ## 函数组合说明:
264
168
  {{ command_combination_readme }}
265
169
 
170
+ ====
171
+
266
172
  ## active-context 项目追踪文档系统
267
173
 
268
174
  在 {{ current_project }}/.auto-coder/active-context 下,我们提供了对该项目每个文件目录的追踪。
@@ -279,9 +185,10 @@ class CommandAutoTuner:
279
185
  - query: 用户需求
280
186
  - urls: 用户提供的上下文文件列表
281
187
  - dynamic_urls: auto-coder.chat 自动感知的一些文件列表
282
- - add_updated_urls: 这次需求发生变更的文件列表
283
-
188
+ - add_updated_urls: 这次需求发生变更的文件列表
189
+
284
190
  {% if conversation_history %}
191
+ ====
285
192
  ## 历史对话:
286
193
  <conversation_history>
287
194
  {% for conv in conversation_history %}
@@ -289,6 +196,18 @@ class CommandAutoTuner:
289
196
  {% endfor %}
290
197
  </conversation_history>
291
198
  {% endif %}
199
+
200
+ {% if rules %}
201
+ ====
202
+
203
+ 用户提供的规则文件,你必须严格遵守。
204
+ {% for key, value in rules.items() %}
205
+ <user_rule>
206
+ ##File: {{ key }}
207
+ {{ value }}
208
+ </user_rule>
209
+ {% endfor %}
210
+ {% endif %}
292
211
 
293
212
  ## 用户需求:
294
213
  <user_input>
@@ -326,7 +245,8 @@ class CommandAutoTuner:
326
245
  return {
327
246
  "user_input": request.user_input,
328
247
  "current_files": self.memory_config.memory["current_files"]["files"],
329
- "conversation_history": self.get_conversations(),
248
+ "conversation_history": [],
249
+ "rules": get_rules(),
330
250
  "available_commands": self._command_readme.prompt(),
331
251
  "current_conf": json.dumps(self.memory_config.memory["conf"], indent=2),
332
252
  "env_info": env_info,
@@ -461,7 +381,8 @@ class CommandAutoTuner:
461
381
  display_func=extract_command_response,
462
382
  args=self.args,
463
383
  extra_meta={
464
- "stream_out_type": AutoCommandStreamOutType.COMMAND_SUGGESTION.value
384
+ "stream_out_type": AutoCommandStreamOutType.COMMAND_SUGGESTION.value,
385
+ "path": "/agentic/agent/command_suggestion"
465
386
  }
466
387
  )
467
388
 
@@ -515,12 +436,7 @@ class CommandAutoTuner:
515
436
  conversations.append({"role": "assistant", "content": result})
516
437
  # 提取 JSON 并转换为 AutoCommandResponse
517
438
  response = to_model(result, AutoCommandResponse)
518
-
519
- # 保存对话记录
520
- save_to_memory_file(
521
- query=request.user_input,
522
- response=response.model_dump_json(indent=2)
523
- )
439
+
524
440
  result_manager = ResultManager()
525
441
 
526
442
  while True:
@@ -539,7 +455,11 @@ class CommandAutoTuner:
539
455
  EventContentCreator.ResultCommandPrepareStatContent(
540
456
  command=command,
541
457
  parameters=parameters
542
- ).to_dict()))
458
+ ).to_dict()),metadata=EventMetadata(
459
+ stream_out_type="command_prepare",
460
+ path="/agentic/agent/command_prepare",
461
+ action_file=self.args.file
462
+ ).to_dict())
543
463
 
544
464
  self.execute_auto_command(command, parameters)
545
465
  content = ""
@@ -566,7 +486,13 @@ class CommandAutoTuner:
566
486
  "auto_command_action_break", command=command, action=action)
567
487
  printer.print_str_in_terminal(temp_content,style="yellow")
568
488
  get_event_manager(self.args.event_file).write_result(
569
- EventContentCreator.create_result(content=temp_content))
489
+ EventContentCreator.create_result(content=temp_content),
490
+ metadata=EventMetadata(
491
+ stream_out_type="command_break",
492
+ path="/agentic/agent/command_break",
493
+ action_file=self.args.file
494
+ ).to_dict()
495
+ )
570
496
  break
571
497
 
572
498
  if command == "response_user":
@@ -576,7 +502,12 @@ class CommandAutoTuner:
576
502
  EventContentCreator.create_result(content=EventContentCreator.ResultCommandExecuteStatContent(
577
503
  command=command,
578
504
  content=content
579
- ).to_dict()))
505
+ ).to_dict()),metadata=EventMetadata(
506
+ stream_out_type="command_execute",
507
+ path="/agentic/agent/command_execute",
508
+ action_file=self.args.file
509
+ ).to_dict()
510
+ )
580
511
 
581
512
  # 打印执行结果
582
513
  console = Console()
@@ -678,17 +609,18 @@ class CommandAutoTuner:
678
609
  # 提取 JSON 并转换为 AutoCommandResponse
679
610
  response = to_model(result, AutoCommandResponse)
680
611
  if not response or not response.suggestions:
681
- break
682
-
683
- save_to_memory_file(
684
- query=request.user_input,
685
- response=response.model_dump_json(indent=2)
686
- )
612
+ break
687
613
  else:
688
614
  temp_content = printer.get_message_from_key_with_format("auto_command_break", command=command)
689
615
  printer.print_str_in_terminal(temp_content,style="yellow")
690
616
  get_event_manager(self.args.event_file).write_result(
691
- EventContentCreator.create_result(content=temp_content))
617
+ EventContentCreator.create_result(content=temp_content),
618
+ metadata=EventMetadata(
619
+ stream_out_type="command_break",
620
+ path="/agentic/agent/command_break",
621
+ action_file=self.args.file
622
+ ).to_dict()
623
+ )
692
624
  break
693
625
 
694
626
  return response
@@ -1517,18 +1449,14 @@ class CommandAutoTuner:
1517
1449
  command_map[command](**parameters)
1518
1450
  else:
1519
1451
  command_map[command]()
1452
+ except CancelRequestedException as e:
1453
+ raise e
1520
1454
 
1521
1455
  except Exception as e:
1522
1456
  error_msg = str(e)
1523
1457
  self.printer.print_in_terminal(
1524
1458
  "auto_command_failed", style="red", command=command, error=error_msg)
1525
-
1526
- # Save failed command execution
1527
- save_to_memory_file(
1528
- query=f"Command: {command} Parameters: {json.dumps(parameters) if parameters else 'None'}",
1529
- response=f"Command execution failed: {error_msg}"
1530
- )
1531
-
1459
+
1532
1460
  self.result_manager = ResultManager()
1533
1461
  result = f"command {command} with parameters {parameters} execution failed with error {error_msg}"
1534
1462
  self.result_manager.add_result(content=result, meta={
@@ -48,7 +48,7 @@ from autocoder.common.mcp_server_types import (
48
48
  McpListRunningRequest, McpRefreshRequest
49
49
  )
50
50
 
51
- from autocoder.ignorefiles.ignore_file_utils import should_ignore
51
+ from autocoder.common.ignorefiles.ignore_file_utils import should_ignore
52
52
 
53
53
 
54
54
  @byzerllm.prompt()
@@ -368,7 +368,7 @@ class AutoCoderArgs(pydantic.BaseModel):
368
368
  segment_ratio: Optional[float] = 0.2
369
369
  buff_ratio: Optional[float] = 0.1
370
370
 
371
- disable_inference_enhance: Optional[bool] = False
371
+ disable_inference_enhance: Optional[bool] = True
372
372
  inference_deep_thought: Optional[bool] = False
373
373
  inference_slow_without_deep_thought: Optional[bool] = False
374
374
  inference_compute_precision: int = 64
@@ -0,0 +1,52 @@
1
+ """
2
+ Conversation management package for AutoCoder.
3
+
4
+ This package provides a unified conversation management system that serves
5
+ different components of AutoCoder, replacing separate implementations in:
6
+ - agentic_edit.py
7
+ - auto_command.py
8
+ - agentic_edit_conversation.py
9
+ """
10
+
11
+ from autocoder.common.conversations.conversation_manager import (
12
+ ConversationManager,
13
+ ConversationType,
14
+ get_conversation_manager,
15
+ Message,
16
+ Conversation
17
+ )
18
+
19
+ from autocoder.common.conversations.compatibility import (
20
+ # Command conversation compatibility
21
+ CommandMessage,
22
+ ExtendedCommandMessage,
23
+ CommandConversation,
24
+ load_command_conversation,
25
+ save_command_conversation,
26
+ save_to_command_memory_file,
27
+
28
+ # Agentic edit conversation compatibility
29
+ get_agentic_conversation,
30
+ AgenticConversationWrapper
31
+ )
32
+
33
+ __all__ = [
34
+ # Main conversation manager
35
+ 'ConversationManager',
36
+ 'ConversationType',
37
+ 'get_conversation_manager',
38
+ 'Message',
39
+ 'Conversation',
40
+
41
+ # Command conversation compatibility
42
+ 'CommandMessage',
43
+ 'ExtendedCommandMessage',
44
+ 'CommandConversation',
45
+ 'load_command_conversation',
46
+ 'save_command_conversation',
47
+ 'save_to_command_memory_file',
48
+
49
+ # Agentic edit conversation compatibility
50
+ 'get_agentic_conversation',
51
+ 'AgenticConversationWrapper'
52
+ ]