auto-coder 0.1.366__tar.gz → 0.1.369__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 (354) hide show
  1. {auto_coder-0.1.366 → auto_coder-0.1.369}/PKG-INFO +1 -1
  2. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/auto_coder.egg-info/SOURCES.txt +5 -0
  4. auto_coder-0.1.369/src/autocoder/common/command_file_manager/__init__.py +25 -0
  5. auto_coder-0.1.369/src/autocoder/common/command_file_manager/examples.py +142 -0
  6. auto_coder-0.1.369/src/autocoder/common/command_file_manager/manager.py +175 -0
  7. auto_coder-0.1.369/src/autocoder/common/command_file_manager/models.py +119 -0
  8. auto_coder-0.1.369/src/autocoder/common/command_file_manager/utils.py +119 -0
  9. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit.py +4 -2
  10. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/events/event_manager.py +1 -1
  11. auto_coder-0.1.369/src/autocoder/version.py +2 -0
  12. auto_coder-0.1.366/src/autocoder/version.py +0 -1
  13. {auto_coder-0.1.366 → auto_coder-0.1.369}/LICENSE +0 -0
  14. {auto_coder-0.1.366 → auto_coder-0.1.369}/README.md +0 -0
  15. {auto_coder-0.1.366 → auto_coder-0.1.369}/setup.cfg +0 -0
  16. {auto_coder-0.1.366 → auto_coder-0.1.369}/setup.py +0 -0
  17. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  18. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/auto_coder.egg-info/entry_points.txt +0 -0
  19. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/auto_coder.egg-info/requires.txt +0 -0
  20. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/auto_coder.egg-info/top_level.txt +0 -0
  21. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/__init__.py +0 -0
  22. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/__init__.py +0 -0
  23. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/agentic_filter.py +0 -0
  24. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  25. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/auto_filegroup.py +0 -0
  26. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/auto_guess_query.py +0 -0
  27. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/auto_learn.py +0 -0
  28. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  29. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/auto_review_commit.py +0 -0
  30. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/auto_tool.py +0 -0
  31. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/__init__.py +0 -0
  32. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/agent_hub.py +0 -0
  33. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/agentic_lang.py +0 -0
  34. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/agentic_tool_display.py +0 -0
  35. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/base_agent.py +0 -0
  36. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/default_tools.py +0 -0
  37. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/test_base_agent.py +0 -0
  38. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tool_registry.py +0 -0
  39. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/__init__.py +0 -0
  40. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py +0 -0
  41. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py +0 -0
  42. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/base_tool_resolver.py +0 -0
  43. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/example_tool_resolver.py +0 -0
  44. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py +0 -0
  45. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py +0 -0
  46. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py +0 -0
  47. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +0 -0
  48. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/replace_in_file_tool_resolver.py +0 -0
  49. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py +0 -0
  50. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py +0 -0
  51. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py +0 -0
  52. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/use_mcp_tool_resolver.py +0 -0
  53. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +0 -0
  54. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/types.py +0 -0
  55. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/base_agentic/utils.py +0 -0
  56. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/coder.py +0 -0
  57. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/designer.py +0 -0
  58. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/planner.py +0 -0
  59. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/agent/project_reader.py +0 -0
  60. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/auto_coder.py +0 -0
  61. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/auto_coder_rag.py +0 -0
  62. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/auto_coder_runner.py +0 -0
  63. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/auto_coder_server.py +0 -0
  64. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/benchmark.py +0 -0
  65. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/chat/__init__.py +0 -0
  66. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/chat/conf_command.py +0 -0
  67. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/chat/models_command.py +0 -0
  68. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/chat/rules_command.py +0 -0
  69. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/chat_auto_coder.py +0 -0
  70. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/chat_auto_coder_lang.py +0 -0
  71. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/command_args.py +0 -0
  72. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/command_parser.py +0 -0
  73. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/commands/__init__.py +0 -0
  74. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/commands/auto_command.py +0 -0
  75. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/commands/auto_web.py +0 -0
  76. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/commands/tools.py +0 -0
  77. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/JupyterClient.py +0 -0
  78. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/ShellClient.py +0 -0
  79. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/__init__.py +0 -0
  80. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/action_yml_file_manager.py +0 -0
  81. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/anything2images.py +0 -0
  82. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/anything2img.py +0 -0
  83. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/audio.py +0 -0
  84. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/auto_coder_lang.py +0 -0
  85. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/auto_configure.py +0 -0
  86. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/buildin_tokenizer.py +0 -0
  87. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/chunk_validation.py +0 -0
  88. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/cleaner.py +0 -0
  89. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_execute.py +0 -0
  90. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_generate.py +0 -0
  91. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  92. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  93. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  94. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_merge.py +0 -0
  95. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  96. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  97. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  98. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/code_modification_ranker.py +0 -0
  99. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/command_completer.py +0 -0
  100. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/command_completer_v2.py +0 -0
  101. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/command_generator.py +0 -0
  102. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/command_templates.py +0 -0
  103. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/computer_use.py +0 -0
  104. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conf_import_export.py +0 -0
  105. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conf_utils.py +0 -0
  106. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conf_validator.py +0 -0
  107. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/const.py +0 -0
  108. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/context_pruner.py +0 -0
  109. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conversation_pruner.py +0 -0
  110. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conversations/__init__.py +0 -0
  111. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conversations/compatibility.py +0 -0
  112. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conversations/conversation_manager.py +0 -0
  113. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/conversations/example.py +0 -0
  114. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/directory_cache/__init__.py +0 -0
  115. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/directory_cache/cache.py +0 -0
  116. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/directory_cache/test_cache.py +0 -0
  117. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/__init__.py +0 -0
  118. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/backup.py +0 -0
  119. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/conversation_checkpoint.py +0 -0
  120. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/examples.py +0 -0
  121. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/manager.py +0 -0
  122. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/models.py +0 -0
  123. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/store.py +0 -0
  124. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/test_backup.py +0 -0
  125. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/test_manager.py +0 -0
  126. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/test_models.py +0 -0
  127. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/test_store.py +0 -0
  128. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/test_utils.py +0 -0
  129. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_checkpoint/utils.py +0 -0
  130. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_monitor/__init__.py +0 -0
  131. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/file_monitor/monitor.py +0 -0
  132. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/files.py +0 -0
  133. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/git_utils.py +0 -0
  134. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/global_cancel.py +0 -0
  135. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/ignorefiles/__init__.py +0 -0
  136. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/ignorefiles/ignore_file_utils.py +0 -0
  137. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
  138. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/image_to_page.py +0 -0
  139. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/index_import_export.py +0 -0
  140. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/interpreter.py +0 -0
  141. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/llm_rerank.py +0 -0
  142. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_hub.py +0 -0
  143. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_server.py +0 -0
  144. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_server_install.py +0 -0
  145. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_server_types.py +0 -0
  146. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  147. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  148. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  149. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/mcp_tools.py +0 -0
  150. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/memory_manager.py +0 -0
  151. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/model_speed_tester.py +0 -0
  152. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/openai_content.py +0 -0
  153. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/printer.py +0 -0
  154. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/recall_validation.py +0 -0
  155. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/result_manager.py +0 -0
  156. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/rulefiles/__init__.py +0 -0
  157. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/rulefiles/autocoderrules_utils.py +0 -0
  158. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/run_cmd.py +0 -0
  159. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/save_formatted_log.py +0 -0
  160. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/screenshots.py +0 -0
  161. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/search.py +0 -0
  162. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/search_replace.py +0 -0
  163. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/shells.py +0 -0
  164. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/stats_panel.py +0 -0
  165. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/stream_out_type.py +0 -0
  166. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/sys_prompt.py +0 -0
  167. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/test_run_cmd.py +0 -0
  168. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/text.py +0 -0
  169. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/token_cost_caculate.py +0 -0
  170. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/types.py +0 -0
  171. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  172. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/__init__.py +0 -0
  173. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/__init__.py +0 -0
  174. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
  175. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
  176. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
  177. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
  178. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
  179. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
  180. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
  181. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
  182. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
  183. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +0 -0
  184. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +0 -0
  185. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -0
  186. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -0
  187. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +0 -0
  188. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
  189. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +0 -0
  190. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
  191. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
  192. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
  193. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_generate.py +0 -0
  194. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
  195. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
  196. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
  197. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_merge.py +0 -0
  198. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
  199. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
  200. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
  201. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_diff_manager.py +0 -0
  202. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
  203. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_manager.py +0 -0
  204. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
  205. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/__init__.py +0 -0
  206. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/base_compiler.py +0 -0
  207. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/compiler_config_api.py +0 -0
  208. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/compiler_config_manager.py +0 -0
  209. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/compiler_factory.py +0 -0
  210. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/java_compiler.py +0 -0
  211. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/models.py +0 -0
  212. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/normal_compiler.py +0 -0
  213. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/provided_compiler.py +0 -0
  214. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/python_compiler.py +0 -0
  215. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/reactjs_compiler.py +0 -0
  216. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/shadow_compiler.py +0 -0
  217. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/compilers/vue_compiler.py +0 -0
  218. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/data/byzerllm.md +0 -0
  219. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/data/tokenizer.json +0 -0
  220. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/db/__init__.py +0 -0
  221. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/db/store.py +0 -0
  222. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/dispacher/__init__.py +0 -0
  223. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/dispacher/actions/__init__.py +0 -0
  224. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/dispacher/actions/action.py +0 -0
  225. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/dispacher/actions/copilot.py +0 -0
  226. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  227. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  228. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/events/__init__.py +0 -0
  229. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/events/event_content.py +0 -0
  230. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/events/event_manager_singleton.py +0 -0
  231. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/events/event_store.py +0 -0
  232. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/events/event_types.py +0 -0
  233. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/helper/__init__.py +0 -0
  234. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/helper/project_creator.py +0 -0
  235. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/helper/rag_doc_creator.py +0 -0
  236. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/__init__.py +0 -0
  237. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/entry.py +0 -0
  238. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/filter/__init__.py +0 -0
  239. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/filter/normal_filter.py +0 -0
  240. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/filter/quick_filter.py +0 -0
  241. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/for_command.py +0 -0
  242. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/index.py +0 -0
  243. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/symbols_utils.py +0 -0
  244. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/index/types.py +0 -0
  245. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/lang.py +0 -0
  246. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/__init__.py +0 -0
  247. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/base_linter.py +0 -0
  248. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/linter_factory.py +0 -0
  249. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/models.py +0 -0
  250. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/normal_linter.py +0 -0
  251. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/python_linter.py +0 -0
  252. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/reactjs_linter.py +0 -0
  253. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/shadow_linter.py +0 -0
  254. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/linters/vue_linter.py +0 -0
  255. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/memory/__init__.py +0 -0
  256. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/memory/active_context_manager.py +0 -0
  257. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/memory/active_package.py +0 -0
  258. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/memory/async_processor.py +0 -0
  259. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/memory/directory_mapper.py +0 -0
  260. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/models.py +0 -0
  261. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/plugins/__init__.py +0 -0
  262. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  263. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  264. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/plugins/sample_plugin.py +0 -0
  265. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  266. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/plugins/utils.py +0 -0
  267. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/privacy/__init__.py +0 -0
  268. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/privacy/model_filter.py +0 -0
  269. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/pyproject/__init__.py +0 -0
  270. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/__init__.py +0 -0
  271. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/api_server.py +0 -0
  272. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/__init__.py +0 -0
  273. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/base_cache.py +0 -0
  274. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  275. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  276. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
  277. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  278. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  279. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  280. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  281. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/cache/simple_cache.py +0 -0
  282. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/conversation_to_queries.py +0 -0
  283. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/doc_filter.py +0 -0
  284. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/document_retriever.py +0 -0
  285. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/lang.py +0 -0
  286. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/llm_wrapper.py +0 -0
  287. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/loaders/__init__.py +0 -0
  288. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  289. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  290. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/loaders/filter_utils.py +0 -0
  291. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/loaders/image_loader.py +0 -0
  292. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  293. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  294. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/long_context_rag.py +0 -0
  295. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  296. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/rag_config.py +0 -0
  297. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/rag_entry.py +0 -0
  298. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/raw_rag.py +0 -0
  299. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/relevant_utils.py +0 -0
  300. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/searchable.py +0 -0
  301. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/simple_directory_reader.py +0 -0
  302. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/simple_rag.py +0 -0
  303. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/stream_event/__init__.py +0 -0
  304. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  305. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/stream_event/types.py +0 -0
  306. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/test_doc_filter.py +0 -0
  307. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/test_long_context_rag.py +0 -0
  308. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/test_token_limiter.py +0 -0
  309. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/token_checker.py +0 -0
  310. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/token_counter.py +0 -0
  311. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/token_limiter.py +0 -0
  312. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/token_limiter_utils.py +0 -0
  313. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/types.py +0 -0
  314. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/utils.py +0 -0
  315. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/rag/variable_holder.py +0 -0
  316. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/regexproject/__init__.py +0 -0
  317. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/run_context.py +0 -0
  318. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/shadows/__init__.py +0 -0
  319. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/shadows/shadow_manager.py +0 -0
  320. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/suffixproject/__init__.py +0 -0
  321. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/tsproject/__init__.py +0 -0
  322. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/__init__.py +0 -0
  323. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/_markitdown.py +0 -0
  324. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  325. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  326. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/auto_project_type.py +0 -0
  327. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  328. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/conversation_store.py +0 -0
  329. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  330. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/llms.py +0 -0
  331. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/log_capture.py +0 -0
  332. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/model_provider_selector.py +0 -0
  333. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/multi_turn.py +0 -0
  334. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/operate_config_api.py +0 -0
  335. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/print_table.py +0 -0
  336. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/project_structure.py +0 -0
  337. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/queue_communicate.py +0 -0
  338. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/request_event_queue.py +0 -0
  339. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/request_queue.py +0 -0
  340. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/rest.py +0 -0
  341. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/stream_thinking.py +0 -0
  342. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/tests.py +0 -0
  343. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/thread_utils.py +0 -0
  344. {auto_coder-0.1.366 → auto_coder-0.1.369}/src/autocoder/utils/types.py +0 -0
  345. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_action_regex_project.py +0 -0
  346. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_action_yml_file_manager.py +0 -0
  347. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_chat_auto_coder.py +0 -0
  348. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_code_auto_merge_editblock.py +0 -0
  349. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_command_completer.py +0 -0
  350. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_planner.py +0 -0
  351. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_plugins.py +0 -0
  352. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_privacy.py +0 -0
  353. {auto_coder-0.1.366 → auto_coder-0.1.369}/tests/test_queue_communicate.py +0 -0
  354. {auto_coder-0.1.366 → auto_coder-0.1.369}/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.366
