Undefined-bot 3.2.7__tar.gz → 3.2.8__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 (523) hide show
  1. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/CHANGELOG.md +19 -0
  2. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/PKG-INFO +2 -5
  3. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/README.md +1 -4
  4. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/config.toml.example +17 -0
  5. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/pyproject.toml +1 -1
  6. undefined_bot-3.2.8/res/prompts/image_gen_moderation.txt +16 -0
  7. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/undefined.xml +9 -0
  8. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/undefined_nagaagent.xml +9 -0
  9. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/__init__.py +1 -1
  10. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/client.py +13 -0
  11. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/prompts.py +19 -12
  12. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/api/app.py +115 -11
  13. undefined_bot-3.2.8/src/Undefined/attachments.py +983 -0
  14. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/cognitive/service.py +140 -0
  15. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/config/loader.py +34 -0
  16. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/handlers.py +175 -3
  17. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/main.py +1 -0
  18. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/ai_coordinator.py +37 -5
  19. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/__init__.py +1 -1
  20. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/prompt.md +3 -0
  21. undefined_bot-3.2.8/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +59 -0
  22. undefined_bot-3.2.8/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +944 -0
  23. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +9 -4
  24. undefined_bot-3.2.8/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +121 -0
  25. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +22 -1
  26. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/config.json +2 -2
  27. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/handler.py +20 -1
  28. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +5 -0
  29. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +2 -2
  30. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +63 -0
  31. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/http_client.py +2 -0
  32. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/registry.py +31 -6
  33. undefined_bot-3.2.8/src/Undefined/skills/tools/fetch_image_uid/config.json +21 -0
  34. undefined_bot-3.2.8/src/Undefined/skills/tools/fetch_image_uid/handler.py +46 -0
  35. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_picture/config.json +9 -4
  36. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_picture/handler.py +171 -52
  37. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_message/handler.py +27 -1
  38. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +26 -1
  39. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/render/render_html/config.json +9 -4
  40. undefined_bot-3.2.8/src/Undefined/skills/toolsets/render/render_html/handler.py +104 -0
  41. undefined_bot-3.2.8/src/Undefined/skills/toolsets/render/render_latex/config.json +31 -0
  42. undefined_bot-3.2.8/src/Undefined/skills/toolsets/render/render_latex/handler.py +138 -0
  43. undefined_bot-3.2.8/src/Undefined/skills/toolsets/render/render_markdown/config.json +31 -0
  44. undefined_bot-3.2.8/src/Undefined/skills/toolsets/render/render_markdown/handler.py +124 -0
  45. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/history.py +36 -0
  46. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/io.py +14 -0
  47. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/paths.py +2 -0
  48. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/sender.py +12 -4
  49. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_runtime.py +47 -4
  50. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/runtime.js +6 -0
  51. undefined_bot-3.2.7/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -42
  52. undefined_bot-3.2.7/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -269
  53. undefined_bot-3.2.7/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -63
  54. undefined_bot-3.2.7/src/Undefined/skills/toolsets/render/render_html/handler.py +0 -46
  55. undefined_bot-3.2.7/src/Undefined/skills/toolsets/render/render_latex/config.json +0 -26
  56. undefined_bot-3.2.7/src/Undefined/skills/toolsets/render/render_latex/handler.py +0 -81
  57. undefined_bot-3.2.7/src/Undefined/skills/toolsets/render/render_markdown/config.json +0 -26
  58. undefined_bot-3.2.7/src/Undefined/skills/toolsets/render/render_markdown/handler.py +0 -71
  59. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/.gitignore +0 -0
  60. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/ARCHITECTURE.md +0 -0
  61. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/LICENSE +0 -0
  62. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/config/README.md +0 -0
  63. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/config/mcp.json.example +0 -0
  64. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/img/head.png +0 -0
  65. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/img/xlwy.jpg +0 -0
  66. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/IMPORTANT/each.md +0 -0
  67. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/README.md +0 -0
  68. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/agent_self_intro.txt +0 -0
  69. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/analyze_multimodal.txt +0 -0
  70. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/describe_image.txt +0 -0
  71. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/generate_title.txt +0 -0
  72. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/historian_profile_merge.md +0 -0
  73. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/historian_rewrite.md +0 -0
  74. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/injection_detector.txt +0 -0
  75. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/injection_response_agent.txt +0 -0
  76. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/merge_summaries.txt +0 -0
  77. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/naga_message_moderation.txt +0 -0
  78. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/stats_analysis.txt +0 -0
  79. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/res/prompts/summarize.txt +0 -0
  80. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/README.md +0 -0
  81. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/README.md +0 -0
  82. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/__main__.py +0 -0
  83. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/__init__.py +0 -0
  84. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/crawl4ai_support.py +0 -0
  85. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/http.py +0 -0
  86. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/llm.py +0 -0
  87. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/model_selector.py +0 -0
  88. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/multimodal.py +0 -0
  89. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/parsing.py +0 -0
  90. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/queue_budget.py +0 -0
  91. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/retrieval.py +0 -0
  92. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/summaries.py +0 -0
  93. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/tokens.py +0 -0
  94. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/tooling.py +0 -0
  95. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/transports/__init__.py +0 -0
  96. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/ai/transports/openai_transport.py +0 -0
  97. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/api/__init__.py +0 -0
  98. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/api/naga_store.py +0 -0
  99. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/arxiv/__init__.py +0 -0
  100. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/arxiv/client.py +0 -0
  101. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/arxiv/downloader.py +0 -0
  102. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/arxiv/models.py +0 -0
  103. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/arxiv/parser.py +0 -0
  104. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/arxiv/sender.py +0 -0
  105. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/bilibili/__init__.py +0 -0
  106. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/bilibili/downloader.py +0 -0
  107. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/bilibili/parser.py +0 -0
  108. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/bilibili/sender.py +0 -0
  109. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/bilibili/wbi.py +0 -0
  110. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/bilibili/wbi_request.py +0 -0
  111. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/changelog.py +0 -0
  112. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/cognitive/__init__.py +0 -0
  113. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/cognitive/historian.py +0 -0
  114. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/cognitive/job_queue.py +0 -0
  115. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/cognitive/profile_storage.py +0 -0
  116. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/cognitive/vector_store.py +0 -0
  117. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/config/__init__.py +0 -0
  118. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/config/hot_reload.py +0 -0
  119. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/config/manager.py +0 -0
  120. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/config/models.py +0 -0
  121. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/context.py +0 -0
  122. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/context_resource_registry.py +0 -0
  123. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/end_summary_storage.py +0 -0
  124. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/faq.py +0 -0
  125. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/injection_response_agent.py +0 -0
  126. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/knowledge/__init__.py +0 -0
  127. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/knowledge/chunker.py +0 -0
  128. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/knowledge/embedder.py +0 -0
  129. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/knowledge/manager.py +0 -0
  130. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/knowledge/reranker.py +0 -0
  131. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/knowledge/runtime.py +0 -0
  132. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/knowledge/store.py +0 -0
  133. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/mcp/__init__.py +0 -0
  134. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/mcp/registry.py +0 -0
  135. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/memory.py +0 -0
  136. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/onebot.py +0 -0
  137. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/rate_limit.py +0 -0
  138. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/render.py +0 -0
  139. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/scheduled_task_storage.py +0 -0
  140. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/__init__.py +0 -0
  141. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/command.py +0 -0
  142. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/commands/__init__.py +0 -0
  143. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/commands/context.py +0 -0
  144. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/commands/registry.py +0 -0
  145. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/model_pool.py +0 -0
  146. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/queue_manager.py +0 -0
  147. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/services/security.py +0 -0
  148. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/README.md +0 -0
  149. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/__init__.py +0 -0
  150. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/README.md +0 -0
  151. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
  152. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
  153. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
  154. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/handler.py +0 -0
  155. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
  156. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
  157. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
  158. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
  159. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
  160. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
  161. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
  162. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
  163. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
  164. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
  165. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
  166. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
  167. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
  168. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
  169. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
  170. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
  171. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
  172. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
  173. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
  174. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/config.json +0 -0
  175. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/handler.py +0 -0
  176. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
  177. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
  178. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
  179. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
  180. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
  181. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
  182. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
  183. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
  184. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
  185. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/intro.md +0 -0
  186. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
  187. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
  188. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
  189. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
  190. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
  191. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
  192. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
  193. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
  194. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
  195. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
  196. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
  197. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
  198. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
  199. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
  200. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
  201. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
  202. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +0 -0
  203. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +0 -0
  204. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
  205. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
  206. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
  207. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
  208. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
  209. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
  210. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
  211. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
  212. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
  213. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
  214. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +0 -0
  215. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +0 -0
  216. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/README.md +0 -0
  217. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/config.json +0 -0
  218. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
  219. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
  220. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
  221. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
  222. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/config.json +0 -0
  223. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/handler.py +0 -0
  224. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
  225. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
  226. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
  227. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
  228. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
  229. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
  230. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
  231. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
  232. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
  233. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
  234. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
  235. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
  236. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
  237. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
  238. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
  239. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
  240. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
  241. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
  242. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
  243. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
  244. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
  245. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
  246. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
  247. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
  248. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
  249. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
  250. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
  251. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
  252. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
  253. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
  254. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/intro_generator.py +0 -0
  255. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/intro_utils.py +0 -0
  256. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
  257. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
  258. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
  259. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
  260. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
  261. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
  262. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
  263. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
  264. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
  265. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +0 -0
  266. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +0 -0
  267. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +0 -0
  268. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +0 -0
  269. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +0 -0
  270. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +0 -0
  271. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +0 -0
  272. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +0 -0
  273. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/runner.py +0 -0
  274. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/README.md +0 -0
  275. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/callable.json +0 -0
  276. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/config.json +0 -0
  277. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
  278. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
  279. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
  280. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
  281. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
  282. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
  283. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
  284. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/tools/grok_search/config.json +0 -0
  285. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/tools/grok_search/handler.py +0 -0
  286. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
  287. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
  288. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
  289. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
  290. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/README.md +0 -0
  291. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/addadmin/README.md +0 -0
  292. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/addadmin/config.json +0 -0
  293. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/addadmin/handler.py +0 -0
  294. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/bugfix/README.md +0 -0
  295. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/bugfix/config.json +0 -0
  296. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
  297. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/changelog/README.md +0 -0
  298. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/changelog/config.json +0 -0
  299. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/changelog/handler.py +0 -0
  300. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/copyright/README.md +0 -0
  301. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/copyright/config.json +0 -0
  302. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/copyright/handler.py +0 -0
  303. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/delfaq/README.md +0 -0
  304. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/delfaq/config.json +0 -0
  305. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/delfaq/handler.py +0 -0
  306. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/help/README.md +0 -0
  307. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/help/config.json +0 -0
  308. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/help/handler.py +0 -0
  309. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/lsadmin/README.md +0 -0
  310. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/lsadmin/config.json +0 -0
  311. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/lsadmin/handler.py +0 -0
  312. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/lsfaq/README.md +0 -0
  313. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/lsfaq/config.json +0 -0
  314. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/lsfaq/handler.py +0 -0
  315. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/naga/README.md +0 -0
  316. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/naga/config.json +0 -0
  317. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/naga/handler.py +0 -0
  318. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/naga/policy.py +0 -0
  319. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/naga/scopes.json +0 -0
  320. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/rmadmin/README.md +0 -0
  321. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/rmadmin/config.json +0 -0
  322. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/rmadmin/handler.py +0 -0
  323. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/searchfaq/README.md +0 -0
  324. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/searchfaq/config.json +0 -0
  325. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/searchfaq/handler.py +0 -0
  326. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/stats/README.md +0 -0
  327. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/stats/config.json +0 -0
  328. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/stats/handler.py +0 -0
  329. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/viewfaq/README.md +0 -0
  330. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/viewfaq/config.json +0 -0
  331. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/commands/viewfaq/handler.py +0 -0
  332. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/http_config.py +0 -0
  333. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/README.md +0 -0
  334. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/__init__.py +0 -0
  335. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/arxiv_paper/README.md +0 -0
  336. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/arxiv_paper/config.json +0 -0
  337. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/arxiv_paper/handler.py +0 -0
  338. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
  339. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
  340. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
  341. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/changelog_query/README.md +0 -0
  342. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/changelog_query/config.json +0 -0
  343. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/changelog_query/handler.py +0 -0
  344. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/end/README.md +0 -0
  345. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/end/config.json +0 -0
  346. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/end/handler.py +0 -0
  347. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
  348. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_current_time/callable.json +0 -0
  349. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
  350. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
  351. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_picture/README.md +0 -0
  352. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
  353. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
  354. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
  355. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
  356. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
  357. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
  358. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
  359. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
  360. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
  361. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
  362. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
  363. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
  364. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/qq_like/README.md +0 -0
  365. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/qq_like/config.json +0 -0
  366. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
  367. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/task_progress/config.json +0 -0
  368. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
  369. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/README.md +0 -0
  370. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/__init__.py +0 -0
  371. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
  372. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
  373. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
  374. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
  375. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
  376. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
  377. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
  378. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
  379. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
  380. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
  381. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/README.md +0 -0
  382. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/activity_trend/config.json +0 -0
  383. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/activity_trend/handler.py +0 -0
  384. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/detect_inactive_risk/config.json +0 -0
  385. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/detect_inactive_risk/handler.py +0 -0
  386. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/filter_members/config.json +0 -0
  387. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/filter_members/handler.py +0 -0
  388. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
  389. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
  390. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
  391. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
  392. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
  393. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
  394. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_activity/config.json +0 -0
  395. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_activity/handler.py +0 -0
  396. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
  397. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
  398. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
  399. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
  400. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
  401. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
  402. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/level_distribution/config.json +0 -0
  403. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/level_distribution/handler.py +0 -0
  404. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/rank_members/config.json +0 -0
  405. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group/rank_members/handler.py +0 -0
  406. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/config.json +0 -0
  407. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/handler.py +0 -0
  408. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/config.json +0 -0
  409. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/handler.py +0 -0
  410. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/config.json +0 -0
  411. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/handler.py +0 -0
  412. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
  413. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
  414. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/README.md +0 -0
  415. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
  416. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
  417. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
  418. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
  419. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
  420. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
  421. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
  422. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
  423. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/README.md +0 -0
  424. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
  425. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
  426. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
  427. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +0 -0
  428. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
  429. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +0 -0
  430. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
  431. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
  432. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
  433. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
  434. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
  435. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
  436. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
  437. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
  438. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
  439. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
  440. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
  441. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
  442. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
  443. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
  444. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
  445. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
  446. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
  447. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
  448. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/notices/README.md +0 -0
  449. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
  450. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
  451. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
  452. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
  453. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
  454. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
  455. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/render/README.md +0 -0
  456. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/README.md +0 -0
  457. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/config.json +0 -0
  458. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/handler.py +0 -0
  459. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/config.json +0 -0
  460. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/handler.py +0 -0
  461. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/config.json +0 -0
  462. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/handler.py +0 -0
  463. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/config.json +0 -0
  464. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/handler.py +0 -0
  465. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/token_usage_storage.py +0 -0
  466. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/__init__.py +0 -0
  467. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/cache.py +0 -0
  468. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/common.py +0 -0
  469. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/cors.py +0 -0
  470. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/file_lock.py +0 -0
  471. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/group_metrics.py +0 -0
  472. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/http_download.py +0 -0
  473. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/logging.py +0 -0
  474. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/member_utils.py +0 -0
  475. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/message_utils.py +0 -0
  476. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/qq_emoji.py +0 -0
  477. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/queue_intervals.py +0 -0
  478. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/recent_messages.py +0 -0
  479. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/request_params.py +0 -0
  480. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/resources.py +0 -0
  481. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/scheduler.py +0 -0
  482. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/self_update.py +0 -0
  483. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/time_utils.py +0 -0
  484. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/tool_calls.py +0 -0
  485. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/utils/xml.py +0 -0
  486. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/__init__.py +0 -0
  487. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/__main__.py +0 -0
  488. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/app.py +0 -0
  489. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/core.py +0 -0
  490. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/__init__.py +0 -0
  491. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_auth.py +0 -0
  492. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_bot.py +0 -0
  493. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_config.py +0 -0
  494. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_index.py +0 -0
  495. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_logs.py +0 -0
  496. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_shared.py +0 -0
  497. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/routes/_system.py +0 -0
  498. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
  499. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/app.css +0 -0
  500. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/base.css +0 -0
  501. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/components.css +0 -0
  502. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/landing.css +0 -0
  503. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/responsive.css +0 -0
  504. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/style.css +0 -0
  505. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/css/variables.css +0 -0
  506. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/favicon.svg +0 -0
  507. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/api.js +0 -0
  508. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/auth.js +0 -0
  509. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/bot.js +0 -0
  510. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/config-form.js +0 -0
  511. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/i18n.js +0 -0
  512. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/log-view.js +0 -0
  513. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/logs.js +0 -0
  514. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/main.js +0 -0
  515. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/state.js +0 -0
  516. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/ui.js +0 -0
  517. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
  518. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/templates/index.html +0 -0
  519. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/utils/__init__.py +0 -0
  520. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/utils/comment.py +0 -0
  521. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/utils/config_io.py +0 -0
  522. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/utils/config_sync.py +0 -0
  523. {undefined_bot-3.2.7 → undefined_bot-3.2.8}/src/Undefined/webui/utils/toml_render.py +0 -0
