Undefined-bot 3.8.0__tar.gz → 3.8.1__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 (730) hide show
  1. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/CHANGELOG.md +12 -0
  2. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/PKG-INFO +1 -1
  3. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/config.toml.example +11 -2
  4. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/pyproject.toml +1 -1
  5. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/__init__.py +1 -1
  6. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/config_class.py +3 -0
  7. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/env_registry.py +3 -0
  8. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/hot_reload.py +3 -0
  9. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/network.py +44 -0
  10. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/render.py +96 -8
  11. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/README.md +2 -2
  12. undefined_bot-3.8.1/src/Undefined/skills/toolsets/render/README.md +14 -0
  13. undefined_bot-3.8.1/src/Undefined/skills/toolsets/render/layout.py +171 -0
  14. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_html/config.json +20 -2
  15. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_html/handler.py +14 -1
  16. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_latex/config.json +2 -2
  17. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_latex/handler.py +8 -117
  18. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_markdown/config.json +19 -1
  19. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/render/render_markdown/handler.py +14 -1
  20. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/io.py +14 -0
  21. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/render_cache.py +15 -5
  22. undefined_bot-3.8.0/src/Undefined/skills/toolsets/render/README.md +0 -11
  23. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/.gitignore +0 -0
  24. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/ARCHITECTURE.md +0 -0
  25. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/LICENSE +0 -0
  26. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/README.md +0 -0
  27. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/config/README.md +0 -0
  28. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/config/mcp.json.example +0 -0
  29. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/img/xlwy.jpg +0 -0
  30. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/IMPORTANT/each.md +0 -0
  31. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/README.md +0 -0
  32. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/agent_self_intro.txt +0 -0
  33. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/analyze_multimodal.txt +0 -0
  34. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/describe_image.txt +0 -0
  35. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/describe_meme_image.txt +0 -0
  36. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/generate_title.txt +0 -0
  37. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/historian_profile_merge.md +0 -0
  38. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/historian_rewrite.md +0 -0
  39. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/image_gen_moderation.txt +0 -0
  40. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/injection_detector.txt +0 -0
  41. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/injection_response_agent.txt +0 -0
  42. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/judge_meme_image.txt +0 -0
  43. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/merge_message_summaries.txt +0 -0
  44. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/merge_summaries.txt +0 -0
  45. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/message_summary.txt +0 -0
  46. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/naga_message_moderation.txt +0 -0
  47. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/stats_analysis.txt +0 -0
  48. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/summarize.txt +0 -0
  49. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/undefined.xml +0 -0
  50. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/res/prompts/undefined_nagaagent.xml +0 -0
  51. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/README.md +0 -0
  52. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/README.md +0 -0
  53. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/__main__.py +0 -0
  54. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/__init__.py +0 -0
  55. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/__init__.py +0 -0
  56. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/ask_loop.py +0 -0
  57. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/queue.py +0 -0
  58. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/client/setup.py +0 -0
  59. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/crawl4ai_support.py +0 -0
  60. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/http.py +0 -0
  61. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/__init__.py +0 -0
  62. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/requester.py +0 -0
  63. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/sanitize.py +0 -0
  64. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/streaming.py +0 -0
  65. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/thinking.py +0 -0
  66. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/llm/types.py +0 -0
  67. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/model_selector.py +0 -0
  68. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/__init__.py +0 -0
  69. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/analyzer.py +0 -0
  70. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/constants.py +0 -0
  71. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/detection.py +0 -0
  72. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/multimodal/parsing.py +0 -0
  73. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/parsing.py +0 -0
  74. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/__init__.py +0 -0
  75. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/builder.py +0 -0
  76. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/cognitive.py +0 -0
  77. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/constants.py +0 -0
  78. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/current_input.py +0 -0
  79. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/system_context.py +0 -0
  80. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/prompts/system_info.py +0 -0
  81. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/queue_budget.py +0 -0
  82. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/retrieval.py +0 -0
  83. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/summaries.py +0 -0
  84. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/tokens.py +0 -0
  85. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/tool_search.py +0 -0
  86. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/tooling.py +0 -0
  87. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/__init__.py +0 -0
  88. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/anthropic_transport.py +0 -0
  89. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/openai_transport.py +0 -0
  90. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/ai/transports/replay.py +0 -0
  91. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/__init__.py +0 -0
  92. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_context.py +0 -0
  93. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_helpers.py +0 -0
  94. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_naga_state.py +0 -0
  95. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_openapi.py +0 -0
  96. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/_probes.py +0 -0
  97. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/app.py +0 -0
  98. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/naga_store.py +0 -0
  99. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/__init__.py +0 -0
  100. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/chat.py +0 -0
  101. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/cognitive.py +0 -0
  102. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/commands.py +0 -0
  103. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/health.py +0 -0
  104. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/memes.py +0 -0
  105. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/memory.py +0 -0
  106. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/__init__.py +0 -0
  107. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/auth.py +0 -0
  108. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/bind.py +0 -0
  109. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/send.py +0 -0
  110. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/naga/unbind.py +0 -0
  111. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/schedules.py +0 -0
  112. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/system.py +0 -0
  113. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/routes/tools.py +0 -0
  114. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/api/webchat_store.py +0 -0
  115. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/__init__.py +0 -0
  116. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/client.py +0 -0
  117. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/downloader.py +0 -0
  118. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/models.py +0 -0
  119. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/parser.py +0 -0
  120. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/arxiv/sender.py +0 -0
  121. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/__init__.py +0 -0
  122. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/forward_snapshot.py +0 -0
  123. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/models.py +0 -0
  124. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/registry.py +0 -0
  125. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/render.py +0 -0
  126. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/attachments/segments.py +0 -0
  127. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/__init__.py +0 -0
  128. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/api_client.py +0 -0
  129. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/danmaku.py +0 -0
  130. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/download_core.py +0 -0
  131. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/downloader.py +0 -0
  132. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/errors.py +0 -0
  133. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/models.py +0 -0
  134. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/parser.py +0 -0
  135. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/sender.py +0 -0
  136. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/wbi.py +0 -0
  137. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/bilibili/wbi_request.py +0 -0
  138. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/changelog.py +0 -0
  139. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/__init__.py +0 -0
  140. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/chroma_scheduler.py +0 -0
  141. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/__init__.py +0 -0
  142. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/helpers.py +0 -0
  143. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/tools.py +0 -0
  144. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/historian/worker.py +0 -0
  145. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/job_queue.py +0 -0
  146. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/profile_storage.py +0 -0
  147. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/service/__init__.py +0 -0
  148. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/service/helpers.py +0 -0
  149. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/service/service.py +0 -0
  150. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/vector_store.py +0 -0
  151. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/cognitive/vector_store_compat.py +0 -0
  152. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/__init__.py +0 -0
  153. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/admin.py +0 -0
  154. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/api_modes.py +0 -0
  155. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/build_config.py +0 -0
  156. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/coercers.py +0 -0
  157. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/domain_parsers.py +0 -0
  158. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/__init__.py +0 -0
  159. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/access.py +0 -0
  160. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/core.py +0 -0
  161. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/domains.py +0 -0
  162. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/finalize.py +0 -0
  163. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/history_skills.py +0 -0
  164. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/integrations.py +0 -0
  165. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/knowledge.py +0 -0
  166. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/logging_tools.py +0 -0
  167. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/load_sections/models.py +0 -0
  168. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/loader.py +0 -0
  169. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/manager.py +0 -0
  170. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/model_parsers.py +0 -0
  171. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/models.py +0 -0
  172. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/naga_policy.py +0 -0
  173. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/__init__.py +0 -0
  174. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/agent.py +0 -0
  175. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/chat.py +0 -0
  176. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/embedding.py +0 -0
  177. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/grok.py +0 -0
  178. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/helpers.py +0 -0
  179. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/historian.py +0 -0
  180. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/image.py +0 -0
  181. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/naga.py +0 -0
  182. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/pool.py +0 -0
  183. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/security.py +0 -0
  184. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/summary.py +0 -0
  185. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/parsers/vision.py +0 -0
  186. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/resolvers.py +0 -0
  187. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/search.py +0 -0
  188. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/toml_io.py +0 -0
  189. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/config/webui_settings.py +0 -0
  190. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/context.py +0 -0
  191. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/context_resource_registry.py +0 -0
  192. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/__init__.py +0 -0
  193. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/client.py +0 -0
  194. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/downloader.py +0 -0
  195. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/models.py +0 -0
  196. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/parser.py +0 -0
  197. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/douyin/sender.py +0 -0
  198. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/end_summary_storage.py +0 -0
  199. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/faq.py +0 -0
  200. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/__init__.py +0 -0
  201. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/client.py +0 -0
  202. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/models.py +0 -0
  203. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/parser.py +0 -0
  204. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/github/sender.py +0 -0
  205. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/__init__.py +0 -0
  206. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/auto_extract.py +0 -0
  207. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/message_flow.py +0 -0
  208. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/poke.py +0 -0
  209. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/handlers/repeat.py +0 -0
  210. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/injection_response_agent.py +0 -0
  211. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/__init__.py +0 -0
  212. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/chunker.py +0 -0
  213. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/embedder.py +0 -0
  214. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/manager.py +0 -0
  215. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/reranker.py +0 -0
  216. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/runtime.py +0 -0
  217. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/knowledge/store.py +0 -0
  218. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/main.py +0 -0
  219. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/mcp/__init__.py +0 -0
  220. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/mcp/registry.py +0 -0
  221. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/__init__.py +0 -0
  222. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/_image_utils.py +0 -0
  223. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/ingest.py +0 -0
  224. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/models.py +0 -0
  225. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/search.py +0 -0
  226. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/service.py +0 -0
  227. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/store.py +0 -0
  228. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/vector_store.py +0 -0
  229. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memes/worker.py +0 -0
  230. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/memory.py +0 -0
  231. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/onebot/__init__.py +0 -0
  232. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/onebot/client.py +0 -0
  233. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/onebot/message.py +0 -0
  234. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/py.typed +0 -0
  235. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/rate_limit.py +0 -0
  236. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/scheduled_task_storage.py +0 -0
  237. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/__init__.py +0 -0
  238. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/command.py +0 -0
  239. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/__init__.py +0 -0
  240. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/bugfix.py +0 -0
  241. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/context.py +0 -0
  242. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/registry.py +0 -0
  243. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/commands/stats.py +0 -0
  244. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/__init__.py +0 -0
  245. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/background.py +0 -0
  246. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/batching.py +0 -0
  247. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/group.py +0 -0
  248. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/message_ids.py +0 -0
  249. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/coordinator/private.py +0 -0
  250. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_batcher/__init__.py +0 -0
  251. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_batcher/scheduler.py +0 -0
  252. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_batcher/state.py +0 -0
  253. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/message_summary_fetch.py +0 -0
  254. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/model_pool.py +0 -0
  255. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/queue_manager.py +0 -0
  256. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/services/security.py +0 -0
  257. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/README.md +0 -0
  258. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/__init__.py +0 -0
  259. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/README.md +0 -0
  260. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/__init__.py +0 -0
  261. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
  262. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
  263. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
  264. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/handler.py +0 -0
  265. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
  266. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
  267. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
  268. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
  269. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
  270. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
  271. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
  272. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
  273. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
  274. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
  275. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
  276. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
  277. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
  278. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
  279. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
  280. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
  281. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
  282. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
  283. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
  284. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/config.json +0 -0
  285. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/handler.py +0 -0
  286. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
  287. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
  288. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
  289. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
  290. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
  291. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
  292. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
  293. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
  294. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
  295. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/intro.md +0 -0
  296. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/prompt.md +0 -0
  297. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
  298. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -0
  299. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -0
  300. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
  301. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
  302. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +0 -0
  303. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -0
  304. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
  305. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
  306. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
  307. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +0 -0
  308. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
  309. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
  310. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/config.json +0 -0
  311. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/handler.py +0 -0
  312. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
  313. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +0 -0
  314. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
  315. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
  316. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
  317. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
  318. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
  319. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
  320. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
  321. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/describe_pdf_page/config.json +0 -0
  322. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/describe_pdf_page/handler.py +0 -0
  323. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +0 -0
  324. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +0 -0
  325. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +0 -0
  326. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +0 -0
  327. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
  328. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
  329. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
  330. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
  331. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
  332. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
  333. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
  334. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
  335. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
  336. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
  337. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +0 -0
  338. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +0 -0
  339. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/README.md +0 -0
  340. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/config.json +0 -0
  341. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
  342. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
  343. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
  344. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
  345. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/config.json +0 -0
  346. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/handler.py +0 -0
  347. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
  348. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
  349. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
  350. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
  351. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
  352. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
  353. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
  354. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
  355. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
  356. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
  357. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
  358. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
  359. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
  360. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
  361. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
  362. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
  363. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
  364. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
  365. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
  366. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
  367. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
  368. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
  369. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
  370. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
  371. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
  372. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
  373. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
  374. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
  375. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
  376. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
  377. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/intro_generator.py +0 -0
  378. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/intro_utils.py +0 -0
  379. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
  380. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
  381. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
  382. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
  383. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
  384. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
  385. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
  386. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
  387. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
  388. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +0 -0
  389. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +0 -0
  390. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +0 -0
  391. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +0 -0
  392. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +0 -0
  393. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +0 -0
  394. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +0 -0
  395. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +0 -0
  396. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/__init__.py +0 -0
  397. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/context.py +0 -0
  398. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/loop.py +0 -0
  399. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/tools.py +0 -0
  400. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/runner/webchat_utils.py +0 -0
  401. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/__init__.py +0 -0
  402. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/config.json +0 -0
  403. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/handler.py +0 -0
  404. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/intro.md +0 -0
  405. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/prompt.md +0 -0
  406. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/tools/__init__.py +0 -0
  407. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/config.json +0 -0
  408. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/handler.py +0 -0
  409. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/README.md +0 -0
  410. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/__init__.py +0 -0
  411. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/config.json +0 -0
  412. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/handler.py +0 -0
  413. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/intro.md +0 -0
  414. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/prompt.md +0 -0
  415. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/__init__.py +0 -0
  416. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/_shared.py +0 -0
  417. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/glob/config.json +0 -0
  418. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/glob/handler.py +0 -0
  419. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/list_directory/config.json +0 -0
  420. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/list_directory/handler.py +0 -0
  421. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/read_file/config.json +0 -0
  422. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/read_file/handler.py +0 -0
  423. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/search_file_content/config.json +0 -0
  424. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/undefined_self_code_agent/tools/search_file_content/handler.py +0 -0
  425. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/README.md +0 -0
  426. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/callable.json +0 -0
  427. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/config.json +0 -0
  428. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
  429. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
  430. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
  431. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
  432. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
  433. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
  434. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
  435. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/firecrawl_search/config.json +0 -0
  436. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/firecrawl_search/handler.py +0 -0
  437. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/grok_search/config.json +0 -0
  438. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/grok_search/handler.py +0 -0
  439. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
  440. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
  441. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
  442. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
  443. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/README.md +0 -0
  444. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/admin/README.md +0 -0
  445. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/admin/config.json +0 -0
  446. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/admin/handler.py +0 -0
  447. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/bugfix/README.md +0 -0
  448. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/bugfix/config.json +0 -0
  449. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
  450. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/changelog/README.md +0 -0
  451. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/changelog/config.json +0 -0
  452. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/changelog/handler.py +0 -0
  453. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/copyright/README.md +0 -0
  454. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/copyright/config.json +0 -0
  455. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/copyright/handler.py +0 -0
  456. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/faq/README.md +0 -0
  457. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/faq/config.json +0 -0
  458. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/faq/handler.py +0 -0
  459. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/feedback/README.md +0 -0
  460. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/feedback/config.json +0 -0
  461. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/feedback/handler.py +0 -0
  462. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/help/README.md +0 -0
  463. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/help/config.json +0 -0
  464. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/help/handler.py +0 -0
  465. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/README.md +0 -0
  466. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/config.json +0 -0
  467. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/handler.py +0 -0
  468. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/naga/policy.py +0 -0
  469. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/profile/README.md +0 -0
  470. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/profile/config.json +0 -0
  471. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/profile/handler.py +0 -0
  472. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/stats/README.md +0 -0
  473. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/stats/config.json +0 -0
  474. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/stats/handler.py +0 -0
  475. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/summary/config.json +0 -0
  476. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/summary/handler.py +0 -0
  477. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/version/config.json +0 -0
  478. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/commands/version/handler.py +0 -0
  479. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/http_client.py +0 -0
  480. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/http_config.py +0 -0
  481. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/__init__.py +0 -0
  482. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/arxiv/config.json +0 -0
  483. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/arxiv/handler.py +0 -0
  484. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/bilibili/config.json +0 -0
  485. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/bilibili/handler.py +0 -0
  486. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/context.py +0 -0
  487. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/douyin/config.json +0 -0
  488. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/douyin/handler.py +0 -0
  489. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/github/config.json +0 -0
  490. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/github/handler.py +0 -0
  491. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/models.py +0 -0
  492. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/pipelines/registry.py +0 -0
  493. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/registry.py +0 -0
  494. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/README.md +0 -0
  495. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/__init__.py +0 -0
  496. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/README.md +0 -0
  497. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/callable.json +0 -0
  498. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/config.json +0 -0
  499. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/arxiv_paper/handler.py +0 -0
  500. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
  501. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/callable.json +0 -0
  502. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
  503. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
  504. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/calculator/callable.json +0 -0
  505. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/calculator/config.json +0 -0
  506. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/calculator/handler.py +0 -0
  507. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/changelog_query/README.md +0 -0
  508. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/changelog_query/config.json +0 -0
  509. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/changelog_query/handler.py +0 -0
  510. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/README.md +0 -0
  511. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/callable.json +0 -0
  512. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/config.json +0 -0
  513. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/douyin_video/handler.py +0 -0
  514. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/end/README.md +0 -0
  515. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/end/config.json +0 -0
  516. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/end/handler.py +0 -0
  517. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/fetch_image_uid/config.json +0 -0
  518. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/fetch_image_uid/handler.py +0 -0
  519. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
  520. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/callable.json +0 -0
  521. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
  522. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
  523. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_picture/README.md +0 -0
  524. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_picture/config.json +0 -0
  525. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_picture/handler.py +0 -0
  526. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
  527. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
  528. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
  529. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
  530. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
  531. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
  532. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
  533. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
  534. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
  535. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
  536. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
  537. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
  538. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/qq_like/README.md +0 -0
  539. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/qq_like/config.json +0 -0
  540. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
  541. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/task_progress/config.json +0 -0
  542. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
  543. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/__init__.py +0 -0
  544. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_uid_by_url/config.json +0 -0
  545. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_uid_by_url/handler.py +0 -0
  546. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_url_by_uid/config.json +0 -0
  547. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/attachments/get_url_by_uid/handler.py +0 -0
  548. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
  549. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
  550. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
  551. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
  552. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
  553. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
  554. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
  555. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
  556. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
  557. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
  558. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/README.md +0 -0
  559. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
  560. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
  561. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_avatar/config.json +0 -0
  562. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_avatar/handler.py +0 -0
  563. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
  564. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
  565. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
  566. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
  567. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
  568. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
  569. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
  570. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
  571. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
  572. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
  573. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/README.md +0 -0
  574. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/activity_trend/config.json +0 -0
  575. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/activity_trend/handler.py +0 -0
  576. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/filter_members/config.json +0 -0
  577. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/filter_members/handler.py +0 -0
  578. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/inactive_risk/config.json +0 -0
  579. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/inactive_risk/handler.py +0 -0
  580. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/join_statistics/config.json +0 -0
  581. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/join_statistics/handler.py +0 -0
  582. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/level_distribution/config.json +0 -0
  583. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/level_distribution/handler.py +0 -0
  584. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_activity/config.json +0 -0
  585. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_activity/handler.py +0 -0
  586. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_messages/config.json +0 -0
  587. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_messages/handler.py +0 -0
  588. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_structure/config.json +0 -0
  589. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/member_structure/handler.py +0 -0
  590. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/message_mix/config.json +0 -0
  591. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/message_mix/handler.py +0 -0
  592. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/new_member_activity/config.json +0 -0
  593. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/new_member_activity/handler.py +0 -0
  594. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/rank_members/config.json +0 -0
  595. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/group_analysis/rank_members/handler.py +0 -0
  596. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
  597. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
  598. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/README.md +0 -0
  599. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/search_memes/config.json +0 -0
  600. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/search_memes/handler.py +0 -0
  601. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/config.json +0 -0
  602. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/handler.py +0 -0
  603. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/README.md +0 -0
  604. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
  605. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
  606. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
  607. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
  608. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
  609. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
  610. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
  611. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
  612. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/README.md +0 -0
  613. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/context_utils.py +0 -0
  614. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
  615. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
  616. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
  617. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +0 -0
  618. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
  619. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +0 -0
  620. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
  621. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
  622. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
  623. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
  624. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
  625. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
  626. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
  627. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
  628. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
  629. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_message/handler.py +0 -0
  630. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
  631. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
  632. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
  633. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +0 -0
  634. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
  635. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
  636. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
  637. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
  638. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
  639. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
  640. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/README.md +0 -0
  641. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
  642. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
  643. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
  644. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
  645. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
  646. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
  647. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/README.md +0 -0
  648. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/config.json +0 -0
  649. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/handler.py +0 -0
  650. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/config.json +0 -0
  651. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/handler.py +0 -0
  652. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/config.json +0 -0
  653. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/handler.py +0 -0
  654. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/config.json +0 -0
  655. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/handler.py +0 -0
  656. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/token_usage_storage.py +0 -0
  657. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/__init__.py +0 -0
  658. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/cache.py +0 -0
  659. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/coerce.py +0 -0
  660. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/common.py +0 -0
  661. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/cors.py +0 -0
  662. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/fake_at.py +0 -0
  663. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/file_lock.py +0 -0
  664. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/group_metrics.py +0 -0
  665. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/history.py +0 -0
  666. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/http_download.py +0 -0
  667. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/logging.py +0 -0
  668. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/member_utils.py +0 -0
  669. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/message_targets.py +0 -0
  670. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/message_turn.py +0 -0
  671. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/message_utils.py +0 -0
  672. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/paths.py +0 -0
  673. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/qq_emoji.py +0 -0
  674. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/queue_intervals.py +0 -0
  675. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/recent_messages.py +0 -0
  676. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/request_params.py +0 -0
  677. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/resources.py +0 -0
  678. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/scheduler.py +0 -0
  679. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/self_update.py +0 -0
  680. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/sender.py +0 -0
  681. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/sender_helpers.py +0 -0
  682. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/time_utils.py +0 -0
  683. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/tool_calls.py +0 -0
  684. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/utils/xml.py +0 -0
  685. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/__init__.py +0 -0
  686. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/__main__.py +0 -0
  687. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/app.py +0 -0
  688. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/core.py +0 -0
  689. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/__init__.py +0 -0
  690. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_auth.py +0 -0
  691. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_bot.py +0 -0
  692. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_config.py +0 -0
  693. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_index.py +0 -0
  694. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_logs.py +0 -0
  695. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_memes.py +0 -0
  696. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_runtime.py +0 -0
  697. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_shared.py +0 -0
  698. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/routes/_system.py +0 -0
  699. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
  700. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/app.css +0 -0
  701. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/base.css +0 -0
  702. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/components.css +0 -0
  703. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/highlight-github.min.css +0 -0
  704. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/landing.css +0 -0
  705. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/responsive.css +0 -0
  706. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/style.css +0 -0
  707. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/css/variables.css +0 -0
  708. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/favicon.svg +0 -0
  709. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/api.js +0 -0
  710. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/auth.js +0 -0
  711. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/bot.js +0 -0
  712. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/config-form.js +0 -0
  713. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/i18n.js +0 -0
  714. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/log-view.js +0 -0
  715. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/logs.js +0 -0
  716. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/main.js +0 -0
  717. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/memes.js +0 -0
  718. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/runtime.js +0 -0
  719. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/schedules.js +0 -0
  720. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/state.js +0 -0
  721. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/ui.js +0 -0
  722. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/vendor/highlight.min.js +0 -0
  723. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/vendor/highlightjs.LICENSE +0 -0
  724. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
  725. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/templates/index.html +0 -0
  726. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/__init__.py +0 -0
  727. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/comment.py +0 -0
  728. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/config_io.py +0 -0
  729. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/config_sync.py +0 -0
  730. {undefined_bot-3.8.0 → undefined_bot-3.8.1}/src/Undefined/webui/utils/toml_render.py +0 -0
