auto-coder 0.1.300__tar.gz → 0.1.302__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 (204) hide show
  1. {auto_coder-0.1.300 → auto_coder-0.1.302}/PKG-INFO +1 -1
  2. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/auto_coder.py +1 -4
  4. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/auto_coder_runner.py +2 -2
  5. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/commands/auto_command.py +51 -11
  6. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/__init__.py +4 -0
  7. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/action_yml_file_manager.py +76 -11
  8. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/auto_coder_lang.py +2 -2
  9. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_merge.py +15 -1
  10. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_merge_diff.py +15 -1
  11. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_merge_editblock.py +15 -1
  12. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_merge_strict_diff.py +14 -1
  13. auto_coder-0.1.302/src/autocoder/version.py +1 -0
  14. auto_coder-0.1.300/src/autocoder/version.py +0 -1
  15. {auto_coder-0.1.300 → auto_coder-0.1.302}/LICENSE +0 -0
  16. {auto_coder-0.1.300 → auto_coder-0.1.302}/README.md +0 -0
  17. {auto_coder-0.1.300 → auto_coder-0.1.302}/setup.cfg +0 -0
  18. {auto_coder-0.1.300 → auto_coder-0.1.302}/setup.py +0 -0
  19. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/auto_coder.egg-info/SOURCES.txt +0 -0
  20. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  21. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/auto_coder.egg-info/entry_points.txt +0 -0
  22. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/auto_coder.egg-info/requires.txt +0 -0
  23. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/auto_coder.egg-info/top_level.txt +0 -0
  24. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/__init__.py +0 -0
  25. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/__init__.py +0 -0
  26. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  27. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/auto_filegroup.py +0 -0
  28. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/auto_guess_query.py +0 -0
  29. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  30. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/auto_review_commit.py +0 -0
  31. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/auto_tool.py +0 -0
  32. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/coder.py +0 -0
  33. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/designer.py +0 -0
  34. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/planner.py +0 -0
  35. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/agent/project_reader.py +0 -0
  36. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/auto_coder_rag.py +0 -0
  37. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/auto_coder_server.py +0 -0
  38. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/benchmark.py +0 -0
  39. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/chat/__init__.py +0 -0
  40. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/chat_auto_coder.py +0 -0
  41. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/chat_auto_coder_lang.py +0 -0
  42. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/command_args.py +0 -0
  43. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/command_parser.py +0 -0
  44. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/commands/__init__.py +0 -0
  45. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/commands/auto_web.py +0 -0
  46. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/commands/tools.py +0 -0
  47. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/JupyterClient.py +0 -0
  48. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/ShellClient.py +0 -0
  49. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/anything2images.py +0 -0
  50. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/anything2img.py +0 -0
  51. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/audio.py +0 -0
  52. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/auto_configure.py +0 -0
  53. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/buildin_tokenizer.py +0 -0
  54. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/chunk_validation.py +0 -0
  55. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/cleaner.py +0 -0
  56. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_execute.py +0 -0
  57. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_generate.py +0 -0
  58. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  59. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  60. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  61. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/code_modification_ranker.py +0 -0
  62. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/command_completer.py +0 -0
  63. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/command_generator.py +0 -0
  64. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/command_templates.py +0 -0
  65. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/computer_use.py +0 -0
  66. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/conf_import_export.py +0 -0
  67. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/conf_validator.py +0 -0
  68. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/const.py +0 -0
  69. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/context_pruner.py +0 -0
  70. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/conversation_pruner.py +0 -0
  71. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/files.py +0 -0
  72. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/git_utils.py +0 -0
  73. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/global_cancel.py +0 -0
  74. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/image_to_page.py +0 -0
  75. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/index_import_export.py +0 -0
  76. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/interpreter.py +0 -0
  77. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/llm_rerank.py +0 -0
  78. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/mcp_hub.py +0 -0
  79. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/mcp_server.py +0 -0
  80. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  81. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  82. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  83. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/mcp_tools.py +0 -0
  84. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/memory_manager.py +0 -0
  85. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/model_speed_test.py +0 -0
  86. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/printer.py +0 -0
  87. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/recall_validation.py +0 -0
  88. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/result_manager.py +0 -0
  89. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/screenshots.py +0 -0
  90. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/search.py +0 -0
  91. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/search_replace.py +0 -0
  92. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/shells.py +0 -0
  93. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/stats_panel.py +0 -0
  94. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/sys_prompt.py +0 -0
  95. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/text.py +0 -0
  96. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/types.py +0 -0
  97. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  98. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/data/byzerllm.md +0 -0
  99. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/data/tokenizer.json +0 -0
  100. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/db/__init__.py +0 -0
  101. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/db/store.py +0 -0
  102. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/dispacher/__init__.py +0 -0
  103. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/dispacher/actions/__init__.py +0 -0
  104. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/dispacher/actions/action.py +0 -0
  105. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/dispacher/actions/copilot.py +0 -0
  106. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  107. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  108. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
  109. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/__init__.py +0 -0
  110. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/entry.py +0 -0
  111. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/filter/__init__.py +0 -0
  112. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/filter/normal_filter.py +0 -0
  113. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/filter/quick_filter.py +0 -0
  114. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/for_command.py +0 -0
  115. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/index.py +0 -0
  116. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/symbols_utils.py +0 -0
  117. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/index/types.py +0 -0
  118. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/lang.py +0 -0
  119. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/models.py +0 -0
  120. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/plugins/__init__.py +0 -0
  121. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  122. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  123. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/plugins/sample_plugin.py +0 -0
  124. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  125. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/plugins/utils.py +0 -0
  126. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/privacy/__init__.py +0 -0
  127. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/privacy/model_filter.py +0 -0
  128. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/pyproject/__init__.py +0 -0
  129. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/__init__.py +0 -0
  130. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/api_server.py +0 -0
  131. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/__init__.py +0 -0
  132. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/base_cache.py +0 -0
  133. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  134. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  135. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  136. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  137. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  138. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  139. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/cache/simple_cache.py +0 -0
  140. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/conversation_to_queries.py +0 -0
  141. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/doc_filter.py +0 -0
  142. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/document_retriever.py +0 -0
  143. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/lang.py +0 -0
  144. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/llm_wrapper.py +0 -0
  145. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/loaders/__init__.py +0 -0
  146. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  147. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  148. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  149. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  150. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/long_context_rag.py +0 -0
  151. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  152. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/rag_config.py +0 -0
  153. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/rag_entry.py +0 -0
  154. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/raw_rag.py +0 -0
  155. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/relevant_utils.py +0 -0
  156. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/searchable.py +0 -0
  157. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/simple_directory_reader.py +0 -0
  158. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/simple_rag.py +0 -0
  159. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/stream_event/__init__.py +0 -0
  160. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  161. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/stream_event/types.py +0 -0
  162. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/token_checker.py +0 -0
  163. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/token_counter.py +0 -0
  164. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/token_limiter.py +0 -0
  165. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/token_limiter_utils.py +0 -0
  166. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/types.py +0 -0
  167. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/utils.py +0 -0
  168. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/rag/variable_holder.py +0 -0
  169. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/regexproject/__init__.py +0 -0
  170. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/suffixproject/__init__.py +0 -0
  171. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/tsproject/__init__.py +0 -0
  172. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/__init__.py +0 -0
  173. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/_markitdown.py +0 -0
  174. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  175. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  176. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/auto_project_type.py +0 -0
  177. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  178. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/conversation_store.py +0 -0
  179. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  180. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/llms.py +0 -0
  181. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/log_capture.py +0 -0
  182. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/model_provider_selector.py +0 -0
  183. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/multi_turn.py +0 -0
  184. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/operate_config_api.py +0 -0
  185. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/print_table.py +0 -0
  186. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/project_structure.py +0 -0
  187. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/queue_communicate.py +0 -0
  188. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/request_event_queue.py +0 -0
  189. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/request_queue.py +0 -0
  190. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/rest.py +0 -0
  191. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/stream_thinking.py +0 -0
  192. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/tests.py +0 -0
  193. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/thread_utils.py +0 -0
  194. {auto_coder-0.1.300 → auto_coder-0.1.302}/src/autocoder/utils/types.py +0 -0
  195. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_action_regex_project.py +0 -0
  196. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_action_yml_file_manager.py +0 -0
  197. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_chat_auto_coder.py +0 -0
  198. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_code_auto_merge_editblock.py +0 -0
  199. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_command_completer.py +0 -0
  200. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_planner.py +0 -0
  201. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_plugins.py +0 -0
  202. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_privacy.py +0 -0
  203. {auto_coder-0.1.300 → auto_coder-0.1.302}/tests/test_queue_communicate.py +0 -0
  204. {auto_coder-0.1.300 → auto_coder-0.1.302}/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.300