@@ -1,3 +1,22 @@
1
+ ## v3.2.8 多模态附件与参考图生图
2
+
3
+ 围绕多模态消息链路进行了较大增强,引入统一的附件 UID 注册与 `<pic uid="..."/>` 图文混排机制,打通群聊、私聊、WebUI 和合并转发中的图片/文件上下文。同步为生图工具补齐参考图生图、独立图片编辑模型配置与提示词审核能力,并完善 Runtime API、认知侧写和动态技能加载的稳定性。
4
+
5
+ - 新增统一附件注册系统,群聊、私聊、WebUI 会话和合并转发中的图片/文件会登记为内部附件 UID,并写入历史记录与提示词上下文。
6
+ - 系统提示词与发送链路支持 `<pic uid="..."/>` 图文混排,AI 可直接在回复中内嵌当前会话内的图片 UID。
7
+ - 新增 `fetch_image_uid` 工具,支持将远程图片 URL 拉取并注册为当前会话可复用的图片 UID。
8
+ - `get_picture`、`render_html`、`render_markdown`、`render_latex` 默认改为 `embed` 返回可嵌入图片 UID,同时保留 `send` 直接发送模式。
9
+ - `file_analysis_agent` 及相关文件/图片链路已适配附件 UID,优先使用内部 `pic_*` / `file_*` 标识,也继续兼容 URL 与 legacy `file_id`。
10
+ - `ai_draw_one` 支持基于 `reference_image_uids` 的参考图生图,新增 `[models.image_edit]` 配置节,并接入 OpenAI 兼容的 `/v1/images/edits` 接口。
11
+ - 新增基于 Agent 模型的生图提示词审核能力,并补充独立审核提示模板。
12
+ - 优化图片生成请求体验,支持 base64 返回、保留显式尺寸、锁定模型参数,并更清晰地暴露上游错误。
13
+ - 修复附件渲染、图片编辑上传与阻塞式文件读取问题,增强多模态链路稳定性。
14
+ - Runtime API 与 WebUI 现在会注册聊天附件、渲染图片 UID,并支持本地 `file://` 图片预览;同时取消 `_agent` 工具调用的固定超时上限。
15
+ - 认知服务会在用户昵称或群名变化时自动刷新 profile 展示名与向量索引,减少侧写名称陈旧问题。
16
+ - 修复动态技能模块加载与超时包装问题,并补充相关测试覆盖;同步整理 README,移除顶部头图。
17
+
18
+ ---
19
+
1
20
  ## v3.2.7 arXiv 工具集与运行时变更感知