@@ -1,3 +1,15 @@
1
+ ## v3.8.1 可配置长图渲染与浏览器运行时回退
2
+
3
+ 本版本为 AI 渲染工具新增适合长内容发送的长图布局,可精确控制成图宽度与内边距;同时完善 Playwright 浏览器选择,在缺少内置浏览器时可使用已配置或系统安装的 Chrome / Chromium 完成渲染。
4
+
5
+ - 扩展 `render.render_html` 与 `render.render_markdown`。新增 `layout=long`、`width` 和 `padding` 参数;长图默认宽度为 900 像素、内边距为 28 像素,并可通过 `[network]` 配置统一调整。默认布局保持原有行为,避免影响现有调用。
6
+ - 优化长图版式与输出尺寸。长图模式移除页面外部留白和 Markdown 内容最大宽度限制,使正文填满指定画布;截图使用 CSS 像素缩放,最终图片宽度与请求的 `width` 一致,便于聊天平台直接预览和发送。
7
+ - 完善渲染浏览器选择。新增 `render_browser_executable_path` 配置;Playwright 内置浏览器缺失时自动探测系统 Chrome / Chromium,显式配置路径无效或其他启动错误仍会直接报告,避免掩盖真实故障。
8
+ - 收紧 HTML 渲染网络边界。BrowserContext 强制离线、禁用 Service Worker,并在上下文级终止全部网络请求,不再依赖可被 DNS 重绑定绕过的主机名预检;内联 CSS、脚本及 `data:` / `blob:` 资源仍可使用。LaTeX 同步收敛为本地 mathtext 渲染,复杂且不受支持的 TeX 不再等待外部 MathJax CDN。
9
+ - 加固渲染缓存与配置集成。缓存键纳入截图缩放和样式参数,避免不同布局错误复用缓存;同步环境变量、热更新边界、配置模板、部署与使用文档,并补充长图参数、缓存隔离、浏览器回退和实际渲染回归测试。
10
+
11
+ ---
12
+
1
13
  ## v3.8.0 多协议 LLM SDK、推理回放与 WebUI 可用性
