Undefined-bot 3.18.10__tar.gz → 3.19.0__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 (870) hide show
  1. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/CHANGELOG.md +13 -0
  2. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/PKG-INFO +1 -1
  3. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/pyproject.toml +1 -1
  4. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/__init__.py +1 -1
  5. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/paths.py +1 -0
  6. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/app.py +22 -7
  7. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/core.py +202 -24
  8. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_auth.py +31 -6
  9. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_shared.py +0 -1
  10. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/api.js +45 -6
  11. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/state.js +23 -18
  12. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/.gitignore +0 -0
  13. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/ARCHITECTURE.md +0 -0
  14. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/LICENSE +0 -0
  15. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/README.md +0 -0
  16. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/config/README.md +0 -0
  17. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/config/mcp.json.example +0 -0
  18. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/config.toml.example +0 -0
  19. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/img/undefined-9527.png +0 -0
  20. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/img/xlwy.jpg +0 -0
  21. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/IMPORTANT/each.md +0 -0
  22. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/README.md +0 -0
  23. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/agent_self_intro.txt +0 -0
  24. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/analyze_multimodal.txt +0 -0
  25. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/describe_image.txt +0 -0
  26. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/describe_meme_image.txt +0 -0
  27. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/generate_title.txt +0 -0
  28. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/historian_profile_merge.md +0 -0
  29. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/historian_rewrite.md +0 -0
  30. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/image_gen_moderation.txt +0 -0
  31. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/injection_detector.txt +0 -0
  32. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/injection_response_agent.txt +0 -0
  33. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/judge_meme_image.txt +0 -0
  34. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/merge_message_summaries.txt +0 -0
  35. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/merge_summaries.txt +0 -0
  36. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/message_summary.txt +0 -0
  37. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/naga_message_moderation.txt +0 -0
  38. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/stats_analysis.txt +0 -0
  39. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/summarize.txt +0 -0
  40. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/undefined.xml +0 -0
  41. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/res/prompts/undefined_nagaagent.xml +0 -0
  42. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/README.md +0 -0
  43. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/README.md +0 -0
  44. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/__main__.py +0 -0
  45. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/__init__.py +0 -0
  46. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/client/__init__.py +0 -0
  47. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/client/ask_loop.py +0 -0
  48. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/client/queue.py +0 -0
  49. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/client/setup.py +0 -0
  50. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/crawl4ai_support.py +0 -0
  51. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/http.py +0 -0
  52. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/llm/__init__.py +0 -0
  53. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/llm/requester.py +0 -0
  54. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/llm/retry.py +0 -0
  55. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/llm/sanitize.py +0 -0
  56. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/llm/streaming.py +0 -0
  57. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/llm/thinking.py +0 -0
  58. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/llm/types.py +0 -0
  59. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/model_selector.py +0 -0
  60. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/multimodal/__init__.py +0 -0
  61. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/multimodal/analyzer.py +0 -0
  62. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/multimodal/constants.py +0 -0
  63. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/multimodal/detection.py +0 -0
  64. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/multimodal/parsing.py +0 -0
  65. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/parsing.py +0 -0
  66. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/__init__.py +0 -0
  67. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/builder.py +0 -0
  68. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/cognitive.py +0 -0
  69. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/constants.py +0 -0
  70. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/current_input.py +0 -0
  71. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/file_includes.py +0 -0
  72. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/system_context.py +0 -0
  73. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/prompts/system_info.py +0 -0
  74. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/queue_budget.py +0 -0
  75. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/retrieval.py +0 -0
  76. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/summaries.py +0 -0
  77. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/tokens.py +0 -0
  78. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/tool_search.py +0 -0
  79. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/tooling.py +0 -0
  80. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/transports/__init__.py +0 -0
  81. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/transports/anthropic_transport.py +0 -0
  82. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/transports/openai_transport.py +0 -0
  83. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/ai/transports/replay.py +0 -0
  84. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/__init__.py +0 -0
  85. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/_context.py +0 -0
  86. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/_helpers.py +0 -0
  87. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/_naga_state.py +0 -0
  88. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/_openapi.py +0 -0
  89. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/_probes.py +0 -0
  90. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/app.py +0 -0
  91. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/naga_store.py +0 -0
  92. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/__init__.py +0 -0
  93. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/automations.py +0 -0
  94. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/chat.py +0 -0
  95. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/cognitive.py +0 -0
  96. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/commands.py +0 -0
  97. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/health.py +0 -0
  98. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/memes.py +0 -0
  99. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/memory.py +0 -0
  100. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/naga/__init__.py +0 -0
  101. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/naga/auth.py +0 -0
  102. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/naga/bind.py +0 -0
  103. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/naga/send.py +0 -0
  104. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/naga/unbind.py +0 -0
  105. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/onebot_files.py +0 -0
  106. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/schedules.py +0 -0
  107. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/system.py +0 -0
  108. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/tools.py +0 -0
  109. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/routes/weixin.py +0 -0
  110. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/api/webchat_store.py +0 -0
  111. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/arxiv/__init__.py +0 -0
  112. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/arxiv/client.py +0 -0
  113. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/arxiv/downloader.py +0 -0
  114. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/arxiv/models.py +0 -0
  115. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/arxiv/parser.py +0 -0
  116. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/arxiv/sender.py +0 -0
  117. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/attachments/__init__.py +0 -0
  118. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/attachments/forward_snapshot.py +0 -0
  119. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/attachments/models.py +0 -0
  120. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/attachments/registry.py +0 -0
  121. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/attachments/remote.py +0 -0
  122. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/attachments/render.py +0 -0
  123. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/attachments/segments.py +0 -0
  124. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/__init__.py +0 -0
  125. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/address.py +0 -0
  126. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/catalog.py +0 -0
  127. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/clock.py +0 -0
  128. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/constants.py +0 -0
  129. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/engine.py +0 -0
  130. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/extract.py +0 -0
  131. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/logutil.py +0 -0
  132. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/match.py +0 -0
  133. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/mentions.py +0 -0
  134. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/migrate.py +0 -0
  135. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/runner.py +0 -0
  136. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/service.py +0 -0
  137. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/short.py +0 -0
  138. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/storage.py +0 -0
  139. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/template.py +0 -0
  140. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/triggers.py +0 -0
  141. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/automations/validate.py +0 -0
  142. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/__init__.py +0 -0
  143. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/api_client.py +0 -0
  144. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/danmaku.py +0 -0
  145. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/download_core.py +0 -0
  146. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/downloader.py +0 -0
  147. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/errors.py +0 -0
  148. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/format.py +0 -0
  149. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/models.py +0 -0
  150. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/opus_parser.py +0 -0
  151. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/opus_render.py +0 -0
  152. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/opus_sender.py +0 -0
  153. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/parser.py +0 -0
  154. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/sender.py +0 -0
  155. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/wbi.py +0 -0
  156. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/bilibili/wbi_request.py +0 -0
  157. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/changelog.py +0 -0
  158. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/__init__.py +0 -0
  159. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/chroma_scheduler.py +0 -0
  160. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/historian/__init__.py +0 -0
  161. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/historian/helpers.py +0 -0
  162. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/historian/scheduling.py +0 -0
  163. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/historian/tools.py +0 -0
  164. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/historian/worker.py +0 -0
  165. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/job_queue.py +0 -0
  166. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/profile_storage.py +0 -0
  167. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/service/__init__.py +0 -0
  168. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/service/helpers.py +0 -0
  169. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/service/service.py +0 -0
  170. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/vector_store.py +0 -0
  171. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/cognitive/vector_store_compat.py +0 -0
  172. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/__init__.py +0 -0
  173. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/admin.py +0 -0
  174. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/api_modes.py +0 -0
  175. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/build_config.py +0 -0
  176. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/coercers.py +0 -0
  177. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/config_class.py +0 -0
  178. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/domain_parsers.py +0 -0
  179. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/env_registry.py +0 -0
  180. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/hot_reload.py +0 -0
  181. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/__init__.py +0 -0
  182. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/access.py +0 -0
  183. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/core.py +0 -0
  184. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/domains.py +0 -0
  185. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/finalize.py +0 -0
  186. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/history_skills.py +0 -0
  187. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/integrations.py +0 -0
  188. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/knowledge.py +0 -0
  189. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/logging_tools.py +0 -0
  190. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/models.py +0 -0
  191. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/load_sections/network.py +0 -0
  192. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/loader.py +0 -0
  193. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/manager.py +0 -0
  194. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/model_parsers.py +0 -0
  195. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/models.py +0 -0
  196. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/naga_policy.py +0 -0
  197. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/onebot.py +0 -0
  198. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/__init__.py +0 -0
  199. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/agent.py +0 -0
  200. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/chat.py +0 -0
  201. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/embedding.py +0 -0
  202. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/grok.py +0 -0
  203. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/helpers.py +0 -0
  204. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/historian.py +0 -0
  205. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/image.py +0 -0
  206. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/naga.py +0 -0
  207. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/pool.py +0 -0
  208. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/security.py +0 -0
  209. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/summary.py +0 -0
  210. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/parsers/vision.py +0 -0
  211. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/resolvers.py +0 -0
  212. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/search.py +0 -0
  213. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/toml_io.py +0 -0
  214. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/config/webui_settings.py +0 -0
  215. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/context.py +0 -0
  216. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/context_resource_registry.py +0 -0
  217. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/__init__.py +0 -0
  218. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/__main__.py +0 -0
  219. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/catalog.py +0 -0
  220. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/cli.py +0 -0
  221. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/commands.py +0 -0
  222. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/config_patch.py +0 -0
  223. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/docker_cli.py +0 -0
  224. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/generate.py +0 -0
  225. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/images.py +0 -0
  226. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/nagaagent.py +0 -0
  227. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/runner.py +0 -0
  228. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/state.py +0 -0
  229. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/.dockerignore +0 -0
  230. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/Dockerfile.bot +0 -0
  231. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/compose.base.yaml +0 -0
  232. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/compose.bot.yaml +0 -0
  233. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/compose.firecrawl.yaml +0 -0
  234. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/compose.lxmusic2api.yaml +0 -0
  235. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/compose.napcat.yaml +0 -0
  236. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/compose.searxng.yaml +0 -0
  237. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/lxmusic2api.config.toml +0 -0
  238. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/napcat.ws.json +0 -0
  239. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/deploy/templates/searxng.settings.yml +0 -0
  240. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/douyin/__init__.py +0 -0
  241. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/douyin/client.py +0 -0
  242. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/douyin/downloader.py +0 -0
  243. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/douyin/models.py +0 -0
  244. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/douyin/parser.py +0 -0
  245. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/douyin/sender.py +0 -0
  246. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/end_summary_storage.py +0 -0
  247. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/faq.py +0 -0
  248. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/github/__init__.py +0 -0
  249. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/github/client.py +0 -0
  250. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/github/models.py +0 -0
  251. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/github/parser.py +0 -0
  252. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/github/sender.py +0 -0
  253. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/handlers/__init__.py +0 -0
  254. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/handlers/auto_extract.py +0 -0
  255. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/handlers/message_flow.py +0 -0
  256. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/handlers/poke.py +0 -0
  257. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/handlers/repeat.py +0 -0
  258. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/injection_response_agent.py +0 -0
  259. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/jm/__init__.py +0 -0
  260. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/jm/client.py +0 -0
  261. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/jm/downloader.py +0 -0
  262. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/jm/parser.py +0 -0
  263. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/jm/searcher.py +0 -0
  264. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/jm/sender.py +0 -0
  265. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/knowledge/__init__.py +0 -0
  266. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/knowledge/chunker.py +0 -0
  267. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/knowledge/embedder.py +0 -0
  268. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/knowledge/manager.py +0 -0
  269. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/knowledge/reranker.py +0 -0
  270. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/knowledge/runtime.py +0 -0
  271. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/knowledge/store.py +0 -0
  272. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/main.py +0 -0
  273. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/mcp/__init__.py +0 -0
  274. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/mcp/registry.py +0 -0
  275. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/__init__.py +0 -0
  276. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/_image_utils.py +0 -0
  277. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/ingest.py +0 -0
  278. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/models.py +0 -0
  279. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/search.py +0 -0
  280. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/service.py +0 -0
  281. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/store.py +0 -0
  282. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/vector_store.py +0 -0
  283. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memes/worker.py +0 -0
  284. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/memory.py +0 -0
  285. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/onebot/__init__.py +0 -0
  286. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/onebot/client.py +0 -0
  287. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/onebot/file_errors.py +0 -0
  288. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/onebot/file_references.py +0 -0
  289. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/onebot/file_store.py +0 -0
  290. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/onebot/file_transport.py +0 -0
  291. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/onebot/message.py +0 -0
  292. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/py.typed +0 -0
  293. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/rate_limit.py +0 -0
  294. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/render.py +0 -0
  295. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/__init__.py +0 -0
  296. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/bugfix_command.py +0 -0
  297. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/command.py +0 -0
  298. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/commands/__init__.py +0 -0
  299. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/commands/catalog.py +0 -0
  300. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/commands/context.py +0 -0
  301. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/commands/registry.py +0 -0
  302. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/coordinator/__init__.py +0 -0
  303. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/coordinator/background.py +0 -0
  304. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/coordinator/batching.py +0 -0
  305. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/coordinator/group.py +0 -0
  306. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/coordinator/message_ids.py +0 -0
  307. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/coordinator/private.py +0 -0
  308. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/message_batcher/__init__.py +0 -0
  309. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/message_batcher/scheduler.py +0 -0
  310. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/message_batcher/state.py +0 -0
  311. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/message_summary_fetch.py +0 -0
  312. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/model_pool.py +0 -0
  313. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/queue_manager.py +0 -0
  314. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/security.py +0 -0
  315. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/services/stats_command.py +0 -0
  316. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/README.md +0 -0
  317. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/__init__.py +0 -0
  318. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/README.md +0 -0
  319. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/__init__.py +0 -0
  320. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
  321. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
  322. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
  323. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/handler.py +0 -0
  324. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
  325. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
  326. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
  327. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
  328. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
  329. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
  330. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
  331. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
  332. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
  333. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
  334. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
  335. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
  336. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
  337. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
  338. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
  339. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
  340. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
  341. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
  342. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
  343. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/config.json +0 -0
  344. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/handler.py +0 -0
  345. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
  346. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
  347. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
  348. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
  349. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
  350. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
  351. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
  352. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
  353. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
  354. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/intro.md +0 -0
  355. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/prompt.md +0 -0
  356. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
  357. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -0
  358. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -0
  359. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
  360. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
  361. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +0 -0
  362. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -0
  363. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
  364. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
  365. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
  366. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +0 -0
  367. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
  368. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
  369. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/config.json +0 -0
  370. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/handler.py +0 -0
  371. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
  372. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +0 -0
  373. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
  374. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
  375. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
  376. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
  377. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
  378. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
  379. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
  380. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/describe_pdf_page/config.json +0 -0
  381. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/describe_pdf_page/handler.py +0 -0
  382. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +0 -0
  383. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +0 -0
  384. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +0 -0
  385. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +0 -0
  386. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
  387. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
  388. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
  389. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
  390. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
  391. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
  392. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
  393. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
  394. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
  395. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
  396. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +0 -0
  397. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +0 -0
  398. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/README.md +0 -0
  399. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/config.json +0 -0
  400. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
  401. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
  402. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
  403. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
  404. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/config.json +0 -0
  405. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/handler.py +0 -0
  406. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
  407. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
  408. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
  409. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
  410. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
  411. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
  412. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
  413. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
  414. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
  415. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
  416. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
  417. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
  418. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
  419. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
  420. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
  421. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
  422. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/jm_search/config.json +0 -0
  423. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/jm_search/handler.py +0 -0
  424. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
  425. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
  426. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
  427. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
  428. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
  429. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
  430. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
  431. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
  432. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
  433. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
  434. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
  435. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
  436. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
  437. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
  438. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/intro_generator.py +0 -0
  439. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/intro_utils.py +0 -0
  440. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
  441. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
  442. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
  443. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
  444. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
  445. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
  446. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
  447. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
  448. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
  449. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +0 -0
  450. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +0 -0
  451. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +0 -0
  452. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +0 -0
  453. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +0 -0
  454. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +0 -0
  455. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +0 -0
  456. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +0 -0
  457. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/runner/__init__.py +0 -0
  458. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/runner/context.py +0 -0
  459. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/runner/loop.py +0 -0
  460. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/runner/tools.py +0 -0
  461. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/runner/webchat_utils.py +0 -0
  462. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/__init__.py +0 -0
  463. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/config.json +0 -0
  464. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/handler.py +0 -0
  465. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/intro.md +0 -0
  466. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/prompt.md +0 -0
  467. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/tools/__init__.py +0 -0
  468. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/config.json +0 -0
  469. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/handler.py +0 -0
  470. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/README.md +0 -0
  471. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/__init__.py +0 -0
  472. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/config.json +0 -0
  473. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/handler.py +0 -0
  474. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/intro.md +0 -0
  475. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/prompt.md +0 -0
  476. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/__init__.py +0 -0
  477. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/_shared.py +0 -0
  478. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/glob/config.json +0 -0
  479. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/glob/handler.py +0 -0
  480. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/list_directory/config.json +0 -0
  481. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/list_directory/handler.py +0 -0
  482. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/read_file/config.json +0 -0
  483. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/read_file/handler.py +0 -0
  484. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/search_file_content/config.json +0 -0
  485. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/undefined_self_code_agent/tools/search_file_content/handler.py +0 -0
  486. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/README.md +0 -0
  487. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/callable.json +0 -0
  488. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/config.json +0 -0
  489. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
  490. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
  491. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
  492. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
  493. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
  494. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
  495. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
  496. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/firecrawl_search/config.json +0 -0
  497. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/firecrawl_search/handler.py +0 -0
  498. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/grok_search/config.json +0 -0
  499. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/grok_search/handler.py +0 -0
  500. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
  501. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
  502. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
  503. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
  504. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/README.md +0 -0
  505. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/admin/README.md +0 -0
  506. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/admin/config.json +0 -0
  507. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/admin/handler.py +0 -0
  508. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/bugfix/README.md +0 -0
  509. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/bugfix/config.json +0 -0
  510. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
  511. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/changelog/README.md +0 -0
  512. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/changelog/config.json +0 -0
  513. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/changelog/handler.py +0 -0
  514. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/copyright/README.md +0 -0
  515. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/copyright/config.json +0 -0
  516. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/copyright/handler.py +0 -0
  517. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/faq/README.md +0 -0
  518. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/faq/config.json +0 -0
  519. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/faq/handler.py +0 -0
  520. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/feedback/README.md +0 -0
  521. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/feedback/config.json +0 -0
  522. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/feedback/handler.py +0 -0
  523. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/help/README.md +0 -0
  524. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/help/config.json +0 -0
  525. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/help/handler.py +0 -0
  526. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/naga/README.md +0 -0
  527. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/naga/config.json +0 -0
  528. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/naga/handler.py +0 -0
  529. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/naga/policy.py +0 -0
  530. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/profile/README.md +0 -0
  531. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/profile/config.json +0 -0
  532. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/profile/handler.py +0 -0
  533. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/stats/README.md +0 -0
  534. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/stats/config.json +0 -0
  535. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/stats/handler.py +0 -0
  536. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/summary/README.md +0 -0
  537. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/summary/config.json +0 -0
  538. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/summary/handler.py +0 -0
  539. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/version/README.md +0 -0
  540. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/version/config.json +0 -0
  541. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/commands/version/handler.py +0 -0
  542. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/http_client.py +0 -0
  543. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/http_config.py +0 -0
  544. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/__init__.py +0 -0
  545. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/arxiv/config.json +0 -0
  546. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/arxiv/handler.py +0 -0
  547. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/bilibili/config.json +0 -0
  548. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/bilibili/handler.py +0 -0
  549. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/bilibili_opus/config.json +0 -0
  550. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/bilibili_opus/handler.py +0 -0
  551. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/context.py +0 -0
  552. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/douyin/config.json +0 -0
  553. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/douyin/handler.py +0 -0
  554. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/github/config.json +0 -0
  555. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/github/handler.py +0 -0
  556. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/jm/config.json +0 -0
  557. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/jm/handler.py +0 -0
  558. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/models.py +0 -0
  559. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/pipelines/registry.py +0 -0
  560. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/registry.py +0 -0
  561. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/shared.py +0 -0
  562. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/README.md +0 -0
  563. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/__init__.py +0 -0
  564. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/arxiv_paper/README.md +0 -0
  565. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/arxiv_paper/callable.json +0 -0
  566. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/arxiv_paper/config.json +0 -0
  567. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/arxiv_paper/handler.py +0 -0
  568. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_opus/README.md +0 -0
  569. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_opus/callable.json +0 -0
  570. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_opus/config.json +0 -0
  571. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_opus/handler.py +0 -0
  572. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
  573. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_video/callable.json +0 -0
  574. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
  575. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
  576. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/calculator/README.md +0 -0
  577. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/calculator/callable.json +0 -0
  578. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/calculator/config.json +0 -0
  579. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/calculator/handler.py +0 -0
  580. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/changelog_query/README.md +0 -0
  581. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/changelog_query/config.json +0 -0
  582. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/changelog_query/handler.py +0 -0
  583. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/douyin_video/README.md +0 -0
  584. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/douyin_video/callable.json +0 -0
  585. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/douyin_video/config.json +0 -0
  586. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/douyin_video/handler.py +0 -0
  587. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/end/README.md +0 -0
  588. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/end/config.json +0 -0
  589. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/end/handler.py +0 -0
  590. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/fetch_image_uid/README.md +0 -0
  591. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/fetch_image_uid/config.json +0 -0
  592. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/fetch_image_uid/handler.py +0 -0
  593. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
  594. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_current_time/callable.json +0 -0
  595. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
  596. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
  597. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_picture/README.md +0 -0
  598. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_picture/config.json +0 -0
  599. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_picture/handler.py +0 -0
  600. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
  601. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
  602. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
  603. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/jm_book/README.md +0 -0
  604. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/jm_book/callable.json +0 -0
  605. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/jm_book/config.json +0 -0
  606. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/jm_book/handler.py +0 -0
  607. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_list/README.md +0 -0
  608. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
  609. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
  610. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_semantic_search/README.md +0 -0
  611. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
  612. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
  613. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_text_search/README.md +0 -0
  614. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
  615. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
  616. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
  617. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
  618. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
  619. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/qq_like/README.md +0 -0
  620. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/qq_like/config.json +0 -0
  621. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
  622. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/task_progress/README.md +0 -0
  623. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/task_progress/config.json +0 -0
  624. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
  625. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/README.md +0 -0
  626. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/__init__.py +0 -0
  627. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/attachments/README.md +0 -0
  628. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/attachments/get_uid_by_url/config.json +0 -0
  629. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/attachments/get_uid_by_url/handler.py +0 -0
  630. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/attachments/get_url_by_uid/config.json +0 -0
  631. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/attachments/get_url_by_uid/handler.py +0 -0
  632. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/README.md +0 -0
  633. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/_runtime.py +0 -0
  634. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/create/config.json +0 -0
  635. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/create/handler.py +0 -0
  636. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/delete/config.json +0 -0
  637. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/delete/handler.py +0 -0
  638. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/get/config.json +0 -0
  639. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/get/handler.py +0 -0
  640. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/list/config.json +0 -0
  641. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/list/handler.py +0 -0
  642. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/set_enabled/config.json +0 -0
  643. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/set_enabled/handler.py +0 -0
  644. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/update/config.json +0 -0
  645. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/automation/update/handler.py +0 -0
  646. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/cognitive/README.md +0 -0
  647. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
  648. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
  649. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
  650. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
  651. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
  652. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
  653. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/commands/README.md +0 -0
  654. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/commands/get/config.json +0 -0
  655. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/commands/get/handler.py +0 -0
  656. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/commands/search/config.json +0 -0
  657. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/commands/search/handler.py +0 -0
  658. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/contacts/README.md +0 -0
  659. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
  660. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
  661. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
  662. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
  663. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/README.md +0 -0
  664. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
  665. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
  666. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_avatar/config.json +0 -0
  667. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_avatar/handler.py +0 -0
  668. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
  669. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
  670. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
  671. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
  672. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
  673. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
  674. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
  675. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
  676. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
  677. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
  678. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/README.md +0 -0
  679. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/activity_trend/config.json +0 -0
  680. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/activity_trend/handler.py +0 -0
  681. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/filter_members/config.json +0 -0
  682. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/filter_members/handler.py +0 -0
  683. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/inactive_risk/config.json +0 -0
  684. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/inactive_risk/handler.py +0 -0
  685. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/join_statistics/config.json +0 -0
  686. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/join_statistics/handler.py +0 -0
  687. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/level_distribution/config.json +0 -0
  688. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/level_distribution/handler.py +0 -0
  689. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/member_activity/config.json +0 -0
  690. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/member_activity/handler.py +0 -0
  691. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/member_messages/config.json +0 -0
  692. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/member_messages/handler.py +0 -0
  693. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/member_structure/config.json +0 -0
  694. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/member_structure/handler.py +0 -0
  695. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/message_mix/config.json +0 -0
  696. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/message_mix/handler.py +0 -0
  697. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/new_member_activity/config.json +0 -0
  698. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/new_member_activity/handler.py +0 -0
  699. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/rank_members/config.json +0 -0
  700. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/group_analysis/rank_members/handler.py +0 -0
  701. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
  702. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
  703. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memes/README.md +0 -0
  704. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memes/search_memes/config.json +0 -0
  705. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memes/search_memes/handler.py +0 -0
  706. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/config.json +0 -0
  707. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/handler.py +0 -0
  708. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/README.md +0 -0
  709. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
  710. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
  711. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
  712. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
  713. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
  714. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
  715. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
  716. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
  717. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/README.md +0 -0
  718. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/context_utils.py +0 -0
  719. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
  720. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
  721. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
  722. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +0 -0
  723. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
  724. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +0 -0
  725. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
  726. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
  727. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
  728. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
  729. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
  730. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
  731. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
  732. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
  733. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
  734. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_message/handler.py +0 -0
  735. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
  736. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
  737. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
  738. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +0 -0
  739. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
  740. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
  741. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
  742. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
  743. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
  744. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
  745. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_voice/config.json +0 -0
  746. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/messages/send_voice/handler.py +0 -0
  747. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/README.md +0 -0
  748. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/_client.py +0 -0
  749. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/_constants.py +0 -0
  750. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/_tools.py +0 -0
  751. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/_track_refs.py +0 -0
  752. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/browse_playlists/config.json +0 -0
  753. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/browse_playlists/handler.py +0 -0
  754. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/browse_rankings/config.json +0 -0
  755. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/browse_rankings/handler.py +0 -0
  756. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/find_song_matches/config.json +0 -0
  757. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/find_song_matches/handler.py +0 -0
  758. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_audio/config.json +0 -0
  759. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_audio/handler.py +0 -0
  760. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_comments/config.json +0 -0
  761. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_comments/handler.py +0 -0
  762. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_cover/config.json +0 -0
  763. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_cover/handler.py +0 -0
  764. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_hot_search/config.json +0 -0
  765. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_hot_search/handler.py +0 -0
  766. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_lyrics/config.json +0 -0
  767. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/get_lyrics/handler.py +0 -0
  768. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/search_playlists/config.json +0 -0
  769. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/search_playlists/handler.py +0 -0
  770. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/search_songs/config.json +0 -0
  771. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/music/search_songs/handler.py +0 -0
  772. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/notices/README.md +0 -0
  773. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
  774. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
  775. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
  776. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
  777. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
  778. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
  779. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/README.md +0 -0
  780. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/layout.py +0 -0
  781. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/render_html/config.json +0 -0
  782. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/render_html/handler.py +0 -0
  783. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/render_latex/config.json +0 -0
  784. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/render_latex/handler.py +0 -0
  785. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/render_markdown/config.json +0 -0
  786. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/skills/toolsets/render/render_markdown/handler.py +0 -0
  787. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/token_usage_storage.py +0 -0
  788. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/__init__.py +0 -0
  789. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/cache.py +0 -0
  790. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/coerce.py +0 -0
  791. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/common.py +0 -0
  792. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/cors.py +0 -0
  793. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/easter_egg_calls.py +0 -0
  794. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/fake_at.py +0 -0
  795. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/file_lock.py +0 -0
  796. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/group_metrics.py +0 -0
  797. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/history.py +0 -0
  798. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/http_download.py +0 -0
  799. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/io.py +0 -0
  800. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/logging.py +0 -0
  801. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/member_utils.py +0 -0
  802. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/message_reply.py +0 -0
  803. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/message_targets.py +0 -0
  804. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/message_turn.py +0 -0
  805. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/message_utils.py +0 -0
  806. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/qq_emoji.py +0 -0
  807. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/queue_intervals.py +0 -0
  808. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/recent_messages.py +0 -0
  809. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/render_cache.py +0 -0
  810. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/request_params.py +0 -0
  811. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/resources.py +0 -0
  812. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/scheduler.py +0 -0
  813. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/self_update.py +0 -0
  814. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/sender.py +0 -0
  815. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/sender_helpers.py +0 -0
  816. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/time_utils.py +0 -0
  817. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/tool_calls.py +0 -0
  818. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/utils/xml.py +0 -0
  819. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/__init__.py +0 -0
  820. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/__main__.py +0 -0
  821. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/__init__.py +0 -0
  822. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_bot.py +0 -0
  823. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_config.py +0 -0
  824. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_index.py +0 -0
  825. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_logs.py +0 -0
  826. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_memes.py +0 -0
  827. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_runtime.py +0 -0
  828. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_system.py +0 -0
  829. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/routes/_weixin.py +0 -0
  830. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
  831. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/app.css +0 -0
  832. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/base.css +0 -0
  833. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/components.css +0 -0
  834. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/highlight-github.min.css +0 -0
  835. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/landing.css +0 -0
  836. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/responsive.css +0 -0
  837. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/style.css +0 -0
  838. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/variables.css +0 -0
  839. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/css/workflow.css +0 -0
  840. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/favicon.svg +0 -0
  841. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/auth.js +0 -0
  842. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/bot.js +0 -0
  843. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/config-form.js +0 -0
  844. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/i18n.js +0 -0
  845. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/log-view.js +0 -0
  846. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/logs.js +0 -0
  847. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/main.js +0 -0
  848. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/memes.js +0 -0
  849. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/runtime.js +0 -0
  850. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/schedules.js +0 -0
  851. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/ui.js +0 -0
  852. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/vendor/highlight.min.js +0 -0
  853. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/vendor/highlightjs.LICENSE +0 -0
  854. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
  855. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/weixin.js +0 -0
  856. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/workflow-canvas.js +0 -0
  857. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/workflow-graph.js +0 -0
  858. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/static/js/workflow-inspector.js +0 -0
  859. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/templates/index.html +0 -0
  860. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/utils/__init__.py +0 -0
  861. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/utils/comment.py +0 -0
  862. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/utils/config_io.py +0 -0
  863. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/utils/config_sync.py +0 -0
  864. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/webui/utils/toml_render.py +0 -0
  865. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/weixin/__init__.py +0 -0
  866. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/weixin/audio.py +0 -0
  867. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/weixin/models.py +0 -0
  868. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/weixin/service.py +0 -0
  869. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/weixin/store.py +0 -0
  870. {undefined_bot-3.18.10 → undefined_bot-3.19.0}/src/Undefined/weixin/transport.py +0 -0