2
21
 
3
22
  新增 arXiv 论文搜索与提取工具集,以及运行时 CHANGELOG 查询能力。重构了生图工具支持 OpenAI 兼容接口,引入 grok_search 联网搜索工具,并让 AI 在系统提示词中感知自身模型配置信息。同步修复了多项稳定性问题与 CI 效率优化。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Undefined-bot
3
- Version: 3.2.7
3
+ Version: 3.2.8
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
@@ -60,7 +60,7 @@ Description-Content-Type: text/markdown
60
60
 
61
61
  <table border="0">
62
62
  <tr>
63
- <td width="70%" valign="top">
63
+ <td width="100%" valign="top">
64
64
  <div align="center">
65
65
  <h1>Undefined</h1>
66
66
  <em>QQ bot platform with cognitive memory architecture and multi-agent Skills, via OneBot V11.</em>
@@ -78,9 +78,6 @@ Description-Content-Type: text/markdown
78
78
  <strong>Undefined</strong> 是一个基于 Python 异步架构的高性能 QQ 机器人平台,搭载<strong>认知记忆架构</strong>,采用自研 <strong>Skills</strong> 系统,内置多个智能 Agent,支持代码分析、网络搜索、娱乐互动等多模态能力,并提供 <strong>Management-first WebUI</strong> 在线管理,以及可连接同一管理服务的 <strong>Desktop / Android App</strong>。
