Undefined-bot 3.2.5__tar.gz → 3.2.6__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.
Files changed (490) hide show
  1. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/PKG-INFO +10 -10
  2. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/config.toml.example +25 -20
  3. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/pyproject.toml +16 -12
  4. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/__init__.py +1 -1
  5. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/client.py +183 -24
  6. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/llm.py +84 -2
  7. undefined_bot-3.2.6/src/Undefined/ai/queue_budget.py +74 -0
  8. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/transports/openai_transport.py +75 -0
  9. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/api/app.py +594 -34
  10. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/api/naga_store.py +16 -0
  11. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/cognitive/historian.py +4 -0
  12. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/config/hot_reload.py +2 -1
  13. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/config/loader.py +63 -47
  14. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/config/models.py +5 -4
  15. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/onebot.py +17 -5
  16. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/ai_coordinator.py +32 -10
  17. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/command.py +22 -3
  18. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/queue_manager.py +325 -190
  19. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/security.py +42 -9
  20. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/README.md +9 -8
  21. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/handler.py +2 -2
  22. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/intro_generator.py +17 -3
  23. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/runner.py +52 -3
  24. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/lsadmin/README.md +2 -1
  25. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/lsadmin/config.json +1 -1
  26. undefined_bot-3.2.6/src/Undefined/skills/commands/lsadmin/handler.py +115 -0
  27. undefined_bot-3.2.6/src/Undefined/skills/commands/naga/README.md +17 -0
  28. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/naga/handler.py +75 -0
  29. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_message/handler.py +9 -1
  30. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/sender.py +147 -7
  31. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_runtime.py +11 -4
  32. undefined_bot-3.2.5/src/Undefined/skills/commands/lsadmin/handler.py +0 -19
  33. undefined_bot-3.2.5/src/Undefined/skills/commands/naga/README.md +0 -63
  34. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/.gitignore +0 -0
  35. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/ARCHITECTURE.md +0 -0
  36. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/LICENSE +0 -0
  37. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/README.md +0 -0
  38. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/config/README.md +0 -0
  39. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/config/mcp.json.example +0 -0
  40. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/img/head.png +0 -0
  41. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/img/xlwy.jpg +0 -0
  42. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/IMPORTANT/each.md +0 -0
  43. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/README.md +0 -0
  44. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/agent_self_intro.txt +0 -0
  45. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/analyze_multimodal.txt +0 -0
  46. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/describe_image.txt +0 -0
  47. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/generate_title.txt +0 -0
  48. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/historian_profile_merge.md +0 -0
  49. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/historian_rewrite.md +0 -0
  50. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/injection_detector.txt +0 -0
  51. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/injection_response_agent.txt +0 -0
  52. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/merge_summaries.txt +0 -0
  53. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/naga_message_moderation.txt +0 -0
  54. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/stats_analysis.txt +0 -0
  55. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/summarize.txt +0 -0
  56. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/undefined.xml +0 -0
  57. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/res/prompts/undefined_nagaagent.xml +0 -0
  58. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/README.md +0 -0
  59. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/README.md +0 -0
  60. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/__main__.py +0 -0
  61. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/__init__.py +0 -0
  62. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/http.py +0 -0
  63. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/model_selector.py +0 -0
  64. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/multimodal.py +0 -0
  65. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/parsing.py +0 -0
  66. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/prompts.py +0 -0
  67. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/retrieval.py +0 -0
  68. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/summaries.py +0 -0
  69. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/tokens.py +0 -0
  70. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/tooling.py +0 -0
  71. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/ai/transports/__init__.py +0 -0
  72. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/api/__init__.py +0 -0
  73. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/bilibili/__init__.py +0 -0
  74. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/bilibili/downloader.py +0 -0
  75. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/bilibili/parser.py +0 -0
  76. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/bilibili/sender.py +0 -0
  77. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/bilibili/wbi.py +0 -0
  78. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/bilibili/wbi_request.py +0 -0
  79. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/cognitive/__init__.py +0 -0
  80. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/cognitive/job_queue.py +0 -0
  81. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/cognitive/profile_storage.py +0 -0
  82. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/cognitive/service.py +0 -0
  83. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/cognitive/vector_store.py +0 -0
  84. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/config/__init__.py +0 -0
  85. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/config/manager.py +0 -0
  86. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/context.py +0 -0
  87. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/context_resource_registry.py +0 -0
  88. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/end_summary_storage.py +0 -0
  89. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/faq.py +0 -0
  90. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/handlers.py +0 -0
  91. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/injection_response_agent.py +0 -0
  92. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/knowledge/__init__.py +0 -0
  93. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/knowledge/chunker.py +0 -0
  94. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/knowledge/embedder.py +0 -0
  95. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/knowledge/manager.py +0 -0
  96. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/knowledge/reranker.py +0 -0
  97. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/knowledge/runtime.py +0 -0
  98. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/knowledge/store.py +0 -0
  99. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/main.py +0 -0
  100. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/mcp/__init__.py +0 -0
  101. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/mcp/registry.py +0 -0
  102. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/memory.py +0 -0
  103. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/rate_limit.py +0 -0
  104. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/render.py +0 -0
  105. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/scheduled_task_storage.py +0 -0
  106. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/__init__.py +0 -0
  107. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/commands/__init__.py +0 -0
  108. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/commands/context.py +0 -0
  109. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/commands/registry.py +0 -0
  110. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/services/model_pool.py +0 -0
  111. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/README.md +0 -0
  112. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/__init__.py +0 -0
  113. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/__init__.py +0 -0
  114. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
  115. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
  116. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
  117. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
  118. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
  119. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
  120. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
  121. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
  122. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
  123. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
  124. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
  125. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
  126. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
  127. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
  128. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
  129. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
  130. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
  131. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
  132. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
  133. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
  134. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
  135. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
  136. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/config.json +0 -0
  137. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/handler.py +0 -0
  138. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
  139. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
  140. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
  141. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
  142. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
  143. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
  144. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
  145. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
  146. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
  147. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/intro.md +0 -0
  148. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/prompt.md +0 -0
  149. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
  150. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -0
  151. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -0
  152. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
  153. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
  154. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +0 -0
  155. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -0
  156. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
  157. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
  158. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
  159. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +0 -0
  160. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
  161. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
  162. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/config.json +0 -0
  163. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/handler.py +0 -0
  164. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
  165. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +0 -0
  166. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
  167. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
  168. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
  169. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
  170. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
  171. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
  172. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
  173. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +0 -0
  174. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +0 -0
  175. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +0 -0
  176. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +0 -0
  177. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
  178. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
  179. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
  180. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
  181. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
  182. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
  183. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
  184. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
  185. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
  186. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
  187. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +0 -0
  188. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +0 -0
  189. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/README.md +0 -0
  190. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/config.json +0 -0
  191. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
  192. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
  193. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
  194. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
  195. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
  196. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
  197. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
  198. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
  199. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
  200. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
  201. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
  202. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
  203. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
  204. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
  205. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
  206. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
  207. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
  208. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
  209. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
  210. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
  211. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
  212. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
  213. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
  214. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
  215. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
  216. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
  217. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
  218. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
  219. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
  220. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
  221. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
  222. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
  223. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
  224. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
  225. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/intro_utils.py +0 -0
  226. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
  227. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
  228. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
  229. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
  230. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
  231. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
  232. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
  233. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
  234. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
  235. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +0 -0
  236. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +0 -0
  237. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +0 -0
  238. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +0 -0
  239. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +0 -0
  240. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +0 -0
  241. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +0 -0
  242. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +0 -0
  243. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/README.md +0 -0
  244. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/callable.json +0 -0
  245. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/config.json +0 -0
  246. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
  247. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
  248. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
  249. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
  250. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
  251. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
  252. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
  253. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
  254. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
  255. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
  256. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
  257. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/README.md +0 -0
  258. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/addadmin/README.md +0 -0
  259. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/addadmin/config.json +0 -0
  260. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/addadmin/handler.py +0 -0
  261. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/bugfix/README.md +0 -0
  262. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/bugfix/config.json +0 -0
  263. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
  264. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/copyright/README.md +0 -0
  265. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/copyright/config.json +0 -0
  266. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/copyright/handler.py +0 -0
  267. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/delfaq/README.md +0 -0
  268. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/delfaq/config.json +0 -0
  269. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/delfaq/handler.py +0 -0
  270. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/help/README.md +0 -0
  271. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/help/config.json +0 -0
  272. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/help/handler.py +0 -0
  273. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/lsfaq/README.md +0 -0
  274. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/lsfaq/config.json +0 -0
  275. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/lsfaq/handler.py +0 -0
  276. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/naga/config.json +0 -0
  277. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/naga/policy.py +0 -0
  278. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/naga/scopes.json +0 -0
  279. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/rmadmin/README.md +0 -0
  280. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/rmadmin/config.json +0 -0
  281. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/rmadmin/handler.py +0 -0
  282. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/searchfaq/README.md +0 -0
  283. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/searchfaq/config.json +0 -0
  284. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/searchfaq/handler.py +0 -0
  285. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/stats/README.md +0 -0
  286. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/stats/config.json +0 -0
  287. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/stats/handler.py +0 -0
  288. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/viewfaq/README.md +0 -0
  289. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/viewfaq/config.json +0 -0
  290. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/commands/viewfaq/handler.py +0 -0
  291. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/http_client.py +0 -0
  292. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/http_config.py +0 -0
  293. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/registry.py +0 -0
  294. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/README.md +0 -0
  295. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/__init__.py +0 -0
  296. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
  297. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
  298. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
  299. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/end/README.md +0 -0
  300. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/end/config.json +0 -0
  301. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/end/handler.py +0 -0
  302. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
  303. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_current_time/callable.json +0 -0
  304. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
  305. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
  306. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_picture/README.md +0 -0
  307. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_picture/config.json +0 -0
  308. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_picture/handler.py +0 -0
  309. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
  310. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
  311. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
  312. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
  313. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
  314. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
  315. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
  316. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
  317. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
  318. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
  319. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
  320. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
  321. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/qq_like/README.md +0 -0
  322. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/qq_like/config.json +0 -0
  323. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
  324. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/task_progress/config.json +0 -0
  325. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
  326. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/README.md +0 -0
  327. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/__init__.py +0 -0
  328. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
  329. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
  330. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
  331. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
  332. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
  333. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
  334. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
  335. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
  336. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
  337. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
  338. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/README.md +0 -0
  339. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/activity_trend/config.json +0 -0
  340. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/activity_trend/handler.py +0 -0
  341. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/detect_inactive_risk/config.json +0 -0
  342. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/detect_inactive_risk/handler.py +0 -0
  343. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/filter_members/config.json +0 -0
  344. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/filter_members/handler.py +0 -0
  345. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
  346. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
  347. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
  348. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
  349. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
  350. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
  351. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_activity/config.json +0 -0
  352. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_activity/handler.py +0 -0
  353. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
  354. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
  355. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
  356. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
  357. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
  358. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
  359. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/level_distribution/config.json +0 -0
  360. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/level_distribution/handler.py +0 -0
  361. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/rank_members/config.json +0 -0
  362. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group/rank_members/handler.py +0 -0
  363. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/config.json +0 -0
  364. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/handler.py +0 -0
  365. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/config.json +0 -0
  366. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/handler.py +0 -0
  367. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/config.json +0 -0
  368. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/handler.py +0 -0
  369. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
  370. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
  371. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/README.md +0 -0
  372. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
  373. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
  374. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
  375. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
  376. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
  377. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
  378. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
  379. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
  380. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/README.md +0 -0
  381. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
  382. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
  383. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
  384. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +0 -0
  385. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
  386. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +0 -0
  387. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
  388. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
  389. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
  390. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
  391. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
  392. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
  393. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
  394. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
  395. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
  396. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
  397. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
  398. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
  399. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +0 -0
  400. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
  401. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
  402. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
  403. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
  404. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
  405. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
  406. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/notices/README.md +0 -0
  407. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
  408. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
  409. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
  410. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
  411. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
  412. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
  413. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/render/README.md +0 -0
  414. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/render/render_html/config.json +0 -0
  415. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/render/render_html/handler.py +0 -0
  416. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/render/render_latex/config.json +0 -0
  417. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/render/render_latex/handler.py +0 -0
  418. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/render/render_markdown/config.json +0 -0
  419. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/render/render_markdown/handler.py +0 -0
  420. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/README.md +0 -0
  421. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/config.json +0 -0
  422. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/handler.py +0 -0
  423. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/config.json +0 -0
  424. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/handler.py +0 -0
  425. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/config.json +0 -0
  426. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/handler.py +0 -0
  427. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/config.json +0 -0
  428. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/handler.py +0 -0
  429. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/token_usage_storage.py +0 -0
  430. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/__init__.py +0 -0
  431. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/cache.py +0 -0
  432. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/common.py +0 -0
  433. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/cors.py +0 -0
  434. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/file_lock.py +0 -0
  435. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/group_metrics.py +0 -0
  436. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/history.py +0 -0
  437. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/io.py +0 -0
  438. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/logging.py +0 -0
  439. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/member_utils.py +0 -0
  440. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/message_utils.py +0 -0
  441. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/paths.py +0 -0
  442. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/qq_emoji.py +0 -0
  443. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/queue_intervals.py +0 -0
  444. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/recent_messages.py +0 -0
  445. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/request_params.py +0 -0
  446. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/resources.py +0 -0
  447. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/scheduler.py +0 -0
  448. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/self_update.py +0 -0
  449. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/time_utils.py +0 -0
  450. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/tool_calls.py +0 -0
  451. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/utils/xml.py +0 -0
  452. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/__init__.py +0 -0
  453. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/__main__.py +0 -0
  454. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/app.py +0 -0
  455. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/core.py +0 -0
  456. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/__init__.py +0 -0
  457. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_auth.py +0 -0
  458. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_bot.py +0 -0
  459. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_config.py +0 -0
  460. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_index.py +0 -0
  461. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_logs.py +0 -0
  462. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_shared.py +0 -0
  463. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/routes/_system.py +0 -0
  464. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
  465. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/app.css +0 -0
  466. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/base.css +0 -0
  467. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/components.css +0 -0
  468. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/landing.css +0 -0
  469. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/responsive.css +0 -0
  470. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/style.css +0 -0
  471. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/css/variables.css +0 -0
  472. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/favicon.svg +0 -0
  473. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/api.js +0 -0
  474. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/auth.js +0 -0
  475. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/bot.js +0 -0
  476. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/config-form.js +0 -0
  477. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/i18n.js +0 -0
  478. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/log-view.js +0 -0
  479. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/logs.js +0 -0
  480. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/main.js +0 -0
  481. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/runtime.js +0 -0
  482. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/state.js +0 -0
  483. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/ui.js +0 -0
  484. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
  485. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/templates/index.html +0 -0
  486. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/utils/__init__.py +0 -0
  487. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/utils/comment.py +0 -0
  488. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/utils/config_io.py +0 -0
  489. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/utils/config_sync.py +0 -0
  490. {undefined_bot-3.2.5 → undefined_bot-3.2.6}/src/Undefined/webui/utils/toml_render.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Undefined-bot