@@ -1,3 +1,16 @@
1
+ ## v3.19.0 控制台登录态持久化
2
+
3
+ 本版本让 WebUI 控制台的登录态在进程重启后继续有效,并把登录有效期从 8 小时延长到 30 天;活跃使用的会话会自动续期,浏览器关闭重开也不再要求重新登录。
4
+
5
+ - 会话落盘:服务端会话表写入 `data/cache/webui_sessions.json`(权限 0600),启动时自动恢复;过期条目在加载和写盘时清理,文件损坏只告警,不影响控制台启动。
6
+ - 有效期延长:session 与 refresh token 从 8 小时延长到 30 天,access token 保持 15 分钟并由前端自动刷新;session 剩余不足一半时滑动续期,持续使用不会掉线。
7
+ - 前端存储:WebUI 令牌从 `sessionStorage` 改为 `localStorage`,浏览器或控制台重启后仍然保留;自动迁移旧版本遗留的令牌,登出时一并清理。
8
+ - Cookie 同步:`undefined_webui` 与 `undefined_webui_token` 的 `max_age` 均设为 30 天;刷新轮换只重置 `undefined_webui_token`,`undefined_webui` 保持登录时的 30 天期限。
9
+ - 刷新安全:refresh token 轮换改为加锁原子操作,旧 token 立即失效;会话文件只保存密码指纹,修改管理密码(含直接编辑 `config.toml` 后重启)会作废旧登录态。
10
+ - 测试覆盖:新增会话持久化、滑动续期、密码变更失效与重启恢复测试。
11
+
12
+ ---
13
+
1
14
  ## v3.18.10 群聊出错静默处理
