auto-coder 0.1.381__tar.gz → 0.1.383__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 (360) hide show
  1. {auto_coder-0.1.381 → auto_coder-0.1.383}/PKG-INFO +1 -1
  2. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/auto_coder.egg-info/PKG-INFO +1 -1
  3. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/auto_coder.egg-info/SOURCES.txt +3 -0
  4. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/auto_coder_runner.py +61 -1
  5. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_completer_v2.py +14 -14
  6. auto_coder-0.1.383/src/autocoder/common/llm_friendly_package.py +410 -0
  7. auto_coder-0.1.383/src/autocoder/common/llm_friendly_package_example.py +138 -0
  8. auto_coder-0.1.383/src/autocoder/common/llm_friendly_package_test.py +63 -0
  9. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit.py +69 -2
  10. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +11 -3
  11. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/operate_config_api.py +14 -38
  12. auto_coder-0.1.383/src/autocoder/version.py +2 -0
  13. auto_coder-0.1.381/src/autocoder/version.py +0 -2
  14. {auto_coder-0.1.381 → auto_coder-0.1.383}/LICENSE +0 -0
  15. {auto_coder-0.1.381 → auto_coder-0.1.383}/README.md +0 -0
  16. {auto_coder-0.1.381 → auto_coder-0.1.383}/setup.cfg +0 -0
  17. {auto_coder-0.1.381 → auto_coder-0.1.383}/setup.py +0 -0
  18. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  19. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/auto_coder.egg-info/entry_points.txt +0 -0
  20. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/auto_coder.egg-info/requires.txt +0 -0
  21. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/auto_coder.egg-info/top_level.txt +0 -0
  22. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/__init__.py +0 -0
  23. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/__init__.py +0 -0
  24. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/agentic_filter.py +0 -0
  25. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  26. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/auto_filegroup.py +0 -0
  27. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/auto_guess_query.py +0 -0
  28. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/auto_learn.py +0 -0
  29. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  30. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/auto_review_commit.py +0 -0
  31. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/auto_tool.py +0 -0
  32. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/__init__.py +0 -0
  33. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/agent_hub.py +0 -0
  34. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/agentic_lang.py +0 -0
  35. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/agentic_tool_display.py +0 -0
  36. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/base_agent.py +0 -0
  37. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/default_tools.py +0 -0
  38. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/test_base_agent.py +0 -0
  39. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tool_registry.py +0 -0
  40. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/__init__.py +0 -0
  41. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py +0 -0
  42. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py +0 -0
  43. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/base_tool_resolver.py +0 -0
  44. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/example_tool_resolver.py +0 -0
  45. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py +0 -0
  46. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py +0 -0
  47. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py +0 -0
  48. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +0 -0
  49. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/replace_in_file_tool_resolver.py +0 -0
  50. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py +0 -0
  51. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py +0 -0
  52. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py +0 -0
  53. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/use_mcp_tool_resolver.py +0 -0
  54. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py +0 -0
  55. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/types.py +0 -0
  56. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/base_agentic/utils.py +0 -0
  57. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/coder.py +0 -0
  58. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/designer.py +0 -0
  59. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/planner.py +0 -0
  60. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/agent/project_reader.py +0 -0
  61. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/auto_coder.py +0 -0
  62. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/auto_coder_rag.py +0 -0
  63. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/auto_coder_server.py +0 -0
  64. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/benchmark.py +0 -0
  65. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/chat/__init__.py +0 -0
  66. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/chat/conf_command.py +0 -0
  67. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/chat/models_command.py +0 -0
  68. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/chat/rules_command.py +0 -0
  69. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/chat_auto_coder.py +0 -0
  70. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/chat_auto_coder_lang.py +0 -0
  71. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/command_args.py +0 -0
  72. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/command_parser.py +0 -0
  73. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/commands/__init__.py +0 -0
  74. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/commands/auto_command.py +0 -0
  75. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/commands/auto_web.py +0 -0
  76. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/commands/tools.py +0 -0
  77. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/JupyterClient.py +0 -0
  78. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/ShellClient.py +0 -0
  79. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/__init__.py +0 -0
  80. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/action_yml_file_manager.py +0 -0
  81. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/anything2images.py +0 -0
  82. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/anything2img.py +0 -0
  83. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/audio.py +0 -0
  84. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/auto_coder_lang.py +0 -0
  85. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/auto_configure.py +0 -0
  86. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/buildin_tokenizer.py +0 -0
  87. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/chunk_validation.py +0 -0
  88. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/cleaner.py +0 -0
  89. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_execute.py +0 -0
  90. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_generate.py +0 -0
  91. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  92. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  93. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  94. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_merge.py +0 -0
  95. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  96. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  97. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  98. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/code_modification_ranker.py +0 -0
  99. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_completer.py +0 -0
  100. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_file_manager/__init__.py +0 -0
  101. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_file_manager/examples.py +0 -0
  102. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_file_manager/manager.py +0 -0
  103. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_file_manager/models.py +0 -0
  104. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_file_manager/utils.py +0 -0
  105. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_generator.py +0 -0
  106. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/command_templates.py +0 -0
  107. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/computer_use.py +0 -0
  108. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conf_import_export.py +0 -0
  109. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conf_utils.py +0 -0
  110. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conf_validator.py +0 -0
  111. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/const.py +0 -0
  112. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/context_pruner.py +0 -0
  113. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conversation_pruner.py +0 -0
  114. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conversations/__init__.py +0 -0
  115. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conversations/compatibility.py +0 -0
  116. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conversations/conversation_manager.py +0 -0
  117. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/conversations/example.py +0 -0
  118. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/directory_cache/__init__.py +0 -0
  119. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/directory_cache/cache.py +0 -0
  120. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/directory_cache/test_cache.py +0 -0
  121. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/__init__.py +0 -0
  122. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/backup.py +0 -0
  123. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/conversation_checkpoint.py +0 -0
  124. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/examples.py +0 -0
  125. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/manager.py +0 -0
  126. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/models.py +0 -0
  127. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/store.py +0 -0
  128. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/test_backup.py +0 -0
  129. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/test_manager.py +0 -0
  130. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/test_models.py +0 -0
  131. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/test_store.py +0 -0
  132. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/test_utils.py +0 -0
  133. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_checkpoint/utils.py +0 -0
  134. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_monitor/__init__.py +0 -0
  135. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/file_monitor/monitor.py +0 -0
  136. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/files.py +0 -0
  137. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/git_utils.py +0 -0
  138. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/global_cancel.py +0 -0
  139. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/ignorefiles/__init__.py +0 -0
  140. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/ignorefiles/ignore_file_utils.py +0 -0
  141. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
  142. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/image_to_page.py +0 -0
  143. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/index_import_export.py +0 -0
  144. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/interpreter.py +0 -0
  145. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_hub.py +0 -0
  146. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_server.py +0 -0
  147. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_server_install.py +0 -0
  148. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_server_types.py +0 -0
  149. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  150. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  151. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  152. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/mcp_tools.py +0 -0
  153. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/memory_manager.py +0 -0
  154. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/model_speed_tester.py +0 -0
  155. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/openai_content.py +0 -0
  156. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/printer.py +0 -0
  157. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/recall_validation.py +0 -0
  158. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/result_manager.py +0 -0
  159. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/rulefiles/__init__.py +0 -0
  160. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/rulefiles/autocoderrules_utils.py +0 -0
  161. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/run_cmd.py +0 -0
  162. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/save_formatted_log.py +0 -0
  163. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/screenshots.py +0 -0
  164. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/search.py +0 -0
  165. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/search_replace.py +0 -0
  166. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/shells.py +0 -0
  167. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/stats_panel.py +0 -0
  168. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/stream_out_type.py +0 -0
  169. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/sys_prompt.py +0 -0
  170. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/test_run_cmd.py +0 -0
  171. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/text.py +0 -0
  172. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/token_cost_caculate.py +0 -0
  173. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/types.py +0 -0
  174. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  175. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/__init__.py +0 -0
  176. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/__init__.py +0 -0
  177. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
  178. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
  179. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
  180. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
  181. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
  182. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
  183. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
  184. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
  185. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
  186. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +0 -0
  187. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +0 -0
  188. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/test_execute_command_tool_resolver.py +0 -0
  189. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -0
  190. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/test_write_to_file_tool_resolver.py +0 -0
  191. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
  192. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +0 -0
  193. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_edit_types.py +0 -0
  194. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/agent/agentic_tool_display.py +0 -0
  195. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
  196. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_generate.py +0 -0
  197. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
  198. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
  199. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
  200. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_merge.py +0 -0
  201. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
  202. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
  203. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
  204. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_diff_manager.py +0 -0
  205. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
  206. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_manager.py +0 -0
  207. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
  208. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/__init__.py +0 -0
  209. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/base_compiler.py +0 -0
  210. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/compiler_config_api.py +0 -0
  211. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/compiler_config_manager.py +0 -0
  212. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/compiler_factory.py +0 -0
  213. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/java_compiler.py +0 -0
  214. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/models.py +0 -0
  215. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/normal_compiler.py +0 -0
  216. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/provided_compiler.py +0 -0
  217. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/python_compiler.py +0 -0
  218. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/reactjs_compiler.py +0 -0
  219. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/shadow_compiler.py +0 -0
  220. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/compilers/vue_compiler.py +0 -0
  221. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/data/byzerllm.md +0 -0
  222. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/data/tokenizer.json +0 -0
  223. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/db/__init__.py +0 -0
  224. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/db/store.py +0 -0
  225. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/dispacher/__init__.py +0 -0
  226. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/dispacher/actions/__init__.py +0 -0
  227. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/dispacher/actions/action.py +0 -0
  228. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/dispacher/actions/copilot.py +0 -0
  229. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  230. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  231. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/events/__init__.py +0 -0
  232. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/events/event_content.py +0 -0
  233. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/events/event_manager.py +0 -0
  234. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/events/event_manager_singleton.py +0 -0
  235. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/events/event_store.py +0 -0
  236. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/events/event_types.py +0 -0
  237. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/helper/__init__.py +0 -0
  238. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/helper/project_creator.py +0 -0
  239. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/helper/rag_doc_creator.py +0 -0
  240. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/__init__.py +0 -0
  241. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/entry.py +0 -0
  242. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/filter/__init__.py +0 -0
  243. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/filter/normal_filter.py +0 -0
  244. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/filter/quick_filter.py +0 -0
  245. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/for_command.py +0 -0
  246. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/index.py +0 -0
  247. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/symbols_utils.py +0 -0
  248. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/index/types.py +0 -0
  249. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/lang.py +0 -0
  250. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/__init__.py +0 -0
  251. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/base_linter.py +0 -0
  252. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/linter_factory.py +0 -0
  253. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/models.py +0 -0
  254. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/normal_linter.py +0 -0
  255. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/python_linter.py +0 -0
  256. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/reactjs_linter.py +0 -0
  257. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/shadow_linter.py +0 -0
  258. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/test_python_linter.py +0 -0
  259. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/test_reactjs_linter.py +0 -0
  260. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/test_vue_linter.py +0 -0
  261. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/linters/vue_linter.py +0 -0
  262. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/memory/__init__.py +0 -0
  263. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/memory/active_context_manager.py +0 -0
  264. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/memory/active_package.py +0 -0
  265. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/memory/async_processor.py +0 -0
  266. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/memory/directory_mapper.py +0 -0
  267. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/models.py +0 -0
  268. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/plugins/__init__.py +0 -0
  269. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  270. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  271. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/plugins/sample_plugin.py +0 -0
  272. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  273. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/plugins/utils.py +0 -0
  274. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/privacy/__init__.py +0 -0
  275. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/privacy/model_filter.py +0 -0
  276. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/pyproject/__init__.py +0 -0
  277. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/__init__.py +0 -0
  278. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/agentic_rag.py +0 -0
  279. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/api_server.py +0 -0
  280. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/__init__.py +0 -0
  281. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/base_cache.py +0 -0
  282. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  283. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  284. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
  285. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  286. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  287. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  288. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  289. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/cache/simple_cache.py +0 -0
  290. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/conversation_to_queries.py +0 -0
  291. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/doc_filter.py +0 -0
  292. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/document_retriever.py +0 -0
  293. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/lang.py +0 -0
  294. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/llm_wrapper.py +0 -0
  295. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/loaders/__init__.py +0 -0
  296. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  297. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  298. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/loaders/filter_utils.py +0 -0
  299. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/loaders/image_loader.py +0 -0
  300. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  301. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  302. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/long_context_rag.py +0 -0
  303. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  304. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/rag_config.py +0 -0
  305. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/rag_entry.py +0 -0
  306. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/relevant_utils.py +0 -0
  307. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/searchable.py +0 -0
  308. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/stream_event/__init__.py +0 -0
  309. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  310. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/stream_event/types.py +0 -0
  311. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/test_doc_filter.py +0 -0
  312. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/test_long_context_rag.py +0 -0
  313. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/test_token_limiter.py +0 -0
  314. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/token_checker.py +0 -0
  315. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/token_counter.py +0 -0
  316. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/token_limiter.py +0 -0
  317. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/token_limiter_utils.py +0 -0
  318. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/tools/__init__.py +0 -0
  319. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/tools/recall_tool.py +0 -0
  320. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/tools/search_tool.py +0 -0
  321. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/types.py +0 -0
  322. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/utils.py +0 -0
  323. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/rag/variable_holder.py +0 -0
  324. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/regexproject/__init__.py +0 -0
  325. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/run_context.py +0 -0
  326. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/shadows/__init__.py +0 -0
  327. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/shadows/shadow_manager.py +0 -0
  328. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/suffixproject/__init__.py +0 -0
  329. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/tsproject/__init__.py +0 -0
  330. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/__init__.py +0 -0
  331. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/_markitdown.py +0 -0
  332. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  333. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  334. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/auto_project_type.py +0 -0
  335. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  336. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/conversation_store.py +0 -0
  337. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  338. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/llms.py +0 -0
  339. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/log_capture.py +0 -0
  340. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/model_provider_selector.py +0 -0
  341. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/multi_turn.py +0 -0
  342. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/print_table.py +0 -0
  343. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/project_structure.py +0 -0
  344. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/queue_communicate.py +0 -0
  345. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/request_event_queue.py +0 -0
  346. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/request_queue.py +0 -0
  347. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/rest.py +0 -0
  348. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/stream_thinking.py +0 -0
  349. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/thread_utils.py +0 -0
  350. {auto_coder-0.1.381 → auto_coder-0.1.383}/src/autocoder/utils/types.py +0 -0
  351. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_action_regex_project.py +0 -0
  352. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_action_yml_file_manager.py +0 -0
  353. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_chat_auto_coder.py +0 -0
  354. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_code_auto_merge_editblock.py +0 -0
  355. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_command_completer.py +0 -0
  356. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_planner.py +0 -0
  357. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_plugins.py +0 -0
  358. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_privacy.py +0 -0
  359. {auto_coder-0.1.381 → auto_coder-0.1.383}/tests/test_queue_communicate.py +0 -0
  360. {auto_coder-0.1.381 → auto_coder-0.1.383}/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.381