3
- Version: 3.2.5
3
+ Version: 3.2.6
4
4
  Summary: QQ bot platform with cognitive memory architecture and multi-agent Skills, via OneBot V11.
5
5
  Project-URL: Repository, https://github.com/69gg/Undefined
6
6
  Project-URL: Issues, https://github.com/69gg/Undefined/issues
@@ -10,11 +10,11 @@ Requires-Python: <3.14,>=3.11
10
10
  Requires-Dist: aiofiles>=25.1.0
11
11
  Requires-Dist: aiohttp>=3.13.2
12
12
  Requires-Dist: apscheduler>=3.10.0
13
- Requires-Dist: chardet>=5.2.0
14
- Requires-Dist: chromadb>=0.6.0
15
- Requires-Dist: crawl4ai>=0.3.0
16
- Requires-Dist: croniter>=2.0.0
17
- Requires-Dist: fastmcp>=2.14.4
13
+ Requires-Dist: chardet>=7.2.0
14
+ Requires-Dist: chromadb>=1.5.5
15
+ Requires-Dist: crawl4ai>=0.8.5
16
+ Requires-Dist: croniter>=6.2.2
17
+ Requires-Dist: fastmcp>=3.1.1
18
18
  Requires-Dist: httpx>=0.27.0
19
19
  Requires-Dist: imgkit