2
15
 
3
16
  本版本新增群聊出错时的发言边界:bot 自行发起且未被要求的失败直接静默结束,用户明确要求的失败只回一句简短状态,不再主动认领、道歉或解释错误详情;同时把规则提升为与说话风格同级的 P1 顶层小节,并在多处同步重申。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: Undefined-bot
3
- Version: 3.18.10
3
+ Version: 3.19.0
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Undefined-bot"
3
- version = "3.18.10"
3
+ version = "3.19.0"
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.18.10"
27
+ __version__: str = "3.19.0"
28
28
 
29
29
  # symbol -> (module_path, attribute_name);首次访问时才 importlib 加载
30
30
  _LAZY_IMPORTS: dict[str, tuple[str, str]] = {
@@ -18,6 +18,7 @@ DOWNLOAD_CACHE_DIR: Path = CACHE_DIR / "downloads"
18
18
  TEXT_FILE_CACHE_DIR: Path = CACHE_DIR / "text_files"
19
19
  URL_FILE_CACHE_DIR: Path = CACHE_DIR / "url_files"
20
20
  WEBUI_FILE_CACHE_DIR: Path = CACHE_DIR / "webui_files"
21
+ WEBUI_SESSIONS_FILE: Path = CACHE_DIR / "webui_sessions.json"
21
22
  ATTACHMENT_REGISTRY_FILE: Path = DATA_DIR / "attachment_registry.json"
22
23
  WEBCHAT_DIR: Path = DATA_DIR / "webchat"
23
24
  WEBCHAT_CONVERSATIONS_DIR: Path = WEBCHAT_DIR / "conversations"
@@ -17,6 +17,7 @@ from Undefined.config import (
17
17
  )
18
18
  from Undefined.utils.cors import is_allowed_cors_origin, normalize_origin
19
19
  from Undefined.utils import io as async_io
20
+ from Undefined.utils.paths import WEBUI_SESSIONS_FILE
20
21
  from Undefined.utils.self_update import resolve_repo_root
21
22
  from .core import BotProcessController, SessionStore
22
23
  from .routes import routes
@@ -296,12 +297,14 @@ def create_app(*, redirect_to_config_once: bool = False) -> web.Application:
296
297
  middlewares=[cors_middleware, gzip_middleware, security_headers_middleware]
297
298
  )
