auto-coder 0.1.291__tar.gz → 0.1.293__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 (203) hide show
  1. {auto_coder-0.1.291 → auto_coder-0.1.293}/PKG-INFO +2 -1
  2. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/PKG-INFO +2 -1
  3. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/SOURCES.txt +2 -0
  4. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/requires.txt +1 -0
  5. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag.py +16 -0
  6. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_server.py +8 -0
  7. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/__init__.py +8 -4
  8. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_hub.py +59 -18
  9. auto_coder-0.1.293/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +153 -0
  10. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/api_server.py +8 -0
  11. auto_coder-0.1.293/src/autocoder/rag/cache/local_duckdb_storage_cache.py +647 -0
  12. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/document_retriever.py +12 -5
  13. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/long_context_rag.py +16 -16
  14. auto_coder-0.1.293/src/autocoder/version.py +1 -0
  15. auto_coder-0.1.291/src/autocoder/version.py +0 -1
  16. {auto_coder-0.1.291 → auto_coder-0.1.293}/LICENSE +0 -0
  17. {auto_coder-0.1.291 → auto_coder-0.1.293}/README.md +0 -0
  18. {auto_coder-0.1.291 → auto_coder-0.1.293}/setup.cfg +0 -0
  19. {auto_coder-0.1.291 → auto_coder-0.1.293}/setup.py +0 -0
  20. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  21. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/entry_points.txt +0 -0
  22. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/auto_coder.egg-info/top_level.txt +0 -0
  23. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/__init__.py +0 -0
  24. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/__init__.py +0 -0
  25. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  26. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_filegroup.py +0 -0
  27. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_guess_query.py +0 -0
  28. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  29. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_review_commit.py +0 -0
  30. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/auto_tool.py +0 -0
  31. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/coder.py +0 -0
  32. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/designer.py +0 -0
  33. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/planner.py +0 -0
  34. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/agent/project_reader.py +0 -0
  35. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder.py +0 -0
  36. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag_client_mcp.py +0 -0
  37. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_rag_mcp.py +0 -0
  38. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/auto_coder_runner.py +0 -0
  39. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/benchmark.py +0 -0
  40. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/chat/__init__.py +0 -0
  41. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/chat_auto_coder.py +0 -0
  42. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/chat_auto_coder_lang.py +0 -0
  43. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/command_args.py +0 -0
  44. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/__init__.py +0 -0
  45. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/auto_command.py +0 -0
  46. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/auto_web.py +0 -0
  47. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/commands/tools.py +0 -0
  48. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/JupyterClient.py +0 -0
  49. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/ShellClient.py +0 -0
  50. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/anything2images.py +0 -0
  51. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/anything2img.py +0 -0
  52. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/audio.py +0 -0
  53. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/auto_coder_lang.py +0 -0
  54. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/auto_configure.py +0 -0
  55. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/buildin_tokenizer.py +0 -0
  56. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/chunk_validation.py +0 -0
  57. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/cleaner.py +0 -0
  58. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_execute.py +0 -0
  59. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate.py +0 -0
  60. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  61. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  62. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  63. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge.py +0 -0
  64. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  65. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  66. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  67. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/code_modification_ranker.py +0 -0
  68. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/command_completer.py +0 -0
  69. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/command_generator.py +0 -0
  70. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/command_templates.py +0 -0
  71. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/computer_use.py +0 -0
  72. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/conf_import_export.py +0 -0
  73. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/conf_validator.py +0 -0
  74. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/const.py +0 -0
  75. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/context_pruner.py +0 -0
  76. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/conversation_pruner.py +0 -0
  77. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/files.py +0 -0
  78. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/git_utils.py +0 -0
  79. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/global_cancel.py +0 -0
  80. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/image_to_page.py +0 -0
  81. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/index_import_export.py +0 -0
  82. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/interpreter.py +0 -0
  83. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/llm_rerank.py +0 -0
  84. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_server.py +0 -0
  85. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_servers/__init__.py +0 -0
  86. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  87. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/mcp_tools.py +0 -0
  88. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/memory_manager.py +0 -0
  89. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/model_speed_test.py +0 -0
  90. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/printer.py +0 -0
  91. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/recall_validation.py +0 -0
  92. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/result_manager.py +0 -0
  93. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/screenshots.py +0 -0
  94. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/search.py +0 -0
  95. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/search_replace.py +0 -0
  96. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/shells.py +0 -0
  97. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/stats_panel.py +0 -0
  98. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/sys_prompt.py +0 -0
  99. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/text.py +0 -0
  100. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/types.py +0 -0
  101. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  102. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/data/byzerllm.md +0 -0
  103. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/data/tokenizer.json +0 -0
  104. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/db/__init__.py +0 -0
  105. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/db/store.py +0 -0
  106. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/__init__.py +0 -0
  107. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/__init__.py +0 -0
  108. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/action.py +0 -0
  109. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/copilot.py +0 -0
  110. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/__init__.py +0 -0
  111. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  112. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/dispacher/actions/plugins/action_translate.py +0 -0
  113. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/__init__.py +0 -0
  114. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/entry.py +0 -0
  115. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/filter/__init__.py +0 -0
  116. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/filter/normal_filter.py +0 -0
  117. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/filter/quick_filter.py +0 -0
  118. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/for_command.py +0 -0
  119. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/index.py +0 -0
  120. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/symbols_utils.py +0 -0
  121. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/index/types.py +0 -0
  122. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/lang.py +0 -0
  123. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/models.py +0 -0
  124. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/__init__.py +0 -0
  125. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  126. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  127. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/sample_plugin.py +0 -0
  128. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  129. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/plugins/utils.py +0 -0
  130. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/privacy/__init__.py +0 -0
  131. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/privacy/model_filter.py +0 -0
  132. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/pyproject/__init__.py +0 -0
  133. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/__init__.py +0 -0
  134. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/__init__.py +0 -0
  135. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/base_cache.py +0 -0
  136. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  137. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  138. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  139. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  140. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  141. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/cache/simple_cache.py +0 -0
  142. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/conversation_to_queries.py +0 -0
  143. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/doc_filter.py +0 -0
  144. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/lang.py +0 -0
  145. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/llm_wrapper.py +0 -0
  146. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/__init__.py +0 -0
  147. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  148. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  149. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  150. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  151. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  152. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/rag_config.py +0 -0
  153. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/rag_entry.py +0 -0
  154. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/raw_rag.py +0 -0
  155. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/relevant_utils.py +0 -0
  156. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/searchable.py +0 -0
  157. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/simple_directory_reader.py +0 -0
  158. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/simple_rag.py +0 -0
  159. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/__init__.py +0 -0
  160. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  161. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/stream_event/types.py +0 -0
  162. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_checker.py +0 -0
  163. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_counter.py +0 -0
  164. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_limiter.py +0 -0
  165. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/token_limiter_utils.py +0 -0
  166. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/types.py +0 -0
  167. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/utils.py +0 -0
  168. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/rag/variable_holder.py +0 -0
  169. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/regexproject/__init__.py +0 -0
  170. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/suffixproject/__init__.py +0 -0
  171. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/tsproject/__init__.py +0 -0
  172. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/__init__.py +0 -0
  173. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/_markitdown.py +0 -0
  174. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/auto_coder_utils/__init__.py +0 -0
  175. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  176. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/auto_project_type.py +0 -0
  177. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  178. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/conversation_store.py +0 -0
  179. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  180. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/llms.py +0 -0
  181. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/log_capture.py +0 -0
  182. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/model_provider_selector.py +0 -0
  183. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/multi_turn.py +0 -0
  184. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/operate_config_api.py +0 -0
  185. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/print_table.py +0 -0
  186. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/project_structure.py +0 -0
  187. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/queue_communicate.py +0 -0
  188. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/request_event_queue.py +0 -0
  189. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/request_queue.py +0 -0
  190. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/rest.py +0 -0
  191. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/stream_thinking.py +0 -0
  192. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/tests.py +0 -0
  193. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/thread_utils.py +0 -0
  194. {auto_coder-0.1.291 → auto_coder-0.1.293}/src/autocoder/utils/types.py +0 -0
  195. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_action_regex_project.py +0 -0
  196. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_chat_auto_coder.py +0 -0
  197. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_code_auto_merge_editblock.py +0 -0
  198. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_command_completer.py +0 -0
  199. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_planner.py +0 -0
  200. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_plugins.py +0 -0
  201. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_privacy.py +0 -0
  202. {auto_coder-0.1.291 → auto_coder-0.1.293}/tests/test_queue_communicate.py +0 -0
  203. {auto_coder-0.1.291 → auto_coder-0.1.293}/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.291