3
+ Version: 0.1.369
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.366
3
+ Version: 0.1.369
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -132,6 +132,11 @@ src/autocoder/common/text.py
132
132
  src/autocoder/common/token_cost_caculate.py
133
133
  src/autocoder/common/types.py
134
134
  src/autocoder/common/utils_code_auto_generate.py
135
+ src/autocoder/common/command_file_manager/__init__.py
136
+ src/autocoder/common/command_file_manager/examples.py
137
+ src/autocoder/common/command_file_manager/manager.py
138
+ src/autocoder/common/command_file_manager/models.py
139
+ src/autocoder/common/command_file_manager/utils.py
135
140
  src/autocoder/common/conversations/__init__.py
136
141
  src/autocoder/common/conversations/compatibility.py
137
142
  src/autocoder/common/conversations/conversation_manager.py
@@ -0,0 +1,25 @@
1
+ """
2
+ 命令管理模块
3
+
4
+ 该模块提供了一种机制来管理和分析 .autocodercommands 目录中的命令文件。
5
+ 主要功能包括:
6
+ 1. 列出命令目录中的所有命令文件
7
+ 2. 读取指定的命令文件内容
8
+ 3. 分析命令文件,提取其中的Jinja2变量
9
+ 4. 提供简单直观的API,便于集成到现有的项目中
10
+ """
11
+
12
+ from autocoder.common.command_file_manager.models import (
13
+ CommandFile, JinjaVariable, CommandFileAnalysisResult, ListCommandsResult
14
+ )
15
+ from autocoder.common.command_file_manager.manager import CommandManager
16
+ from autocoder.common.command_file_manager.utils import (
17
+ extract_jinja2_variables, extract_jinja2_variables_with_metadata,
18
+ analyze_command_file, is_command_file
19
+ )
20
+
21
+ __all__ = [
22
+ 'CommandFile', 'JinjaVariable', 'CommandFileAnalysisResult', 'ListCommandsResult',
23
+ 'CommandManager', 'extract_jinja2_variables', 'extract_jinja2_variables_with_metadata',
24
+ 'analyze_command_file', 'is_command_file'
25
+ ]
@@ -0,0 +1,142 @@
1
+ """
2
+ 命令管理模块的使用示例
3
+
4
+ 展示如何使用命令管理模块的主要功能。
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ import json
10
+ from typing import Dict, Set, List
11
+
12
+ from autocoder.common.command_manager import (
13
+ CommandManager, CommandFile, JinjaVariable, CommandFileAnalysisResult
14
+ )
15
+
16
+
17
+ def setup_test_environment():
18
+ """设置测试环境,创建示例命令文件"""
19
+ # 创建临时命令目录
20
+ test_dir = os.path.join(os.path.dirname(__file__), "test_commands")
21
+ os.makedirs(test_dir, exist_ok=True)
22
+
23
+ # 创建示例命令文件
24
+ example1 = os.path.join(test_dir, "example1.autocodercommand")
25
+ with open(example1, "w") as f:
26
+ f.write("""
27
+ {# @var: project_name, default: MyProject, description: 项目名称 #}
28
+ {# @var: author, default: User, description: 作者姓名 #}
29
+ # {{ project_name }}
30
+
31
+ 这是一个由 {{ author }} 创建的项目。
32
+
33
+ {% if include_license %}
34
+ ## 许可证
35
+ 本项目使用 {{ license_type }} 许可证。
36
+ {% endif %}
37
+ """)
38
+
39
+ # 创建子目录和另一个示例文件
40
+ sub_dir = os.path.join(test_dir, "subdir")
41
+ os.makedirs(sub_dir, exist_ok=True)
42
+
43
+ example2 = os.path.join(sub_dir, "example2.j2")
44
+ with open(example2, "w") as f:
45
+ f.write("""
46
+ # {{ project_name }} 配置
47
+
48
+ version: {{ version }}
49
+ environment: {{ env }}
50
+ """)
51
+
52
+ return test_dir
53
+
54
+
55
+ def list_command_files_example(manager: CommandManager):
56
+ """列出命令文件示例"""
57
+ print("\n=== 列出命令文件 ===")
58
+
59
+ # 不递归列出
60
+ print("不递归列出:")
61
+ result = manager.list_command_files(recursive=False)
62
+ if result.success:
63
+ for file in result.command_files:
64
+ print(f"- {file}")
65
+ else:
66
+ print(f"错误: {result.errors}")
67
+
68
+ # 递归列出
69
+ print("\n递归列出:")
70
+ result = manager.list_command_files(recursive=True)
71
+ if result.success:
72
+ for file in result.command_files:
73
+ print(f"- {file}")
74
+ else:
75
+ print(f"错误: {result.errors}")
76
+
77
+
78
+ def read_command_file_example(manager: CommandManager):
79
+ """读取命令文件示例"""
80
+ print("\n=== 读取命令文件 ===")
81
+
82
+ # 读取第一个示例文件
83
+ command_file = manager.read_command_file("example1.autocodercommand")
84
+ if command_file:
85
+ print(f"文件名: {command_file.file_name}")
86
+ print(f"文件路径: {command_file.file_path}")
87
+ print("文件内容:")
88
+ print(command_file.content)
89
+ else:
90
+ print("文件不存在或读取失败")
91
+
92
+
93
+ def analyze_command_file_example(manager: CommandManager):
94
+ """分析命令文件示例"""
95
+ print("\n=== 分析命令文件 ===")
96
+
97
+ # 分析第一个示例文件
98
+ analysis = manager.analyze_command_file("example1.autocodercommand")
99
+ if analysis:
100
+ print(f"文件名: {analysis.file_name}")
101
+ print(f"原始变量: {', '.join(analysis.raw_variables)}")
102
+ print("变量详情:")
103
+ for var in analysis.variables:
104
+ print(f" - {var.name}")
105
+ if var.default_value:
106
+ print(f" 默认值: {var.default_value}")
107
+ if var.description:
108
+ print(f" 描述: {var.description}")
109
+ else:
110
+ print("文件分析失败")
111
+
112
+
113
+ def get_all_variables_example(manager: CommandManager):
114
+ """获取所有变量示例"""
115
+ print("\n=== 获取所有变量 ===")
116
+
117
+ # 获取所有命令文件中的变量
118
+ variables_map = manager.get_all_variables(recursive=True)
119
+ for file, variables in variables_map.items():
120
+ print(f"文件: {file}")
121
+ print(f"变量: {', '.join(variables)}")
122
+ print()
123
+
124
+
125
+ def main():
126
+ """主函数"""
127
+ # 设置测试环境
128
+ test_dir = setup_test_environment()
129
+ print(f"测试目录: {test_dir}")
130
+
131
+ # 创建命令管理器
132
+ manager = CommandManager(test_dir)
133
+
134
+ # 运行示例
135
+ list_command_files_example(manager)
136
+ read_command_file_example(manager)
137
+ analyze_command_file_example(manager)
138
+ get_all_variables_example(manager)
139
+
140
+
141
+ if __name__ == "__main__":
142
+ main()
@@ -0,0 +1,175 @@
1
+ """
2
+ 命令管理器
3
+
4
+ 整个模块的主入口,提供高层次的API接口,用于列出、读取和分析命令文件。
5
+ """
6
+
7
+ import os
8
+ import logging
9
+ from typing import Dict, List, Optional, Set, Tuple
10
+
11
+ from autocoder.common.command_file_manager.models import (
12
+ CommandFile, JinjaVariable, CommandFileAnalysisResult, ListCommandsResult
13
+ )
14
+ from autocoder.common.command_file_manager.utils import (
15
+ extract_jinja2_variables, extract_jinja2_variables_with_metadata,
16
+ analyze_command_file, is_command_file
17
+ )
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+
22
+ class CommandManager:
23
+ """命令管理器,提供高层次的API接口"""
24
+
25
+ def __init__(self, commands_dir: str):
26
+ """
27
+ 初始化命令管理器
28
+
29
+ Args:
30
+ commands_dir: 命令文件目录路径
31
+ """
32
+ self.commands_dir = os.path.abspath(commands_dir)
33
+
34
+ # 确保目录存在
35
+ if not os.path.exists(self.commands_dir):
36
+ logger.warning(f"命令目录不存在: {self.commands_dir}")
37
+ os.makedirs(self.commands_dir, exist_ok=True)
38
+ logger.info(f"已创建命令目录: {self.commands_dir}")
39
+
40
+ def list_command_files(self, recursive: bool = False) -> ListCommandsResult:
41
+ """
42
+ 列出命令目录中的所有命令文件
43
+
44
+ Args:
45
+ recursive: 是否递归搜索子目录
46
+
47
+ Returns:
48
+ ListCommandsResult: 列出结果
49
+ """
50
+ result = ListCommandsResult(success=True)
51
+
52
+ try:
53
+ if recursive:
54
+ for root, _, files in os.walk(self.commands_dir):
55
+ for file in files:
56
+ if is_command_file(file):
57
+ file_path = os.path.join(root, file)
58
+ rel_path = os.path.relpath(file_path, self.commands_dir)
59
+ result.add_command_file(rel_path)
60
+ else:
61
+ for item in os.listdir(self.commands_dir):
62
+ item_path = os.path.join(self.commands_dir, item)
63
+ if os.path.isfile(item_path) and is_command_file(item):
64
+ result.add_command_file(item)
65
+ except Exception as e:
66
+ logger.error(f"列出命令文件时出错: {str(e)}")
67
+ result.add_error(self.commands_dir, f"列出命令文件时出错: {str(e)}")
68
+
69
+ return result
70
+
71
+ def read_command_file(self, file_name: str) -> Optional[CommandFile]:
72
+ """
73
+ 读取指定的命令文件
74
+
75
+ Args:
76
+ file_name: 命令文件名或相对路径
77
+
78
+ Returns:
79
+ Optional[CommandFile]: 命令文件对象,如果文件不存在则返回None
80
+ """
81
+ file_path = os.path.join(self.commands_dir, file_name)
82
+
83
+ if not os.path.isfile(file_path):
84
+ logger.warning(f"命令文件不存在: {file_path}")
85
+ return None
86
+
87
+ try:
88
+ with open(file_path, 'r', encoding='utf-8') as f:
89
+ content = f.read()
90
+
91
+ return CommandFile(
92
+ file_path=file_path,
93
+ file_name=os.path.basename(file_path),
94
+ content=content
95
+ )
96
+ except Exception as e:
97
+ logger.error(f"读取命令文件时出错: {str(e)}")
98
+ return None
99
+
100
+ def analyze_command_file(self, file_name: str) -> Optional[CommandFileAnalysisResult]:
101
+ """
102
+ 分析指定的命令文件,提取其中的Jinja2变量
103
+
104
+ Args:
105
+ file_name: 命令文件名或相对路径
106
+
107
+ Returns:
108
+ Optional[CommandFileAnalysisResult]: 分析结果,如果文件不存在则返回None
109
+ """
110
+ command_file = self.read_command_file(file_name)
111
+ if command_file is None:
112
+ return None
113
+
114
+ try:
115
+ return analyze_command_file(command_file.file_path, command_file.content)
116
+ except Exception as e:
117
+ logger.error(f"分析命令文件时出错: {str(e)}")
118
+ return None
119
+
120
+ def get_all_variables(self, recursive: bool = False) -> Dict[str, Set[str]]:
121
+ """
122
+ 获取所有命令文件中的变量
123
+
124
+ Args:
125
+ recursive: 是否递归搜索子目录
126
+
127
+ Returns:
128
+ Dict[str, Set[str]]: 文件路径到变量集合的映射
129
+ """
130
+ result: Dict[str, Set[str]] = {}
131
+
132
+ list_result = self.list_command_files(recursive)
133
+ if not list_result.success:
134
+ logger.error("获取命令文件列表失败")
135
+ return result
136
+
137
+ for file_name in list_result.command_files:
138
+ command_file = self.read_command_file(file_name)
139
+ if command_file is None:
140
+ continue
141
+
142
+ try:
143
+ variables = extract_jinja2_variables(command_file.content)
144
+ result[file_name] = variables
145
+ except Exception as e:
146
+ logger.error(f"提取文件 {file_name} 的变量时出错: {str(e)}")
147
+
148
+ return result
149
+
150
+ def get_command_file_path(self, file_name: str) -> str:
151
+ """
152
+ 获取命令文件的完整路径
153
+
154
+ Args:
155
+ file_name: 命令文件名或相对路径
156
+
157
+ Returns:
158
+ str: 命令文件的完整路径
159
+ """
160
+ return os.path.join(self.commands_dir, file_name)
161
+
162
+ def _get_absolute_path(self, file_path: str) -> str:
163
+ """
164
+ 获取文件的绝对路径
165
+
166
+ Args:
167
+ file_path: 文件相对路径或绝对路径
168
+
169
+ Returns:
170
+ str: 文件的绝对路径
171
+ """
172
+ if os.path.isabs(file_path):
173
+ return file_path
174
+ else:
175
+ return os.path.join(self.commands_dir, file_path)
@@ -0,0 +1,119 @@
1
+ """
2
+ 命令管理模块的数据模型
3
+
4
+ 定义了表示命令文件、命令内容和操作结果的数据类。
5
+ """
6
+
7
+ import os
8
+ import re
9
+ from dataclasses import dataclass, field
10
+ from typing import Dict, List, Optional, Set
11
+
12
+
13
+ @dataclass
14
+ class CommandFile:
15
+ """表示单个命令文件的信息"""
16
+ file_path: str
17
+ file_name: str
18
+ content: str
19
+
20
+ @classmethod
21
+ def from_dict(cls, data: Dict) -> 'CommandFile':
22
+ """从字典创建CommandFile对象"""
23
+ return cls(
24
+ file_path=data['file_path'],
25
+ file_name=data['file_name'],
26
+ content=data['content']
27
+ )
28
+
29
+ def to_dict(self) -> Dict:
30
+ """将CommandFile对象转换为字典"""
31
+ return {
32
+ 'file_path': self.file_path,
33
+ 'file_name': self.file_name,
34
+ 'content': self.content
35
+ }
36
+
37
+
38
+ @dataclass
39
+ class JinjaVariable:
40
+ """表示从命令文件中提取的Jinja2变量"""
41
+ name: str
42
+ default_value: Optional[str] = None
43
+ description: Optional[str] = None
44
+
45
+ @classmethod
46
+ def from_dict(cls, data: Dict) -> 'JinjaVariable':
47
+ """从字典创建JinjaVariable对象"""
48
+ return cls(
49
+ name=data['name'],
50
+ default_value=data.get('default_value'),
51
+ description=data.get('description')
52
+ )
53
+
54
+ def to_dict(self) -> Dict:
55
+ """将JinjaVariable对象转换为字典"""
56
+ return {
57
+ 'name': self.name,
58
+ 'default_value': self.default_value,
59
+ 'description': self.description
60
+ }
61
+
62
+
63
+ @dataclass
64
+ class CommandFileAnalysisResult:
65
+ """表示命令文件分析的结果"""
66
+ file_path: str
67
+ file_name: str
68
+ variables: List[JinjaVariable] = field(default_factory=list)
69
+ raw_variables: Set[str] = field(default_factory=set)
70
+
71
+ def add_variable(self, variable: JinjaVariable) -> None:
72
+ """添加一个变量"""
73
+ self.variables.append(variable)
74
+ self.raw_variables.add(variable.name)
75
+
76
+ @classmethod
77
+ def from_dict(cls, data: Dict) -> 'CommandFileAnalysisResult':
78
+ """从字典创建CommandFileAnalysisResult对象"""
79
+ result = cls(
80
+ file_path=data['file_path'],
81
+ file_name=data['file_name'],
82
+ raw_variables=set(data.get('raw_variables', []))
83
+ )
84
+
85
+ for var_data in data.get('variables', []):
86
+ result.variables.append(JinjaVariable.from_dict(var_data))
87
+
88
+ return result
89
+
90
+ def to_dict(self) -> Dict:
91
+ """将CommandFileAnalysisResult对象转换为字典"""
92
+ return {
93
+ 'file_path': self.file_path,
94
+ 'file_name': self.file_name,
95
+ 'variables': [var.to_dict() for var in self.variables],
96
+ 'raw_variables': list(self.raw_variables)
97
+ }
98
+
99
+
100
+ @dataclass
101
+ class ListCommandsResult:
102
+ """表示列出命令文件的结果"""
103
+ success: bool
104
+ command_files: List[str] = field(default_factory=list)
105
+ errors: Dict[str, str] = field(default_factory=dict)
106
+
107
+ @property
108
+ def has_errors(self) -> bool:
109
+ """是否有错误"""
110
+ return len(self.errors) > 0
111
+
112
+ def add_error(self, path: str, error_message: str) -> None:
113
+ """添加错误信息"""
114
+ self.errors[path] = error_message
115
+ self.success = False
116
+
117
+ def add_command_file(self, file_path: str) -> None:
118
+ """添加命令文件路径"""
119
+ self.command_files.append(file_path)
@@ -0,0 +1,119 @@
1
+ """
2
+ 命令管理模块的工具函数
3
+
4
+ 提供用于处理命令文件和提取Jinja2变量的工具函数。
5
+ """
6
+
7
+ import os
8
+ import re
9
+ from typing import List, Set, Dict, Optional, Tuple
10
+
11
+ from autocoder.common.command_file_manager.models import JinjaVariable, CommandFileAnalysisResult
12
+
13
+
14
+ def extract_jinja2_variables(content: str) -> Set[str]:
15
+ """
16
+ 从文本内容中提取Jinja2变量名
17
+
18
+ Args:
19
+ content: 文本内容
20
+
21
+ Returns:
22
+ Set[str]: 变量名集合
23
+ """
24
+ # 匹配 {{ variable }} 格式的变量
25
+ pattern = r'{{\s*([a-zA-Z0-9_]+)\s*}}'
26
+ variables = set(re.findall(pattern, content))
27
+
28
+ # 匹配 {% if variable %} 等控制结构中的变量
29
+ control_pattern = r'{%\s*(?:if|for|elif|unless)\s+(?:not\s+)?([a-zA-Z0-9_]+)'
30
+ control_vars = set(re.findall(control_pattern, content))
31
+
32
+ # 合并结果
33
+ variables.update(control_vars)
34
+
35
+ return variables
36
+
37
+
38
+ def extract_jinja2_variables_with_metadata(content: str) -> List[JinjaVariable]:
39
+ """
40
+ 从文本内容中提取Jinja2变量及其元数据(如默认值和描述)
41
+
42
+ 此函数会查找特殊注释格式来提取变量的元数据:
43
+ {# @var: variable_name, default: default_value, description: variable description #}
44
+
45
+ Args:
46
+ content: 文本内容
47
+
48
+ Returns:
49
+ List[JinjaVariable]: 变量对象列表
50
+ """
51
+ # 首先提取所有原始变量名
52
+ raw_variables = extract_jinja2_variables(content)
53
+
54
+ # 查找变量元数据注释
55
+ metadata_pattern = r'{#\s*@var:\s*([a-zA-Z0-9_]+)(?:\s*,\s*default:\s*([^,]+))?(?:\s*,\s*description:\s*([^#]+))?\s*#}'
56
+ metadata_matches = re.finditer(metadata_pattern, content)
57
+
58
+ # 创建变量字典,键为变量名
59
+ variables_dict: Dict[str, JinjaVariable] = {}
60
+
61
+ # 处理元数据注释
62
+ for match in metadata_matches:
63
+ var_name = match.group(1).strip()
64
+ default_value = match.group(2).strip() if match.group(2) else None
65
+ description = match.group(3).strip() if match.group(3) else None
66
+
67
+ variables_dict[var_name] = JinjaVariable(
68
+ name=var_name,
69
+ default_value=default_value,
70
+ description=description
71
+ )
72
+
73
+ # 为没有元数据的变量创建基本对象
74
+ for var_name in raw_variables:
75
+ if var_name not in variables_dict:
76
+ variables_dict[var_name] = JinjaVariable(name=var_name)
77
+
78
+ return list(variables_dict.values())
79
+
80
+
81
+ def analyze_command_file(file_path: str, file_content: str) -> CommandFileAnalysisResult:
82
+ """
83
+ 分析命令文件,提取其中的Jinja2变量
84
+
85
+ Args:
86
+ file_path: 文件路径
87
+ file_content: 文件内容
88
+
89
+ Returns:
90
+ CommandFileAnalysisResult: 分析结果
91
+ """
92
+ file_name = os.path.basename(file_path)
93
+
94
+ # 提取变量及其元数据
95
+ variables = extract_jinja2_variables_with_metadata(file_content)
96
+ raw_variable_names = extract_jinja2_variables(file_content)
97
+
98
+ # 创建分析结果
99
+ result = CommandFileAnalysisResult(
100
+ file_path=file_path,
101
+ file_name=file_name,
102
+ variables=variables,
103
+ raw_variables=raw_variable_names
104
+ )
105
+
106
+ return result
107
+
108
+
109
+ def is_command_file(file_name: str) -> bool:
110
+ """
111
+ 检查文件是否为命令文件
112
+
113
+ Args:
114
+ file_name: 文件名
115
+
116
+ Returns:
117
+ bool: 是否为命令文件
118
+ """
119
+ return file_name.endswith('.md')
@@ -936,7 +936,8 @@ class AgenticEdit:
936
936
  logger.info(
937
937
  "AgenticEdit analyze loop finished due to AttemptCompletion.")
938
938
  save_formatted_log(self.args.source_dir, json.dumps(conversations, ensure_ascii=False), "agentic_conversation")
939
- return
939
+ mark_event_should_finish = True
940
+ continue
940
941
 
941
942
  if isinstance(tool_obj, PlanModeRespondTool):
942
943
  logger.info(
@@ -946,7 +947,8 @@ class AgenticEdit:
946
947
  logger.info(
947
948
  "AgenticEdit analyze loop finished due to PlanModeRespond.")
948
949
  save_formatted_log(self.args.source_dir, json.dumps(conversations, ensure_ascii=False), "agentic_conversation")
949
- return
950
+ mark_event_should_finish = True
951
+ continue
950
952
 
951
953
  # Resolve the tool
952
954
  resolver_cls = TOOL_RESOLVER_MAP.get(type(tool_obj))
@@ -147,7 +147,7 @@ class EventManager:
147
147
  logger.debug(f"Waiting for response to event: {event.event_id}")
148
148
 
149
149
  # 无限等待响应,不设超时
150
- wait_result = blocker.wait(timeout=60.0) # 设置一个较长的超时时间(60秒)
150
+ wait_result = blocker.wait(timeout=60.0*60) # 设置一个较长的超时时间(60秒)
151
151
 
152
152
  if not wait_result:
153
153
  logger.warning(f"Timeout waiting for response to event: {event.event_id}")
@@ -0,0 +1,2 @@
1
+
2
+ __version__ = "0.1.369"
@@ -1 +0,0 @@
1
- __version__ = "0.1.366"
File without changes
File without changes
File without changes
File without changes