20
20
  Requires-Dist: langchain-community>=0.3.0
@@ -27,14 +27,14 @@ Requires-Dist: matplotlib
27
27
  Requires-Dist: mdit-py-plugins>=0.5.0
28
28
  Requires-Dist: numba>=0.61.0
29
29
  Requires-Dist: oh-my-bilibili>=0.1.2
30
- Requires-Dist: openai>=2.15.0
30
+ Requires-Dist: openai>=2.29.0
31
31
  Requires-Dist: openpyxl>=3.1.5
32
32
  Requires-Dist: pillow
33
33
  Requires-Dist: playwright>=1.57.0
34
34
  Requires-Dist: psutil>=7.2.2
35
35
  Requires-Dist: py7zr>=1.1.0
36
36
  Requires-Dist: pymdown-extensions>=10.20
37
- Requires-Dist: pymupdf>=1.26.7
37
+ Requires-Dist: pymupdf!=1.27.2.2,>=1.27.2
38
38
  Requires-Dist: pypinyin>=0.53.0
39
39
  Requires-Dist: python-docx>=1.2.0
40
40
  Requires-Dist: python-dotenv>=1.0.0
@@ -49,13 +49,13 @@ Requires-Dist: types-markdown>=3.10.0.20251106
49
49
  Requires-Dist: websockets>=12.0