79
79
  </p>
80
80
  </td>
81
- <td width="30%">
82
- <img src="https://raw.githubusercontent.com/69gg/Undefined/main/img/head.png" width="100%" alt="Undefined" />
83
- </td>
84
81
  </tr>
85
82
  </table>
86
83
 
@@ -1,6 +1,6 @@
1
1
  <table border="0">
2
2
  <tr>
3
- <td width="70%" valign="top">
3
+ <td width="100%" valign="top">
4
4
  <div align="center">
5
5
  <h1>Undefined</h1>
6
6
  <em>QQ bot platform with cognitive memory architecture and multi-agent Skills, via OneBot V11.</em>
@@ -18,9 +18,6 @@
18
18
  <strong>Undefined</strong> 是一个基于 Python 异步架构的高性能 QQ 机器人平台,搭载<strong>认知记忆架构</strong>,采用自研 <strong>Skills</strong> 系统,内置多个智能 Agent,支持代码分析、网络搜索、娱乐互动等多模态能力,并提供 <strong>Management-first WebUI</strong> 在线管理,以及可连接同一管理服务的 <strong>Desktop / Android App</strong>。
19
19
  </p>
20
20
  </td>
21
- <td width="30%">
22
- <img src="https://raw.githubusercontent.com/69gg/Undefined/main/img/head.png" width="100%" alt="Undefined" />
23
- </td>
24
21
  </tr>
