auto-coder 0.1.362__tar.gz → 0.1.363__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 (334) hide show
  1. {auto_coder-0.1.362 → auto_coder-0.1.363}/PKG-INFO +1 -1
  2. {auto_coder-0.1.362 → auto_coder-0.1.363}/README.md +1 -0
  3. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/auto_coder.egg-info/PKG-INFO +1 -1
  4. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/auto_coder.egg-info/SOURCES.txt +28 -1
  5. auto_coder-0.1.363/src/autocoder/agent/base_agentic/agent_hub.py +169 -0
  6. auto_coder-0.1.363/src/autocoder/agent/base_agentic/agentic_lang.py +112 -0
  7. auto_coder-0.1.363/src/autocoder/agent/base_agentic/agentic_tool_display.py +180 -0
  8. auto_coder-0.1.363/src/autocoder/agent/base_agentic/base_agent.py +1582 -0
  9. auto_coder-0.1.363/src/autocoder/agent/base_agentic/default_tools.py +683 -0
  10. auto_coder-0.1.363/src/autocoder/agent/base_agentic/test_base_agent.py +82 -0
  11. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tool_registry.py +425 -0
  12. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/__init__.py +12 -0
  13. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py +72 -0
  14. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py +37 -0
  15. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/base_tool_resolver.py +35 -0
  16. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/example_tool_resolver.py +46 -0
  17. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py +72 -0
  18. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py +110 -0
  19. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py +35 -0
  20. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py +54 -0
  21. {auto_coder-0.1.362/src/autocoder/common/v2/agent/agentic_edit_tools → auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools}/replace_in_file_tool_resolver.py +7 -4
  22. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py +134 -0
  23. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py +96 -0
  24. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py +79 -0
  25. auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools/use_mcp_tool_resolver.py +44 -0
  26. {auto_coder-0.1.362/src/autocoder/common/v2/agent/agentic_edit_tools → auto_coder-0.1.363/src/autocoder/agent/base_agentic/tools}/write_to_file_tool_resolver.py +4 -4
  27. auto_coder-0.1.363/src/autocoder/agent/base_agentic/types.py +189 -0
  28. auto_coder-0.1.363/src/autocoder/agent/base_agentic/utils.py +100 -0
  29. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/auto_coder_runner.py +4 -4
  30. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/chat/conf_command.py +11 -10
  31. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/rulefiles/autocoderrules_utils.py +24 -0
  32. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/save_formatted_log.py +1 -1
  33. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit.py +21 -19
  34. auto_coder-0.1.363/src/autocoder/common/v2/agent/agentic_edit_tools/replace_in_file_tool_resolver.py +225 -0
  35. auto_coder-0.1.363/src/autocoder/common/v2/agent/agentic_edit_tools/write_to_file_tool_resolver.py +186 -0
  36. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_types.py +1 -2
  37. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_tool_display.py +2 -3
  38. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/long_context_rag.py +424 -397
  39. auto_coder-0.1.363/src/autocoder/rag/test_doc_filter.py +393 -0
  40. auto_coder-0.1.363/src/autocoder/rag/test_long_context_rag.py +473 -0
  41. auto_coder-0.1.363/src/autocoder/rag/test_token_limiter.py +342 -0
  42. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/shadows/shadow_manager.py +1 -3
  43. auto_coder-0.1.363/src/autocoder/utils/types.py +0 -0
  44. auto_coder-0.1.363/src/autocoder/version.py +1 -0
  45. auto_coder-0.1.362/src/autocoder/rag/loaders/test_image_loader.py +0 -209
  46. auto_coder-0.1.362/src/autocoder/version.py +0 -1
  47. {auto_coder-0.1.362 → auto_coder-0.1.363}/LICENSE +0 -0
  48. {auto_coder-0.1.362 → auto_coder-0.1.363}/setup.cfg +0 -0
  49. {auto_coder-0.1.362 → auto_coder-0.1.363}/setup.py +0 -0
  50. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/auto_coder.egg-info/dependency_links.txt +0 -0
  51. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/auto_coder.egg-info/entry_points.txt +0 -0
  52. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/auto_coder.egg-info/requires.txt +0 -0
  53. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/auto_coder.egg-info/top_level.txt +0 -0
  54. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/__init__.py +0 -0
  55. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/__init__.py +0 -0
  56. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/agentic_filter.py +0 -0
  57. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/auto_demand_organizer.py +0 -0
  58. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/auto_filegroup.py +0 -0
  59. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/auto_guess_query.py +0 -0
  60. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/auto_learn.py +0 -0
  61. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/auto_learn_from_commit.py +0 -0
  62. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/auto_review_commit.py +0 -0
  63. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/auto_tool.py +0 -0
  64. {auto_coder-0.1.362/src/autocoder/chat → auto_coder-0.1.363/src/autocoder/agent/base_agentic}/__init__.py +0 -0
  65. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/coder.py +0 -0
  66. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/designer.py +0 -0
  67. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/planner.py +0 -0
  68. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/agent/project_reader.py +0 -0
  69. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/auto_coder.py +0 -0
  70. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/auto_coder_rag.py +0 -0
  71. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/auto_coder_server.py +0 -0
  72. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/benchmark.py +0 -0
  73. {auto_coder-0.1.362/src/autocoder/commands → auto_coder-0.1.363/src/autocoder/chat}/__init__.py +0 -0
  74. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/chat/models_command.py +0 -0
  75. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/chat/rules_command.py +0 -0
  76. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/chat_auto_coder.py +0 -0
  77. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/chat_auto_coder_lang.py +0 -0
  78. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/command_args.py +0 -0
  79. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/command_parser.py +0 -0
  80. {auto_coder-0.1.362/src/autocoder/common/mcp_servers → auto_coder-0.1.363/src/autocoder/commands}/__init__.py +0 -0
  81. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/commands/auto_command.py +0 -0
  82. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/commands/auto_web.py +0 -0
  83. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/commands/tools.py +0 -0
  84. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/JupyterClient.py +0 -0
  85. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/ShellClient.py +0 -0
  86. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/__init__.py +0 -0
  87. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/action_yml_file_manager.py +0 -0
  88. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/anything2images.py +0 -0
  89. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/anything2img.py +0 -0
  90. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/audio.py +0 -0
  91. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/auto_coder_lang.py +0 -0
  92. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/auto_configure.py +0 -0
  93. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/buildin_tokenizer.py +0 -0
  94. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/chunk_validation.py +0 -0
  95. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/cleaner.py +0 -0
  96. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_execute.py +0 -0
  97. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_generate.py +0 -0
  98. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_generate_diff.py +0 -0
  99. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_generate_editblock.py +0 -0
  100. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_generate_strict_diff.py +0 -0
  101. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_merge.py +0 -0
  102. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_merge_diff.py +0 -0
  103. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_merge_editblock.py +0 -0
  104. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_auto_merge_strict_diff.py +0 -0
  105. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/code_modification_ranker.py +0 -0
  106. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/command_completer.py +0 -0
  107. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/command_completer_v2.py +0 -0
  108. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/command_generator.py +0 -0
  109. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/command_templates.py +0 -0
  110. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/computer_use.py +0 -0
  111. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conf_import_export.py +0 -0
  112. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conf_utils.py +0 -0
  113. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conf_validator.py +0 -0
  114. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/const.py +0 -0
  115. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/context_pruner.py +0 -0
  116. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conversation_pruner.py +0 -0
  117. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conversations/__init__.py +0 -0
  118. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conversations/compatibility.py +0 -0
  119. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conversations/conversation_manager.py +0 -0
  120. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/conversations/example.py +0 -0
  121. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/directory_cache/__init__.py +0 -0
  122. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/directory_cache/cache.py +0 -0
  123. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/directory_cache/test_cache.py +0 -0
  124. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/file_monitor/__init__.py +0 -0
  125. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/file_monitor/monitor.py +0 -0
  126. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/files.py +0 -0
  127. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/git_utils.py +0 -0
  128. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/global_cancel.py +0 -0
  129. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/ignorefiles/__init__.py +0 -0
  130. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/ignorefiles/ignore_file_utils.py +0 -0
  131. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/ignorefiles/test_ignore_file_utils.py +0 -0
  132. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/image_to_page.py +0 -0
  133. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/index_import_export.py +0 -0
  134. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/interpreter.py +0 -0
  135. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/llm_rerank.py +0 -0
  136. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/mcp_hub.py +0 -0
  137. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/mcp_server.py +0 -0
  138. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/mcp_server_install.py +0 -0
  139. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/mcp_server_types.py +0 -0
  140. {auto_coder-0.1.362/src/autocoder/common/v2 → auto_coder-0.1.363/src/autocoder/common/mcp_servers}/__init__.py +0 -0
  141. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/mcp_servers/mcp_server_gpt4o_mini_search.py +0 -0
  142. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/mcp_servers/mcp_server_perplexity.py +0 -0
  143. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/mcp_tools.py +0 -0
  144. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/memory_manager.py +0 -0
  145. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/model_speed_tester.py +0 -0
  146. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/openai_content.py +0 -0
  147. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/printer.py +0 -0
  148. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/recall_validation.py +0 -0
  149. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/result_manager.py +0 -0
  150. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/rulefiles/__init__.py +0 -0
  151. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/run_cmd.py +0 -0
  152. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/screenshots.py +0 -0
  153. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/search.py +0 -0
  154. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/search_replace.py +0 -0
  155. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/shells.py +0 -0
  156. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/stats_panel.py +0 -0
  157. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/stream_out_type.py +0 -0
  158. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/sys_prompt.py +0 -0
  159. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/test_run_cmd.py +0 -0
  160. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/text.py +0 -0
  161. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/token_cost_caculate.py +0 -0
  162. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/types.py +0 -0
  163. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/utils_code_auto_generate.py +0 -0
  164. {auto_coder-0.1.362/src/autocoder/common/v2/agent → auto_coder-0.1.363/src/autocoder/common/v2}/__init__.py +0 -0
  165. {auto_coder-0.1.362/src/autocoder/db → auto_coder-0.1.363/src/autocoder/common/v2/agent}/__init__.py +0 -0
  166. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/__init__.py +0 -0
  167. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/ask_followup_question_tool_resolver.py +0 -0
  168. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/attempt_completion_tool_resolver.py +0 -0
  169. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/base_tool_resolver.py +0 -0
  170. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/execute_command_tool_resolver.py +0 -0
  171. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/list_code_definition_names_tool_resolver.py +0 -0
  172. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/list_files_tool_resolver.py +0 -0
  173. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/list_package_info_tool_resolver.py +0 -0
  174. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/plan_mode_respond_tool_resolver.py +0 -0
  175. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/read_file_tool_resolver.py +0 -0
  176. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/search_files_tool_resolver.py +0 -0
  177. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/test_search_files_tool_resolver.py +0 -0
  178. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/agent/agentic_edit_tools/use_mcp_tool_resolver.py +0 -0
  179. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_agentic_editblock_manager.py +0 -0
  180. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_generate.py +0 -0
  181. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_generate_diff.py +0 -0
  182. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_generate_editblock.py +0 -0
  183. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_generate_strict_diff.py +0 -0
  184. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_merge.py +0 -0
  185. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_merge_diff.py +0 -0
  186. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_merge_editblock.py +0 -0
  187. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_auto_merge_strict_diff.py +0 -0
  188. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_diff_manager.py +0 -0
  189. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_editblock_manager.py +0 -0
  190. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_manager.py +0 -0
  191. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/common/v2/code_strict_diff_manager.py +0 -0
  192. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/__init__.py +0 -0
  193. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/base_compiler.py +0 -0
  194. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/compiler_config_api.py +0 -0
  195. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/compiler_config_manager.py +0 -0
  196. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/compiler_factory.py +0 -0
  197. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/java_compiler.py +0 -0
  198. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/models.py +0 -0
  199. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/provided_compiler.py +0 -0
  200. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/python_compiler.py +0 -0
  201. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/reactjs_compiler.py +0 -0
  202. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/shadow_compiler.py +0 -0
  203. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/compilers/vue_compiler.py +0 -0
  204. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/data/byzerllm.md +0 -0
  205. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/data/tokenizer.json +0 -0
  206. {auto_coder-0.1.362/src/autocoder/dispacher/actions → auto_coder-0.1.363/src/autocoder/db}/__init__.py +0 -0
  207. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/db/store.py +0 -0
  208. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/dispacher/__init__.py +0 -0
  209. {auto_coder-0.1.362/src/autocoder/dispacher/actions/plugins → auto_coder-0.1.363/src/autocoder/dispacher/actions}/__init__.py +0 -0
  210. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/dispacher/actions/action.py +0 -0
  211. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/dispacher/actions/copilot.py +0 -0
  212. {auto_coder-0.1.362/src/autocoder/helper → auto_coder-0.1.363/src/autocoder/dispacher/actions/plugins}/__init__.py +0 -0
  213. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/dispacher/actions/plugins/action_regex_project.py +0 -0
  214. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/events/__init__.py +0 -0
  215. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/events/event_content.py +0 -0
  216. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/events/event_manager.py +0 -0
  217. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/events/event_manager_singleton.py +0 -0
  218. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/events/event_store.py +0 -0
  219. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/events/event_types.py +0 -0
  220. {auto_coder-0.1.362/src/autocoder/index → auto_coder-0.1.363/src/autocoder/helper}/__init__.py +0 -0
  221. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/helper/project_creator.py +0 -0
  222. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/helper/rag_doc_creator.py +0 -0
  223. {auto_coder-0.1.362/src/autocoder/index/filter → auto_coder-0.1.363/src/autocoder/index}/__init__.py +0 -0
  224. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/index/entry.py +0 -0
  225. {auto_coder-0.1.362/src/autocoder/linters → auto_coder-0.1.363/src/autocoder/index/filter}/__init__.py +0 -0
  226. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/index/filter/normal_filter.py +0 -0
  227. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/index/filter/quick_filter.py +0 -0
  228. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/index/for_command.py +0 -0
  229. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/index/index.py +0 -0
  230. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/index/symbols_utils.py +0 -0
  231. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/index/types.py +0 -0
  232. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/lang.py +0 -0
  233. {auto_coder-0.1.362/src/autocoder/rag → auto_coder-0.1.363/src/autocoder/linters}/__init__.py +0 -0
  234. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/linters/base_linter.py +0 -0
  235. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/linters/linter_factory.py +0 -0
  236. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/linters/models.py +0 -0
  237. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/linters/python_linter.py +0 -0
  238. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/linters/reactjs_linter.py +0 -0
  239. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/linters/shadow_linter.py +0 -0
  240. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/linters/vue_linter.py +0 -0
  241. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/memory/__init__.py +0 -0
  242. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/memory/active_context_manager.py +0 -0
  243. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/memory/active_package.py +0 -0
  244. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/memory/async_processor.py +0 -0
  245. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/memory/directory_mapper.py +0 -0
  246. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/models.py +0 -0
  247. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/plugins/__init__.py +0 -0
  248. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/plugins/dynamic_completion_example.py +0 -0
  249. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/plugins/git_helper_plugin.py +0 -0
  250. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/plugins/sample_plugin.py +0 -0
  251. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/plugins/token_helper_plugin.py +0 -0
  252. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/plugins/utils.py +0 -0
  253. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/privacy/__init__.py +0 -0
  254. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/privacy/model_filter.py +0 -0
  255. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/pyproject/__init__.py +0 -0
  256. {auto_coder-0.1.362/src/autocoder/rag/cache → auto_coder-0.1.363/src/autocoder/rag}/__init__.py +0 -0
  257. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/api_server.py +0 -0
  258. {auto_coder-0.1.362/src/autocoder/rag/stream_event → auto_coder-0.1.363/src/autocoder/rag/cache}/__init__.py +0 -0
  259. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/base_cache.py +0 -0
  260. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/byzer_storage_cache.py +0 -0
  261. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/cache_result_merge.py +0 -0
  262. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/failed_files_utils.py +0 -0
  263. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/file_monitor_cache.py +0 -0
  264. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/local_byzer_storage_cache.py +0 -0
  265. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/local_duckdb_storage_cache.py +0 -0
  266. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/rag_file_meta.py +0 -0
  267. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/cache/simple_cache.py +0 -0
  268. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/conversation_to_queries.py +0 -0
  269. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/doc_filter.py +0 -0
  270. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/document_retriever.py +0 -0
  271. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/lang.py +0 -0
  272. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/llm_wrapper.py +0 -0
  273. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/loaders/__init__.py +0 -0
  274. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/loaders/docx_loader.py +0 -0
  275. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/loaders/excel_loader.py +0 -0
  276. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/loaders/filter_utils.py +0 -0
  277. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/loaders/image_loader.py +0 -0
  278. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/loaders/pdf_loader.py +0 -0
  279. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/loaders/ppt_loader.py +0 -0
  280. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/qa_conversation_strategy.py +0 -0
  281. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/rag_config.py +0 -0
  282. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/rag_entry.py +0 -0
  283. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/raw_rag.py +0 -0
  284. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/relevant_utils.py +0 -0
  285. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/searchable.py +0 -0
  286. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/simple_directory_reader.py +0 -0
  287. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/simple_rag.py +0 -0
  288. {auto_coder-0.1.362/src/autocoder/shadows → auto_coder-0.1.363/src/autocoder/rag/stream_event}/__init__.py +0 -0
  289. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/stream_event/event_writer.py +0 -0
  290. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/stream_event/types.py +0 -0
  291. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/token_checker.py +0 -0
  292. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/token_counter.py +0 -0
  293. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/token_limiter.py +0 -0
  294. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/token_limiter_utils.py +0 -0
  295. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/types.py +0 -0
  296. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/utils.py +0 -0
  297. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/rag/variable_holder.py +0 -0
  298. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/regexproject/__init__.py +0 -0
  299. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/run_context.py +0 -0
  300. {auto_coder-0.1.362/src/autocoder/utils/auto_coder_utils → auto_coder-0.1.363/src/autocoder/shadows}/__init__.py +0 -0
  301. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/suffixproject/__init__.py +0 -0
  302. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/tsproject/__init__.py +0 -0
  303. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/__init__.py +0 -0
  304. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/_markitdown.py +0 -0
  305. {auto_coder-0.1.362/src/autocoder/utils/chat_auto_coder_utils → auto_coder-0.1.363/src/autocoder/utils/auto_coder_utils}/__init__.py +0 -0
  306. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/auto_coder_utils/chat_stream_out.py +0 -0
  307. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/auto_project_type.py +0 -0
  308. /auto_coder-0.1.362/src/autocoder/utils/types.py → /auto_coder-0.1.363/src/autocoder/utils/chat_auto_coder_utils/__init__.py +0 -0
  309. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/conversation_store.py +0 -0
  310. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/llm_client_interceptors.py +0 -0
  311. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/llms.py +0 -0
  312. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/log_capture.py +0 -0
  313. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/model_provider_selector.py +0 -0
  314. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/multi_turn.py +0 -0
  315. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/operate_config_api.py +0 -0
  316. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/print_table.py +0 -0
  317. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/project_structure.py +0 -0
  318. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/queue_communicate.py +0 -0
  319. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/request_event_queue.py +0 -0
  320. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/request_queue.py +0 -0
  321. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/rest.py +0 -0
  322. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/stream_thinking.py +0 -0
  323. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/tests.py +0 -0
  324. {auto_coder-0.1.362 → auto_coder-0.1.363}/src/autocoder/utils/thread_utils.py +0 -0
  325. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_action_regex_project.py +0 -0
  326. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_action_yml_file_manager.py +0 -0
  327. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_chat_auto_coder.py +0 -0
  328. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_code_auto_merge_editblock.py +0 -0
  329. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_command_completer.py +0 -0
  330. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_planner.py +0 -0
  331. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_plugins.py +0 -0
  332. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_privacy.py +0 -0
  333. {auto_coder-0.1.362 → auto_coder-0.1.363}/tests/test_queue_communicate.py +0 -0
  334. {auto_coder-0.1.362 → auto_coder-0.1.363}/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.362