3
+ Version: 0.1.293
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -36,6 +36,7 @@ Requires-Dist: google-generativeai
36
36
  Requires-Dist: protobuf
37
37
  Requires-Dist: azure-cognitiveservices-speech
38
38
  Requires-Dist: real_agent
39
+ Requires-Dist: duckdb
39
40
  Requires-Dist: python-docx
40
41
  Requires-Dist: docx2txt
41
42
  Requires-Dist: pdf2image
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.291
3
+ Version: 0.1.293
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -36,6 +36,7 @@ Requires-Dist: google-generativeai
36
36
  Requires-Dist: protobuf
37
37
  Requires-Dist: azure-cognitiveservices-speech
38
38
  Requires-Dist: real_agent
39
+ Requires-Dist: duckdb
39
40
  Requires-Dist: python-docx
40
41
  Requires-Dist: docx2txt
41
42
  Requires-Dist: pdf2image
@@ -92,6 +92,7 @@ src/autocoder/common/text.py
92
92
  src/autocoder/common/types.py
93
93
  src/autocoder/common/utils_code_auto_generate.py
94
94
  src/autocoder/common/mcp_servers/__init__.py
95
+ src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py
95
96
  src/autocoder/common/mcp_servers/mcp_server_perplexity.py
96
97
  src/autocoder/data/byzerllm.md