50
50
  Provides-Extra: ci
51
51
  Requires-Dist: mypy>=1.8.0; extra == 'ci'
52
- Requires-Dist: ruff; extra == 'ci'
52
+ Requires-Dist: ruff>=0.15.6; extra == 'ci'
53
53
  Provides-Extra: dev
54
54
  Requires-Dist: mypy>=1.8.0; extra == 'dev'
55
55
  Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
56
56
  Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
57
57
  Requires-Dist: pytest>=8.0.0; extra == 'dev'
58
- Requires-Dist: ruff; extra == 'dev'
58
+ Requires-Dist: ruff>=0.15.6; extra == 'dev'
59
59
  Description-Content-Type: text/markdown
60
60
 
61
61
  <table border="0">
@@ -25,8 +25,8 @@ process_poke_message = true
25
25
  # zh: 注入给模型的最近历史消息条数上限(0-200,0 表示不注入历史)。
26
26
  # en: Max number of recent messages injected as model context (0-200; 0 disables history injection).
27
27
  context_recent_messages_limit = 20
28
- # zh: 模型调用失败时最大重试次数(0=不重试,默认2,最大5)。失败的请求将被放回队列最前端优先重试。
29
- # en: Max retries for failed model API requests (0=no retry, default 2, max 5). Failed requests are re-queued with highest priority.
28
+ # zh: 单次 LLM 请求失败时最大静默重试次数(0=不重试,默认2)。失败的请求会回到原队列的第 2 个位置。
29
+ # en: Max silent retries for a single failed LLM request (0=no retry, default 2). Failed requests are reinserted at position 2 of their original queue lane.
30
30
  ai_request_max_retries = 2
31
31
 
32
32
  # zh: 访问控制。mode 可选:off(不启用)/ blacklist(按黑名单)/ allowlist(按白名单)。
@@ -86,8 +86,8 @@ model_name = ""
86
86
  # zh: 最大生成 tokens。
87
87
  # en: Max generation tokens.
88
88
  max_tokens = 8192
89
- # zh: 队列发车间隔(秒)。
90
- # en: Queue interval (seconds).
89
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
90
+ # en: Queue interval (seconds; 0 dispatches immediately).
91
91
  queue_interval_seconds = 1.0
92
92
  # zh: API 模式:传统 chat.completions 或新版 responses。
93
93
  # en: API mode: classic chat.completions or the newer responses API.
@@ -149,8 +149,8 @@ api_key = ""
149
149
  # zh: Vision 模型名称。
150
150
  # en: Vision model name.
151
151
  model_name = ""
152
- # zh: 队列发车间隔(秒)。
153
- # en: Queue interval (seconds).
152
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
153
+ # en: Queue interval (seconds; 0 dispatches immediately).
154
154
  queue_interval_seconds = 1.0
155
155
  # zh: API 模式:传统 chat.completions 或新版 responses。
156
156
  # en: API mode: classic chat.completions or the newer responses API.
@@ -205,8 +205,8 @@ model_name = ""
205
205
  # zh: 可选限制:最大生成 tokens。
206
206
  # en: Optional limit: max generation tokens.
207
207
  max_tokens = 100
208
- # zh: 队列发车间隔(秒)。
209
- # en: Queue interval (seconds).
208
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
209
+ # en: Queue interval (seconds; 0 dispatches immediately).
210
210
  queue_interval_seconds = 1.0
211
211
  # zh: API 模式:传统 chat.completions 或新版 responses。
212
212
  # en: API mode: classic chat.completions or the newer responses API.
@@ -260,8 +260,8 @@ model_name = ""
260
260
  # zh: 可选限制:最大生成 tokens。
261
261
  # en: Optional limit: max generation tokens.
262
262
  max_tokens = 160
263
- # zh: 队列发车间隔(秒)。
264
- # en: Queue interval (seconds).
263
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
264
+ # en: Queue interval (seconds; 0 dispatches immediately).
265
265
  queue_interval_seconds = 1.0
266
266
  # zh: API 模式:传统 chat.completions 或新版 responses。
267
267
  # en: API mode: classic chat.completions or the newer responses API.
@@ -313,8 +313,8 @@ model_name = ""
313
313
  # zh: 可选限制:最大生成 tokens。
314
314
  # en: Optional limit: max generation tokens.
315
315
  max_tokens = 4096