2
14
 
3
15
  本版本重构生成模型请求层,统一 OpenAI Chat Completions、OpenAI Responses 与 Anthropic Messages 的 SDK 调用和配置语义,补全多轮工具调用中的原生推理载体回放,并修复 WebUI 配置编辑器与多行日志查询的可用性问题。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Undefined-bot
3
- Version: 3.8.0
3
+ Version: 3.8.1
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
@@ -1095,12 +1095,21 @@ request_retries = 0
1095
1095
  # zh: HTML/Markdown 图片渲染配置。
1096
1096
  # en: HTML/Markdown image rendering settings.
1097
1097
  [render]
1098
- # zh: 是否让 crawl4ai、HTML/Markdown/LaTeX 渲染中的远程资源使用 [proxy] 代理地址。默认关闭。
1099
- # en: Whether crawl4ai and remote resources in HTML/Markdown/LaTeX rendering use proxy addresses from [proxy]. Disabled by default.
1098
+ # zh: 是否让 crawl4ai 等网页抓取链路使用 [proxy] 代理地址。HTML/Markdown 浏览器渲染始终离线。默认关闭。
1099
+ # en: Whether crawl4ai and other web crawling paths use proxy addresses from [proxy]. HTML/Markdown browser rendering is always offline. Disabled by default.
1100
1100
  use_proxy = false