25
22
  </table>
26
23
 
@@ -527,6 +527,23 @@ model_name = ""
527
527
  # en: Extra request-body params (optional).
528
528
  [models.image_gen.request_params]
529
529
 
530
+ # zh: 参考图生图模型配置(用于 ai_draw_one 传入 reference_image_uids 时调用 OpenAI 兼容的图片编辑接口)。
531
+ # en: Reference-image generation model config (used when ai_draw_one receives reference_image_uids and calls the OpenAI-compatible image editing API).
532
+ [models.image_edit]
533
+ # zh: OpenAI-compatible 基址 URL,例如 https://api.openai.com/v1(最终请求路径为 /v1/images/edits)。
534
+ # en: OpenAI-compatible base URL, e.g. https://api.openai.com/v1 (final request path is /v1/images/edits).
535
+ api_url = ""
536
+ # zh: API Key。
537
+ # en: API key.
538
+ api_key = ""
539
+ # zh: 模型名称,空则回退到 [models.image_gen] 的 model_name。
540
+ # en: Model name, empty falls back to [models.image_gen].model_name.
541
+ model_name = ""
542
+
543
+ # zh: 额外请求体参数(可选)。
544
+ # en: Extra request-body params (optional).
545
+ [models.image_edit.request_params]
546
+
530
547
  # zh: 本地知识库配置。
531
548
  # en: Local knowledge base settings.
532
549
  [knowledge]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Undefined-bot"
3
- version = "3.2.7"
3
+ version = "3.2.8"
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 = [
@@ -0,0 +1,16 @@
1
+ 你是图片生成审核助手,只根据“待生成图片的提示词”判断是否允许生成。
2
+
3
+ 拦截范围包括但不限于:
4
+ - 露骨色情、性剥削、未成年人性化
5
+ - 血腥暴力、肢解、虐杀等重口内容
6
+ - 明显违法、极端、恐怖主义相关内容
7
+ - 明显侵犯隐私、仇恨或其他高风险内容
8
+
9
+ 审核原则:
10
+ - 只审核风险,不提供改写建议,不解释政策,不输出多余内容
11
+ - 安全、普通、模糊但不明显违规的内容默认放行
12
+ - 如果只是普通人物、风景、二次元、服饰、轻微动作描写,不要误杀
13
+
14
+ 输出格式必须严格遵守:
15
+ - 允许:`ALLOW`
16
+ - 拒绝:`BLOCK: <不超过20字的简短中文原因>`
@@ -131,6 +131,15 @@
131
131
 
132
132
  **关键点:每次消息处理都必须以 end 结束,这是维持对话流的核心机制。**
133
133
  </workflow>
134
+
135
+ <mixed_media_output priority="P0">
136
+ **图文混排规则:**
137
+ - 如果上下文或工具结果给了图片 UID(例如 `pic_ab12cd34`),你可以在 `send_message.message` 里直接插入 `<pic uid="pic_ab12cd34"/>`
138
+ - `<pic uid="..."/>` 是唯一允许的内嵌图片语法;不要改成 Markdown 图片、HTML `<img>`、代码块或自然语言描述
139
+ - 可以图文混排,例如:`我给你介绍一下`\n`<pic uid="pic_xxx"/>`\n`如图所示`
140
+ - 只能引用当前会话里明确给出的图片 UID,禁止臆造 UID
141
+ - 只有 `pic_*` 这类图片 UID 能放进 `<pic>`;普通文件 UID 不能放进去
142
+ </mixed_media_output>
134
143
  </message_sending_mechanism>
135
144
 
136
145
  <!-- 规则4: 对话结束机制 -->
@@ -131,6 +131,15 @@
131
131
 
132
132
  **关键点:每次消息处理都必须以 end 结束,这是维持对话流的核心机制。**
133
133
  </workflow>
134
+
135
+ <mixed_media_output priority="P0">
136
+ **图文混排规则:**
137
+ - 如果上下文或工具结果给了图片 UID(例如 `pic_ab12cd34`),你可以在 `send_message.message` 里直接插入 `<pic uid="pic_ab12cd34"/>`
138
+ - `<pic uid="..."/>` 是唯一允许的内嵌图片语法;不要改成 Markdown 图片、HTML `<img>`、代码块或自然语言描述
139
+ - 可以图文混排,例如:`我给你介绍一下`\n`<pic uid="pic_xxx"/>`\n`如图所示`
140
+ - 只能引用当前会话里明确给出的图片 UID,禁止臆造 UID
141
+ - 只有 `pic_*` 这类图片 UID 能放进 `<pic>`;普通文件 UID 不能放进去
142
+ </mixed_media_output>
134
143
  </message_sending_mechanism>
135
144
 
136
145
  <!-- 规则4: 对话结束机制 -->
@@ -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.7"
3
+ __version__ = "3.2.8"
@@ -12,6 +12,7 @@ from uuid import uuid4
12
12
 
13
13
  import httpx
14
14
 
15
+ from Undefined.attachments import AttachmentRegistry
15
16
  from Undefined.ai.llm import ModelRequester
16
17
  from Undefined.ai.model_selector import ModelSelector
17
18
  from Undefined.ai.multimodal import MultimodalAnalyzer
@@ -136,6 +137,7 @@ class AIClient:
136
137
  self._token_counter = TokenCounter()
137
138
  self._knowledge_manager: Any = None
138
139
  self._cognitive_service: Any = cognitive_service
140
+ self.attachment_registry = AttachmentRegistry(http_client=self._http_client)
139
141
 
140
142
  # 私聊发送回调
141
143
  self._send_private_message_callback: Optional[SendPrivateMessageCallback] = None
@@ -325,6 +327,13 @@ class AIClient:
325
327
  if hasattr(self, "anthropic_skill_registry"):
326
328
  await self.anthropic_skill_registry.stop_hot_reload()
327
329
 
330
+ attachment_registry = getattr(self, "attachment_registry", None)
331
+ if attachment_registry is not None and hasattr(attachment_registry, "flush"):
332
+ try:
333
+ await attachment_registry.flush()
334
+ except Exception as exc:
335
+ logger.warning("[清理] 刷新附件注册表失败: %s", exc)
336
+
328
337
  # 3) 最后关闭共享 HTTP client
329
338
  if hasattr(self, "_http_client"):
330
339
  logger.info("[清理] 正在关闭 AIClient HTTP 客户端...")
@@ -973,6 +982,10 @@ class AIClient:
973
982
  tool_context.setdefault("onebot_client", onebot_client)
974
983
  tool_context.setdefault("scheduler", scheduler)
975
984
  tool_context.setdefault("send_image_callback", self._send_image_callback)
985
+ tool_context.setdefault(
986
+ "attachment_registry",
987
+ getattr(self, "attachment_registry", None),
988
+ )
976
989
  tool_context.setdefault("memory_storage", self.memory_storage)
977
990
  tool_context.setdefault("knowledge_manager", self._knowledge_manager)
978
991
  tool_context.setdefault("cognitive_service", self._cognitive_service)
@@ -11,6 +11,7 @@ from typing import Any, Callable, Awaitable, Literal
11
11
 
12
12
  import aiofiles
13
13
 
14
+ from Undefined.attachments import attachment_refs_to_xml
14
15
  from Undefined.context import RequestContext
15
16
  from Undefined.end_summary_storage import (
16
17
  EndSummaryStorage,
@@ -26,7 +27,7 @@ from Undefined.utils.xml import escape_xml_attr, escape_xml_text
26
27
  logger = logging.getLogger(__name__)
27
28
 
28
29
  _CURRENT_MESSAGE_RE = re.compile(
29
- r"<message\b(?P<attrs>[^>]*)>\s*<content>(?P<content>.*?)</content>\s*</message>",
30
+ r"<message\b(?P<attrs>[^>]*)>.*?<content>(?P<content>.*?)</content>.*?</message>",
30
31
  re.DOTALL | re.IGNORECASE,
31
32
  )
32
33
  _XML_ATTR_RE = re.compile(r'(?P<key>[a-zA-Z_][a-zA-Z0-9_-]*)="(?P<value>[^"]*)"')
@@ -326,6 +327,15 @@ class PromptBuilder:
326
327
  len(self._anthropic_skill_registry.get_all_skills()),
327
328
  )
328
329
 
330
+ each_rules = await self._load_each_rules()
331
+ if each_rules:
332
+ messages.append(
333
+ {
334
+ "role": "system",
335
+ "content": f"【强制规则 - 必须在进行任何操作前仔细阅读并严格遵守】\n{each_rules}",
336
+ }
337
+ )
338
+
329
339
  if self._memory_storage:
330
340
  memories = self._memory_storage.get_all()
331
341
  if memories:
@@ -519,15 +529,6 @@ class PromptBuilder:
519
529
  }