316
- # zh: 队列发车间隔(秒)。
317
- # en: Queue interval (seconds).
316
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
317
+ # en: Queue interval (seconds; 0 dispatches immediately).
318
318
  queue_interval_seconds = 1.0
319
319
  # zh: API 模式:传统 chat.completions 或新版 responses。
320
320
  # en: API mode: classic chat.completions or the newer responses API.
@@ -379,8 +379,8 @@ model_name = ""
379
379
  # zh: 可选限制:最大生成 tokens。
380
380
  # en: Optional limit: max generation tokens.
381
381
  max_tokens = 4096
382
- # zh: 队列发车间隔(秒)。
383
- # en: Queue interval (seconds).
382
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
383
+ # en: Queue interval (seconds; 0 dispatches immediately).
384
384
  queue_interval_seconds = 1.0
385
385
  # zh: API 模式:传统 chat.completions 或新版 responses。
386
386
  # en: API mode: classic chat.completions or the newer responses API.
@@ -429,8 +429,8 @@ api_key = ""
429
429
  # zh: Embedding 模型名称。
430
430
  # en: Embedding model name.
431
431
  model_name = ""
432
- # zh: 队列发车间隔(秒)。
433
- # en: Queue interval (seconds).
432
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
433
+ # en: Queue interval (seconds; 0 dispatches immediately).
434
434
  queue_interval_seconds = 1.0
435
435
  # zh: 向量维度(可选)。0 或留空表示使用模型默认维度。
436
436
  # en: Embedding dimensions (optional). Use 0/empty to use model defaults.
@@ -458,8 +458,8 @@ api_key = ""
458
458
  # zh: Rerank 模型名称。
459
459
  # en: Rerank model name.
460
460
  model_name = ""
461
- # zh: 队列发车间隔(秒)。
462
- # en: Queue interval (seconds).
461
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
462
+ # en: Queue interval (seconds; 0 dispatches immediately).
463
463
  queue_interval_seconds = 1.0
464
464
  # zh: 查询端指令前缀(可选,部分 rerank 模型需要,如 "Instruct: ...\\nQuery: ")。
465
465
  # en: Query instruction prefix (optional, required by some rerank models, e.g. "Instruct: ...\\nQuery: ").
@@ -597,8 +597,8 @@ hot_reload_debounce = 0.5
597
597
  # zh: Agent intro 自动生成(推荐开启)。
598
598
  # en: Agent intro auto-generation (recommended).
599
599
  intro_autogen_enabled = true
600
- # zh: 队列发车间隔(秒)。
601
- # en: Queue interval (seconds).
600
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
601
+ # en: Queue interval (seconds; 0 dispatches immediately).
602
602
  intro_autogen_queue_interval = 1.0
603
603
  # zh: 单次生成最大 token。
604
604
  # en: Max tokens per generation.
@@ -952,6 +952,11 @@ api_url = ""
952
952
  # zh: 双方共享密钥(Undefined ↔ Naga 身份验证)。
953
953
  # en: Shared secret key for authentication between Undefined and Naga.
954
954
  api_key = ""
955
+ # zh: 是否启用 Naga 外发消息审核。
956
+ # zh: 关闭后 /api/v1/naga/messages/send 会直接跳过本地审核,返回 moderation.status=skipped_disabled。
957
+ # en: Whether to enable Naga outbound message moderation.
958
+ # en: When disabled, /api/v1/naga/messages/send skips local moderation and returns moderation.status=skipped_disabled.
959
+ moderation_enabled = true
955
960
  # zh: Naga 白名单群:/naga 在这些群中才可见;绑定和群聊投递也仅限这些群。
956
961
  # en: Naga allowlisted groups: /naga is only visible here, and binding/group delivery are restricted to these groups.