298
299
 
299
- # 初始化核心组件
300
- app[SESSION_STORE_APP_KEY] = SessionStore()
301
-
302
300
  # 配置 WebUI 设置热重载
303
301
  config_manager = get_config_manager()
304
- app[SETTINGS_APP_KEY] = load_webui_settings()
302
+ settings = load_webui_settings()
303
+ app[SETTINGS_APP_KEY] = settings
304
+ # 会话落盘:控制台重启后浏览器无需重新登录;密码变更时旧会话自动失效。
305
+ app[SESSION_STORE_APP_KEY] = SessionStore(
306
+ storage_path=WEBUI_SESSIONS_FILE, password=settings.password
307
+ )
305
308
  app[BOT_APP_KEY] = BotProcessController(
306
309
  stop_timeout_getter=lambda: app[SETTINGS_APP_KEY].stop_timeout_seconds
307
310
  )
@@ -323,9 +326,21 @@ def create_app(*, redirect_to_config_once: bool = False) -> web.Application:
323
326
  ):
324
327
  logger.info("[WebUI] 检测到 WebUI 配置变更,正在热重载设置...")
325
328
  # 本次快照已成功读取;后续外部写入不能覆盖已验证的设置。
326
- app[SETTINGS_APP_KEY] = WebUISettings.from_config(
327
- config, config_exists=True
328
- )
329
+ previous = app[SETTINGS_APP_KEY]
330
+ updated = WebUISettings.from_config(config, config_exists=True)
331
+ if updated.password != previous.password:
332
+ try:
333
+ # 先持久化作废旧会话,再启用新密码,避免旧令牌在新密码下仍可用。
334
+ app[SESSION_STORE_APP_KEY].set_password(updated.password)
335
+ except Exception:
336
+ # 内存中的旧会话已作废(fail closed);保留旧设置,
337
+ # 下一次配置变更会重试持久化,避免把新密码当作已完全生效。
338
+ logger.warning(
339
+ "[WebUI] 密码变更后清理旧会话失败,暂不启用新密码",
340
+ exc_info=True,
341
+ )
342
+ return
343
+ app[SETTINGS_APP_KEY] = updated
329
344
 