1101
1101
  # zh: 渲染浏览器最大同时开启数量。0 表示自动:Linux 默认 1,其它平台默认 2。
1102
1102
  # en: Max concurrent render browser pages. 0 = auto: Linux defaults to 1, other platforms default to 2.
1103
1103
  browser_max_concurrency = 0
1104
+ # zh: 可选的 Chrome/Chromium 可执行文件路径。留空时优先使用 Playwright 自带浏览器,缺失时再自动查找系统浏览器。
1105
+ # en: Optional Chrome/Chromium executable path. Empty prefers Playwright's bundled browser, then discovers an installed system browser if missing.
1106
+ browser_executable_path = ""
1107
+ # zh: render_html/render_markdown 的 long 布局未显式传 width 时使用的最终图片宽度(像素,320-2048)。
1108
+ # en: Final image width used by the long layout when width is omitted (pixels, 320-2048).
1109
+ long_image_default_width = 900
1110
+ # zh: long 布局未显式传 padding 时使用的内边距(像素,0-160)。
1111
+ # en: Content padding used by the long layout when padding is omitted (pixels, 0-160).
1112
+ long_image_default_padding = 28
1104
1113
 
1105
1114
  # zh: HTML 渲染结果缓存:基于 HTML 内容 hash 复用同一张图片,避免重复渲染。