957
962
  allowed_groups = []
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Undefined-bot"
3
- version = "3.2.5"
3
+ version = "3.2.6"
4
4
  description = "QQ bot platform with cognitive memory architecture and multi-agent Skills, via OneBot V11."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -12,9 +12,9 @@ dependencies = [
12
12
  "httpx>=0.27.0",
13
13
  "python-dotenv>=1.0.0",
14
14
  "tiktoken>=0.7.0",
15
- "chardet>=5.2.0",
15
+ "chardet>=7.2.0",
16
16
  "langchain-community>=0.3.0",
17
- "crawl4ai>=0.3.0",
17
+ "crawl4ai>=0.8.5",
18
18
  "matplotlib",
19
19
  "pillow",
20
20
  "imgkit",
@@ -31,22 +31,22 @@ dependencies = [
31
31
  "aiohttp>=3.13.2",
32
32
  "types-aiofiles>=25.1.0.20251011",
33
33
  "APScheduler>=3.10.0",
34
- "croniter>=2.0.0",
35
- "pymupdf>=1.26.7",
34
+ "croniter>=6.2.2",
35
+ "pymupdf>=1.27.2,!=1.27.2.2",
36
36
  "python-docx>=1.2.0",
37
37
  "python-pptx>=1.0.2",
38
38
  "openpyxl>=3.1.5",
39
39
  "py7zr>=1.1.0",
40
40
  "rarfile>=4.2",
41
- "fastmcp>=2.14.4",
41
+ "fastmcp>=3.1.1",
42
42
  "lxml>=5.4.0",
43
43
  "rich>=14.2.0",
44
- "openai>=2.15.0",
44
+ "openai>=2.29.0",
45
45
  "psutil>=7.2.2",
46
46
  "pyyaml>=6.0.3",
47
47
  "pypinyin>=0.53.0",
48
48
  "oh-my-bilibili>=0.1.2",
49
- "chromadb>=0.6.0",
49
+ "chromadb>=1.5.5",
50
50
  "numba>=0.61.0",
51
51
  ]
52
52
 
@@ -62,13 +62,13 @@ Undefined-webui = "Undefined.webui:run"
62
62
  [project.optional-dependencies]
63
63
  dev = [
64
64
  "mypy>=1.8.0",
65
- "ruff",
65
+ "ruff>=0.15.6",
66
66
  "pytest>=8.0.0",
67
67
  "pytest-asyncio>=0.23.0",
68
68
  "pytest-cov>=5.0.0",
69
69
  ]
70
70
  ci = [
71
- "ruff",
71
+ "ruff>=0.15.6",
72
72
  "mypy>=1.8.0",
73
73
  ]
74
74
 
@@ -105,6 +105,10 @@ include = [
105
105
  python_version = "3.12"
106
106
  strict = true
107
107
  ignore_missing_imports = true
108
+ exclude = ["^code/"]
109
+
110
+ [tool.ruff]
111
+ exclude = ["code"]
108
112
 
109
113
  [tool.pytest.ini_options]
110
114
  asyncio_mode = "auto"
@@ -113,13 +117,13 @@ testpaths = ["tests"]
113
117
  [dependency-groups]
114
118
  dev = [
115
119
  "mypy>=1.8.0",
116
- "ruff",
120
+ "ruff>=0.15.6",
117
121
  "pytest>=8.0.0",
118
122
  "pytest-asyncio>=0.23.0",
119
123
  "pytest-cov>=5.0.0",
120
124
  "types-pyyaml>=6.0.12.20250915",
121
125
  ]
122
126
  ci = [
123
- "ruff",
127
+ "ruff>=0.15.6",
124
128
  "mypy>=1.8.0",
125
129
  ]
@@ -1,3 +1,3 @@
1
1
  """Undefined - A high-performance, highly scalable QQ group and private chat robot based on a self-developed architecture."""
2
2
 
3
- __version__ = "3.2.5"
3
+ __version__ = "3.2.6"
@@ -17,7 +17,12 @@ from Undefined.ai.llm import ModelRequester
17
17
  from Undefined.ai.model_selector import ModelSelector
18
18
  from Undefined.ai.multimodal import MultimodalAnalyzer
19
19
  from Undefined.ai.prompts import PromptBuilder
20
+ from Undefined.ai.queue_budget import (
21
+ compute_queued_llm_timeout_seconds,
22
+ resolve_effective_retry_count,
23
+ )
20
24
  from Undefined.ai.summaries import SummaryService
25
+ from Undefined.ai.transports.openai_transport import RESPONSES_OUTPUT_ITEMS_KEY
21
26
  from Undefined.ai.tokens import TokenCounter
22
27
  from Undefined.ai.tooling import ToolManager
23
28
  from Undefined.config import (
@@ -37,6 +42,15 @@ from Undefined.skills.agents.intro_generator import (
37
42
  )
38
43
  from Undefined.skills.anthropic_skills import AnthropicSkillRegistry
39
44
  from Undefined.skills.tools import ToolRegistry
45
+ from Undefined.services.queue_manager import (
46
+ ALL_QUEUE_LANES,
47
+ QUEUE_LANE_BACKGROUND,
48
+ QUEUE_LANE_GROUP_MENTION,
49
+ QUEUE_LANE_GROUP_NORMAL,
50
+ QUEUE_LANE_GROUP_SUPERADMIN,
51
+ QUEUE_LANE_PRIVATE,
52
+ QUEUE_LANE_SUPERADMIN,
53
+ )
40
54
  from Undefined.token_usage_storage import TokenUsageStorage
41
55
  from Undefined.utils.logging import log_debug_json, redact_string
42
56
  from Undefined.utils.tool_calls import parse_tool_arguments
@@ -312,7 +326,46 @@ class AIClient:
312
326
 
313
327
  logger.info("[清理] AIClient 已关闭")
314
328
 
315
- async def submit_background_llm_call(
329
+ def _resolve_queue_lane(self, queue_lane: Any = None) -> str:
330
+ queue_lane_text = str(queue_lane or "").strip().lower()
331
+ if queue_lane_text in ALL_QUEUE_LANES:
332
+ return queue_lane_text
333
+
334
+ ctx = RequestContext.current()
335
+ if ctx is not None:
336
+ ctx_lane = str(ctx.get_resource("queue_lane") or "").strip().lower()
337
+ if ctx_lane in ALL_QUEUE_LANES:
338
+ return ctx_lane
339
+
340
+ runtime_config = self._get_runtime_config()
341
+ superadmin_qq = int(getattr(runtime_config, "superadmin_qq", 0) or 0)
342
+ if ctx.request_type == "private":
343
+ if superadmin_qq > 0 and (
344
+ ctx.user_id == superadmin_qq or ctx.sender_id == superadmin_qq
345
+ ):
346
+ return QUEUE_LANE_SUPERADMIN
347
+ return QUEUE_LANE_PRIVATE
348
+ if ctx.request_type == "group":
349
+ if superadmin_qq > 0 and ctx.sender_id == superadmin_qq:
350
+ return QUEUE_LANE_GROUP_SUPERADMIN
351
+ if bool(ctx.get_resource("is_at_bot")):
352
+ return QUEUE_LANE_GROUP_MENTION
353
+ return QUEUE_LANE_GROUP_NORMAL
354
+
355
+ return QUEUE_LANE_BACKGROUND
356
+
357
+ def _get_queued_llm_wait_timeout_seconds(self) -> float:
358
+ retry_count = resolve_effective_retry_count(
359
+ self._get_runtime_config(),
360
+ getattr(self, "_queue_manager", None),
361
+ )
362
+ return compute_queued_llm_timeout_seconds(
363
+ self._get_runtime_config(),
364
+ self.chat_config,
365
+ retry_count=retry_count,
366
+ )
367
+
368
+ async def submit_queued_llm_call(
316
369
  self,
317
370
  model_config: Any,
318
371
  messages: list[dict[str, Any]],
@@ -321,14 +374,16 @@ class AIClient:
321
374
  call_type: str = "background",
322
375
  max_tokens: int | None = None,
323
376
  transport_state: dict[str, Any] | None = None,
377
+ queue_lane: str | None = None,
324
378
  ) -> dict[str, Any]:
325
- """将 LLM 调用投递到后台队列,走统一发车间隔和 Token 统计。
379
+ """将 LLM 调用投递到统一队列,走统一发车间隔和重试逻辑。
326
380
  无 queue_manager 时降级为直接调用。"""
327
381
  effective_max_tokens = (
328
382
  max_tokens
329
383
  if max_tokens is not None
330
384
  else getattr(model_config, "max_tokens", 4096)
331
385
  )
386
+ resolved_queue_lane = self._resolve_queue_lane(queue_lane)
332
387
  if self._queue_manager is None:
333
388
  return await self.request_model(
334
389
  model_config=model_config,
@@ -343,22 +398,60 @@ class AIClient:
343
398
  event: asyncio.Event = asyncio.Event()
344
399
  self._pending_llm_calls[request_id] = (event, None)
345
400
  model_name = getattr(model_config, "model_name", "default")
346
- await self._queue_manager.add_background_request(
347
- {
348
- "type": "background_llm_call",
349
- "request_id": request_id,
350
- "model_config": model_config,
351
- "messages": messages,
352
- "tools": tools,
353
- "tool_choice": tool_choice,
354
- "call_type": call_type,
355
- "max_tokens": effective_max_tokens,
356
- "transport_state": transport_state,
357
- },
401
+ request: dict[str, Any] = {
402
+ "type": "queued_llm_call",
403
+ "request_id": request_id,
404
+ "model_config": model_config,
405
+ "messages": messages,
406
+ "tools": tools,
407
+ "tool_choice": tool_choice,
408
+ "call_type": call_type,
409
+ "max_tokens": effective_max_tokens,
410
+ "transport_state": transport_state,
411
+ }
412
+ ctx = RequestContext.current()
413
+ if ctx is not None:
414
+ if ctx.group_id is not None:
415
+ request["group_id"] = ctx.group_id
416
+ if ctx.user_id is not None:
417
+ request["user_id"] = ctx.user_id
418
+ logger.info(
419
+ "[queued_llm_enqueue] request_id=%s call_type=%s model=%s lane=%s messages=%s tools=%s",
420
+ request_id,
421
+ call_type,
422
+ model_name,
423
+ resolved_queue_lane,
424
+ len(messages),
425
+ bool(tools),
426
+ )
427
+ receipt = await self._queue_manager.add_queued_llm_request(
428
+ request,
429
+ lane=resolved_queue_lane,
358
430
  model_name=model_name,
359
431
  )
432
+ wait_timeout = compute_queued_llm_timeout_seconds(
433
+ self._get_runtime_config(),
434
+ model_config,
435
+ retry_count=resolve_effective_retry_count(
436
+ self._get_runtime_config(), self._queue_manager
437
+ ),
438
+ initial_wait_seconds=float(
439
+ getattr(receipt, "estimated_wait_seconds", 0.0) or 0.0
440
+ ),
441
+ include_first_dispatch_interval=False,
442
+ )
360
443
  try:
361
- await asyncio.wait_for(event.wait(), timeout=480.0)
444
+ await asyncio.wait_for(event.wait(), timeout=wait_timeout)
445
+ except asyncio.TimeoutError:
446
+ logger.exception(
447
+ "[queued_llm_wait_timeout] request_id=%s call_type=%s model=%s lane=%s timeout=%.1fs",
448
+ request_id,
449
+ call_type,
450
+ model_name,
451
+ resolved_queue_lane,
452
+ wait_timeout,
453
+ )
454
+ raise
362
455
  finally:
363
456
  entry = self._pending_llm_calls.pop(request_id, None)
364
457
  _, result = entry if entry is not None else (None, None)
@@ -366,6 +459,28 @@ class AIClient:
366
459
  raise result
367
460
  return result or {}
368
461
 
462
+ async def submit_background_llm_call(
463
+ self,
464
+ model_config: Any,
465
+ messages: list[dict[str, Any]],
466
+ tools: list[dict[str, Any]] | None = None,
467
+ tool_choice: Any = "auto",
468
+ call_type: str = "background",
469
+ max_tokens: int | None = None,
470
+ transport_state: dict[str, Any] | None = None,
471
+ ) -> dict[str, Any]:
472
+ """后台 LLM 提交兼容包装。"""
473
+ return await self.submit_queued_llm_call(
474
+ model_config=model_config,
475
+ messages=messages,
476
+ tools=tools,
477
+ tool_choice=tool_choice,
478
+ call_type=call_type,
479
+ max_tokens=max_tokens,
480
+ transport_state=transport_state,
481
+ queue_lane=QUEUE_LANE_BACKGROUND,
482
+ )
483
+
369
484
  def set_llm_call_result(
370
485
  self, request_id: str, result: dict[str, Any] | Exception
371
486
  ) -> None:
@@ -868,18 +983,25 @@ class AIClient:
868
983
  max_iterations = 1000
869
984
  iteration = 0
870
985
  conversation_ended = False
871
- any_tool_executed = False
872
986
  cot_compat = getattr(effective_chat_config, "thinking_tool_call_compat", False)
873
987
  cot_compat_logged = False
874
988
  cot_missing_logged = False
875
989
  transport_state: dict[str, Any] | None = None
990
+ queue_lane = self._resolve_queue_lane(tool_context.get("queue_lane"))
991
+ pre_tool_failure_count = 0
992
+ max_pre_tool_retries = max(
993
+ 0,
994
+ int(getattr(self._get_runtime_config(), "ai_request_max_retries", 0) or 0),
995
+ )
876
996
 
877
997
  while iteration < max_iterations:
878
998
  iteration += 1
879
999
  logger.info(f"[AI决策] 开始第 {iteration} 轮迭代...")
1000
+ message_checkpoint_len = len(messages)
1001
+ transport_state_checkpoint = transport_state
880
1002
 
881
1003
  try:
882
- result = await self.request_model(
1004
+ result = await self.submit_queued_llm_call(
883
1005
  model_config=effective_chat_config,
884
1006
  messages=messages,
885
1007
  max_tokens=8192,
@@ -887,8 +1009,20 @@ class AIClient:
887
1009
  tools=tools,
888
1010
  tool_choice="auto",
889
1011
  transport_state=transport_state,
1012
+ queue_lane=queue_lane,
1013
+ )
1014
+ except Exception as exc:
1015
+ logger.exception(
1016
+ "[queued_llm_error] call_type=chat model=%s lane=%s iteration=%s error=%s",
1017
+ effective_chat_config.model_name,
1018
+ queue_lane,
1019
+ iteration,
1020
+ exc,
890
1021
  )
1022
+ raise
891
1023
 
1024
+ try:
1025
+ tool_execution_started = False
892
1026
  tool_name_map = (
893
1027
  result.get("_tool_name_map") if isinstance(result, dict) else None
894
1028
  )
@@ -927,7 +1061,7 @@ class AIClient:
927
1061
  if cot_compat and tools and log_thinking and not cot_compat_logged:
928
1062
  cot_compat_logged = True
929
1063
  logger.info(
930
- "[思维链兼容] 多轮工具调用 reasoning_content 回传已启用"
1064
+ "[思维链兼容] 多轮工具调用 reasoning_content 本地回填已启用"
931
1065
  )
932
1066
  if (
933
1067
  cot_compat
@@ -967,6 +1101,9 @@ class AIClient:
967
1101
  "content": content,
968
1102
  "tool_calls": tool_calls,
969
1103
  }
1104
+ output_items = message.get(RESPONSES_OUTPUT_ITEMS_KEY)
1105
+ if isinstance(output_items, list):
1106
+ assistant_message[RESPONSES_OUTPUT_ITEMS_KEY] = output_items
970
1107
  if cot_compat and reasoning_content is not None:
971
1108
  assistant_message["reasoning_content"] = reasoning_content
972
1109
  messages.append(assistant_message)
@@ -1035,7 +1172,7 @@ class AIClient:
1035
1172
  )
1036
1173
 
1037
1174
  if tool_tasks:
1038
- any_tool_executed = True
1175
+ tool_execution_started = True
1039
1176
  logger.info(
1040
1177
  "[工具执行] 开始并发执行 %s 个工具调用: %s",
1041
1178
  len(tool_tasks),
@@ -1111,6 +1248,7 @@ class AIClient:
1111
1248
  logger.info("[工具调用] end 与其他工具同时调用,已回填跳过响应")
1112
1249
  else:
1113
1250
  # end 单独调用,正常执行(参数已在循环中解析)
1251
+ tool_execution_started = True
1114
1252
  end_result = await self.tool_manager.execute_tool(
1115
1253
  "end", end_tool_args, tool_context
1116
1254
  )
@@ -1129,13 +1267,34 @@ class AIClient:
1129
1267
  if conversation_ended:
1130
1268
  logger.info("[会话状态] 对话已结束(调用 end 工具)")
1131
1269
  return ""
1270
+ pre_tool_failure_count = 0
1132
1271
 
1133
1272
  except Exception as exc:
1134
- if not any_tool_executed:
1135
- # 尚未执行任何工具(无消息发送等副作用),安全传播给上层重试
1136
- raise
1137
- logger.exception("ask 处理失败: %s", exc)
1138
- return f"处理失败: {exc}"
1273
+ if (
1274
+ not tool_execution_started
1275
+ and pre_tool_failure_count < max_pre_tool_retries
1276
+ ):
1277
+ pre_tool_failure_count += 1
1278
+ del messages[message_checkpoint_len:]
1279
+ transport_state = transport_state_checkpoint
1280
+ logger.warning(
1281
+ "[chat.pre_tool_retry] model=%s lane=%s retry=%s/%s iteration=%s error=%s",
1282
+ effective_chat_config.model_name,
1283
+ queue_lane,
1284
+ pre_tool_failure_count,
1285
+ max_pre_tool_retries,
1286
+ iteration,
1287
+ exc,
1288
+ )
1289
+ continue
1290
+ logger.exception(
1291
+ "[chat.suppressed_error] model=%s lane=%s iteration=%s error=%s",
1292
+ effective_chat_config.model_name,
1293
+ queue_lane,
1294
+ iteration,
1295
+ exc,
1296
+ )
1297
+ return ""
1139
1298
 
1140
1299
  logger.warning("[AI决策] 达到最大迭代次数,未能完成处理")
1141
1300
  return "达到最大迭代次数,未能完成处理"