330
345
  config_manager.subscribe(_on_config_change)
331
346
 
@@ -1,22 +1,38 @@
1
1
  import asyncio
2
2
  from collections.abc import Callable
3
3
  from dataclasses import dataclass
4
+ import hashlib
5
+ import json
4
6
  import logging
5
7
  import os
8
+ from pathlib import Path
6
9
  import signal
7
10
  import subprocess
8
11
  import sys
12
+ import threading
9
13
  import time
10
14
  import secrets
11
15
  from typing import Any
12
16
  from Undefined.config.webui_settings import DEFAULT_WEBUI_STOP_TIMEOUT_SECONDS
13
- from Undefined.utils.io import run_cancellation_safe
17
+ from Undefined.utils.io import run_cancellation_safe, write_json_sync
14
18
 
15
19
  logger = logging.getLogger(__name__)
16
20
 
17
- SESSION_TTL_SECONDS = 8 * 60 * 60
21
+ #: 登录态有效期。控制台属于本地自托管面板,长有效期配合活跃滑动续期,
22
+ #: 让长期使用的浏览器不必反复登录。
23
+ SESSION_TTL_SECONDS = 30 * 24 * 60 * 60
18
24
  ACCESS_TOKEN_TTL_SECONDS = 15 * 60
19
- REFRESH_TOKEN_TTL_SECONDS = 8 * 60 * 60
25
+ REFRESH_TOKEN_TTL_SECONDS = 30 * 24 * 60 * 60
26
+ SESSION_FILE_VERSION = 1
27
+
28
+
29
+ def _password_fingerprint(password: str | None) -> str | None:
30
+ """会话文件只保存密码指纹,用于在密码变更后作废旧登录态。"""
31
+ if password is None:
32
+ return None
33
+ return hashlib.sha256(password.encode("utf-8")).hexdigest()[:16]
34
+
35
+
20
36
  #: 拉起 Bot 子进程的命令。