3
+ Version: 0.1.383
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.381
3
+ Version: 0.1.383
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -106,6 +106,9 @@ src/autocoder/common/global_cancel.py
106
106
  src/autocoder/common/image_to_page.py
107
107
  src/autocoder/common/index_import_export.py
108
108
  src/autocoder/common/interpreter.py
109
+ src/autocoder/common/llm_friendly_package.py
110
+ src/autocoder/common/llm_friendly_package_example.py
111
+ src/autocoder/common/llm_friendly_package_test.py
109
112
  src/autocoder/common/mcp_hub.py
110
113
  src/autocoder/common/mcp_server.py
111
114
  src/autocoder/common/mcp_server_install.py
@@ -2653,7 +2653,7 @@ def lib_command(args: List[str]):
2653
2653
 
2654
2654
  if not args:
2655
2655
  console.print(
2656
- "Please specify a subcommand: /add, /remove, /list, /set-proxy, /refresh, or /get"
2656
+ "Please specify a subcommand: /add, /remove, /list, /list_all, /set-proxy, /refresh, or /get"
2657
2657
  )
2658
2658
  return
2659
2659
 
@@ -2710,6 +2710,66 @@ def lib_command(args: List[str]):
2710
2710
  console.print(table)
2711
2711
  else:
2712
2712
  console.print("No libraries added yet")