3
+ Version: 0.1.302
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.300
3
+ Version: 0.1.302
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -120,12 +120,9 @@ def main(input_args: Optional[List[str]] = None):
120
120
  if raw_args.command == "revert":
121
121
  repo_path = args.source_dir
122
122
 
123
- file_content = open(args.file).read()
124
- md5 = hashlib.md5(file_content.encode("utf-8")).hexdigest()
125
123
  file_name = os.path.basename(args.file)
126
-
127
124
  revert_result = git_utils.revert_changes(
128
- repo_path, f"auto_coder_{file_name}_{md5}"
125
+ repo_path, f"auto_coder_{file_name}"
129
126
  )
130
127
  if revert_result:
131
128
  print(f"Successfully reverted changes for {args.file}")
@@ -1402,7 +1402,7 @@ def commit(query: str):
1402
1402
  md5 = hashlib.md5(file_content.encode("utf-8")).hexdigest()
1403
1403
  file_name = os.path.basename(execute_file)
1404
1404
  commit_result = git_utils.commit_changes(
1405
- ".", f"{commit_message}\nauto_coder_{file_name}_{md5}"
1405
+ ".", f"{commit_message}\nauto_coder_{file_name}"
1406
1406
  )
1407
1407
  git_utils.print_commit_info(commit_result=commit_result)