97
98
  src/autocoder/data/tokenizer.json
@@ -151,6 +152,7 @@ src/autocoder/rag/cache/byzer_storage_cache.py
151
152
  src/autocoder/rag/cache/cache_result_merge.py
152
153
  src/autocoder/rag/cache/file_monitor_cache.py
153
154
  src/autocoder/rag/cache/local_byzer_storage_cache.py
155
+ src/autocoder/rag/cache/local_duckdb_storage_cache.py
154
156
  src/autocoder/rag/cache/rag_file_meta.py
155
157
  src/autocoder/rag/cache/simple_cache.py
156
158
  src/autocoder/rag/loaders/__init__.py
@@ -26,6 +26,7 @@ google-generativeai
26
26
  protobuf
27
27
  azure-cognitiveservices-speech
28
28
  real_agent
29
+ duckdb
29
30
  python-docx
30
31
  docx2txt
31
32
  pdf2image
@@ -179,6 +179,14 @@ def main(input_args: Optional[List[str]] = None):
179
179
  build_index_parser = subparsers.add_parser(
180
180
  "build_hybrid_index", help="Build hybrid index for RAG"
181
181
  )
182
+
183
+ build_index_parser.add_argument(
184
+ "--rag_storage_type",
185
+ type=str,
186
+ default="duckdb",
187
+ help="The storage type of the RAG, duckdb or byzer-storage",
188
+ )
189
+
182
190
  build_index_parser.add_argument(
183
191
  "--quick", action="store_true", help="Skip system initialization"
184
192
  )
@@ -329,6 +337,14 @@ def main(input_args: Optional[List[str]] = None):
329
337
  action="store_true",