520
530
  )
521
531
 
522
- each_rules = await self._load_each_rules()
523
- if each_rules:
524
- messages.append(
525
- {
526
- "role": "system",
527
- "content": f"【强制规则 - 必须在进行任何操作前仔细阅读并严格遵守】\n{each_rules}",
528
- }
529
- )
530
-
531
532
  messages.append({"role": "user", "content": f"【当前消息】\n{question}"})
532
533
  logger.debug(
533
534
  "[Prompt] messages_ready=%s question_len=%s",
@@ -648,6 +649,7 @@ class PromptBuilder:
648
649
  chat_name = msg.get("chat_name", "未知群聊")
649
650
  timestamp = msg.get("timestamp", "")
650
651
  text = msg.get("message", "")
652
+ attachments = msg.get("attachments", [])
651
653
  role = msg.get("role", "member")
652
654
  title = msg.get("title", "")
653
655
  message_id = msg.get("message_id")
@@ -664,6 +666,11 @@ class PromptBuilder:
664
666
  msg_id_attr = ""
665
667
  if message_id is not None:
666
668
  msg_id_attr = f' message_id="{escape_xml_attr(str(message_id))}"'
669
+ attachment_xml = (
670
+ f"\n{attachment_refs_to_xml(attachments)}"
671
+ if isinstance(attachments, list) and attachments
672
+ else ""
673
+ )
667
674
 
668
675
  if msg_type_val == "group":
669
676
  location = (
@@ -673,14 +680,14 @@ class PromptBuilder:
673
680
  xml_msg = (
674
681
  f'<message{msg_id_attr} sender="{safe_sender}" sender_id="{safe_sender_id}" group_id="{safe_chat_id}" '
675
682
  f'group_name="{safe_chat_name}" location="{safe_location}" role="{safe_role}" title="{safe_title}" '
676
- f'time="{safe_time}">\n<content>{safe_text}</content>\n</message>'
683
+ f'time="{safe_time}">\n<content>{safe_text}</content>{attachment_xml}\n</message>'
677
684
  )
678
685
  else:
679
686
  location = "私聊"
680
687
  safe_location = escape_xml_attr(location)
681
688
  xml_msg = (
682
689
  f'<message{msg_id_attr} sender="{safe_sender}" sender_id="{safe_sender_id}" location="{safe_location}" '
683
- f'time="{safe_time}">\n<content>{safe_text}</content>\n</message>'
690
+ f'time="{safe_time}">\n<content>{safe_text}</content>{attachment_xml}\n</message>'
684
691
  )
685
692
  context_lines.append(xml_msg)
686
693
 
@@ -21,11 +21,18 @@ from aiohttp import ClientSession, ClientTimeout, web
21
21
  from aiohttp.web_response import Response
22
22
 
23
23
  from Undefined import __version__
24
+ from Undefined.attachments import (
25
+ attachment_refs_to_xml,
26
+ build_attachment_scope,
27
+ register_message_attachments,
28
+ render_message_with_pic_placeholders,
29
+ )
24
30
  from Undefined.config import load_webui_settings
25
31
  from Undefined.context import RequestContext
26
32
  from Undefined.context_resource_registry import collect_context_resources
27
33
  from Undefined.render import render_html_to_image, render_markdown_to_html # noqa: F401
28
34
  from Undefined.services.queue_manager import QUEUE_LANE_SUPERADMIN
35
+ from Undefined.utils.common import message_to_segments
29
36
  from Undefined.utils.cors import is_allowed_cors_origin, normalize_origin
30
37
  from Undefined.utils.recent_messages import get_recent_messages_prefer_local
31
38
  from Undefined.utils.xml import escape_xml_attr, escape_xml_text
@@ -40,6 +47,10 @@ _PROCESS_START_TIME = time.time()
40
47
  _NAGA_REQUEST_UUID_TTL_SECONDS = 6 * 60 * 60
41
48
 
42
49
 
50
+ class _ToolInvokeExecutionTimeoutError(asyncio.TimeoutError):
51
+ """由 Runtime API 工具调用超时包装器抛出的超时异常。"""
52
+
53
+
43
54
  @dataclass
44
55
  class _NagaRequestResult:
45
56
  payload_hash: str
@@ -71,8 +82,16 @@ class _WebUIVirtualSender:
71
82
  mark_sent: bool = True,
72
83
  reply_to: int | None = None,
73
84
  preferred_temp_group_id: int | None = None,
85
+ history_message: str | None = None,
74
86
  ) -> int | None:
75
- _ = user_id, auto_history, mark_sent, reply_to, preferred_temp_group_id
87
+ _ = (
88
+ user_id,
89
+ auto_history,
90
+ mark_sent,
91
+ reply_to,
92
+ preferred_temp_group_id,
93
+ history_message,
94
+ )
76
95
  await self._send_private_callback(self._virtual_user_id, message)
77
96
  return None
78
97
 
@@ -85,8 +104,16 @@ class _WebUIVirtualSender:
85
104
  *,
86
105
  mark_sent: bool = True,
87
106
  reply_to: int | None = None,
107
+ history_message: str | None = None,
88
108
  ) -> int | None:
89
- _ = group_id, auto_history, history_prefix, mark_sent, reply_to
109
+ _ = (
110
+ group_id,
111
+ auto_history,
112
+ history_prefix,
113
+ mark_sent,
114
+ reply_to,
115
+ history_message,
116
+ )
90
117
  await self._send_private_callback(self._virtual_user_id, message)
91
118
  return None
92
119
 
@@ -1177,14 +1204,29 @@ class RuntimeAPIServer:
1177
1204
  ) -> str:
1178
1205
  cfg = self._ctx.config_getter()
1179
1206
  permission_sender_id = int(cfg.superadmin_qq)
1207
+ webui_scope_key = build_attachment_scope(
1208
+ user_id=_VIRTUAL_USER_ID,
1209
+ request_type="private",
1210
+ webui_session=True,
1211
+ )
1212
+ input_segments = message_to_segments(text)
1213
+ registered_input = await register_message_attachments(
1214
+ registry=self._ctx.ai.attachment_registry,
1215
+ segments=input_segments,
1216
+ scope_key=webui_scope_key,
1217
+ resolve_image_url=self._ctx.onebot.get_image,
1218
+ get_forward_messages=self._ctx.onebot.get_forward_msg,
1219
+ )
1220
+ normalized_text = registered_input.normalized_text or text
1180
1221
  await self._ctx.history_manager.add_private_message(
1181
1222
  user_id=_VIRTUAL_USER_ID,
1182
- text_content=text,
1223
+ text_content=normalized_text,
1183
1224
  display_name=_VIRTUAL_USER_NAME,
1184
1225
  user_name=_VIRTUAL_USER_NAME,
1226
+ attachments=registered_input.attachments,
1185
1227
  )
1186
1228
 
1187
- command = self._ctx.command_dispatcher.parse_command(text)
1229
+ command = self._ctx.command_dispatcher.parse_command(normalized_text)
1188
1230
  if command:
1189
1231
  await self._ctx.command_dispatcher.dispatch_private(
1190
1232
  user_id=_VIRTUAL_USER_ID,
@@ -1196,8 +1238,13 @@ class RuntimeAPIServer:
1196
1238
  return "command"
1197
1239
 
1198
1240
  current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
1241
+ attachment_xml = (
1242
+ f"\n{attachment_refs_to_xml(registered_input.attachments)}"
1243
+ if registered_input.attachments
1244
+ else ""
1245
+ )
1199
1246
  full_question = f"""<message sender="{escape_xml_attr(_VIRTUAL_USER_NAME)}" sender_id="{escape_xml_attr(_VIRTUAL_USER_ID)}" location="WebUI私聊" time="{escape_xml_attr(current_time)}">
1200
- <content>{escape_xml_text(text)}</content>
1247
+ <content>{escape_xml_text(normalized_text)}</content>{attachment_xml}
1201
1248
  </message>
1202
1249
 
1203
1250
  【WebUI 会话】
@@ -1252,6 +1299,8 @@ class RuntimeAPIServer:
1252
1299
  if value is not None:
1253
1300
  ctx.set_resource(key, value)
1254
1301
  ctx.set_resource("queue_lane", QUEUE_LANE_SUPERADMIN)
1302
+ ctx.set_resource("webui_session", True)
1303
+ ctx.set_resource("webui_permission", "superadmin")
1255
1304
 
1256
1305
  result = await self._ctx.ai.ask(
1257
1306
  full_question,
@@ -1330,18 +1379,32 @@ class RuntimeAPIServer:
1330
1379
 
1331
1380
  stream = _to_bool(body.get("stream"))
1332
1381
  outputs: list[str] = []
1382
+ webui_scope_key = build_attachment_scope(
1383
+ user_id=_VIRTUAL_USER_ID,
1384
+ request_type="private",
1385
+ webui_session=True,
1386
+ )
1333
1387
 
1334
1388
  async def _capture_private_message(user_id: int, message: str) -> None:
1335
1389
  _ = user_id
1336
1390
  content = str(message or "").strip()
1337
1391
  if not content:
1338
1392
  return
1339
- outputs.append(content)
1393
+ rendered = await render_message_with_pic_placeholders(
1394
+ content,
1395
+ registry=self._ctx.ai.attachment_registry,
1396
+ scope_key=webui_scope_key,
1397
+ strict=False,
1398
+ )
1399
+ if not rendered.delivery_text.strip():
1400
+ return
1401
+ outputs.append(rendered.delivery_text)
1340
1402
  await self._ctx.history_manager.add_private_message(
1341
1403
  user_id=_VIRTUAL_USER_ID,
1342
- text_content=content,
1404
+ text_content=rendered.history_text,
1343
1405
  display_name="Bot",
1344
1406
  user_name="Bot",
1407
+ attachments=rendered.attachments,
1345
1408
  )
1346
1409
 
1347
1410
  if not stream:
@@ -1368,8 +1431,11 @@ class RuntimeAPIServer:
1368
1431
  message_queue: asyncio.Queue[str] = asyncio.Queue()
1369
1432
 
1370
1433
  async def _capture_private_message_stream(user_id: int, message: str) -> None:
1434
+ output_count = len(outputs)
1371
1435
  await _capture_private_message(user_id, message)
1372
- content = str(message or "").strip()
1436
+ if len(outputs) <= output_count:
1437
+ return
1438
+ content = outputs[-1].strip()
1373
1439
  if content:
1374
1440
  await message_queue.put(content)
1375
1441
 
@@ -1509,6 +1575,43 @@ class RuntimeAPIServer:
1509
1575
 
1510
1576
  return filtered
1511
1577
 
1578
+ def _get_agent_tool_names(self) -> set[str]:
1579
+ ai = self._ctx.ai
1580
+ if ai is None:
1581
+ return set()
1582
+
1583
+ agent_reg = getattr(ai, "agent_registry", None)
1584
+ if agent_reg is None:
1585
+ return set()
1586
+
1587
+ agent_names: set[str] = set()
1588
+ for schema in agent_reg.get_agents_schema():
1589
+ func = schema.get("function", {})
1590
+ name = str(func.get("name", ""))
1591
+ if name:
1592
+ agent_names.add(name)
1593
+ return agent_names
1594
+
1595
+ def _resolve_tool_invoke_timeout(
1596
+ self, tool_name: str, timeout: int
1597
+ ) -> float | None:
1598
+ if tool_name in self._get_agent_tool_names():
1599
+ return None
1600
+ return float(timeout)
1601
+
1602
+ async def _await_tool_invoke_result(
1603
+ self,
1604
+ awaitable: Awaitable[Any],
1605
+ *,
1606
+ timeout: float | None,
1607
+ ) -> Any:
1608
+ if timeout is None or timeout <= 0:
1609
+ return await awaitable
1610
+ try:
1611
+ return await asyncio.wait_for(awaitable, timeout=timeout)
1612
+ except asyncio.TimeoutError as exc:
1613
+ raise _ToolInvokeExecutionTimeoutError from exc
1614
+
1512
1615
  async def _tools_list_handler(self, request: web.Request) -> Response:
1513
1616
  _ = request
1514
1617
  cfg = self._ctx.config_getter()
@@ -1659,6 +1762,7 @@ class RuntimeAPIServer:
1659
1762
  )
1660
1763
 
1661
1764
  start = time.perf_counter()
1765
+ effective_timeout = self._resolve_tool_invoke_timeout(tool_name, timeout)
1662
1766
  try:
1663
1767
  async with RequestContext(
1664
1768
  request_type=request_type,
@@ -1699,9 +1803,9 @@ class RuntimeAPIServer:
1699
1803
  if tool_manager is None:
1700
1804
  raise RuntimeError("ToolManager not available")
1701
1805
 
1702
- raw_result = await asyncio.wait_for(
1806
+ raw_result = await self._await_tool_invoke_result(
1703
1807
  tool_manager.execute_tool(tool_name, args, tool_context),
1704
- timeout=timeout,
1808
+ timeout=effective_timeout,
1705
1809
  )
1706
1810
 
1707
1811
  elapsed_ms = round((time.perf_counter() - start) * 1000, 1)
@@ -1722,7 +1826,7 @@ class RuntimeAPIServer:
1722
1826
  "duration_ms": elapsed_ms,
1723
1827
  }
1724
1828
 
1725
- except asyncio.TimeoutError:
1829
+ except _ToolInvokeExecutionTimeoutError:
1726
1830
  elapsed_ms = round((time.perf_counter() - start) * 1000, 1)
1727
1831
  logger.warning(
1728
1832
  "[ToolInvoke] 执行超时: request_id=%s tool=%s timeout=%ds",