1408
1408
  if commit_message:
@@ -1542,7 +1542,7 @@ def coding(query: str):
1542
1542
  cmd = ["--file", execute_file]
1543
1543
  auto_coder_main(cmd)
1544
1544
  result_manager = ResultManager()
1545
- result_manager.append(content="", meta={"commit_message": f"auto_coder_{latest_yaml_file}_{md5}","action": "coding", "input":{
1545
+ result_manager.append(content="", meta={"commit_message": f"auto_coder_{latest_yaml_file}","action": "coding", "input":{
1546
1546
  "query": query
1547
1547
  }})
1548
1548
 
@@ -25,7 +25,7 @@ from autocoder.common.auto_configure import config_readme
25
25
  from autocoder.utils.auto_project_type import ProjectTypeAnalyzer
26
26
  from rich.text import Text
27
27
  from autocoder.common.mcp_server import get_mcp_server,McpServerInfoRequest
28
-
28
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
29
29
  class CommandMessage(BaseModel):
30
30
  role: str
31
31
  content: str
@@ -41,35 +41,52 @@ class CommandConversation(BaseModel):
41
41
  current_conversation: List[CommandMessage]
42
42
 
43
43
 
44
- def load_memory_file() -> CommandConversation:
45
- """Load command conversations from memory file"""
44
+ def load_memory_file(args: AutoCoderArgs) -> CommandConversation:
45
+ """Load command conversations from memory file"""
46
+
46
47
  memory_dir = os.path.join(".auto-coder", "memory")
47
48
  file_path = os.path.join(memory_dir, "command_chat_history.json")
48
49
  if os.path.exists(file_path):
49
50
  with open(file_path, "r", encoding="utf-8") as f:
50
51
  try:
51
- return CommandConversation.model_validate_json(f.read())
52
+ conversation = CommandConversation.model_validate_json(f.read())
53
+ conversation.current_conversation = conversation.current_conversation
54
+ return conversation
52
55
  except Exception:
53
56
  return CommandConversation(history={}, current_conversation=[])
54
57
  return CommandConversation(history={}, current_conversation=[])
55
58
 
56
59
 
60
+ class TimeBasedStrategy:
61
+ def __init__(self, max_idle_time=3600): # 1 hour in seconds
62
+ self.max_idle_time = max_idle_time
63
+
64
+ def should_archive(self, last_message_time):
65
+ """Check if the conversation should be archived based on last message time"""
66
+ current_time = time.time()
67
+ return current_time - last_message_time > self.max_idle_time
68
+
57
69
  def save_to_memory_file(query: str, response: str):
58
70
  """Save command conversation to memory file using CommandConversation structure"""
59
71
  memory_dir = os.path.join(".auto-coder", "memory")
60
72
  os.makedirs(memory_dir, exist_ok=True)
61
73
  file_path = os.path.join(memory_dir, "command_chat_history.json")
74
+
75
+ # Initialize time-based strategy
76
+ time_strategy = TimeBasedStrategy()
77
+
62
78
  # Create new message objects
79
+ current_time = time.time()
63
80
  user_msg = CommandMessage(role="user", content=query)
64
81
  assistant_msg = CommandMessage(role="assistant", content=response)
65
82
 
66
83
  extended_user_msg = ExtendedCommandMessage(
67
84
  message=user_msg,
68
- timestamp=str(int(time.time()))
85
+ timestamp=str(int(current_time))
69
86
  )
70
87
  extended_assistant_msg = ExtendedCommandMessage(
71
88
  message=assistant_msg,
72
- timestamp=str(int(time.time()))
89
+ timestamp=str(int(current_time))
73
90
  )
74
91
 
75
92
  # Load existing conversation or create new
@@ -78,6 +95,14 @@ def save_to_memory_file(query: str, response: str):
78
95
  try:
79
96
  existing_conv = CommandConversation.model_validate_json(
80
97
  f.read())
98
+ # Check if we should archive current conversation
99
+ if existing_conv.current_conversation:
100
+ last_message_time = float(existing_conv.current_conversation[-1].timestamp)
101
+ if time_strategy.should_archive(last_message_time):
102
+ # Move current conversation to history
103
+ timestamp = str(int(last_message_time))
104
+ existing_conv.history[timestamp] = existing_conv.current_conversation
105
+ existing_conv.current_conversation = []
81
106
  except Exception:
82
107
  existing_conv = CommandConversation(
83
108
  history={},
@@ -174,8 +199,8 @@ class CommandAutoTuner:
174
199
 
175
200
  def get_conversations(self) -> List[CommandMessage]:
176
201
  """Get conversation history from memory file"""
177
- conversation = load_memory_file()
178
- return [extended_msg for extended_msg in conversation.current_conversation]
202
+ conversation = load_memory_file(args=self.args)
203
+ return [command_message.message for command_message in conversation.current_conversation]
179
204
 
180
205
  @byzerllm.prompt()
181
206
  def _analyze(self, request: AutoCommandRequest) -> str:
@@ -284,7 +309,7 @@ class CommandAutoTuner:
284
309
  "command_combination_readme": self._command_combination_readme.prompt()
285
310
  }
286
311
 
287
-
312
+ @byzerllm.prompt()
288
313
  def _command_combination_readme(self) -> str:
289
314
  """
290
315
  <function_combination_readme>
@@ -311,12 +336,19 @@ class CommandAutoTuner:
311
336
  ### 关于对话大小的问题
312
337
  我们对话历史以及查看的内容累计不能超过 {{ conversation_safe_zone_tokens }} 个tokens,当你读取索引文件 (get_project_map) 的时候,你可以看到
313
338
  每个文件的tokens数,你可以根据这个信息来决定如何读取这个文件。如果不确定,使用 count_file_tokens 函数来获取文件的tokens数,再决定如何读取。
314
- 而对于分析一个超大文件推荐组合 read_files 带上 line_ranges 参数来读取,或者组合 read_file_withread_file_with_keyword_ranges 等来读取,
339
+ 而对于分析一个超大文件推荐组合 read_files 带上 line_ranges 参数来读取,或者组合 read_file_with_keyword_ranges 等来读取,
315
340
  每个函数你还可以使用多次来获取更多信息。
316
341
 
317
342
  ### 善用脚本完成一些基本的操作
318
343
  根据操作系统,终端类型,脚本类型等各种信息,在涉及到路径或者脚本的时候,需要考虑平台差异性。
319
344
 
345
+ ### 关于查看文件的技巧
346
+ 在使用 read_files 之前,如果你有明确的目标,比如查看这个文件某个函数在这个文件的实现,你可以先用 read_file_with_keyword_ranges 函数来大致定位,该函数会返回你看到的
347
+ 内容的行号范围,你可以通过拓展这个行号范围继续使用 read_file_with_line_ranges 来查看完整函数信息,或者使用 read_files 函数带上 line_ranges 参数来精确读取。
348
+
349
+ 如果你没有明确目标,需要单纯查看这个文件获取必要的信息,可以先通过 count_file_tokens 函数来获取文件的tokens数,如果数目小于安全对话窗口的tokens数的1/2, 那么可以直接用
350
+ read_files 函数来读取,否则建议一次读取200-600行,多次读取直到找到合适的信息。
351
+
320
352
  ## 其他一些注意事项
321
353
  1. 使用 read_files 时,一次性读取文件数量不要超过1个,每次只读取200行。如果发现读取的内容不够,则继续读取下面200行。
322
354
  2. 确实有必要才使用 get_project_structure 函数,否则可以多使用 list_files 函数来查看目录。
@@ -350,8 +382,16 @@ class CommandAutoTuner:
350
382
  # 获取 prompt 内容
351
383
  prompt = self._analyze.prompt(request)
352
384
 
385
+ # 获取对当前项目变更的最近8条历史人物
386
+ action_yml_file_manager = ActionYmlFileManager(self.args.source_dir)
387
+ history_tasks = action_yml_file_manager.to_tasks_prompt(limit=8)
388
+ new_messages = []
389
+ if self.args.enable_task_history:
390
+ new_messages.append({"role": "user", "content": history_tasks})
391
+ new_messages.append({"role": "assistant", "content": "好的,我知道最近的任务对项目的变更了,我会参考这些来更好的理解你的需求。"})
392
+
353
393
  # 构造对话上下文
354
- conversations = [{"role": "user", "content": prompt}]
394
+ conversations = new_messages + [{"role": "user", "content": prompt}]
355
395
 
356
396
  # 使用 stream_out 进行输出
357
397
  printer = Printer()
@@ -406,6 +406,10 @@ class AutoCoderArgs(pydantic.BaseModel):
406
406
 
407
407
  dynamic_urls: List[str] = []
408
408
 
409
+ add_updated_urls: List[str] = []
410
+
411
+ enable_task_history: Optional[bool] = False
412
+
409
413
  class Config:
410
414
  protected_namespaces = ()
411
415
 
@@ -5,7 +5,7 @@ import git
5
5
  from typing import List, Dict, Tuple, Optional, Union, Any
6
6
  from loguru import logger
7
7
  from autocoder.common.printer import Printer
8
-
8
+ import byzerllm
9
9
 
10
10
  class ActionYmlFileManager:
11
11
  """
@@ -19,15 +19,15 @@ class ActionYmlFileManager:
19
19
  - 处理 commit 消息与 YAML 文件的关联
20
20
  """
21
21
 
22
- def __init__(self, source_dir: str):
22
+ def __init__(self, source_dir: Optional[str] = None):
23
23
  """
24
24
  初始化 ActionYmlFileManager
25
25
 
26
26
  Args:
27
27
  source_dir: 项目根目录
28
28
  """
29
- self.source_dir = source_dir
30
- self.actions_dir = os.path.join(source_dir, "actions")
29
+ self.source_dir = source_dir or os.getcwd()
30
+ self.actions_dir = os.path.join(self.source_dir, "actions")
31
31
  self.printer = Printer()
32
32
 
33
33
  def ensure_actions_dir(self) -> bool:
@@ -249,7 +249,7 @@ class ActionYmlFileManager:
249
249
  with open(yaml_path, 'r', encoding='utf-8') as f:
250
250
  yaml_content = f.read()
251
251
  file_md5 = hashlib.md5(yaml_content.encode("utf-8")).hexdigest()
252
- return f"auto_coder_{file_name}_{file_md5}"
252
+ return f"auto_coder_{file_name}"
253
253
  except Exception as e:
254
254
  logger.error(f"Failed to calculate commit ID: {e}")
255
255
  return None
@@ -269,11 +269,11 @@ class ActionYmlFileManager:
269
269
 
270
270
  try:
271
271
  # auto_coder_000000001926_chat_action.yml_88614d5bd4046a068786c252fbc39c13
272
- parts = commit_id.split("_")
273
- # 去掉第一部分 "auto_coder_" 和最后一部分 hash 值
274
- if len(parts) >= 3:
275
- file_name_parts = parts[1:-1]
276
- return "_".join(file_name_parts)
272
+ # auto_coder_000000001926_chat_action.yml
273
+ if commit_id.endswith("_chat_action.yml"):
274
+ return commit_id[len("auto_coder_"):]
275
+ else:
276
+ return "_".join(commit_id[len("auto_coder_"):].split("_")[0:-1])
277
277
  return None
278
278
  except Exception:
279
279
  return None
@@ -364,4 +364,69 @@ class ActionYmlFileManager:
364
364
  yaml_content['file_name'] = file_name
365
365
  history_tasks.append(yaml_content)
366
366
 
367
- return history_tasks
367
+ return history_tasks
368
+
369
+ @byzerllm.prompt()
370
+ def _to_tasks_prompt(self, history_tasks: List[Dict]) -> str:
371
+ """
372
+ <history_tasks>
373
+ 最近的任务历史记录,从最新到最旧排序:
374
+
375
+ {% for task in history_tasks %}
376
+ ## 任务 {{ loop.index }}: {{ task.file_name }}
377
+
378
+ {% if task.query %}
379
+ **用户需求**: {{ task.query }}
380
+ {% endif %}
381
+
382
+ {% if task.urls %}
383
+ **用户提供的相关文件**:
384
+ {% if task.urls is string %}
385
+ - {{ task.urls }}
386
+ {% else %}
387
+ {% for url in task.urls %}
388
+ - {{ url }}
389
+ {% endfor %}
390
+ {% endif %}
391
+ {% endif %}
392
+
393
+ {% if task.dynamic_urls %}
394
+ **系统提取的相关文件**:
395
+ {% if task.dynamic_urls is string %}
396
+ - {{ task.dynamic_urls }}
397
+ {% else %}
398
+ {% for url in task.dynamic_urls %}
399
+ - {{ url }}
400
+ {% endfor %}
401
+ {% endif %}
402
+ {% endif %}
403
+
404
+ {% if task.add_updated_urls %}
405
+ **变更的文件**:
406
+ {% if task.add_updated_urls is string %}
407
+ - {{ task.add_updated_urls }}
408
+ {% else %}
409
+ {% for url in task.add_updated_urls %}
410
+ - {{ url }}
411
+ {% endfor %}
412
+ {% endif %}
413
+ {% endif %}
414
+
415
+ {% if task.how_to_reproduce %}
416
+ **变更过程**:
417
+ ```
418
+ {{ task.how_to_reproduce }}
419
+ ```
420
+ {% endif %}
421
+
422
+ {% if not loop.last %}
423
+ ---
424
+ {% endif %}
425
+ {% endfor %}
426
+ </history_tasks>
427
+ 请注意上述历史任务记录,以便更好地理解当前用户需求的上下文和连续性。
428
+ """
429
+
430
+ def to_tasks_prompt(self, limit: int = 5) -> str:
431
+ history_tasks = self.parse_history_tasks(limit)
432
+ return self._to_tasks_prompt.prompt(history_tasks)
@@ -195,7 +195,7 @@ MESSAGES = {
195
195
  "mcp_server_info_error": "Error getting MCP server info: {{ error }}",
196
196
  "mcp_server_info_title": "Connected MCP Server Info",
197
197
  "no_commit_file_name": "Cannot get the file name of the commit_id in the actions directory: {{commit_id}}",
198
- "yaml_update_success": "✅ Successfully updated YAML file: {{yaml_file}} with how_to_reproduce field",
198
+ "yaml_update_success": "✅ Successfully updated YAML file: {{yaml_file}}",
199
199
  "yaml_save_error": "❌ Error saving YAML file {{yaml_file}}: {{error}}",
200
200
  },
201
201
  "zh": {
@@ -389,7 +389,7 @@ MESSAGES = {
389
389
  "mcp_server_info_error": "获取MCP服务器信息时出错: {{ error }}",
390
390
  "mcp_server_info_title": "已连接的MCP服务器信息",
391
391
  "no_commit_file_name": "无法获取commit_id关联的actions 目录下的文件名: {{commit_id}}",
392
- "yaml_update_success": "✅ 成功更新YAML文件: {{yaml_file}},添加了how_to_reproduce字段",
392
+ "yaml_update_success": "✅ 成功更新YAML文件: {{yaml_file}}",
393
393
  "yaml_save_error": "❌ 保存YAML文件出错 {{yaml_file}}: {{error}}",
394
394
  }}
395
395
 
@@ -10,6 +10,7 @@ import hashlib
10
10
  from autocoder.common import files as FileUtils
11
11
  from autocoder.common.printer import Printer
12
12
  from autocoder.common.auto_coder_lang import get_message
13
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
13
14
 
14
15
  class PathAndCode(pydantic.BaseModel):
15
16
  path: str
@@ -196,5 +197,18 @@ class CodeAutoMerge:
196
197
 
197
198
  self.printer.print_in_terminal("files_merged", total=total)
198
199
  if not force_skip_git and not self.args.skip_commit:
199
- commit_result = git_utils.commit_changes(self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}_{md5}")
200
+ commit_result = git_utils.commit_changes(self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}")
201
+
202
+ action_yml_file_manager = ActionYmlFileManager(self.args.source_dir)
203
+ action_file_name = os.path.basename(self.args.file)
204
+ add_updated_urls = []
205
+ commit_result.changed_files
206
+ for file in commit_result.changed_files:
207
+ add_updated_urls.append(os.path.join(self.args.source_dir, file))
208
+
209
+ self.args.add_updated_urls = add_updated_urls
210
+ update_yaml_success = action_yml_file_manager.update_yaml_field(action_file_name, "add_updated_urls", add_updated_urls)
211
+ if not update_yaml_success:
212
+ self.printer.print_in_terminal("yaml_save_error", style="red", yaml_file=action_file_name)
213
+
200
214
  git_utils.print_commit_info(commit_result=commit_result)
@@ -4,6 +4,7 @@ from autocoder.common import AutoCoderArgs,git_utils
4
4
  from typing import List,Union,Tuple
5
5
  import pydantic
6
6
  import byzerllm
7
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
7
8
  from autocoder.common.printer import Printer
8
9
  import hashlib
9
10
  from pathlib import Path
@@ -579,7 +580,20 @@ class CodeAutoMergeDiff:
579
580
 
580
581
  self.printer.print_in_terminal("files_merged_total", total=total)
581
582
  if not force_skip_git and not self.args.skip_commit:
582
- commit_result = git_utils.commit_changes(self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}_{md5}")
583
+ commit_result = git_utils.commit_changes(self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}")
584
+
585
+ action_yml_file_manager = ActionYmlFileManager(self.args.source_dir)
586
+ action_file_name = os.path.basename(self.args.file)
587
+ add_updated_urls = []
588
+ commit_result.changed_files
589
+ for file in commit_result.changed_files:
590
+ add_updated_urls.append(os.path.join(self.args.source_dir, file))
591
+
592
+ self.args.add_updated_urls = add_updated_urls
593
+ update_yaml_success = action_yml_file_manager.update_yaml_field(action_file_name, "add_updated_urls", add_updated_urls)
594
+ if not update_yaml_success:
595
+ self.printer.print_in_terminal("yaml_save_error", style="red", yaml_file=action_file_name)
596
+
583
597
  git_utils.print_commit_info(commit_result=commit_result)
584
598
  else:
585
599
  # Print edits for review
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  from byzerllm.utils.client import code_utils
3
3
  from autocoder.common import AutoCoderArgs, git_utils
4
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
4
5
  from autocoder.common.text import TextSimilarity
5
6
  from autocoder.utils.queue_communicate import (
6
7
  queue_communicate,
@@ -426,8 +427,21 @@ class CodeAutoMergeEditBlock:
426
427
  try:
427
428
  commit_result = git_utils.commit_changes(
428
429
  self.args.source_dir,
429
- f"{self.args.query}\nauto_coder_{file_name}_{md5}",
430
+ f"{self.args.query}\nauto_coder_{file_name}",
430
431
  )
432
+
433
+ action_yml_file_manager = ActionYmlFileManager(self.args.source_dir)
434
+ action_file_name = os.path.basename(self.args.file)
435
+ add_updated_urls = []
436
+ commit_result.changed_files
437
+ for file in commit_result.changed_files:
438
+ add_updated_urls.append(os.path.join(self.args.source_dir, file))
439
+
440
+ self.args.add_updated_urls = add_updated_urls
441
+ update_yaml_success = action_yml_file_manager.update_yaml_field(action_file_name, "add_updated_urls", add_updated_urls)
442
+ if not update_yaml_success:
443
+ self.printer.print_in_terminal("yaml_save_error", style="red", yaml_file=action_file_name)
444
+
431
445
  git_utils.print_commit_info(commit_result=commit_result)
432
446
  except Exception as e:
433
447
  self.printer.print_str_in_terminal(
@@ -5,6 +5,7 @@ from autocoder.common import AutoCoderArgs, git_utils
5
5
  from typing import List,Tuple
6
6
  import pydantic
7
7
  import byzerllm
8
+ from autocoder.common.action_yml_file_manager import ActionYmlFileManager
8
9
  from autocoder.common.printer import Printer
9
10
  import hashlib
10
11
  from pathlib import Path
@@ -286,8 +287,20 @@ class CodeAutoMergeStrictDiff:
286
287
  self.printer.print_in_terminal("files_merged_total", total=total)
287
288
  if not force_skip_git and not self.args.skip_commit:
288
289
  commit_result = git_utils.commit_changes(
289
- self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}_{md5}"
290
+ self.args.source_dir, f"{self.args.query}\nauto_coder_{file_name}"
290
291
  )
292
+ action_yml_file_manager = ActionYmlFileManager(self.args.source_dir)
293
+ action_file_name = os.path.basename(self.args.file)
294
+ add_updated_urls = []
295
+ commit_result.changed_files
296
+ for file in commit_result.changed_files:
297
+ add_updated_urls.append(os.path.join(self.args.source_dir, file))
298
+
299
+ self.args.add_updated_urls = add_updated_urls
300
+ update_yaml_success = action_yml_file_manager.update_yaml_field(action_file_name, "add_updated_urls", add_updated_urls)
301
+ if not update_yaml_success:
302
+ self.printer.print_in_terminal("yaml_save_error", style="red", yaml_file=action_file_name)
303
+
291
304
  git_utils.print_commit_info(commit_result=commit_result)
292
305
  else:
293
306
  # Print diff blocks for review
@@ -0,0 +1 @@
1
+ __version__ = "0.1.302"
@@ -1 +0,0 @@
1
- __version__ = "0.1.300"
File without changes
File without changes
File without changes
File without changes