2713
+
2714
+ elif subcommand == "/list_all":
2715
+ if not os.path.exists(llm_friendly_packages_dir):
2716
+ console.print("llm_friendly_packages repository does not exist. Please run /lib /add <library_name> command first to clone it.")
2717
+ return
2718
+
2719
+ available_libs = []
2720
+
2721
+ # 遍历所有domain目录
2722
+ for domain in os.listdir(llm_friendly_packages_dir):
2723
+ domain_path = os.path.join(llm_friendly_packages_dir, domain)
2724
+ if os.path.isdir(domain_path):
2725
+ # 遍历所有username目录
2726
+ for username in os.listdir(domain_path):
2727
+ username_path = os.path.join(domain_path, username)
2728
+ if os.path.isdir(username_path):
2729
+ # 遍历所有lib_name目录
2730
+ for lib_name in os.listdir(username_path):
2731
+ lib_path = os.path.join(username_path, lib_name)
2732
+ if os.path.isdir(lib_path):
2733
+ # 检查是否有Markdown文件
2734
+ has_md_files = False
2735
+ for root, _, files in os.walk(lib_path):
2736
+ if any(file.endswith('.md') for file in files):
2737
+ has_md_files = True
2738
+ break
2739
+
2740
+ if has_md_files:
2741
+ available_libs.append({
2742
+ "domain": domain,
2743
+ "username": username,
2744
+ "lib_name": lib_name,
2745
+ "full_path": f"{username}/{lib_name}",
2746
+ "is_added": lib_name in memory["libs"]
2747
+ })
2748
+
2749
+ if available_libs:
2750
+ table = Table(title="Available Libraries")
2751
+ table.add_column("Domain", style="blue")
2752
+ table.add_column("Username", style="green")
2753
+ table.add_column("Library Name", style="cyan")
2754
+ table.add_column("Full Path", style="magenta")
2755
+ table.add_column("Status", style="yellow")
2756
+
2757
+ # 按domain和username分组排序
2758
+ available_libs.sort(key=lambda x: (x["domain"], x["username"], x["lib_name"]))
2759
+
2760
+ for lib in available_libs:
2761
+ status = "[green]Added[/green]" if lib["is_added"] else "[white]Not Added[/white]"
2762
+ table.add_row(
2763
+ lib["domain"],
2764
+ lib["username"],
2765
+ lib["lib_name"],
2766
+ lib["full_path"],
2767
+ status
2768
+ )
2769
+
2770
+ console.print(table)
2771
+ else:
2772
+ console.print("No available libraries found in the repository.")
2713
2773
 