1106
1115
  # en: HTML render result cache: reuse rendered images by content hash to skip re-rendering.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Undefined-bot"
3
- version = "3.8.0"
3
+ version = "3.8.1"
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 = [
@@ -24,7 +24,7 @@ if TYPE_CHECKING:
24
24
  from .skills.registry import BaseRegistry as BaseRegistry
25
25
  from .skills.tools import ToolRegistry as ToolRegistry
26
26
 
27
- __version__: str = "3.8.0"
27
+ __version__: str = "3.8.1"
28
28
 
29
29
  # symbol -> (module_path, attribute_name);首次访问时才 importlib 加载
30
30
  _LAZY_IMPORTS: dict[str, tuple[str, str]] = {
@@ -123,7 +123,10 @@ class Config:
123
123
  network_request_timeout: float
124
124
  network_request_retries: int
125
125
  render_browser_max_concurrency: int
126
+ render_browser_executable_path: str
126
127
  render_use_proxy: bool
128
+ render_long_image_default_width: int
129
+ render_long_image_default_padding: int
127
130
  api_xxapi_base_url: str
128
131
  api_xingzhige_base_url: str
129
132
  api_jkyai_base_url: str
@@ -116,6 +116,9 @@ ENV_REGISTRY: Final[dict[tuple[str, ...], str]] = {
116
116
  ("naga", "use_proxy"): "NAGA_USE_PROXY",
117
117
  ("onebot", "token"): "ONEBOT_TOKEN",
118
118
  ("onebot", "ws_url"): "ONEBOT_WS_URL",
119
+ ("render", "browser_executable_path"): "RENDER_BROWSER_EXECUTABLE_PATH",
120
+ ("render", "long_image_default_padding"): "RENDER_LONG_IMAGE_DEFAULT_PADDING",
121
+ ("render", "long_image_default_width"): "RENDER_LONG_IMAGE_DEFAULT_WIDTH",
119
122
  ("render", "use_proxy"): "RENDER_USE_PROXY",
120
123
  ("search", "use_proxy"): "SEARCH_USE_PROXY",
121
124
  ("search", "firecrawl_search_enabled"): "FIRECRAWL_SEARCH_ENABLED",
@@ -32,6 +32,7 @@ _RESTART_REQUIRED_KEYS: set[str] = {
32
32
  "webui_port",
33
33
  "webui_password",
34
34
  "webui_autostart_bot",
35
+ "render_browser_executable_path",
35
36
  "api",
36
37
  "api.enabled",
37
38
  "api.host",
@@ -79,6 +80,8 @@ _RUNTIME_AI_MODEL_CONFIG_PREFIXES: tuple[str, ...] = (
79
80
  "tool_search_enabled",
80
81
  "tool_search_always_loaded",
81
82
  "tool_search_max_results",
83
+ "render_long_image_default_width",
84
+ "render_long_image_default_padding",
82
85
  )
83
86
 
84
87
  _AGENT_INTRO_KEYS: set[str] = {
@@ -23,6 +23,10 @@ from ..search import normalize_search_priority
23
23
 
24
24
  logger = logging.getLogger(__name__)
25
25
 
26
+ _LONG_IMAGE_MIN_WIDTH: int = 320
27
+ _LONG_IMAGE_MAX_WIDTH: int = 2048
28
+ _LONG_IMAGE_MAX_PADDING: int = 160
29
+
26
30
 
27
31
  def load_network(
28
32
  data: dict[str, Any], *, config_path: Optional[Path] = None
@@ -127,9 +131,46 @@ def load_network(
127
131
  0,
128
132
  ),
129
133
  )
134
+ render_browser_executable_path = _coerce_str(
135
+ _get_value(
136
+ data,
137
+ ("render", "browser_executable_path"),
138
+ "RENDER_BROWSER_EXECUTABLE_PATH",
139
+ ),
140
+ "",
141
+ )
130
142
  render_use_proxy = _coerce_bool(
131
143
  _get_value(data, ("render", "use_proxy"), "RENDER_USE_PROXY"), False
132
144
  )
145
+ render_long_image_default_width = min(
146
+ _LONG_IMAGE_MAX_WIDTH,
147
+ max(
148
+ _LONG_IMAGE_MIN_WIDTH,
149
+ _coerce_int(
150
+ _get_value(
151
+ data,
152
+ ("render", "long_image_default_width"),
153
+ "RENDER_LONG_IMAGE_DEFAULT_WIDTH",
154
+ ),
155
+ 900,
156
+ ),
157
+ ),
158
+ )
159
+ render_long_image_default_padding = min(
160
+ _LONG_IMAGE_MAX_PADDING,
161
+ max(
162
+ 0,
163
+ _coerce_int(
164
+ _get_value(
165
+ data,
166
+ ("render", "long_image_default_padding"),
167
+ "RENDER_LONG_IMAGE_DEFAULT_PADDING",
168
+ ),
169
+ 28,
170
+ ),
171
+ ),
172
+ (render_long_image_default_width - 1) // 2,
173
+ )
133
174
 
134
175
  api_xxapi_base_url = _normalize_base_url(
135
176
  _coerce_str(
@@ -194,7 +235,10 @@ def load_network(
194
235
  "network_request_timeout": network_request_timeout,
195
236
  "network_request_retries": network_request_retries,
196
237
  "render_browser_max_concurrency": render_browser_max_concurrency,
238
+ "render_browser_executable_path": render_browser_executable_path,
197
239
  "render_use_proxy": render_use_proxy,
240
+ "render_long_image_default_width": render_long_image_default_width,
241
+ "render_long_image_default_padding": render_long_image_default_padding,
198
242
  "api_xxapi_base_url": api_xxapi_base_url,
199
243
  "api_xingzhige_base_url": api_xingzhige_base_url,
200
244
  "api_jkyai_base_url": api_jkyai_base_url,
@@ -5,13 +5,14 @@ import logging
5
5
  import sys
6
6
  from collections.abc import Awaitable, Callable
7
7
  from pathlib import Path
8
- from playwright.async_api import async_playwright, Browser, Page, Playwright
8
+ from typing import Any, Literal, TypeVar
9
9
 
10
10
  import markdown
11
+ from playwright.async_api import Browser, Page, Playwright, Route, async_playwright
11
12
 
12
- from typing import Any, TypeVar
13
13
 
14
14
  from Undefined.config import get_config
15
+ from Undefined.utils.io import find_executable, is_file, resolve_path
15
16
  from Undefined.utils.render_cache import compute_render_cache_key, get_render_cache
16
17
 
17
18
  logger = logging.getLogger(__name__)
@@ -59,6 +60,13 @@ _render_active_count = 0
59
60
 
60
61
  # 默认并发限制:Linux 默认 1,其它平台默认 2
61
62
  _DEFAULT_MAX_CONCURRENT = 1 if sys.platform == "linux" else 2
63
+ _SYSTEM_CHROMIUM_COMMANDS = (
64
+ "google-chrome-stable",
65
+ "google-chrome",
66
+ "chromium",
67
+ "chromium-browser",
68
+ "microsoft-edge-stable",
69
+ )
62
70
  _RenderResult = TypeVar("_RenderResult")
63
71
 
64
72
 
@@ -89,6 +97,40 @@ def _resolve_render_browser_max_concurrency() -> int:
89
97
  return configured_limit
90
98
 
91
99
 
100
+ async def _resolve_configured_browser_executable() -> str | None:
101
+ """读取显式配置的浏览器路径;配置错误时不静默回退。"""
102
+ try:
103
+ runtime_config = get_config(strict=False)
104
+ except Exception:
105
+ logger.debug("[渲染] 读取浏览器路径配置失败", exc_info=True)
106
+ return None
107
+
108
+ configured = str(
109
+ getattr(runtime_config, "render_browser_executable_path", "") or ""
110
+ ).strip()
111
+ if not configured:
112
+ return None
113
+
114
+ path = await resolve_path(configured)
115
+ if not await is_file(path):
116
+ raise FileNotFoundError(f"配置的渲染浏览器不存在: {path}")
117
+ return str(path)
118
+
119
+
120
+ async def _find_system_browser_executable() -> str | None:
121
+ """在 Playwright 自带 Chromium 缺失时查找已安装的系统浏览器。"""
122
+ for command in _SYSTEM_CHROMIUM_COMMANDS:
123
+ executable = await find_executable(command)
124
+ if executable:
125
+ return executable
126
+ return None
127
+
128
+
129
+ def _is_missing_playwright_browser(error: BaseException) -> bool:
130
+ text = str(error)
131
+ return "Executable doesn't exist" in text or "playwright install" in text
132
+
133
+
92
134
  async def _get_browser() -> Browser:
93
135
  """获取或创建浏览器实例(懒加载单例)"""
94
136
  global _playwright, _browser
@@ -100,9 +142,32 @@ async def _get_browser() -> Browser:
100
142
  if _browser is not None:
101
143
  return _browser
102
144
 
145
+ configured_executable = await _resolve_configured_browser_executable()
103
146
  playwright = await async_playwright().start()
104
147
  try:
105
- browser = await playwright.chromium.launch(headless=True)
148
+ if configured_executable is not None:
149
+ browser = await playwright.chromium.launch(
150
+ headless=True,
151
+ executable_path=configured_executable,
152
+ )
153
+ else:
154
+ try:
155
+ browser = await playwright.chromium.launch(headless=True)
156
+ except Exception as exc:
157
+ system_executable = await _find_system_browser_executable()
158
+ if (
159
+ not _is_missing_playwright_browser(exc)
160
+ or system_executable is None
161
+ ):
162
+ raise
163
+ logger.warning(
164
+ "[render] Playwright Chromium 未安装,回退到系统浏览器: %s",
165
+ system_executable,
166
+ )
167
+ browser = await playwright.chromium.launch(
168
+ headless=True,
169
+ executable_path=system_executable,
170
+ )
106
171
  except Exception:
107
172
  await playwright.stop()
108
173
  raise
@@ -206,6 +271,8 @@ async def render_html_to_image(
206
271
  *,
207
272
  viewport_width: int = 1280,
208
273
  screenshot_selector: str | None = None,
274
+ screenshot_scale: Literal["css", "device"] = "device",
275
+ screenshot_style: str | None = None,
209
276
  timeout_ms: int = 60000,
210
277
  proxy: str | None = None,
211
278
  ) -> None:
@@ -217,12 +284,19 @@ async def render_html_to_image(
217
284
  output_path: 输出图片路径 (例如 'result.png')
218
285
  viewport_width: 视口宽度(像素),默认 1280
219
286
  screenshot_selector: 仅截图匹配的元素,默认截整页
287
+ screenshot_scale: 输出像素尺度,device 按 DPR 输出,css 按 CSS 像素输出
288
+ screenshot_style: 仅在截图期间注入的 CSS 样式
220
289
  timeout_ms: 截图超时时间(毫秒),默认 60000
221
- proxy: 可选浏览器代理地址
290
+ proxy: 保留用于调用兼容和缓存隔离;离线上下文不会发出网络请求
222
291
  """
223
292
  cache = await get_render_cache()
224
293
  cache_key = compute_render_cache_key(
225
- html_content, viewport_width, screenshot_selector, proxy
294
+ html_content,
295
+ viewport_width,
296
+ screenshot_selector,
297
+ proxy,
298
+ screenshot_scale,
299
+ screenshot_style,
226
300
  )
227
301
 
228
302
  if await cache.copy_to(cache_key, output_path):
@@ -234,12 +308,16 @@ async def render_html_to_image(
234
308
  if screenshot_selector:
235
309
  await page.locator(screenshot_selector).first.screenshot(
236
310
  path=output_path,
311
+ scale=screenshot_scale,
312
+ style=screenshot_style,
237
313
  timeout=timeout_ms,
238
314
  )
239
315
  else:
240
316
  await page.screenshot(
241
317
  path=output_path,
242
318
  full_page=True,
319
+ scale=screenshot_scale,
320
+ style=screenshot_style,
243
321
  timeout=timeout_ms,
244
322
  )
245
323
 
@@ -264,7 +342,11 @@ async def render_html_with_page(
264
342
  timeout_ms: int = 60000,
265
343
  proxy: str | None = None,
266
344
  ) -> _RenderResult:
267
- """在共享浏览器实例中打开 HTML 页面并交给调用方渲染。"""
345
+ """在共享浏览器实例中打开 HTML 页面并交给调用方渲染。
346
+
347
+ ``proxy`` 在移出 ``context_kwargs`` 后仍刻意保留,以兼容现有调用;上层
348
+ ``render_html_to_image`` 继续用它隔离缓存键,离线浏览器上下文不会使用它。
349
+ """
268
350
  browser = await _get_browser()
269
351
  semaphore = await _get_semaphore()
270
352
 
@@ -276,11 +358,12 @@ async def render_html_with_page(
276
358
  try:
277
359
  context_kwargs: dict[str, Any] = {
278
360
  "device_scale_factor": 2,
361
+ "offline": True,
362
+ "service_workers": "block",
279
363
  "viewport": {"width": viewport_width, "height": 800},
280
364
  }
281
- if proxy:
282
- context_kwargs["proxy"] = {"server": proxy}
283
365
  context = await browser.new_context(**context_kwargs)
366
+ await context.route("**/*", _abort_render_network_request)
284
367
  page = await context.new_page()
285
368
  page.set_default_timeout(timeout_ms)
286
369
  await page.set_content(html_content)
@@ -291,3 +374,8 @@ async def render_html_with_page(
291
374
  await context.close()
292
375
  finally:
293
376
  _render_active_count = max(0, _render_active_count - 1)
377
+
378
+
379
+ async def _abort_render_network_request(route: Route) -> None:
380
+ """终止渲染上下文中的所有网络请求,避免 DNS 重绑定绕过。"""
381
+ await route.abort()
@@ -135,9 +135,9 @@ async def execute(args: dict[str, Any], context: dict[str, Any]) -> str:
135
135
 
136
136
  ### Render(渲染)
137
137
 
138
- - `render.render_html`: 将 HTML 渲染为图片
138
+ - `render.render_html`: 将 HTML 渲染为普通图片或指定宽度的单张长图
139
139
  - `render.render_latex`: 将 LaTeX 渲染为图片;常见公式本地渲染,复杂内容回退 MathJax + Playwright
140
- - `render.render_markdown`: 将 Markdown 渲染为图片
140
+ - `render.render_markdown`: 将 Markdown 渲染为普通图片或指定宽度的单张长图
141
141
 
142
142
  ### Memes(表情包)
143
143
 
@@ -0,0 +1,14 @@
1
+ # render 工具集
2
+
3
+ 渲染相关工具集合,工具名以 `render.*` 命名。
4
+
5
+ 主要能力:
6
+ - HTML 渲染,支持内联 CSS、脚本和 `data:` / `blob:` 资源;浏览器上下文默认完全离线,不加载外部资源
7
+ - Markdown 渲染
8
+ - LaTeX 渲染
9
+ - HTML/Markdown 可显式传 `layout=long`、`width`、`padding` 输出无两侧外部留白的单张长图
10
+
11
+ `layout=default` 保持原有布局。`layout=long` 时,`width` 是最终图片像素宽度,高度按内容自动延伸;`padding=0` 可用于 HTML 全幅设计。
12
+
13
+ 目录结构:
14
+ - 每个子目录对应一个工具(`config.json` + `handler.py`)
@@ -0,0 +1,171 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from typing import Any, Literal, Mapping
5
+
6
+ RenderContentKind = Literal["html", "markdown"]
7
+ RenderLayoutName = Literal["default", "long"]
8
+
9
+ MIN_LONG_IMAGE_WIDTH = 320
10
+ MAX_LONG_IMAGE_WIDTH = 2048
11
+ MAX_LONG_IMAGE_PADDING = 160
12
+ DEFAULT_LONG_IMAGE_WIDTH = 900
13
+ DEFAULT_LONG_IMAGE_PADDING = 28
14
+
15
+
16
+ @dataclass(frozen=True)
17
+ class RenderLayoutOptions:
18
+ """已校验的渲染布局选项。"""
19
+
20
+ layout: RenderLayoutName
21
+ viewport_width: int | None = None
22
+ screenshot_scale: Literal["css", "device"] = "device"
23
+ screenshot_style: str | None = None
24
+
25
+ def render_kwargs(self) -> dict[str, Any]:
26
+ """仅为长图返回额外参数,保持默认调用完全兼容。"""
27
+ if self.layout == "default":
28
+ return {}
29
+ return {
30
+ "viewport_width": self.viewport_width,
31
+ "screenshot_scale": self.screenshot_scale,
32
+ "screenshot_style": self.screenshot_style,
33
+ }
34
+
35
+
36
+ def _config_int(context: Mapping[str, Any], attribute: str, fallback: int) -> int:
37
+ runtime_config = context.get("runtime_config")
38
+ raw_value = getattr(runtime_config, attribute, fallback)
39
+ if isinstance(raw_value, bool):
40
+ return fallback
41
+ try:
42
+ return int(raw_value)
43
+ except (TypeError, ValueError):
44
+ return fallback
45
+
46
+
47
+ def _parse_explicit_int(
48
+ value: Any,
49
+ *,
50
+ name: str,
51
+ minimum: int,
52
+ maximum: int,
53
+ ) -> tuple[int | None, str | None]:
54
+ if isinstance(value, bool) or not isinstance(value, int):
55
+ return None, f"{name} 必须是整数"
56
+ if value < minimum or value > maximum:
57
+ return None, f"{name} 必须在 {minimum}..{maximum} 之间"
58
+ return value, None
59
+
60
+
61
+ def _long_layout_style(content_kind: RenderContentKind, padding: int) -> str:
62
+ shared = """
63
+ html, body {
64
+ margin: 0 !important;
65
+ width: 100% !important;
66
+ min-width: 0 !important;
67
+ max-width: 100% !important;
68
+ overflow-x: hidden !important;
69
+ }
70
+ img, video, canvas, svg {
71
+ max-width: 100% !important;
72
+ }
73
+ """
74
+ if content_kind == "markdown":
75
+ return (
76
+ shared
77
+ + f"""
78
+ body {{
79
+ padding: 0 !important;
80
+ }}
81
+ .markdown-body {{
82
+ box-sizing: border-box !important;
83
+ width: 100% !important;
84
+ min-width: 0 !important;
85
+ max-width: none !important;
86
+ margin: 0 !important;
87
+ padding: {padding}px !important;
88
+ overflow-wrap: anywhere !important;
89
+ }}
90
+ .markdown-body pre {{
91
+ max-width: 100% !important;
92
+ white-space: pre-wrap !important;
93
+ overflow-wrap: anywhere !important;
94
+ }}
95
+ """
96
+ )
97
+ return (
98
+ shared
99
+ + f"""
100
+ body {{
101
+ box-sizing: border-box !important;
102
+ padding: {padding}px !important;
103
+ }}
104
+ """
105
+ )
106
+
107
+
108
+ def resolve_render_layout(
109
+ args: Mapping[str, Any],
110
+ context: Mapping[str, Any],
111
+ *,
112
+ content_kind: RenderContentKind,
113
+ ) -> tuple[RenderLayoutOptions | None, str | None]:
114
+ """解析并校验工具的 default/long 布局参数。"""
115
+ layout_raw = str(args.get("layout", "default") or "default").strip().lower()
116
+ if layout_raw not in {"default", "long"}:
117
+ return None, f"layout 无效:{layout_raw}。仅支持 default 或 long"
118
+
119
+ has_width = args.get("width") is not None
120
+ has_padding = args.get("padding") is not None
121
+ if layout_raw == "default":
122
+ if has_width or has_padding:
123
+ return None, "width 和 padding 仅支持在 layout=long 时使用"
124
+ return RenderLayoutOptions(layout="default"), None
125
+
126
+ if has_width:
127
+ width, error = _parse_explicit_int(
128
+ args.get("width"),
129
+ name="width",
130
+ minimum=MIN_LONG_IMAGE_WIDTH,
131
+ maximum=MAX_LONG_IMAGE_WIDTH,
132
+ )
133
+ if error is not None or width is None:
134
+ return None, error
135
+ else:
136
+ width = _config_int(
137
+ context,
138
+ "render_long_image_default_width",
139
+ DEFAULT_LONG_IMAGE_WIDTH,
140
+ )
141
+ width = min(MAX_LONG_IMAGE_WIDTH, max(MIN_LONG_IMAGE_WIDTH, width))
142
+
143
+ if has_padding:
144
+ padding, error = _parse_explicit_int(
145
+ args.get("padding"),
146
+ name="padding",
147
+ minimum=0,
148
+ maximum=MAX_LONG_IMAGE_PADDING,
149
+ )
150
+ if error is not None or padding is None:
151
+ return None, error
152
+ else:
153
+ padding = _config_int(
154
+ context,
155
+ "render_long_image_default_padding",
156
+ DEFAULT_LONG_IMAGE_PADDING,
157
+ )
158
+ padding = min(MAX_LONG_IMAGE_PADDING, max(0, padding))
159
+
160
+ if padding * 2 >= width:
161
+ return None, "padding 过大,必须满足 2 * padding < width"
162
+
163
+ return (
164
+ RenderLayoutOptions(
165
+ layout="long",
166
+ viewport_width=width,
167
+ screenshot_scale="css",
168
+ screenshot_style=_long_layout_style(content_kind, padding),
169
+ ),
170
+ None,
171
+ )
@@ -2,7 +2,7 @@
2
2
  "type": "function",
3
3
  "function": {
4
4
  "name": "render_html",
5
- "description": "将 HTML 内容渲染为图片。默认返回可嵌入回复的图片 UID(embed),也可直接发送到指定目标(send)。支持完整的 HTML 文档,包括内联 CSS 和样式。",
5
+ "description": "将 HTML 内容渲染为图片。默认返回可嵌入回复的图片 UID(embed),也可直接发送到指定目标(send)。支持完整 HTML、内联 CSS、脚本和 data:/blob: 资源;浏览器上下文不加载外部资源。需要窄幅、高度随内容延伸且无两侧外部留白时,使用 layout=long。",
6
6
  "parameters": {
7
7
  "type": "object",
8
8
  "properties": {
@@ -10,6 +10,24 @@
10
10
  "type": "string",
11
11
  "description": "要渲染的 HTML 内容。必须是完整的 HTML 文档(包含 <!DOCTYPE html>、<html>、<head>、<body> 标签)。"
12
12
  },
13
+ "layout": {
14
+ "type": "string",
15
+ "description": "版式:default 保持原始页面布局;long 输出单张长图,高度随内容自动延伸并去除 html/body 外边距",
16
+ "enum": ["default", "long"],
17
+ "default": "default"
18
+ },
19
+ "width": {
20
+ "type": "integer",
21
+ "description": "长图最终像素宽度,仅 layout=long 时可用;不传则使用 [render].long_image_default_width",
22
+ "minimum": 320,
23
+ "maximum": 2048
24
+ },
25
+ "padding": {
26
+ "type": "integer",
27
+ "description": "长图 body 内边距(像素),仅 layout=long 时可用;传 0 可做全幅设计,不传则使用 [render].long_image_default_padding",
28
+ "minimum": 0,
29
+ "maximum": 160
30
+ },
13
31
  "delivery": {
14
32
  "type": "string",
15
33
  "description": "图片交付方式:embed 返回可插入回复的图片 UID;send 立即发送到目标",
@@ -28,4 +46,4 @@
28
46
  "required": ["html_content"]
29
47
  }
30
48
  }
31
- }
49
+ }
@@ -5,6 +5,7 @@ import logging
5
5
  import uuid
6
6
 
7
7
  from Undefined.attachments import scope_from_context
8
+ from Undefined.skills.toolsets.render.layout import resolve_render_layout
8
9
 
9
10
  logger = logging.getLogger(__name__)
10
11
 
@@ -41,6 +42,14 @@ async def execute(args: Dict[str, Any], context: Dict[str, Any]) -> str:
41
42
  if delivery not in {"embed", "send"}:
42
43
  return f"delivery 无效:{delivery}。仅支持 embed 或 send"
43
44
 
45
+ layout_options, layout_error = resolve_render_layout(
46
+ args,
47
+ context,
48
+ content_kind="html",
49
+ )
50
+ if layout_error is not None or layout_options is None:
51
+ return layout_error or "渲染布局参数无效"
52
+
44
53
  if delivery == "send" and message_type and message_type not in ("group", "private"):
45
54
  return "消息类型必须是 group 或 private"
46
55
 
@@ -55,7 +64,11 @@ async def execute(args: Dict[str, Any], context: Dict[str, Any]) -> str:
55
64
  if not render_html_to_image:
56
65
  return "错误:渲染函数 (render_html_to_image) 未在上下文中提供,请检查 AIClient 配置。"
57
66
 
58
- await render_html_to_image(html_content, str(filepath))
67
+ await render_html_to_image(
68
+ html_content,
69
+ str(filepath),
70
+ **layout_options.render_kwargs(),
71
+ )
59
72
 
60
73
  # 注册到附件系统
61
74
  attachment_registry = context.get("attachment_registry")
@@ -2,13 +2,13 @@
2
2
  "type": "function",
3
3
  "function": {
4
4
  "name": "render_latex",
5
- "description": "将 LaTeX 数学公式渲染为图片或 PDF 文档,使用 MathJax(不依赖系统 TeX 安装)。支持 LaTeX 数学子集(amsmath、equation、align、matrix 等),但不支持自定义 TeX 包。返回可嵌入回复的附件 UID。",
5
+ "description": "将常见 LaTeX 数学公式通过本地 matplotlib mathtext 渲染为图片或 PDF 文档,不依赖系统 TeX 或外部网络。复杂 TeX 环境和自定义宏可能不受支持。返回可嵌入回复的附件 UID。",
6
6
  "parameters": {
7
7
  "type": "object",
8
8
  "properties": {
9
9
  "content": {
10
10
  "type": "string",
11
- "description": "要渲染的 LaTeX 数学内容。支持 $...$(行内)、$$...$$(块级)、\\[...\\]、\\(...\\) 及标准数学环境(\\begin{align}、\\begin{equation}、\\begin{matrix} 等)。如果不包含分隔符,会自动用 \\[ ... \\] 包装。\\begin{document}...\\end{document} 外层包装会自动去掉。"
11
+ "description": "要渲染的 LaTeX 数学内容。支持 mathtext 常见数学语法及 $...$、$$...$$、\\[...\\]、\\(...\\) 分隔符。如果不包含分隔符,会自动用 \\[ ... \\] 包装;\\begin{document}...\\end{document} 外层包装会自动去掉。复杂 TeX 环境和自定义宏可能不受支持。"
12
12
  },
13
13
  "output_format": {
14
14
  "type": "string",