21
37
  #:
22
38
  #: 用**当前解释器**直接跑模块,而不是 ``uv run``:WebUI 自己就跑在这个解释器里,
@@ -35,33 +51,137 @@ class SessionEntry:
35
51
 
36
52
 
37
53
  class SessionStore:
54
+ """WebUI 会话表。
55
+
56
+ 传入 ``storage_path`` 时会话会原子写入磁盘,控制台重启后自动恢复,
57
+ 浏览器手里的 cookie / 令牌无需重新登录即可继续使用。
58
+ """
59
+
38
60
  def __init__(
39
61
  self,
40
62
  ttl_seconds: int = SESSION_TTL_SECONDS,
41
63
  access_ttl_seconds: int = ACCESS_TOKEN_TTL_SECONDS,
42
64
  refresh_ttl_seconds: int = REFRESH_TOKEN_TTL_SECONDS,
65
+ storage_path: Path | None = None,
66
+ password: str | None = None,
43
67
  ) -> None:
44
68
  self._ttl_seconds = ttl_seconds
45
69
  self._access_ttl_seconds = access_ttl_seconds
46
70
  self._refresh_ttl_seconds = refresh_ttl_seconds
71
+ self._storage_path = storage_path
72
+ self._password_fingerprint = _password_fingerprint(password)
47
73
  self._sessions: dict[str, SessionEntry] = {}
74
+ self._lock = threading.RLock()
75
+ self._load()
76
+
77
+ def _load(self) -> None:
78
+ path = self._storage_path
79
+ if path is None:
80
+ return
81
+ try:
82
+ raw = path.read_text(encoding="utf-8")
83
+ except FileNotFoundError:
84
+ return
85
+ except (OSError, UnicodeError) as exc:
86
+ logger.warning("[WebUI] 读取会话文件失败: %s", exc)
87
+ return
88
+ try:
89
+ payload = json.loads(raw)
90
+ except (ValueError, TypeError):
91
+ logger.warning("[WebUI] 会话文件损坏,已忽略: %s", path)
92
+ return
93
+ if not isinstance(payload, dict):
94
+ return
95
+ stored_fingerprint = payload.get("password_fingerprint")
96
+ if (
97
+ self._password_fingerprint is not None
98
+ and stored_fingerprint != self._password_fingerprint
99
+ ):
100
+ # 密码已变更(例如直接编辑 config.toml 后重启),旧令牌必须失效。
101
+ logger.info("[WebUI] 管理密码已变更,清除旧登录会话")
102
+ # 立即用新指纹覆盖磁盘,避免密码回滚后旧会话重新生效。
103
+ self._persist()
104
+ return
105
+ raw_sessions = payload.get("sessions")
106
+ if not isinstance(raw_sessions, dict):
107
+ return
108
+ now = time.time()
109
+ for token, value in raw_sessions.items():
110
+ if not isinstance(token, str) or not token or not isinstance(value, dict):
111
+ continue
112
+ try:
113
+ expires_at = float(value.get("expires_at") or 0)
114
+ except (TypeError, ValueError):
115
+ continue
116
+ kind = str(value.get("kind") or "session")
117
+ if kind not in {"session", "access", "refresh"} or expires_at <= now:
118
+ continue
119
+ self._sessions[token] = SessionEntry(expires_at=expires_at, kind=kind)
120
+
121
+ def _payload(self) -> dict[str, object]:
122
+ now = time.time()
123
+ return {
124
+ "version": SESSION_FILE_VERSION,
125
+ "password_fingerprint": self._password_fingerprint,
126
+ "sessions": {
127
+ token: {"expires_at": entry.expires_at, "kind": entry.kind}
128
+ for token, entry in self._sessions.items()
129
+ if entry.expires_at > now
130
+ },
131
+ }
132
+
133
+ def _persist_strict(self) -> None:
134
+ """写盘失败时向上抛出,供登出/刷新等需要强一致性的路径回滚。"""
135
+ path = self._storage_path
136
+ if path is None:
137
+ return
138
+ write_json_sync(path, self._payload(), use_lock=False)
139
+
140
+ def _prune_expired(self) -> None:
141
+ now = time.time()
142
+ for token in [
143
+ token for token, entry in self._sessions.items() if entry.expires_at <= now
144
+ ]:
145
+ self._sessions.pop(token, None)
146
+
147
+ def _persist(self) -> None:
148
+ """登录与校验路径的 best-effort 写盘;磁盘异常只告警。"""
149
+ try:
150
+ self._persist_strict()
151
+ except Exception as exc: # 磁盘异常不应让登录/校验直接失败
152
+ logger.warning("[WebUI] 写入会话文件失败: %s", exc)
153
+ return
154
+ self._prune_expired()
48
155
 
49
156
  def create(self, *, ttl_seconds: int | None = None, kind: str = "session") -> str:
50
157
  token = secrets.token_urlsafe(32)
51
158
  ttl = self._ttl_seconds if ttl_seconds is None else ttl_seconds
52
- self._sessions[token] = SessionEntry(expires_at=time.time() + ttl, kind=kind)
159
+ with self._lock:
160
+ self._sessions[token] = SessionEntry(
161
+ expires_at=time.time() + ttl, kind=kind
162
+ )
163
+ self._persist()
53
164
  return token
54
165
 
55
166
  def _resolve_entry(self, token: str | None) -> SessionEntry | None:
56
167
  if not token:
57
168
  return None
58
- entry = self._sessions.get(token)
59
- if entry is None:
60
- return None
61
- if entry.expires_at < time.time():
62
- self._sessions.pop(token, None)
63
- return None
64
- return entry
169
+ with self._lock:
170
+ entry = self._sessions.get(token)
171
+ if entry is None:
172
+ return None
173
+ now = time.time()
174
+ if entry.expires_at < now:
175
+ self._sessions.pop(token, None)
176
+ self._persist()
177
+ return None
178
+ # 活跃会话滑动续期:剩余不足一半时重新计时,长期使用不会掉线。
179
+ if entry.kind == "session":
180
+ ttl = self._ttl_seconds
181
+ if ttl > 0 and entry.expires_at - now < ttl / 2:
182
+ entry.expires_at = now + ttl
183
+ self._persist()
184
+ return entry
65
185
 
66
186
  def is_valid(
67
187
  self,
@@ -86,38 +206,96 @@ class SessionStore:
86
206
  entry = self._resolve_entry(token)
87
207
  return None if entry is None else entry.kind
88
208
 
89
- def issue_auth_tokens(self) -> dict[str, int | str]:
90
- access_token = self.create(
91
- ttl_seconds=self._access_ttl_seconds,
92
- kind="access",
209
+ def _issue_auth_tokens_locked(self) -> dict[str, int | str]:
210
+ now = time.time()
211
+ access_token = secrets.token_urlsafe(32)
212
+ refresh_token = secrets.token_urlsafe(32)
213
+ self._sessions[access_token] = SessionEntry(
214
+ expires_at=now + self._access_ttl_seconds, kind="access"
93
215
  )
94
- refresh_token = self.create(
95
- ttl_seconds=self._refresh_ttl_seconds,
96
- kind="refresh",
216
+ self._sessions[refresh_token] = SessionEntry(
217
+ expires_at=now + self._refresh_ttl_seconds, kind="refresh"
97
218
  )
98
219
  return {
99
220
  "access_token": access_token,
100
221
  "refresh_token": refresh_token,
101
222
  "expires_in": self._access_ttl_seconds,
102
223
  "refresh_expires_in": self._refresh_ttl_seconds,
103
- "access_token_expires_at": self.get_expiry_ms(access_token),
224
+ "access_token_expires_at": int((now + self._access_ttl_seconds) * 1000),
104
225
  }
105
226
 
227
+ def issue_auth_tokens(self) -> dict[str, int | str]:
228
+ with self._lock:
229
+ tokens = self._issue_auth_tokens_locked()
230
+ self._persist()
231
+ return tokens
232
+
106
233
  def refresh_auth_tokens(
107
234
  self, refresh_token: str | None
108
235
  ) -> dict[str, int | str] | None:
109
- if not self.is_valid(refresh_token, allowed_kinds={"refresh"}):
236
+ if not refresh_token:
110
237
  return None
111
- self.revoke(refresh_token)
112
- return self.issue_auth_tokens()
238
+ with self._lock:
239
+ entry = self._sessions.get(refresh_token)
240
+ if entry is None or entry.kind != "refresh":
241
+ return None
242
+ if entry.expires_at < time.time():
243
+ self._sessions.pop(refresh_token, None)
244
+ try:
245
+ self._persist_strict()
246
+ except Exception:
247
+ self._sessions[refresh_token] = entry
248
+ raise
249
+ return None
250
+ # 旧 refresh token 立即作废并轮换,避免重放。
251
+ previous = dict(self._sessions)
252
+ self._sessions.pop(refresh_token, None)
253
+ tokens = self._issue_auth_tokens_locked()
254
+ try:
255
+ self._persist_strict()
256
+ except Exception:
257
+ self._sessions = previous
258
+ raise
259
+ return tokens
113
260
 
114
261
  def revoke(self, token: str | None) -> None:
115
262
  if not token:
116
263
  return
117
- self._sessions.pop(token, None)
264
+ with self._lock:
265
+ entry = self._sessions.pop(token, None)
266
+ if entry is None:
267
+ return
268
+ try:
269
+ self._persist_strict()
270
+ except Exception:
271
+ self._sessions[token] = entry
272
+ raise
273
+
274
+ def set_password(self, password: str | None) -> None:
275
+ """密码变更后作废全部旧会话,并更新会话文件中的密码指纹。
276
+
277
+ 写盘失败时内存中的旧会话保持作废(fail closed),但密码指纹回滚,
278
+ 异常抛给调用方;后续密码重载会重新尝试持久化新指纹。
279
+ """
280
+ with self._lock:
281
+ previous_fingerprint = self._password_fingerprint
282
+ self._password_fingerprint = _password_fingerprint(password)
283
+ self._sessions.clear()
284
+ try:
285
+ self._persist_strict()
286
+ except Exception:
287
+ self._password_fingerprint = previous_fingerprint
288
+ raise
118
289
 
119
290
  def clear(self) -> None:
120
- self._sessions.clear()
291
+ with self._lock:
292
+ previous = dict(self._sessions)
293
+ self._sessions.clear()
294
+ try:
295
+ self._persist_strict()
296
+ except Exception:
297
+ self._sessions = previous
298
+ raise
121
299
 
122
300
 
123
301
  class BotProcessController:
@@ -1,4 +1,5 @@
1
1
  import asyncio
2
+ import logging
2
3
  import tomllib
3
4
 
4
5
  from aiohttp import web
@@ -7,13 +8,13 @@ from aiohttp.web_response import Response
7
8
  from Undefined.config.loader import CONFIG_PATH, DEFAULT_WEBUI_PASSWORD
8
9
  from Undefined.config import WebUISettings, get_config_manager
9
10
  from Undefined.utils import io as async_io
11
+ from ..core import REFRESH_TOKEN_TTL_SECONDS, SESSION_TTL_SECONDS
10
12
  from ..utils.config_io import config_write_lock
11
13
  from ._shared import (
12
14
  auth_capabilities,
13
15
  routes,
14
16
  SESSION_COOKIE,
15
17
  TOKEN_COOKIE,
16
- SESSION_TTL_SECONDS,
17
18
  SETTINGS_APP_KEY,
18
19
  get_bearer_token,
19
20
  get_refresh_token,
@@ -29,6 +30,8 @@ from ._shared import (
29
30
  )
30
31
  from ..utils import read_config_source, apply_patch, load_comment_map, render_toml
31
32
 
33
+ logger = logging.getLogger(__name__)
34
+
32
35
 
33
36
  def _build_session_payload(
34
37
  request: web.Request, authenticated: bool
@@ -120,7 +123,7 @@ async def login_handler(request: web.Request) -> Response:
120
123
  str(auth_tokens["refresh_token"]),
121
124
  httponly=True,
122
125
  samesite="Lax",
123
- max_age=SESSION_TTL_SECONDS,
126
+ max_age=REFRESH_TOKEN_TTL_SECONDS,
124
127
  )
125
128
  return resp
126
129
 
@@ -154,7 +157,13 @@ async def refresh_handler(request: web.Request) -> Response:
154
157
  except Exception:
155
158
  data = {}
156
159
  refresh_token = get_refresh_token(request, data)
157
- tokens = get_session_store(request).refresh_auth_tokens(refresh_token)
160
+ try:
161
+ tokens = get_session_store(request).refresh_auth_tokens(refresh_token)
162
+ except OSError as exc:
163
+ logger.warning("[WebUI] 刷新令牌时写入会话文件失败: %s", exc)
164
+ return web.json_response(
165
+ {"success": False, "error": "Failed to persist session"}, status=500
166
+ )
158
167
  if tokens is None:
159
168
  return web.json_response(
160
169
  {"success": False, "error": "Unauthorized"}, status=401
@@ -172,7 +181,7 @@ async def refresh_handler(request: web.Request) -> Response:
172
181
  str(tokens["refresh_token"]),
173
182
  httponly=True,
174
183
  samesite="Lax",
175
- max_age=SESSION_TTL_SECONDS,
184
+ max_age=REFRESH_TOKEN_TTL_SECONDS,
176
185
  )
177
186
  return resp
178
187
 
@@ -185,6 +194,7 @@ async def logout_handler(request: web.Request) -> Response:
185
194
  except Exception:
186
195
  data = {}
187
196
  sessions = get_session_store(request)
197
+ failed = False
188
198
  for token in {
189
199
  get_valid_auth_token(request),
190
200
  request.cookies.get(SESSION_COOKIE),
@@ -192,7 +202,15 @@ async def logout_handler(request: web.Request) -> Response:
192
202
  get_refresh_token(request, data),
193
203
  get_bearer_token(request),
194
204
  }:
195
- sessions.revoke(token)
205
+ try:
206
+ sessions.revoke(token)
207
+ except OSError as exc:
208
+ failed = True
209
+ logger.warning("[WebUI] 登出时写入会话文件失败: %s", exc)
210
+ if failed:
211
+ return web.json_response(
212
+ {"success": False, "error": "Failed to persist session"}, status=500
213
+ )
196
214
  resp = web.json_response({"success": True})
197
215
  resp.del_cookie(SESSION_COOKIE)
198
216
  resp.del_cookie(TOKEN_COOKIE)
@@ -264,10 +282,11 @@ async def password_handler(request: web.Request) -> Response:
264
282
  await asyncio.to_thread(write_password)
265
283
  manager = get_config_manager()
266
284
  manager.reload()
285
+ # 先完成会话失效持久化,再启用新密码;失败时由 500 分支返回。
286
+ get_session_store(request).set_password(new_password)
267
287
  request.app[SETTINGS_APP_KEY] = WebUISettings.from_config(
268
288
  manager.load(strict=False), config_exists=True
269
289
  )
270
- get_session_store(request).clear()
271
290
 
272
291
  try:
273
292
  await async_io.run_cancellation_safe(password_and_reload())
@@ -275,6 +294,12 @@ async def password_handler(request: web.Request) -> Response:
275
294
  return web.json_response(
276
295
  {"success": False, "error": f"TOML parse error: {exc}"}, status=400
277
296
  )
297
+ except OSError as exc:
298
+ logger.warning("[WebUI] 更新密码后写入持久化状态失败: %s", exc)
299
+ return web.json_response(
300
+ {"success": False, "error": "Failed to persist password change"},
301
+ status=500,
302
+ )
278
303
 
279
304
  resp = web.json_response({"success": True, "message": "Password updated"})
280
305
  resp.del_cookie(SESSION_COOKIE)
@@ -27,7 +27,6 @@ _PENDING_BOT_AUTOSTART_MARKER = Path("data/cache/pending_bot_autostart")
27
27
 
28
28
  SESSION_COOKIE = "undefined_webui"
29
29
  TOKEN_COOKIE = "undefined_webui_token"
30
- SESSION_TTL_SECONDS = 8 * 60 * 60
31
30
  LOGIN_ATTEMPT_LIMIT = 5
32
31
  LOGIN_ATTEMPT_WINDOW = 5 * 60
33
32
  LOGIN_BLOCK_SECONDS = 15 * 60
@@ -167,10 +167,16 @@ function updateAuthFromPayload(payload) {
167
167
 
168
168
  let _authRefreshRequest = null;
169
169
 
170
+ function unauthorizedError(authFailure) {
171
+ const error = new Error("Unauthorized");
172
+ error.authFailure = !!authFailure;
173
+ return error;
174
+ }
175
+
170
176
  async function refreshAccessToken() {
171
177
  const refreshToken = state.authRefreshToken;
172
178
  if (!refreshToken) {
173
- throw new Error("Unauthorized");
179
+ throw unauthorizedError(false);
174
180
  }
175
181
  if (_authRefreshRequest?.token === refreshToken) {
176
182
  return _authRefreshRequest.promise;
@@ -194,8 +200,33 @@ async function refreshAccessToken() {
194
200
  // 登录或退出可能已替换会话;旧请求不能改写新令牌。
195
201
  if (state.authRefreshToken !== refreshToken) return payload;
196
202
  if (!response.ok || !updateAuthFromPayload(payload)) {
197
- clearStoredAuthTokens();
198
- throw new Error("Unauthorized");
203
+ const storedRefreshToken = readAuthStorage(
204
+ "undefined_auth_refresh_token",
205
+ );
206
+ if (storedRefreshToken && storedRefreshToken !== refreshToken) {
207
+ // 其他标签页已轮换令牌:跟随共享存储,避免清掉新令牌。
208
+ const adopted = updateAuthFromPayload({
209
+ accessToken: readAuthStorage("undefined_auth_access_token"),
210
+ refreshToken: storedRefreshToken,
211
+ accessTokenExpiresAt:
212
+ Number.parseInt(
213
+ readAuthStorage(
214
+ "undefined_auth_access_expires_at",
215
+ ) || "0",
216
+ 10,
217
+ ) || 0,
218
+ });
219
+ // 采用替换令牌后按成功处理,让调用方用新 access token 重试。
220
+ if (adopted) return payload;
221
+ }
222
+ // 只有服务端明确判定登录态失效时才清除令牌;
223
+ // 5xx 或异常响应属于可重试失败,保留令牌等待下次刷新。
224
+ if (response.status === 401 || response.status === 403) {
225
+ clearStoredAuthTokens();
226
+ }
227
+ throw unauthorizedError(
228
+ response.status === 401 || response.status === 403,
229
+ );
199
230
  }
200
231
  return payload;
201
232
  })();
@@ -215,11 +246,13 @@ async function api(path, options = {}) {
215
246
  !!state.authAccessTokenExpiresAt &&
216
247
  state.authAccessTokenExpiresAt <= Date.now() + 60_000;
217
248
 
249
+ let refreshFailure = null;
218
250
  if (accessExpiringSoon && method !== "OPTIONS") {
219
251
  try {
220
252
  await refreshAccessToken();
221
- } catch (_error) {
222
- // ignore and let request surface authorization result
253
+ } catch (error) {
254
+ // 记录失败原因,由资源请求结果决定是否降级登录态。
255
+ refreshFailure = error;
223
256
  }
224
257
  }
225
258
 
@@ -231,15 +264,21 @@ async function api(path, options = {}) {
231
264
  ) {
232
265
  try {
233
266
  await refreshAccessToken();
267
+ refreshFailure = null;
234
268
  res = await apiWithFallback(candidates, {
235
269
  ...options,
236
270
  _skipRefreshRetry: true,
237
271
  });
238
- } catch (_error) {
272
+ } catch (error) {
239
273
  // refreshAccessToken 只清除仍属于失败请求的令牌。
274
+ refreshFailure = error;
240
275
  }
241
276
  }
242
277
  if (res.status === 401) {
278
+ if (refreshFailure && !refreshFailure.authFailure) {
279
+ // 刷新因网络或服务端故障失败:保留登录态,交回原始 401 响应。
280
+ return res;
281
+ }
243
282
  state.authenticated = false;
244
283
  refreshUI();
245
284
  throw new Error("Unauthorized");