2714
2774
  elif subcommand == "/set-proxy":
2715
2775
  if len(args) == 1:
@@ -14,24 +14,24 @@ from autocoder import models as models_module
14
14
  # Define command structure in a more structured way if needed,
15
15
  # but primarily rely on handlers for logic.
16
16
  COMMAND_HIERARCHY = {
17
- "/add_files": {"/group": {"/add", "/drop", "/reset", "/set"}, "/refresh": {}},
18
- "/remove_files": {"/all"},
19
- "/conf": {"/drop", "/export", "/import","/get"}, # Added list/get for clarity
20
- "/coding": {"/apply", "/next"},
21
- "/chat": {"/new", "/save", "/copy", "/mcp", "/rag", "/review", "/learn", "/no_context"},
22
- "/mcp": {"/add", "/remove", "/list", "/list_running", "/refresh", "/info"},
23
- "/lib": {"/add", "/remove", "/list", "/set-proxy", "/refresh", "/get"},
24
- "/models": {"/chat", "/add", "/add_model", "/remove", "/list", "/speed", "/speed-test", "/input_price", "/output_price", "/activate"},
17
+ "/add_files": {"/group": {"/add": {}, "/drop": {}, "/reset": {}, "/set": {}}, "/refresh": {}},
18
+ "/remove_files": {"/all": {}},
19
+ "/conf": {"/drop": {}, "/export": {}, "/import": {}, "/get": {}}, # Added list/get for clarity
20
+ "/coding": {"/apply": {}, "/next": {}},
21
+ "/chat": {"/new": {}, "/save": {}, "/copy": {}, "/mcp": {}, "/rag": {}, "/review": {}, "/learn": {}, "/no_context": {}},
22
+ "/mcp": {"/add": {}, "/remove": {}, "/list": {}, "/list_running": {}, "/refresh": {}, "/info": {}},
23
+ "/lib": {"/add": {}, "/remove": {}, "/list": {}, "/set-proxy": {}, "/refresh": {}, "/get": {}},
24
+ "/models": {"/chat": {}, "/add": {}, "/add_model": {}, "/remove": {}, "/list": {}, "/speed": {}, "/speed-test": {}, "/input_price": {}, "/output_price": {}, "/activate": {}},
25
25
  "/auto": {},
26
- "/shell": {"/chat"},
27
- "/active_context": {"/list", "/run"},
28
- "/index": {"/query", "/build", "/export", "/import"},
29
- "/exclude_files": {"/list", "/drop"},
26
+ "/shell": {"/chat": {}},
27
+ "/active_context": {"/list": {}, "/run": {}},
28
+ "/index": {"/query": {}, "/build": {}, "/export": {}, "/import": {}},
29
+ "/exclude_files": {"/list": {}, "/drop": {}},
30
30
  "/exclude_dirs": {}, # No specific subcommands shown in V1, treat as simple list
31
31
  "/commit": {}, # No specific subcommands shown in V1
32
32
  "/revert": {},
33
33
  "/ask": {},
34
- "/design": {"/svg", "/sd", "/logo"},
34
+ "/design": {"/svg": {}, "/sd": {}, "/logo": {}},
35
35
  "/summon": {},
36
36
  "/mode": {}, # Simple value completion
37
37
  "/voice_input": {},
@@ -41,7 +41,7 @@ COMMAND_HIERARCHY = {
41
41
  "/clear": {},
42
42
  "/cls": {},
43
43
  "/debug": {},
44
- "/rules": {"/list", "/get", "/remove", "/analyze", "/commit", "/help"},
44
+ "/rules": {"/list": {}, "/get": {}, "/remove": {}, "/analyze": {}, "/commit": {}, "/help": {}},
45
45
  }
46
46
 
47
47
  class CommandCompleterV2(Completer):
@@ -0,0 +1,410 @@
1
+ """
2
+ LLM Friendly Package Manager
3
+
4
+ This module provides a class-based interface for managing LLM friendly packages,
5
+ including operations like get, list, list_all, add, remove, refresh, etc.
6
+ """
7
+
8
+ import os
9
+ import json
10
+ from typing import List, Dict, Any, Optional, Tuple
11
+ from dataclasses import dataclass
12
+ from rich.console import Console
13
+ from rich.table import Table
14
+ import git
15
+ from filelock import FileLock
16
+
17
+
18
+ @dataclass
19
+ class LibraryInfo:
20
+ """Information about a library"""
21
+ domain: str
22
+ username: str
23
+ lib_name: str
24
+ full_path: str
25
+ is_added: bool
26
+ has_md_files: bool = True
27
+
28
+
29
+ @dataclass
30
+ class PackageDoc:
31
+ """Package documentation information"""
32
+ file_path: str
33
+ content: Optional[str] = None
34
+
35
+
36
+ class LLMFriendlyPackageManager:
37
+ """Manager for LLM friendly packages"""
38
+
39
+ def __init__(self, project_root: str = None, base_persist_dir: str = None):
40
+ """
41
+ Initialize the package manager
42
+
43
+ Args:
44
+ project_root: Project root directory, defaults to current working directory
45
+ base_persist_dir: Base directory for persistence, defaults to .auto-coder/plugins/chat-auto-coder
46
+ """
47
+ self.project_root = project_root or os.getcwd()
48
+ self.base_persist_dir = base_persist_dir or os.path.join(
49
+ self.project_root, ".auto-coder", "plugins", "chat-auto-coder"
50
+ )
51
+ self.lib_dir = os.path.join(self.project_root, ".auto-coder", "libs")
52
+ self.llm_friendly_packages_dir = os.path.join(self.lib_dir, "llm_friendly_packages")
53
+ self.console = Console()
54
+
55
+ # Ensure directories exist
56
+ os.makedirs(self.lib_dir, exist_ok=True)
57
+ os.makedirs(self.base_persist_dir, exist_ok=True)
58
+
59
+ def _get_memory_path(self) -> str:
60
+ """Get memory file path"""
61
+ return os.path.join(self.base_persist_dir, "memory.json")
62
+
63
+ def _load_memory(self) -> Dict[str, Any]:
64
+ """Load memory from file"""
65
+ memory_path = self._get_memory_path()
66
+ lock_path = memory_path + ".lock"
67
+
68
+ default_memory = {
69
+ "conversation": [],
70
+ "current_files": {"files": [], "groups": {}},
71
+ "conf": {},
72
+ "exclude_dirs": [],
73
+ "mode": "auto_detect",
74
+ "libs": {}
75
+ }
76
+
77
+ if not os.path.exists(memory_path):
78
+ return default_memory
79
+
80
+ try:
81
+ with FileLock(lock_path, timeout=30):
82
+ with open(memory_path, "r", encoding="utf-8") as f:
83
+ memory = json.load(f)
84
+ # Ensure libs key exists
85
+ if "libs" not in memory:
86
+ memory["libs"] = {}
87
+ return memory
88
+ except Exception:
89
+ return default_memory
90
+
91
+ def _save_memory(self, memory: Dict[str, Any]) -> None:
92
+ """Save memory to file"""
93
+ memory_path = self._get_memory_path()
94
+ lock_path = memory_path + ".lock"
95
+
96
+ with FileLock(lock_path, timeout=30):
97
+ with open(memory_path, "w", encoding="utf-8") as f:
98
+ json.dump(memory, f, indent=2, ensure_ascii=False)
99
+
100
+ def _get_current_proxy(self) -> str:
101
+ """Get current proxy URL"""
102
+ memory = self._load_memory()
103
+ return memory.get("lib-proxy", "https://github.com/allwefantasy/llm_friendly_packages")
104
+
105
+ def _clone_repository(self) -> bool:
106
+ """Clone the llm_friendly_packages repository"""
107
+ if os.path.exists(self.llm_friendly_packages_dir):
108
+ return True
109
+
110
+ self.console.print("Cloning llm_friendly_packages repository...")
111
+ try:
112
+ proxy_url = self._get_current_proxy()
113
+ git.Repo.clone_from(proxy_url, self.llm_friendly_packages_dir)
114
+ self.console.print("Successfully cloned llm_friendly_packages repository")
115
+ return True
116
+ except git.exc.GitCommandError as e:
117
+ self.console.print(f"Error cloning repository: {e}")
118
+ return False
119
+
120
+ def get_docs(self, package_name: Optional[str] = None, return_paths: bool = False) -> List[str]:
121
+ """
122
+ Get documentation for packages
123
+
124
+ Args:
125
+ package_name: Specific package name to get docs for, None for all packages
126
+ return_paths: If True, return file paths; if False, return file contents
127
+
128
+ Returns:
129
+ List of documentation content or file paths
130
+ """
131
+ docs = []
132
+
133
+ if not os.path.exists(self.llm_friendly_packages_dir):
134
+ return docs
135
+
136
+ memory = self._load_memory()
137
+ libs = list(memory.get("libs", {}).keys())
138
+
139
+ for domain in os.listdir(self.llm_friendly_packages_dir):
140
+ domain_path = os.path.join(self.llm_friendly_packages_dir, domain)
141
+ if not os.path.isdir(domain_path):
142
+ continue
143
+
144
+ for username in os.listdir(domain_path):
145
+ username_path = os.path.join(domain_path, username)
146
+ if not os.path.isdir(username_path):
147
+ continue
148
+
149
+ for lib_name in os.listdir(username_path):
150
+ lib_path = os.path.join(username_path, lib_name)
151
+
152
+ # Check if this is the requested package
153
+ if not os.path.isdir(lib_path):
154
+ continue
155
+
156
+ if package_name is not None:
157
+ if not (lib_name == package_name or
158
+ package_name == os.path.join(username, lib_name)):
159
+ continue
160
+
161
+ # Check if library is added
162
+ if lib_name not in libs:
163
+ continue
164
+
165
+ # Collect markdown files
166
+ for root, _, files in os.walk(lib_path):
167
+ for file in files:
168
+ if file.endswith(".md"):
169
+ file_path = os.path.join(root, file)
170
+ if return_paths:
171
+ docs.append(file_path)
172
+ else:
173
+ try:
174
+ with open(file_path, "r", encoding="utf-8") as f:
175
+ docs.append(f.read())
176
+ except Exception as e:
177
+ self.console.print(f"Error reading {file_path}: {e}")
178
+
179
+ return docs
180
+
181
+ def list_added_libraries(self) -> List[str]:
182
+ """List all added libraries"""
183
+ memory = self._load_memory()
184
+ return list(memory.get("libs", {}).keys())
185
+
186
+ def list_all_available_libraries(self) -> List[LibraryInfo]:
187
+ """List all available libraries in the repository"""
188
+ if not os.path.exists(self.llm_friendly_packages_dir):
189
+ return []
190
+
191
+ available_libs = []
192
+ memory = self._load_memory()
193
+ added_libs = set(memory.get("libs", {}).keys())
194
+
195
+ for domain in os.listdir(self.llm_friendly_packages_dir):
196
+ domain_path = os.path.join(self.llm_friendly_packages_dir, domain)
197
+ if not os.path.isdir(domain_path):
198
+ continue
199
+
200
+ for username in os.listdir(domain_path):
201
+ username_path = os.path.join(domain_path, username)
202
+ if not os.path.isdir(username_path):
203
+ continue
204
+
205
+ for lib_name in os.listdir(username_path):
206
+ lib_path = os.path.join(username_path, lib_name)
207
+ if not os.path.isdir(lib_path):
208
+ continue
209
+
210
+ # Check if has markdown files
211
+ has_md_files = False
212
+ for root, _, files in os.walk(lib_path):
213
+ if any(file.endswith('.md') for file in files):
214
+ has_md_files = True
215
+ break
216
+
217
+ if has_md_files:
218
+ available_libs.append(LibraryInfo(
219
+ domain=domain,
220
+ username=username,
221
+ lib_name=lib_name,
222
+ full_path=f"{username}/{lib_name}",
223
+ is_added=lib_name in added_libs,
224
+ has_md_files=has_md_files
225
+ ))
226
+
227
+ # Sort by domain, username, lib_name
228
+ available_libs.sort(key=lambda x: (x.domain, x.username, x.lib_name))
229
+ return available_libs
230
+
231
+ def add_library(self, lib_name: str) -> bool:
232
+ """
233
+ Add a library to the list
234
+
235
+ Args:
236
+ lib_name: Library name to add
237
+
238
+ Returns:
239
+ True if successful, False otherwise
240
+ """
241
+ # Clone repository if needed
242
+ if not self._clone_repository():
243
+ return False
244
+
245
+ memory = self._load_memory()
246
+
247
+ if lib_name in memory["libs"]:
248
+ self.console.print(f"Library {lib_name} is already added")
249
+ return False
250
+
251
+ memory["libs"][lib_name] = {}
252
+ self._save_memory(memory)
253
+ self.console.print(f"Added library: {lib_name}")
254
+ return True
255
+
256
+ def remove_library(self, lib_name: str) -> bool:
257
+ """
258
+ Remove a library from the list
259
+
260
+ Args:
261
+ lib_name: Library name to remove
262
+
263
+ Returns:
264
+ True if successful, False otherwise
265
+ """
266
+ memory = self._load_memory()
267
+
268
+ if lib_name not in memory["libs"]:
269
+ self.console.print(f"Library {lib_name} is not in the list")
270
+ return False
271
+
272
+ del memory["libs"][lib_name]
273
+ self._save_memory(memory)
274
+ self.console.print(f"Removed library: {lib_name}")
275
+ return True
276
+
277
+ def set_proxy(self, proxy_url: Optional[str] = None) -> str:
278
+ """
279
+ Set or get proxy URL
280
+
281
+ Args:
282
+ proxy_url: New proxy URL, None to get current proxy
283
+
284
+ Returns:
285
+ Current proxy URL
286
+ """
287
+ memory = self._load_memory()
288
+
289
+ if proxy_url is None:
290
+ current_proxy = memory.get("lib-proxy", "No proxy set")
291
+ self.console.print(f"Current proxy: {current_proxy}")
292
+ return current_proxy
293
+
294
+ memory["lib-proxy"] = proxy_url
295
+ self._save_memory(memory)
296
+ self.console.print(f"Set proxy to: {proxy_url}")
297
+ return proxy_url
298
+
299
+ def refresh_repository(self) -> bool:
300
+ """
301
+ Refresh the repository by pulling latest changes
302
+
303
+ Returns:
304
+ True if successful, False otherwise
305
+ """
306
+ if not os.path.exists(self.llm_friendly_packages_dir):
307
+ self.console.print(
308
+ "llm_friendly_packages repository does not exist. "
309
+ "Please run add_library() first to clone it."
310
+ )
311
+ return False
312
+
313
+ try:
314
+ repo = git.Repo(self.llm_friendly_packages_dir)
315
+ origin = repo.remotes.origin
316
+
317
+ # Update remote URL if proxy is set
318
+ memory = self._load_memory()
319
+ proxy_url = memory.get("lib-proxy")
320
+ current_url = origin.url
321
+
322
+ if proxy_url and proxy_url != current_url:
323
+ origin.set_url(proxy_url)
324
+ self.console.print(f"Updated remote URL to: {proxy_url}")
325
+
326
+ origin.pull()
327
+ self.console.print("Successfully updated llm_friendly_packages repository")
328
+ return True
329
+
330
+ except git.exc.GitCommandError as e:
331
+ self.console.print(f"Error updating repository: {e}")
332
+ return False
333
+
334
+ def get_library_docs_paths(self, package_name: str) -> List[str]:
335
+ """
336
+ Get documentation file paths for a specific package
337
+
338
+ Args:
339
+ package_name: Package name
340
+
341
+ Returns:
342
+ List of markdown file paths
343
+ """
344
+ return self.get_docs(package_name, return_paths=True)
345
+
346
+ def display_added_libraries(self) -> None:
347
+ """Display added libraries in a table"""
348
+ libs = self.list_added_libraries()
349
+
350
+ if not libs:
351
+ self.console.print("No libraries added yet")
352
+ return
353
+
354
+ table = Table(title="Added Libraries")
355
+ table.add_column("Library Name", style="cyan")
356
+
357
+ for lib_name in libs:
358
+ table.add_row(lib_name)
359
+
360
+ self.console.print(table)
361
+
362
+ def display_all_libraries(self) -> None:
363
+ """Display all available libraries in a table"""
364
+ if not os.path.exists(self.llm_friendly_packages_dir):
365
+ self.console.print(
366
+ "llm_friendly_packages repository does not exist. "
367
+ "Please call add_library() first to clone it."
368
+ )
369
+ return
370
+
371
+ available_libs = self.list_all_available_libraries()
372
+
373
+ if not available_libs:
374
+ self.console.print("No available libraries found in the repository.")
375
+ return
376
+
377
+ table = Table(title="Available Libraries")
378
+ table.add_column("Domain", style="blue")
379
+ table.add_column("Username", style="green")
380
+ table.add_column("Library Name", style="cyan")
381
+ table.add_column("Full Path", style="magenta")
382
+ table.add_column("Status", style="yellow")
383
+
384
+ for lib in available_libs:
385
+ status = "[green]Added[/green]" if lib.is_added else "[white]Not Added[/white]"
386
+ table.add_row(
387
+ lib.domain,
388
+ lib.username,
389
+ lib.lib_name,
390
+ lib.full_path,
391
+ status
392
+ )
393
+
394
+ self.console.print(table)
395
+
396
+ def display_library_docs(self, package_name: str) -> None:
397
+ """Display documentation paths for a package in a table"""
398
+ docs = self.get_library_docs_paths(package_name)
399
+
400
+ if not docs:
401
+ self.console.print(f"No markdown files found for package: {package_name}")
402
+ return
403
+
404
+ table = Table(title=f"Markdown Files for {package_name}")
405
+ table.add_column("File Path", style="cyan")
406
+
407
+ for doc in docs:
408
+ table.add_row(doc)
409
+
410
+ self.console.print(table)