330
338
  help="Enable hybrid index",
331
339
  )
340
+
341
+ serve_parser.add_argument(
342
+ "--rag_storage_type",
343
+ type=str,
344
+ default="duckdb",
345
+ help="The storage type of the RAG, duckdb or byzer-storage",
346
+ )
347
+
332
348
  serve_parser.add_argument(
333
349
  "--hybrid_index_max_output_tokens",
334
350
  type=int,
@@ -34,6 +34,14 @@ import sys
34
34
  import io
35
35
  from autocoder.utils.log_capture import LogCapture
36
36
 
37
+ # If support dotenv, use it
38
+ if os.path.exists(".env"):
39
+ try:
40
+ from dotenv import load_dotenv
41
+ load_dotenv()
42
+ except ImportError:
43
+ pass
44
+
37
45
  def convert_yaml_config_to_str(yaml_config):
38
46
  yaml_content = yaml.safe_dump(
39
47
  yaml_config,
@@ -292,10 +292,14 @@ class AutoCoderArgs(pydantic.BaseModel):
292
292
 
293
293
  rag_url: Optional[str] = ""
294
294
  rag_token: Optional[str] = ""
295
- rag_type: Optional[str] = "storage"
296
- rag_params_max_tokens: Optional[int] = 4096
297
- rag_doc_filter_relevance: Optional[int] = 5
298
- rag_context_window_limit: Optional[int] = 120000
295
+ rag_type: Optional[str] = "storage"
296
+ rag_storage_type: Optional[str] = "duckdb" # 向量化存储类型 byzer-storage | duckdb
297
+ rag_params_max_tokens: Optional[int] = 500000
298
+ rag_doc_filter_relevance: Optional[int] = 2
299
+ rag_context_window_limit: Optional[int] = 120000
300
+ rag_duckdb_vector_dim: Optional[int] = 1024 # DuckDB 向量化存储的维度
301
+ rag_duckdb_query_similarity: Optional[float] = 0.1 # DuckDB 向量化检索 相似度 阈值
302
+ rag_duckdb_query_top_k: Optional[int] = 10000 # DuckDB 向量化检索 返回 TopK个结果(且大于相似度)
299
303
  # rag 本地图床地址
300
304
  local_image_host: Optional[str] = ""
301
305
  rag_recall_max_queries: Optional[int] = 5
@@ -2,8 +2,12 @@ import os
2
2
  import json
3
3
  import asyncio
4
4
  import aiohttp
5
+ import importlib
6
+ import pkgutil
7
+ import re
8
+ import inspect
5
9
  from datetime import datetime, timedelta
6
- from typing import Dict, List, Optional, Any, Set, Optional
10
+ from typing import Dict, List, Optional, Any, Set, Optional, Tuple
7
11
  from pathlib import Path
8
12
  from pydantic import BaseModel, Field
9
13
 
@@ -62,23 +66,53 @@ class McpConnection:
62
66
  self.session = session
63
67
 
64
68
 
65
- MCP_PERPLEXITY_SERVER = '''
66
- {
67
- "perplexity": {
68
- "command": "python",
69
- "args": [
70
- "-m", "autocoder.common.mcp_servers.mcp_server_perplexity"
71
- ],
72
- "env": {
73
- "PERPLEXITY_API_KEY": "{{PERPLEXITY_API_KEY}}"
74
- }
75
- }
76
- }
77
- '''
78
-
79
- MCP_BUILD_IN_SERVERS = {
80
- "perplexity": json.loads(MCP_PERPLEXITY_SERVER)["perplexity"]
81
- }
69
+ def _generate_server_configs() -> Tuple[Dict[str, Any], Dict[str, str]]:
70
+ """
71
+ Scan the autocoder.common.mcp_servers directory for mcp_server_*.py files
72
+ and generate server configurations.
73
+
74
+ Returns:
75
+ Tuple of (built-in servers dict, JSON templates dict)
76
+ """
77
+ servers = {}
78
+ templates = {}
79
+
80
+ try:
81
+ package_name = "autocoder.common.mcp_servers"
82
+ package = importlib.import_module(package_name)
83
+
84
+ # Find all modules in the package
85
+ for _, name, _ in pkgutil.iter_modules(package.__path__, package.__name__ + "."):
86
+ # Only process modules that start with "mcp_server_"
87
+ base_name = name.split(".")[-1]
88
+ if base_name.startswith("mcp_server_"):
89
+ # Generate a friendly server name
90
+ friendly_name = base_name[11:]
91
+
92
+ # Create env dictionary with placeholders
93
+ env_dict = {}
94
+
95
+ # Create server configuration
96
+ config = {
97
+ "command": "python",
98
+ "args": ["-m", name],
99
+ "env": env_dict
100
+ }
101
+
102
+ # Store in dictionaries
103
+ servers[friendly_name] = config
104
+ templates[friendly_name] = json.dumps({friendly_name: config}, indent=4)
105
+
106
+ logger.info(f"Detected MCP server: {friendly_name}")
107
+
108
+ except Exception as e:
109
+ logger.error(f"Error generating server configs: {e}")
110
+
111
+ return servers, templates
112
+
113
+
114
+ # Automatically generate server configurations
115
+ MCP_BUILD_IN_SERVERS, MCP_SERVER_TEMPLATES = _generate_server_configs()
82
116
 
83
117
 
84
118
  class McpHub:
@@ -422,3 +456,10 @@ class McpHub:
422
456
  """
423
457
  for name in list(self.connections.keys()):
424
458
  await self.delete_connection(name)
459
+
460
+ @classmethod
461
+ def get_server_templates(cls) -> Dict[str, str]:
462
+ """
463
+ Get all available server templates as JSON strings
464
+ """
465
+ return MCP_SERVER_TEMPLATES
@@ -0,0 +1,153 @@
1
+ from os import getenv
2
+ from textwrap import dedent
3
+ import sys
4
+
5
+ import mcp.server.stdio
6
+ import mcp.types as types
7
+ from mcp.server import NotificationOptions, Server
8
+ from mcp.server.models import InitializationOptions
9
+ import json
10
+ from openai import OpenAI
11
+
12
+ OPENAI_API_KEY = getenv("OPENAI_API_KEY")
13
+ # Check if API key is empty or None
14
+ if not OPENAI_API_KEY:
15
+ print("Error: OPENAI_API_KEY environment variable is not set. Please set it before running this server.", file=sys.stderr)
16
+ sys.exit(1)
17
+
18
+ OPENAI_API_BASE_URL = getenv(
19
+ "OPENAI_API_BASE_URL", "https://api.openai.com/v1")
20
+
21
+ server = Server("mcp-server-gpt4o-mini-search")
22
+
23
+ client = OpenAI(
24
+ api_key=OPENAI_API_KEY,
25
+ base_url=OPENAI_API_BASE_URL
26
+ )
27
+
28
+
29
+ @server.list_tools()
30
+ async def handle_list_tools() -> list[types.Tool]:
31
+ return [
32
+ types.Tool(
33
+ name="gpt4o_mini_search",
34
+ description=dedent(
35
+ """
36
+ GPT-4o mini with search enables agents to gather information from the internet
37
+ in real-time, providing up-to-date answers with source citations.
38
+ This tool is ideal for fact-checking, research, and accessing current information
39
+ that might not be in the model's training data.
40
+
41
+ The search-enhanced responses include relevant web sources to support the information
42
+ provided, making it useful for obtaining verified and recent information.
43
+
44
+ [Response structure]
45
+ - id: A unique identifier for the response
46
+ - model: The model used (gpt-4o-mini-search-preview)
47
+ - object: The object type ("chat.completion")
48
+ - created: The Unix timestamp when the completion was created
49
+ - choices[]: The list of completion choices generated
50
+ - usage: Usage statistics for the completion request
51
+ """
52
+ ),
53
+ inputSchema={
54
+ "type": "object",
55
+ "properties": {
56
+ "system_message": {
57
+ "type": "string",
58
+ "description": "Optional custom system message. If not provided, a default search-optimized system message will be used.",
59
+ },
60
+ "messages": {
61
+ "type": "array",
62
+ "description": "A list of messages comprising the conversation so far (excluding system message which is handled separately).",
63
+ "items": {
64
+ "type": "object",
65
+ "properties": {
66
+ "content": {
67
+ "type": "string",
68
+ "description": "The contents of the message in this turn of conversation.",
69
+ },
70
+ "role": {
71
+ "type": "string",
72
+ "description": "The role of the speaker in this turn of conversation.",
73
+ "enum": ["user", "assistant"],
74
+ },
75
+ },
76
+ "required": ["content", "role"],
77
+ },
78
+ },
79
+ },
80
+ "required": ["messages"],
81
+ },
82
+ )
83
+ ]
84
+
85
+
86
+ @server.call_tool()
87
+ async def handle_call_tool(
88
+ name: str, arguments: dict
89
+ ) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]:
90
+ if name != "gpt4o_mini_search":
91
+ raise ValueError(f"Unknown tool: {name}")
92
+
93
+ # Extract user messages
94
+ user_messages = arguments.get("messages", [])
95
+
96
+ # Define default system message if not provided
97
+ default_system_message = (
98
+ "你是专业搜索助手,需要:\n"
99
+ "1. 提供基于用户查询的清晰格式化信息\n"
100
+ "2. 使用[标题](URL)格式嵌入链接\n"
101
+ "3. 每条信息后附上来源\n"
102
+ "4. 用'---'分隔不同结果\n"
103
+ "5. 直接在文本中引用,不使用编号引用\n"
104
+ "6. 确保提供完整URL"
105
+ )
106
+
107
+ # Use custom system message if provided, otherwise use default
108
+ system_message = arguments.get("system_message", default_system_message)
109
+
110
+ # Prepare full message list with system message first
111
+ full_messages = [{"role": "system", "content": system_message}]
112
+ full_messages.extend(user_messages)
113
+
114
+ try:
115
+ # Initialize OpenAI client
116
+
117
+ # Make the API call using OpenAI SDK
118
+ completion = client.chat.completions.create(
119
+ model="gpt-4o-mini-search-preview",
120
+ messages=full_messages
121
+ )
122
+
123
+ # Extract content from response
124
+ content = completion.choices[0].message.content
125
+
126
+ except Exception as e:
127
+ raise RuntimeError(f"API error: {str(e)}")
128
+
129
+ return [types.TextContent(
130
+ type="text",
131
+ text=content,
132
+ )]
133
+
134
+
135
+ async def main():
136
+ async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
137
+ await server.run(
138
+ read_stream,
139
+ write_stream,
140
+ InitializationOptions(
141
+ server_name="mcp-server-gpt4o-mini-search",
142
+ server_version="0.1.0",
143
+ capabilities=server.get_capabilities(
144
+ notification_options=NotificationOptions(
145
+ tools_changed=True),
146
+ experimental_capabilities={},
147
+ ),
148
+ ),
149
+ )
150
+
151
+ if __name__ == "__main__":
152
+ import asyncio
153
+ asyncio.run(main())
@@ -31,6 +31,14 @@ from byzerllm.utils.client.entrypoints.openai.protocol import (
31
31
  from pydantic import BaseModel
32
32
  from typing import List,Optional
33
33
 
34
+ # If support dotenv, use it
35
+ if os.path.exists(".env"):
36
+ try:
37
+ from dotenv import load_dotenv
38
+ load_dotenv()
39
+ except ImportError:
40
+ pass
41
+
34
42
  logger = init_logger(__name__)
35
43
 
36
44
  llm_client: ByzerLLM = None