3
+ Version: 0.1.363
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -42,3 +42,4 @@ auto-coder.chat
42
42
  0. [Auto-Coder.Chat: 通向智能编程之路](https://uelng8wukz.feishu.cn/wiki/QIpkwpQo2iSdkwk9nP6cNSPlnPc)
43
43
 
44
44
 
45
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.362
3
+ Version: 0.1.363
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -34,6 +34,31 @@ src/autocoder/agent/coder.py
34
34
  src/autocoder/agent/designer.py
35
35
  src/autocoder/agent/planner.py
36
36
  src/autocoder/agent/project_reader.py
37
+ src/autocoder/agent/base_agentic/__init__.py
38
+ src/autocoder/agent/base_agentic/agent_hub.py
39
+ src/autocoder/agent/base_agentic/agentic_lang.py
40
+ src/autocoder/agent/base_agentic/agentic_tool_display.py
41
+ src/autocoder/agent/base_agentic/base_agent.py
42
+ src/autocoder/agent/base_agentic/default_tools.py
43
+ src/autocoder/agent/base_agentic/test_base_agent.py
44
+ src/autocoder/agent/base_agentic/tool_registry.py
45
+ src/autocoder/agent/base_agentic/types.py
46
+ src/autocoder/agent/base_agentic/utils.py
47
+ src/autocoder/agent/base_agentic/tools/__init__.py
48
+ src/autocoder/agent/base_agentic/tools/ask_followup_question_tool_resolver.py
49
+ src/autocoder/agent/base_agentic/tools/attempt_completion_tool_resolver.py
50
+ src/autocoder/agent/base_agentic/tools/base_tool_resolver.py
51
+ src/autocoder/agent/base_agentic/tools/example_tool_resolver.py
52
+ src/autocoder/agent/base_agentic/tools/execute_command_tool_resolver.py
53
+ src/autocoder/agent/base_agentic/tools/list_files_tool_resolver.py
54
+ src/autocoder/agent/base_agentic/tools/plan_mode_respond_tool_resolver.py
55
+ src/autocoder/agent/base_agentic/tools/read_file_tool_resolver.py
56
+ src/autocoder/agent/base_agentic/tools/replace_in_file_tool_resolver.py
57
+ src/autocoder/agent/base_agentic/tools/search_files_tool_resolver.py
58
+ src/autocoder/agent/base_agentic/tools/talk_to_group_tool_resolver.py
59
+ src/autocoder/agent/base_agentic/tools/talk_to_tool_resolver.py
60
+ src/autocoder/agent/base_agentic/tools/use_mcp_tool_resolver.py
61
+ src/autocoder/agent/base_agentic/tools/write_to_file_tool_resolver.py
37
62
  src/autocoder/chat/__init__.py
38
63
  src/autocoder/chat/conf_command.py
39
64
  src/autocoder/chat/models_command.py
@@ -235,6 +260,9 @@ src/autocoder/rag/relevant_utils.py
235
260
  src/autocoder/rag/searchable.py
236
261
  src/autocoder/rag/simple_directory_reader.py
237
262
  src/autocoder/rag/simple_rag.py
263
+ src/autocoder/rag/test_doc_filter.py
264
+ src/autocoder/rag/test_long_context_rag.py
265
+ src/autocoder/rag/test_token_limiter.py
238
266
  src/autocoder/rag/token_checker.py
239
267
  src/autocoder/rag/token_counter.py
240
268
  src/autocoder/rag/token_limiter.py
@@ -259,7 +287,6 @@ src/autocoder/rag/loaders/filter_utils.py
259
287
  src/autocoder/rag/loaders/image_loader.py
260
288
  src/autocoder/rag/loaders/pdf_loader.py
261
289
  src/autocoder/rag/loaders/ppt_loader.py
262
- src/autocoder/rag/loaders/test_image_loader.py
263
290
  src/autocoder/rag/stream_event/__init__.py
264
291
  src/autocoder/rag/stream_event/event_writer.py
265
292
  src/autocoder/rag/stream_event/types.py
@@ -0,0 +1,169 @@
1
+ import typing
2
+ import byzerllm
3
+ from typing import List, Dict, Optional, Literal, Any, Union
4
+ from pydantic import BaseModel
5
+ from loguru import logger
6
+ import threading
7
+ from concurrent.futures import ThreadPoolExecutor
8
+ import os
9
+ from datetime import datetime
10
+ from .types import Message, ReplyDecision
11
+ from .utils import GroupUtils,GroupMemberResponse
12
+
13
+ if typing.TYPE_CHECKING:
14
+ from .base_agent import BaseAgent
15
+
16
+ class AgentHub:
17
+ """管理所有Agent实例的全局中心"""
18
+ _instance = None
19
+ agents: Dict[str, 'BaseAgent'] = {}
20
+
21
+ def __new__(cls):
22
+ if cls._instance is None:
23
+ cls._instance = super().__new__(cls)
24
+ return cls._instance
25
+
26
+ @classmethod
27
+ def register_agent(cls, agent: 'BaseAgent'):
28
+ """注册一个新的Agent"""
29
+ if agent.name in cls.agents:
30
+ raise ValueError(f"Agent with name {agent.name} already exists")
31
+ cls.agents[agent.name] = agent
32
+
33
+ @classmethod
34
+ def get_agent(cls, name: str) -> Optional['BaseAgent']:
35
+ """根据名称获取Agent"""
36
+ return cls.agents.get(name)
37
+
38
+ @classmethod
39
+ def list_agents(cls) -> List[str]:
40
+ """获取所有Agent名称"""
41
+ return list(cls.agents.keys())
42
+
43
+ @classmethod
44
+ def get_all_groups(cls) -> List['Group']:
45
+ """获取所有群组实例"""
46
+ return list(GroupHub.groups.values())
47
+
48
+ class GroupHub:
49
+ """管理所有Group实例的全局中心"""
50
+ _instance = None
51
+ groups: Dict[str, 'Group'] = {}
52
+ _groups_lock = threading.RLock()
53
+
54
+ def __new__(cls):
55
+ if cls._instance is None:
56
+ cls._instance = super().__new__(cls)
57
+ return cls._instance
58
+
59
+ @classmethod
60
+ def register_group(cls, group: 'Group'):
61
+ """注册一个新的Group"""
62
+ with cls._groups_lock:
63
+ if group.name in cls.groups:
64
+ raise ValueError(f"Group with name {group.name} already exists")
65
+ cls.groups[group.name] = group
66
+
67
+ @classmethod
68
+ def get_group(cls, name: str) -> Optional['Group']:
69
+ """根据名称获取Group"""
70
+ with cls._groups_lock:
71
+ return cls.groups.get(name)
72
+
73
+ @classmethod
74
+ def list_groups(cls) -> List[str]:
75
+ """获取所有Group名称"""
76
+ with cls._groups_lock:
77
+ return list(cls.groups.keys())
78
+
79
+
80
+
81
+ class Group:
82
+ # 类级线程池(所有 Group 实例共享)
83
+ _executor = ThreadPoolExecutor(max_workers=min(32, (os.cpu_count() or 1) * 4 + 4))
84
+
85
+ def __init__(self, name: str):
86
+ self.name = name
87
+ self.members: List[Agent] = []
88
+ self.history: List[Message] = []
89
+ # 成员列表和消息历史的读写锁
90
+ self._members_lock = threading.RLock()
91
+ self._history_lock = threading.RLock()
92
+ # 自动注册到GroupHub
93
+ GroupHub.register_group(self)
94
+
95
+ def add_member(self, agent: 'Agent'):
96
+ with self._members_lock:
97
+ if agent not in self.members:
98
+ self.members.append(agent)
99
+ with agent._group_lock: # 访问 Agent 的锁
100
+ agent.joined_groups[self.name] = self
101
+
102
+ def _safe_send_message(self, member: 'Agent', message: Message, print_conversation: bool):
103
+ try:
104
+ # 调用 Agent 的线程安全接收方法
105
+ member.threadsafe_receive(message,print_conversation=print_conversation)
106
+ except Exception as e:
107
+ import traceback
108
+ traceback.print_exc()
109
+ logger.error(f"Message delivery failed to {member.name}: {str(e)}")
110
+
111
+ def _handle_send_result(self, future):
112
+ try:
113
+ future.result()
114
+ except Exception as e:
115
+ logger.error(f"Message delivery error: {str(e)}")
116
+
117
+ def broadcast(self, message: Message, print_conversation: bool = False):
118
+ # 消息历史写入需要同步
119
+ with self._history_lock:
120
+ self.history.append(message)
121
+
122
+ # 使用线程池并行发送
123
+ futures = []
124
+ with self._members_lock: # 保护成员列表遍历
125
+ current_members = self.members.copy()
126
+
127
+ for member in current_members:
128
+ if member.name == message.sender:
129
+ continue
130
+
131
+ futures.append(
132
+ self._executor.submit(
133
+ self._safe_send_message,
134
+ member, message, print_conversation
135
+ )
136
+ )
137
+
138
+ # 异步等待所有任务完成(可选)
139
+ for future in futures:
140
+ future.add_done_callback(self._handle_send_result)
141
+
142
+ if print_conversation:
143
+ with self._history_lock: # 同步打印
144
+ print(f"[Group Broadcast End] {message.sender} finished broadcasting to {self.name} group")
145
+
146
+
147
+ class GroupMembership:
148
+ def __init__(self, agent: 'BaseAgent', group: 'Group'):
149
+ self.agent = agent
150
+ self.group = group
151
+
152
+ def talk_to_all(self, content: str):
153
+ message = Message(
154
+ sender=self.agent.name,
155
+ content=content,
156
+ is_group=True,
157
+ group_name=self.group.name
158
+ )
159
+ self.group.broadcast(message)
160
+
161
+ def talk_to(self, content: str, mentions: List['BaseAgent']):
162
+ message = Message(
163
+ sender=self.agent.name,
164
+ content=f"@{' @'.join([a.name for a in mentions])} {content}",
165
+ is_group=True,
166
+ group_name=self.group.name,
167
+ mentions=[a.name for a in mentions]
168
+ )
169
+ self.group.broadcast(message)
@@ -0,0 +1,112 @@
1
+ import locale
2
+ from byzerllm.utils import format_str_jinja2
3
+
4
+ MESSAGES = {
5
+ "auto_command_analyzing": {
6
+ "en": "Analyzing Command Request",
7
+ "zh": "正在分析命令请求"
8
+ },
9
+ # run_in_terminal方法的国际化文本
10
+ "agent_start": {
11
+ "en": "[bold cyan]Starting Agent: {{ project_name }}[/]",
12
+ "zh": "[bold cyan]启动代理: {{ project_name }}[/]"
13
+ },
14
+ "user_input": {
15
+ "en": "[bold]User Input:[/bold]\n{{ input }}",
16
+ "zh": "[bold]用户输入:[/bold]\n{{ input }}"
17
+ },
18
+ "user_input_title": {
19
+ "en": "Objective",
20
+ "zh": "目标"
21
+ },
22
+ "token_usage_log": {
23
+ "en": "Token Usage: Model={{ model }}, Input Tokens={{ input_tokens }}, Output Tokens={{ output_tokens }}, Input Cost=${{ input_cost }}, Output Cost=${{ output_cost }}",
24
+ "zh": "Token使用情况: 模型={{ model }}, 输入Token={{ input_tokens }}, 输出Token={{ output_tokens }}, 输入成本=${{ input_cost }}, 输出成本=${{ output_cost }}"
25
+ },
26
+ "tool_operation_title": {
27
+ "en": "🛠️ Operation: {{ tool_name }}",
28
+ "zh": "🛠️ 操作: {{ tool_name }}"
29
+ },
30
+ "tool_result_success_title": {
31
+ "en": "✅ Tool Result: {{ tool_name }}",
32
+ "zh": "✅ 工具结果: {{ tool_name }}"
33
+ },
34
+ "tool_result_failure_title": {
35
+ "en": "❌ Tool Result: {{ tool_name }}",
36
+ "zh": "❌ 工具结果: {{ tool_name }}"
37
+ },
38
+ "status": {
39
+ "en": "[bold]Status:[/bold] {{ status }}",
40
+ "zh": "[bold]状态:[/bold] {{ status }}"
41
+ },
42
+ "message": {
43
+ "en": "[bold]Message:[/bold] {{ message }}",
44
+ "zh": "[bold]消息:[/bold] {{ message }}"
45
+ },
46
+ "success_status": {
47
+ "en": "Success",
48
+ "zh": "成功"
49
+ },
50
+ "failure_status": {
51
+ "en": "Failure",
52
+ "zh": "失败"
53
+ },
54
+ "format_tool_error": {
55
+ "en": "Error formatting tool result content: {{ error }}",
56
+ "zh": "格式化工具结果内容时出错: {{ error }}"
57
+ },
58
+ "completion_title": {
59
+ "en": "🏁 Task Completed",
60
+ "zh": "🏁 任务完成"
61
+ },
62
+ "suggested_command": {
63
+ "en": "[dim]Suggested Command:[/dim] [bold cyan]{{ command }}[/]",
64
+ "zh": "[dim]建议命令:[/dim] [bold cyan]{{ command }}[/]"
65
+ },
66
+ "error_title": {
67
+ "en": "🔥 Error",
68
+ "zh": "🔥 错误"
69
+ },
70
+ "error_content": {
71
+ "en": "[bold red]Error:[/bold red] {{ message }}",
72
+ "zh": "[bold red]错误:[/bold red] {{ message }}"
73
+ },
74
+ "fatal_error_title": {
75
+ "en": "🔥 System Error",
76
+ "zh": "🔥 系统错误"
77
+ },
78
+ "fatal_error_content": {
79
+ "en": "[bold red]Fatal Error:[/bold red]\n{{ error }}",
80
+ "zh": "[bold red]致命错误:[/bold red]\n{{ error }}"
81
+ },
82
+ "shadow_merge_error": {
83
+ "en": "Error merging shadow changes to project: {{ error }}",
84
+ "zh": "合并影子更改到项目时出错: {{ error }}"
85
+ },
86
+ "agent_execution_complete": {
87
+ "en": "[bold cyan]Agent Execution Completed[/]",
88
+ "zh": "[bold cyan]代理执行完成[/]"
89
+ },
90
+ "unexpected_error": {
91
+ "en": "Unexpected error during agent execution:",
92
+ "zh": "代理执行过程中发生意外错误:"
93
+ }
94
+ }
95
+
96
+
97
+ def get_system_language():
98
+ try:
99
+ return locale.getdefaultlocale()[0][:2]
100
+ except:
101
+ return "en"
102
+
103
+
104
+ def get_message(key):
105
+ lang = get_system_language()
106
+ if key in MESSAGES:
107
+ return MESSAGES[key].get(lang, MESSAGES[key].get("en", ""))
108
+ return ""
109
+
110
+
111
+ def get_message_with_format(msg_key: str, **kwargs):
112
+ return format_str_jinja2(get_message(msg_key), **kwargs)
@@ -0,0 +1,180 @@
1
+ import json
2
+ from typing import Dict, Callable, Type
3
+ from autocoder.common.auto_coder_lang import get_system_language, format_str_jinja2
4
+ from autocoder.agent.base_agentic.types import (
5
+ BaseTool,
6
+ ReadFileTool, WriteToFileTool, ReplaceInFileTool, ExecuteCommandTool,
7
+ ListFilesTool, SearchFilesTool,
8
+ AskFollowupQuestionTool, UseMcpTool, AttemptCompletionTool
9
+ )
10
+
11
+ # Define message templates for each tool in English and Chinese
12
+ TOOL_DISPLAY_MESSAGES: Dict[Type[BaseTool], Dict[str, str]] = {
13
+ ReadFileTool: {
14
+ "en": "AutoCoder wants to read this file:\n[bold cyan]{{ path }}[/]",
15
+ "zh": "AutoCoder 想要读取此文件:\n[bold cyan]{{ path }}[/]"
16
+ },
17
+ WriteToFileTool: {
18
+ "en": (
19
+ "AutoCoder wants to write to this file:\n[bold cyan]{{ path }}[/]\n\n"
20
+ "[dim]Content Snippet:[/dim]\n{{ content_snippet }}{{ ellipsis }}"
21
+ ),
22
+ "zh": (
23
+ "AutoCoder 想要写入此文件:\n[bold cyan]{{ path }}[/]\n\n"
24
+ "[dim]内容片段:[/dim]\n{{ content_snippet }}{{ ellipsis }}"
25
+ )
26
+ },
27
+ ReplaceInFileTool: {
28
+ "en": (
29
+ "AutoCoder wants to replace content in this file:\n[bold cyan]{{ path }}[/]\n\n"
30
+ "[dim]Diff Snippet:[/dim]\n{{ diff_snippet }}{{ ellipsis }}"
31
+ ),
32
+ "zh": (
33
+ "AutoCoder 想要替换此文件中的内容:\n[bold cyan]{{ path }}[/]\n\n"
34
+ "[dim]差异片段:[/dim]\n{{ diff_snippet }}{{ ellipsis }}"
35
+ )
36
+ },
37
+ ExecuteCommandTool: {
38
+ "en": (
39
+ "AutoCoder wants to execute this command:\n[bold yellow]{{ command }}[/]\n"
40
+ "[dim](Requires Approval: {{ requires_approval }})[/]"
41
+ ),
42
+ "zh": (
43
+ "AutoCoder 想要执行此命令:\n[bold yellow]{{ command }}[/]\n"
44
+ "[dim](需要批准:{{ requires_approval }})[/]"
45
+ )
46
+ },
47
+ ListFilesTool: {
48
+ "en": (
49
+ "AutoCoder wants to list files in:\n[bold green]{{ path }}[/] "
50
+ "{{ recursive_text }}"
51
+ ),
52
+ "zh": (
53
+ "AutoCoder 想要列出此目录中的文件:\n[bold green]{{ path }}[/] "
54
+ "{{ recursive_text }}"
55
+ )
56
+ },
57
+ SearchFilesTool: {
58
+ "en": (
59
+ "AutoCoder wants to search files in:\n[bold green]{{ path }}[/]\n"
60
+ "[dim]File Pattern:[/dim] [yellow]{{ file_pattern }}[/]\n"
61
+ "[dim]Regex:[/dim] [yellow]{{ regex }}[/]"
62
+ ),
63
+ "zh": (
64
+ "AutoCoder 想要在此目录中搜索文件:\n[bold green]{{ path }}[/]\n"
65
+ "[dim]文件模式:[/dim] [yellow]{{ file_pattern }}[/]\n"
66
+ "[dim]正则表达式:[/dim] [yellow]{{ regex }}[/]"
67
+ )
68
+ },
69
+
70
+ AskFollowupQuestionTool: {
71
+ "en": (
72
+ "AutoCoder is asking a question:\n[bold magenta]{{ question }}[/]\n"
73
+ "{{ options_text }}"
74
+ ),
75
+ "zh": (
76
+ "AutoCoder 正在提问:\n[bold magenta]{{ question }}[/]\n"
77
+ "{{ options_text }}"
78
+ )
79
+ },
80
+ UseMcpTool: {
81
+ "en": (
82
+ "AutoCoder wants to use an MCP tool:\n"
83
+ "[dim]Server:[/dim] [blue]{{ server_name }}[/]\n"
84
+ "[dim]Tool:[/dim] [blue]{{ tool_name }}[/]\n"
85
+ "[dim]Args:[/dim] {{ arguments_snippet }}{{ ellipsis }}"
86
+ ),
87
+ "zh": (
88
+ "AutoCoder 想要使用 MCP 工具:\n"
89
+ "[dim]服务器:[/dim] [blue]{{ server_name }}[/]\n"
90
+ "[dim]工具:[/dim] [blue]{{ tool_name }}[/]\n"
91
+ "[dim]参数:[/dim] {{ arguments_snippet }}{{ ellipsis }}"
92
+ )
93
+ }
94
+ }
95
+
96
+ def get_tool_display_message(tool: BaseTool) -> str:
97
+ """
98
+ Generates a user-friendly, internationalized string representation for a tool call.
99
+
100
+ Args:
101
+ tool: The tool instance (Pydantic model).
102
+
103
+ Returns:
104
+ A formatted string for display in the terminal.
105
+ """
106
+ lang = get_system_language()
107
+ tool_type = type(tool)
108
+
109
+ if tool_type not in TOOL_DISPLAY_MESSAGES:
110
+ # Fallback for unknown tools
111
+ return f"Unknown tool type: {tool_type.__name__}\nData: {tool.model_dump_json(indent=2)}"
112
+
113
+ templates = TOOL_DISPLAY_MESSAGES[tool_type]
114
+ template = templates.get(lang, templates.get("en", "Tool display template not found")) # Fallback to English
115
+
116
+ # Prepare context specific to each tool type
117
+ context = {}
118
+ if isinstance(tool, ReadFileTool):
119
+ context = {"path": tool.path}
120
+ elif isinstance(tool, WriteToFileTool):
121
+ snippet = tool.content[:150]
122
+ context = {
123
+ "path": tool.path,
124
+ "content_snippet": snippet,
125
+ "ellipsis": '...' if len(tool.content) > 150 else ''
126
+ }
127
+ elif isinstance(tool, ReplaceInFileTool):
128
+ snippet = tool.diff
129
+ context = {
130
+ "path": tool.path,
131
+ "diff_snippet": snippet,
132
+ "ellipsis": ''
133
+ }
134
+ elif isinstance(tool, ExecuteCommandTool):
135
+ context = {"command": tool.command, "requires_approval": tool.requires_approval}
136
+ elif isinstance(tool, ListFilesTool):
137
+ rec_text_en = '(Recursively)' if tool.recursive else '(Top Level)'
138
+ rec_text_zh = '(递归)' if tool.recursive else '(顶层)'
139
+ context = {
140
+ "path": tool.path,
141
+ "recursive_text": rec_text_zh if lang == 'zh' else rec_text_en
142
+ }
143
+ elif isinstance(tool, SearchFilesTool):
144
+ context = {
145
+ "path": tool.path,
146
+ "file_pattern": tool.file_pattern or '*',
147
+ "regex": tool.regex
148
+ }
149
+ elif isinstance(tool, ListCodeDefinitionNamesTool):
150
+ context = {"path": tool.path}
151
+ elif isinstance(tool, AskFollowupQuestionTool):
152
+ options_text_en = ""
153
+ options_text_zh = ""
154
+ if tool.options:
155
+ options_list_en = "\n".join([f"- {opt}" for opt in tool.options])
156
+ options_list_zh = "\n".join([f"- {opt}" for opt in tool.options]) # Assuming options are simple enough not to need translation
157
+ options_text_en = f"[dim]Options:[/dim]\n{options_list_en}"
158
+ options_text_zh = f"[dim]选项:[/dim]\n{options_list_zh}"
159
+ context = {
160
+ "question": tool.question,
161
+ "options_text": options_text_zh if lang == 'zh' else options_text_en
162
+ }
163
+ elif isinstance(tool, UseMcpTool):
164
+ args_str = tool.query
165
+ snippet = args_str[:100]
166
+ context = {
167
+ "server_name": tool.server_name,
168
+ "tool_name": tool.tool_name,
169
+ "arguments_snippet": snippet,
170
+ "ellipsis": '...' if len(args_str) > 100 else ''
171
+ }
172
+ else:
173
+ # Generic context for tools not specifically handled above
174
+ context = tool.model_dump()
175
+
176
+ try:
177
+ return format_str_jinja2(template, **context)
178
+ except Exception as e:
179
+ # Fallback in case of formatting errors
180
+ return f"Error formatting display for {tool_type.__name__}: {e}\nTemplate: {template}\nContext: {context}"