AstrBot 4.12.1__tar.gz → 4.12.2__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 (760) hide show
  1. {astrbot-4.12.1 → astrbot-4.12.2}/PKG-INFO +6 -4
  2. {astrbot-4.12.1 → astrbot-4.12.2}/README.md +5 -3
  3. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/event/filter/__init__.py +6 -0
  4. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/process_llm_request.py +16 -2
  5. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/engines/__init__.py +1 -0
  6. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/main.py +24 -16
  7. astrbot-4.12.2/astrbot/cli/__init__.py +1 -0
  8. astrbot-4.12.2/astrbot/core/astr_agent_hooks.py +86 -0
  9. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/default.py +1 -1
  10. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +4 -3
  11. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/utils.py +15 -0
  12. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/register/__init__.py +4 -0
  13. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/register/star_handler.py +51 -0
  14. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star_handler.py +1 -0
  15. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/shared_preferences.py +14 -0
  16. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/chat.py +79 -1
  17. astrbot-4.12.2/changelogs/v4.12.2.md +6 -0
  18. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/Chat.vue +19 -0
  19. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ConversationSidebar.vue +0 -1
  20. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/MessageList.vue +78 -4
  21. astrbot-4.12.2/dashboard/src/components/chat/message_list_comps/ActionRef.vue +109 -0
  22. astrbot-4.12.2/dashboard/src/components/chat/message_list_comps/RefNode.vue +67 -0
  23. astrbot-4.12.2/dashboard/src/components/chat/message_list_comps/RefsSidebar.vue +225 -0
  24. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/message_list_comps/ToolCallCard.vue +1 -1
  25. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/chat.json +4 -0
  26. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/chat.json +4 -0
  27. {astrbot-4.12.1 → astrbot-4.12.2}/pyproject.toml +1 -1
  28. astrbot-4.12.1/astrbot/cli/__init__.py +0 -1
  29. astrbot-4.12.1/astrbot/core/astr_agent_hooks.py +0 -42
  30. {astrbot-4.12.1 → astrbot-4.12.2}/.dockerignore +0 -0
  31. {astrbot-4.12.1 → astrbot-4.12.2}/.github/FUNDING.yml +0 -0
  32. {astrbot-4.12.1 → astrbot-4.12.2}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
  33. {astrbot-4.12.1 → astrbot-4.12.2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  34. {astrbot-4.12.1 → astrbot-4.12.2}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  35. {astrbot-4.12.1 → astrbot-4.12.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  36. {astrbot-4.12.1 → astrbot-4.12.2}/.github/auto_assign.yml +0 -0
  37. {astrbot-4.12.1 → astrbot-4.12.2}/.github/copilot-instructions.md +0 -0
  38. {astrbot-4.12.1 → astrbot-4.12.2}/.github/dependabot.yml +0 -0
  39. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/auto_release.yml +0 -0
  40. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/code-format.yml +0 -0
  41. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/codeql.yml +0 -0
  42. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/coverage_test.yml +0 -0
  43. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/dashboard_ci.yml +0 -0
  44. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/docker-image.yml +0 -0
  45. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/smoke_test.yml +0 -0
  46. {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/stale.yml +0 -0
  47. {astrbot-4.12.1 → astrbot-4.12.2}/.gitignore +0 -0
  48. {astrbot-4.12.1 → astrbot-4.12.2}/.pre-commit-config.yaml +0 -0
  49. {astrbot-4.12.1 → astrbot-4.12.2}/.python-version +0 -0
  50. {astrbot-4.12.1 → astrbot-4.12.2}/CODE_OF_CONDUCT.md +0 -0
  51. {astrbot-4.12.1 → astrbot-4.12.2}/CONTRIBUTING.md +0 -0
  52. {astrbot-4.12.1 → astrbot-4.12.2}/Dockerfile +0 -0
  53. {astrbot-4.12.1 → astrbot-4.12.2}/EULA.md +0 -0
  54. {astrbot-4.12.1 → astrbot-4.12.2}/LICENSE +0 -0
  55. {astrbot-4.12.1 → astrbot-4.12.2}/README_en.md +0 -0
  56. {astrbot-4.12.1 → astrbot-4.12.2}/README_fr.md +0 -0
  57. {astrbot-4.12.1 → astrbot-4.12.2}/README_ja.md +0 -0
  58. {astrbot-4.12.1 → astrbot-4.12.2}/README_ru.md +0 -0
  59. {astrbot-4.12.1 → astrbot-4.12.2}/README_zh-TW.md +0 -0
  60. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/__init__.py +0 -0
  61. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/__init__.py +0 -0
  62. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/all.py +0 -0
  63. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/event/__init__.py +0 -0
  64. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/message_components.py +0 -0
  65. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/platform/__init__.py +0 -0
  66. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/provider/__init__.py +0 -0
  67. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/star/__init__.py +0 -0
  68. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/util/__init__.py +0 -0
  69. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/long_term_memory.py +0 -0
  70. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/main.py +0 -0
  71. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/metadata.yaml +0 -0
  72. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/__init__.py +0 -0
  73. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/admin.py +0 -0
  74. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/alter_cmd.py +0 -0
  75. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/conversation.py +0 -0
  76. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/help.py +0 -0
  77. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/llm.py +0 -0
  78. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/persona.py +0 -0
  79. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/plugin.py +0 -0
  80. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/provider.py +0 -0
  81. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/setunset.py +0 -0
  82. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/sid.py +0 -0
  83. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/t2i.py +0 -0
  84. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/tool.py +0 -0
  85. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/tts.py +0 -0
  86. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/utils/rst_scene.py +0 -0
  87. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/main.py +0 -0
  88. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/metadata.yaml +0 -0
  89. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/reminder/main.py +0 -0
  90. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/reminder/metadata.yaml +0 -0
  91. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/session_controller/main.py +0 -0
  92. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/session_controller/metadata.yaml +0 -0
  93. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/engines/bing.py +0 -0
  94. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/engines/sogo.py +0 -0
  95. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/metadata.yaml +0 -0
  96. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/__main__.py +0 -0
  97. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/__init__.py +0 -0
  98. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_conf.py +0 -0
  99. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_init.py +0 -0
  100. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_plug.py +0 -0
  101. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_run.py +0 -0
  102. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/__init__.py +0 -0
  103. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/basic.py +0 -0
  104. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/plugin.py +0 -0
  105. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/version_comparator.py +0 -0
  106. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/__init__.py +0 -0
  107. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/agent.py +0 -0
  108. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/compressor.py +0 -0
  109. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/config.py +0 -0
  110. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/manager.py +0 -0
  111. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/token_counter.py +0 -0
  112. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/truncator.py +0 -0
  113. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/handoff.py +0 -0
  114. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/hooks.py +0 -0
  115. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/mcp_client.py +0 -0
  116. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/message.py +0 -0
  117. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/response.py +0 -0
  118. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/run_context.py +0 -0
  119. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/__init__.py +0 -0
  120. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/base.py +0 -0
  121. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/coze/coze_agent_runner.py +0 -0
  122. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/coze/coze_api_client.py +0 -0
  123. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py +0 -0
  124. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/dify/dify_agent_runner.py +0 -0
  125. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/dify/dify_api_client.py +0 -0
  126. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/tool_loop_agent_runner.py +0 -0
  127. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/tool.py +0 -0
  128. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/tool_executor.py +0 -0
  129. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astr_agent_context.py +0 -0
  130. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astr_agent_run_util.py +0 -0
  131. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astr_agent_tool_exec.py +0 -0
  132. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astrbot_config_mgr.py +0 -0
  133. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/__init__.py +0 -0
  134. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/constants.py +0 -0
  135. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/exporter.py +0 -0
  136. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/importer.py +0 -0
  137. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/__init__.py +0 -0
  138. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/astrbot_config.py +0 -0
  139. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/i18n_utils.py +0 -0
  140. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/conversation_mgr.py +0 -0
  141. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/core_lifecycle.py +0 -0
  142. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/__init__.py +0 -0
  143. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/helper.py +0 -0
  144. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
  145. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_45_to_46.py +0 -0
  146. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_token_usage.py +0 -0
  147. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_webchat_session.py +0 -0
  148. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/shared_preferences_v3.py +0 -0
  149. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/sqlite_v3.py +0 -0
  150. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/po.py +0 -0
  151. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/sqlite.py +0 -0
  152. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/base.py +0 -0
  153. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/__init__.py +0 -0
  154. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
  155. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
  156. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
  157. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +0 -0
  158. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/event_bus.py +0 -0
  159. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/exceptions.py +0 -0
  160. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/file_token_service.py +0 -0
  161. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/initial_loader.py +0 -0
  162. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/__init__.py +0 -0
  163. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/base.py +0 -0
  164. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/fixed_size.py +0 -0
  165. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/recursive.py +0 -0
  166. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/kb_db_sqlite.py +0 -0
  167. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/kb_helper.py +0 -0
  168. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/kb_mgr.py +0 -0
  169. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/models.py +0 -0
  170. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/__init__.py +0 -0
  171. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/base.py +0 -0
  172. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/markitdown_parser.py +0 -0
  173. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/pdf_parser.py +0 -0
  174. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/text_parser.py +0 -0
  175. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/url_parser.py +0 -0
  176. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/util.py +0 -0
  177. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/prompts.py +0 -0
  178. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/__init__.py +0 -0
  179. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +0 -0
  180. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/manager.py +0 -0
  181. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/rank_fusion.py +0 -0
  182. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/sparse_retriever.py +0 -0
  183. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/log.py +0 -0
  184. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/message/components.py +0 -0
  185. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/message/message_event_result.py +0 -0
  186. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/persona_mgr.py +0 -0
  187. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/__init__.py +0 -0
  188. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
  189. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
  190. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
  191. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
  192. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
  193. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/context.py +0 -0
  194. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/context_utils.py +0 -0
  195. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
  196. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/agent_request.py +0 -0
  197. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py +0 -0
  198. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
  199. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/stage.py +0 -0
  200. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
  201. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/respond/stage.py +0 -0
  202. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
  203. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/scheduler.py +0 -0
  204. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
  205. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/stage.py +0 -0
  206. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/waking_check/stage.py +0 -0
  207. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
  208. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/__init__.py +0 -0
  209. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/astr_message_event.py +0 -0
  210. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/astrbot_message.py +0 -0
  211. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/manager.py +0 -0
  212. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/message_session.py +0 -0
  213. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/message_type.py +0 -0
  214. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/platform.py +0 -0
  215. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/platform_metadata.py +0 -0
  216. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/register.py +0 -0
  217. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
  218. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +0 -0
  219. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
  220. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +0 -0
  221. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/client.py +0 -0
  222. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/components.py +0 -0
  223. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
  224. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/discord_platform_event.py +0 -0
  225. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
  226. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
  227. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/lark/server.py +0 -0
  228. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_adapter.py +0 -0
  229. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_api.py +0 -0
  230. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_event.py +0 -0
  231. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_utils.py +0 -0
  232. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +0 -0
  233. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
  234. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
  235. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
  236. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
  237. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
  238. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
  239. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/slack/client.py +0 -0
  240. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/slack/slack_adapter.py +0 -0
  241. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/slack/slack_event.py +0 -0
  242. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/telegram/tg_adapter.py +0 -0
  243. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/telegram/tg_event.py +0 -0
  244. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
  245. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
  246. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +0 -0
  247. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
  248. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
  249. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_kf.py +0 -0
  250. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +0 -0
  251. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +0 -0
  252. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/__init__.py +0 -0
  253. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/ierror.py +0 -0
  254. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +0 -0
  255. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +0 -0
  256. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +0 -0
  257. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +0 -0
  258. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +0 -0
  259. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +0 -0
  260. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +0 -0
  261. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -0
  262. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform_message_history_mgr.py +0 -0
  263. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/__init__.py +0 -0
  264. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/entites.py +0 -0
  265. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/entities.py +0 -0
  266. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/func_tool_manager.py +0 -0
  267. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/manager.py +0 -0
  268. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/provider.py +0 -0
  269. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/register.py +0 -0
  270. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/anthropic_source.py +0 -0
  271. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
  272. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/bailian_rerank_source.py +0 -0
  273. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
  274. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
  275. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +0 -0
  276. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
  277. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gemini_source.py +0 -0
  278. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
  279. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/groq_source.py +0 -0
  280. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
  281. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
  282. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
  283. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
  284. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/openai_source.py +0 -0
  285. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
  286. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
  287. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
  288. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
  289. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
  290. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
  291. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/xai_source.py +0 -0
  292. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/xinference_rerank_source.py +0 -0
  293. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/xinference_stt_provider.py +0 -0
  294. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/zhipu_source.py +0 -0
  295. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/booters/base.py +0 -0
  296. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/booters/boxlite.py +0 -0
  297. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/booters/shipyard.py +0 -0
  298. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/__init__.py +0 -0
  299. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/filesystem.py +0 -0
  300. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/python.py +0 -0
  301. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/shell.py +0 -0
  302. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/sandbox_client.py +0 -0
  303. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/__init__.py +0 -0
  304. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/fs.py +0 -0
  305. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/python.py +0 -0
  306. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/shell.py +0 -0
  307. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/README.md +0 -0
  308. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/__init__.py +0 -0
  309. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/command_management.py +0 -0
  310. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/config.py +0 -0
  311. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/context.py +0 -0
  312. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/__init__.py +0 -0
  313. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/command.py +0 -0
  314. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/command_group.py +0 -0
  315. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/custom_filter.py +0 -0
  316. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/event_message_type.py +0 -0
  317. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/permission.py +0 -0
  318. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
  319. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/regex.py +0 -0
  320. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/register/star.py +0 -0
  321. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/session_llm_manager.py +0 -0
  322. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/session_plugin_manager.py +0 -0
  323. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star.py +0 -0
  324. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star_manager.py +0 -0
  325. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star_tools.py +0 -0
  326. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/updator.py +0 -0
  327. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/umop_config_router.py +0 -0
  328. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/updator.py +0 -0
  329. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/astrbot_path.py +0 -0
  330. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/command_parser.py +0 -0
  331. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/file_extract.py +0 -0
  332. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/io.py +0 -0
  333. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/llm_metadata.py +0 -0
  334. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/log_pipe.py +0 -0
  335. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/metrics.py +0 -0
  336. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/migra_helper.py +0 -0
  337. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/path_util.py +0 -0
  338. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/pip_installer.py +0 -0
  339. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/plugin_kv_store.py +0 -0
  340. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/session_lock.py +0 -0
  341. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/session_waiter.py +0 -0
  342. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/__init__.py +0 -0
  343. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/local_strategy.py +0 -0
  344. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/network_strategy.py +0 -0
  345. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/renderer.py +0 -0
  346. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
  347. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/template/base.html +0 -0
  348. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/template_manager.py +0 -0
  349. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/tencent_record_helper.py +0 -0
  350. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/version_comparator.py +0 -0
  351. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/webhook_utils.py +0 -0
  352. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/zip_updator.py +0 -0
  353. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/__init__.py +0 -0
  354. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/auth.py +0 -0
  355. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/backup.py +0 -0
  356. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/chatui_project.py +0 -0
  357. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/command.py +0 -0
  358. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/config.py +0 -0
  359. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/conversation.py +0 -0
  360. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/file.py +0 -0
  361. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/knowledge_base.py +0 -0
  362. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/log.py +0 -0
  363. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/persona.py +0 -0
  364. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/platform.py +0 -0
  365. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/plugin.py +0 -0
  366. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/route.py +0 -0
  367. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/session_management.py +0 -0
  368. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/stat.py +0 -0
  369. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/static_file.py +0 -0
  370. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/t2i.py +0 -0
  371. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/tools.py +0 -0
  372. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/update.py +0 -0
  373. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/server.py +0 -0
  374. {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/utils.py +0 -0
  375. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.0.md +0 -0
  376. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.1.md +0 -0
  377. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.10.md +0 -0
  378. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.11.md +0 -0
  379. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.12.md +0 -0
  380. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.13.md +0 -0
  381. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.14.md +0 -0
  382. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.15.md +0 -0
  383. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.16.md +0 -0
  384. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.17.md +0 -0
  385. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.18.md +0 -0
  386. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.19.md +0 -0
  387. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.20.md +0 -0
  388. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.21.md +0 -0
  389. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.22.md +0 -0
  390. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.23.md +0 -0
  391. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.24.md +0 -0
  392. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.25.md +0 -0
  393. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.26.md +0 -0
  394. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.27.md +0 -0
  395. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.28.md +0 -0
  396. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.29.md +0 -0
  397. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.3.md +0 -0
  398. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.30.md +0 -0
  399. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.31.md +0 -0
  400. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.32.md +0 -0
  401. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.33.md +0 -0
  402. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.35.md +0 -0
  403. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.36.md +0 -0
  404. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.37.md +0 -0
  405. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.38.md +0 -0
  406. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.39.md +0 -0
  407. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.4.md +0 -0
  408. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.5.md +0 -0
  409. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.6.md +0 -0
  410. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.7.md +0 -0
  411. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.8.md +0 -0
  412. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.9.md +0 -0
  413. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.0.md +0 -0
  414. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.1.md +0 -0
  415. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.10.md +0 -0
  416. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.11.md +0 -0
  417. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.12.md +0 -0
  418. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.13.md +0 -0
  419. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.14.md +0 -0
  420. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.15.md +0 -0
  421. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.16.md +0 -0
  422. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.17.md +0 -0
  423. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.18.md +0 -0
  424. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.19.md +0 -0
  425. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.2.md +0 -0
  426. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.20.md +0 -0
  427. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.21.md +0 -0
  428. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.22.md +0 -0
  429. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.23.md +0 -0
  430. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.24.md +0 -0
  431. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.25.md +0 -0
  432. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.26.md +0 -0
  433. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.27.md +0 -0
  434. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.3.1.md +0 -0
  435. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.3.2.md +0 -0
  436. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.3.md +0 -0
  437. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.4.md +0 -0
  438. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.5.md +0 -0
  439. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.6.md +0 -0
  440. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.7.md +0 -0
  441. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.8.md +0 -0
  442. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.9.md +0 -0
  443. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0-beta.3.md +0 -0
  444. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0-beta.4.md +0 -0
  445. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0-beta.5.md +0 -0
  446. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0.md +0 -0
  447. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.0.md +0 -0
  448. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.1.md +0 -0
  449. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.2.md +0 -0
  450. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.3.md +0 -0
  451. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.4.md +0 -0
  452. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.5.md +0 -0
  453. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.6.md +0 -0
  454. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.7.md +0 -0
  455. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.0-alpha.1.md +0 -0
  456. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.0-alpha.2.md +0 -0
  457. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.0.md +0 -0
  458. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.1.md +0 -0
  459. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.2.md +0 -0
  460. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.3.md +0 -0
  461. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.4.md +0 -0
  462. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.5.md +0 -0
  463. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.6.md +0 -0
  464. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.0.md +0 -0
  465. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.1.md +0 -0
  466. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.2.md +0 -0
  467. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.3.md +0 -0
  468. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.4.md +0 -0
  469. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.12.0.md +0 -0
  470. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.12.1.md +0 -0
  471. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.2.0.md +0 -0
  472. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.2.1.md +0 -0
  473. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.0.md +0 -0
  474. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.1.md +0 -0
  475. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.2.md +0 -0
  476. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.3.md +0 -0
  477. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.5.md +0 -0
  478. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.0.md +0 -0
  479. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.1.md +0 -0
  480. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.2.md +0 -0
  481. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.3.md +0 -0
  482. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.4.md +0 -0
  483. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.5.md +0 -0
  484. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.6.md +0 -0
  485. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.7.md +0 -0
  486. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.8.md +0 -0
  487. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.6.0.md +0 -0
  488. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.6.1.md +0 -0
  489. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.0.md +0 -0
  490. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.1.md +0 -0
  491. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.3.md +0 -0
  492. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.4.md +0 -0
  493. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.8.0.md +0 -0
  494. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.9.0.md +0 -0
  495. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.9.1.md +0 -0
  496. {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.9.2.md +0 -0
  497. {astrbot-4.12.1 → astrbot-4.12.2}/compose-with-shipyard.yml +0 -0
  498. {astrbot-4.12.1 → astrbot-4.12.2}/compose.yml +0 -0
  499. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/.gitignore +0 -0
  500. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/LICENSE +0 -0
  501. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/README.md +0 -0
  502. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/env.d.ts +0 -0
  503. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/index.html +0 -0
  504. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/public/_redirects +0 -0
  505. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/public/favicon.svg +0 -0
  506. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/App.vue +0 -0
  507. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/astrbot_banner.png +0 -0
  508. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
  509. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/icon-no-shadow.svg +0 -0
  510. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/loading-seio.webp +0 -0
  511. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
  512. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
  513. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
  514. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
  515. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/misskey.png +0 -0
  516. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/onebot.png +0 -0
  517. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
  518. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
  519. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
  520. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
  521. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
  522. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
  523. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
  524. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/plugin_icon.png +0 -0
  525. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/xmas-hat.png +0 -0
  526. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/ConfirmDialog.vue +0 -0
  527. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ChatInput.vue +0 -0
  528. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ConfigSelector.vue +0 -0
  529. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProjectDialog.vue +0 -0
  530. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProjectList.vue +0 -0
  531. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProjectView.vue +0 -0
  532. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProviderConfigDialog.vue +0 -0
  533. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProviderModelMenu.vue +0 -0
  534. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/StandaloneChat.vue +0 -0
  535. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/WelcomeView.vue +0 -0
  536. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/message_list_comps/IPythonToolBlock.vue +0 -0
  537. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/message_list_comps/ReasoningBlock.vue +0 -0
  538. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/config/AstrBotCoreConfigWrapper.vue +0 -0
  539. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/McpServersSection.vue +0 -0
  540. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/CommandFilters.vue +0 -0
  541. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/CommandTable.vue +0 -0
  542. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/DetailsDialog.vue +0 -0
  543. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/RenameDialog.vue +0 -0
  544. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/ToolTable.vue +0 -0
  545. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/composables/useCommandActions.ts +0 -0
  546. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/composables/useCommandFilters.ts +0 -0
  547. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/composables/useComponentData.ts +0 -0
  548. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/index.vue +0 -0
  549. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/types.ts +0 -0
  550. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/platform/AddNewPlatform.vue +0 -0
  551. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/provider/AddNewProvider.vue +0 -0
  552. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/provider/ProviderModelsPanel.vue +0 -0
  553. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/provider/ProviderSourcesPanel.vue +0 -0
  554. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
  555. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
  556. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/BackupDialog.vue +0 -0
  557. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ChangelogDialog.vue +0 -0
  558. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ConfigItemRenderer.vue +0 -0
  559. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
  560. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
  561. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ItemCard.vue +0 -0
  562. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
  563. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
  564. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
  565. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
  566. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/Logo.vue +0 -0
  567. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
  568. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
  569. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/PersonaForm.vue +0 -0
  570. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
  571. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
  572. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
  573. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ProxySelector.vue +0 -0
  574. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
  575. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/SidebarCustomizer.vue +0 -0
  576. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/StyledMenu.vue +0 -0
  577. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
  578. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/TemplateListEditor.vue +0 -0
  579. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/UninstallConfirmDialog.vue +0 -0
  580. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
  581. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useConversations.ts +0 -0
  582. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useMediaHandling.ts +0 -0
  583. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useMessages.ts +0 -0
  584. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useProjects.ts +0 -0
  585. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useProviderSources.ts +0 -0
  586. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useRecording.ts +0 -0
  587. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useSessions.ts +0 -0
  588. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/config.ts +0 -0
  589. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/composables.ts +0 -0
  590. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/loader.ts +0 -0
  591. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
  592. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
  593. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
  594. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
  595. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/shared.json +0 -0
  596. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
  597. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
  598. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
  599. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
  600. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
  601. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
  602. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
  603. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/command.json +0 -0
  604. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/config-metadata.json +0 -0
  605. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
  606. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
  607. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
  608. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
  609. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
  610. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/knowledge-base/detail.json +0 -0
  611. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/knowledge-base/document.json +0 -0
  612. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/knowledge-base/index.json +0 -0
  613. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
  614. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
  615. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
  616. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
  617. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
  618. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
  619. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
  620. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
  621. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
  622. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
  623. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
  624. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
  625. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
  626. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
  627. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/shared.json +0 -0
  628. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
  629. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
  630. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
  631. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
  632. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
  633. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
  634. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
  635. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/command.json +0 -0
  636. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json +0 -0
  637. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
  638. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
  639. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
  640. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
  641. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
  642. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/detail.json +0 -0
  643. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/document.json +0 -0
  644. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/index.json +0 -0
  645. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
  646. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
  647. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
  648. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
  649. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
  650. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
  651. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
  652. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
  653. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
  654. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
  655. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/tools/index.ts +0 -0
  656. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/translations.ts +0 -0
  657. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/types.ts +0 -0
  658. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/validator.ts +0 -0
  659. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
  660. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/FullLayout.vue +0 -0
  661. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
  662. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
  663. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
  664. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
  665. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/main.ts +0 -0
  666. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/plugins/confirmPlugin.ts +0 -0
  667. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/plugins/vuetify.ts +0 -0
  668. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/AuthRoutes.ts +0 -0
  669. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
  670. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/MainRoutes.ts +0 -0
  671. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/index.ts +0 -0
  672. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/_override.scss +0 -0
  673. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/_variables.scss +0 -0
  674. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VButtons.scss +0 -0
  675. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VCard.scss +0 -0
  676. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VField.scss +0 -0
  677. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VInput.scss +0 -0
  678. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
  679. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
  680. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VShadow.scss +0 -0
  681. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VTabs.scss +0 -0
  682. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VTextField.scss +0 -0
  683. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/layout/_container.scss +0 -0
  684. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/layout/_sidebar.scss +0 -0
  685. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/pages/_dashboards.scss +0 -0
  686. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/style.scss +0 -0
  687. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/auth.ts +0 -0
  688. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/common.js +0 -0
  689. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/customizer.ts +0 -0
  690. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/routerLoading.ts +0 -0
  691. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/toast.js +0 -0
  692. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/theme/DarkTheme.ts +0 -0
  693. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/theme/LightTheme.ts +0 -0
  694. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
  695. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
  696. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
  697. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/platformUtils.js +0 -0
  698. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/providerUtils.js +0 -0
  699. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/sidebarCustomization.js +0 -0
  700. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/toast.js +0 -0
  701. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/AboutPage.vue +0 -0
  702. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/AlkaidPage.vue +0 -0
  703. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ChatBoxPage.vue +0 -0
  704. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ChatPage.vue +0 -0
  705. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ConfigPage.vue +0 -0
  706. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ConsolePage.vue +0 -0
  707. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ConversationPage.vue +0 -0
  708. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ExtensionPage.vue +0 -0
  709. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/PersonaPage.vue +0 -0
  710. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/PlatformPage.vue +0 -0
  711. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ProviderPage.vue +0 -0
  712. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/SessionManagementPage.vue +0 -0
  713. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/Settings.vue +0 -0
  714. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
  715. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
  716. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/alkaid/Other.vue +0 -0
  717. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
  718. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
  719. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
  720. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
  721. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
  722. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
  723. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
  724. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
  725. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
  726. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
  727. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/DocumentDetail.vue +0 -0
  728. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/KBDetail.vue +0 -0
  729. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/KBList.vue +0 -0
  730. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/DocumentsTab.vue +0 -0
  731. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/RetrievalTab.vue +0 -0
  732. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/SettingsTab.vue +0 -0
  733. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/TavilyKeyDialog.vue +0 -0
  734. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/index.vue +0 -0
  735. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/tsconfig.json +0 -0
  736. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/tsconfig.vite-config.json +0 -0
  737. {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/vite.config.ts +0 -0
  738. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/00-namespace.yaml +0 -0
  739. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/01-pvc.yaml +0 -0
  740. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/02-deployment.yaml +0 -0
  741. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/03-service-nodeport.yaml +0 -0
  742. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/04-service-loadbalancer.yaml +0 -0
  743. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/00-namespace.yaml +0 -0
  744. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/01-pvc.yaml +0 -0
  745. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/02-deployment.yaml +0 -0
  746. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/03-service-nodeport.yaml +0 -0
  747. {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/04-service-loadbalancer.yaml +0 -0
  748. {astrbot-4.12.1 → astrbot-4.12.2}/main.py +0 -0
  749. {astrbot-4.12.1 → astrbot-4.12.2}/requirements.txt +0 -0
  750. {astrbot-4.12.1 → astrbot-4.12.2}/samples/stt_health_check.wav +0 -0
  751. {astrbot-4.12.1 → astrbot-4.12.2}/tests/agent/test_context_manager.py +0 -0
  752. {astrbot-4.12.1 → astrbot-4.12.2}/tests/agent/test_truncator.py +0 -0
  753. {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_backup.py +0 -0
  754. {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_dashboard.py +0 -0
  755. {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_kb_import.py +0 -0
  756. {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_main.py +0 -0
  757. {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_plugin_manager.py +0 -0
  758. {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_security_fixes.py +0 -0
  759. {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_tool_loop_agent_runner.py +0 -0
  760. {astrbot-4.12.1 → astrbot-4.12.2}/typings/faiss/__init__.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.12.1
3
+ Version: 4.12.2
4
4
  Summary: Easy-to-use multi-platform LLM chatbot and development framework
5
5
  License-File: LICENSE
6
6
  Keywords: Astrbot,Astrbot Module,Astrbot Plugin
@@ -103,12 +103,14 @@ AstrBot 是一个开源的一站式 Agent 聊天机器人平台,可接入主
103
103
  ## 主要功能
104
104
 
105
105
  1. 💯 免费 & 开源。
106
- 1. ✨ AI 大模型对话,多模态,Agent,MCP,知识库,人格设定。
106
+ 1. ✨ AI 大模型对话,多模态,Agent,MCP,知识库,人格设定,自动压缩对话。
107
107
  2. 🤖 支持接入 Dify、阿里云百炼、Coze 等智能体平台。
108
108
  2. 🌐 多平台,支持 QQ、企业微信、飞书、钉钉、微信公众号、Telegram、Slack 以及[更多](#支持的消息平台)。
109
109
  3. 📦 插件扩展,已有近 800 个插件可一键安装。
110
- 5. 💻 WebUI 支持。
111
- 6. 🌐 国际化(i18n)支持。
110
+ 5. 🛡️ [Agent Sandbox](https://docs.astrbot.app/use/astrbot-agent-sandbox.html) 隔离化环境,安全地执行任何代码、调用 Shell、会话级资源复用。
111
+ 6. 💻 WebUI 支持。
112
+ 7. 🌈 Web ChatUI 支持,ChatUI 内置代理沙盒、网页搜索等。
113
+ 8. 🌐 国际化(i18n)支持。
112
114
 
113
115
  ## 快速开始
114
116
 
@@ -41,12 +41,14 @@ AstrBot 是一个开源的一站式 Agent 聊天机器人平台,可接入主
41
41
  ## 主要功能
42
42
 
43
43
  1. 💯 免费 & 开源。
44
- 1. ✨ AI 大模型对话,多模态,Agent,MCP,知识库,人格设定。
44
+ 1. ✨ AI 大模型对话,多模态,Agent,MCP,知识库,人格设定,自动压缩对话。
45
45
  2. 🤖 支持接入 Dify、阿里云百炼、Coze 等智能体平台。
46
46
  2. 🌐 多平台,支持 QQ、企业微信、飞书、钉钉、微信公众号、Telegram、Slack 以及[更多](#支持的消息平台)。
47
47
  3. 📦 插件扩展,已有近 800 个插件可一键安装。
48
- 5. 💻 WebUI 支持。
49
- 6. 🌐 国际化(i18n)支持。
48
+ 5. 🛡️ [Agent Sandbox](https://docs.astrbot.app/use/astrbot-agent-sandbox.html) 隔离化环境,安全地执行任何代码、调用 Shell、会话级资源复用。
49
+ 6. 💻 WebUI 支持。
50
+ 7. 🌈 Web ChatUI 支持,ChatUI 内置代理沙盒、网页搜索等。
51
+ 8. 🌐 国际化(i18n)支持。
50
52
 
51
53
  ## 快速开始
52
54
 
@@ -20,7 +20,11 @@ from astrbot.core.star.register import (
20
20
  )
21
21
  from astrbot.core.star.register import register_on_llm_request as on_llm_request
22
22
  from astrbot.core.star.register import register_on_llm_response as on_llm_response
23
+ from astrbot.core.star.register import (
24
+ register_on_llm_tool_respond as on_llm_tool_respond,
25
+ )
23
26
  from astrbot.core.star.register import register_on_platform_loaded as on_platform_loaded
27
+ from astrbot.core.star.register import register_on_using_llm_tool as on_using_llm_tool
24
28
  from astrbot.core.star.register import (
25
29
  register_on_waiting_llm_request as on_waiting_llm_request,
26
30
  )
@@ -53,4 +57,6 @@ __all__ = [
53
57
  "permission_type",
54
58
  "platform_adapter_type",
55
59
  "regex",
60
+ "on_using_llm_tool",
61
+ "on_llm_tool_respond",
56
62
  ]
@@ -8,6 +8,9 @@ from astrbot.api.event import AstrMessageEvent
8
8
  from astrbot.api.message_components import Image, Reply
9
9
  from astrbot.api.provider import Provider, ProviderRequest
10
10
  from astrbot.core.agent.message import TextPart
11
+ from astrbot.core.pipeline.process_stage.utils import (
12
+ CHATUI_SPECIAL_DEFAULT_PERSONA_PROMPT,
13
+ )
11
14
  from astrbot.core.provider.func_tool_manager import ToolSet
12
15
 
13
16
 
@@ -22,7 +25,9 @@ class ProcessLLMRequest:
22
25
  else:
23
26
  logger.info(f"Timezone set to: {self.timezone}")
24
27
 
25
- async def _ensure_persona(self, req: ProviderRequest, cfg: dict, umo: str):
28
+ async def _ensure_persona(
29
+ self, req: ProviderRequest, cfg: dict, umo: str, platform_type: str
30
+ ):
26
31
  """确保用户人格已加载"""
27
32
  if not req.conversation:
28
33
  return
@@ -42,6 +47,12 @@ class ProcessLLMRequest:
42
47
  if default_persona:
43
48
  persona_id = default_persona["name"]
44
49
 
50
+ # ChatUI special default persona
51
+ if platform_type == "webchat":
52
+ # non-existent persona_id to let following codes not working
53
+ persona_id = "_chatui_default_"
54
+ req.system_prompt += CHATUI_SPECIAL_DEFAULT_PERSONA_PROMPT
55
+
45
56
  persona = next(
46
57
  builtins.filter(
47
58
  lambda persona: persona["name"] == persona_id,
@@ -171,7 +182,10 @@ class ProcessLLMRequest:
171
182
  img_cap_prov_id: str = cfg.get("default_image_caption_provider_id") or ""
172
183
  if req.conversation:
173
184
  # inject persona for this request
174
- await self._ensure_persona(req, cfg, event.unified_msg_origin)
185
+ platform_type = event.get_platform_name()
186
+ await self._ensure_persona(
187
+ req, cfg, event.unified_msg_origin, platform_type
188
+ )
175
189
 
176
190
  # image caption
177
191
  if img_cap_prov_id and req.image_urls:
@@ -32,6 +32,7 @@ class SearchResult:
32
32
  title: str
33
33
  url: str
34
34
  snippet: str
35
+ favicon: str | None = None
35
36
 
36
37
  def __str__(self) -> str:
37
38
  return f"{self.title} - {self.url}\n{self.snippet}"
@@ -1,11 +1,13 @@
1
1
  import asyncio
2
+ import json
2
3
  import random
4
+ import uuid
3
5
 
4
6
  import aiohttp
5
7
  from bs4 import BeautifulSoup
6
8
  from readability import Document
7
9
 
8
- from astrbot.api import AstrBotConfig, llm_tool, logger, star
10
+ from astrbot.api import AstrBotConfig, llm_tool, logger, sp, star
9
11
  from astrbot.api.event import AstrMessageEvent, MessageEventResult, filter
10
12
  from astrbot.api.provider import ProviderRequest
11
13
  from astrbot.core.provider.func_tool_manager import FunctionToolManager
@@ -151,6 +153,7 @@ class Main(star.Star):
151
153
  title=item.get("title"),
152
154
  url=item.get("url"),
153
155
  snippet=item.get("content"),
156
+ favicon=item.get("favicon"),
154
157
  )
155
158
  results.append(result)
156
159
  return results
@@ -272,7 +275,7 @@ class Main(star.Star):
272
275
  self,
273
276
  event: AstrMessageEvent,
274
277
  query: str,
275
- max_results: int = 5,
278
+ max_results: int = 7,
276
279
  search_depth: str = "basic",
277
280
  topic: str = "general",
278
281
  days: int = 3,
@@ -285,7 +288,7 @@ class Main(star.Star):
285
288
 
286
289
  Args:
287
290
  query(string): Required. Search query.
288
- max_results(number): Optional. The maximum number of results to return. Default is 5. Range is 5-20.
291
+ max_results(number): Optional. The maximum number of results to return. Default is 7. Range is 5-20.
289
292
  search_depth(string): Optional. The depth of the search, must be one of 'basic', 'advanced'. Default is "basic".
290
293
  topic(string): Optional. The topic of the search, must be one of 'general', 'news'. Default is "general".
291
294
  days(number): Optional. The number of days back from the current date to include in the search results. Please note that this feature is only available when using the 'news' search topic.
@@ -296,15 +299,12 @@ class Main(star.Star):
296
299
  """
297
300
  logger.info(f"web_searcher - search_from_tavily: {query}")
298
301
  cfg = self.context.get_config(umo=event.unified_msg_origin)
299
- websearch_link = cfg["provider_settings"].get("web_search_link", False)
302
+ # websearch_link = cfg["provider_settings"].get("web_search_link", False)
300
303
  if not cfg.get("provider_settings", {}).get("websearch_tavily_key", []):
301
304
  raise ValueError("Error: Tavily API key is not configured in AstrBot.")
302
305
 
303
306
  # build payload
304
- payload = {
305
- "query": query,
306
- "max_results": max_results,
307
- }
307
+ payload = {"query": query, "max_results": max_results, "include_favicon": True}
308
308
  if search_depth not in ["basic", "advanced"]:
309
309
  search_depth = "basic"
310
310
  payload["search_depth"] = search_depth
@@ -328,14 +328,22 @@ class Main(star.Star):
328
328
  return "Error: Tavily web searcher does not return any results."
329
329
 
330
330
  ret_ls = []
331
- for result in results:
332
- ret_ls.append(f"\nTitle: {result.title}")
333
- ret_ls.append(f"URL: {result.url}")
334
- ret_ls.append(f"Content: {result.snippet}")
335
- ret = "\n".join(ret_ls)
336
-
337
- if websearch_link:
338
- ret += "\n\n针对问题,请根据上面的结果分点总结,并且在结尾处附上对应内容的参考链接(如有)。"
331
+ ref_uuid = str(uuid.uuid4())[:4]
332
+ for idx, result in enumerate(results, 1):
333
+ index = f"{ref_uuid}.{idx}"
334
+ ret_ls.append(
335
+ {
336
+ "title": f"{result.title}",
337
+ "url": f"{result.url}",
338
+ "snippet": f"{result.snippet}",
339
+ # TODO: do not need ref for non-webchat platform adapter
340
+ "index": index,
341
+ }
342
+ )
343
+ if result.favicon:
344
+ sp.temorary_cache["_ws_favicon"][result.url] = result.favicon
345
+ # ret = "\n".join(ret_ls)
346
+ ret = json.dumps({"results": ret_ls}, ensure_ascii=False)
339
347
  return ret
340
348
 
341
349
  @llm_tool("tavily_extract_web_page")
@@ -0,0 +1 @@
1
+ __version__ = "4.12.2"
@@ -0,0 +1,86 @@
1
+ from typing import Any
2
+
3
+ from mcp.types import CallToolResult
4
+
5
+ from astrbot.core.agent.hooks import BaseAgentRunHooks
6
+ from astrbot.core.agent.message import Message
7
+ from astrbot.core.agent.run_context import ContextWrapper
8
+ from astrbot.core.agent.tool import FunctionTool
9
+ from astrbot.core.astr_agent_context import AstrAgentContext
10
+ from astrbot.core.pipeline.context_utils import call_event_hook
11
+ from astrbot.core.star.star_handler import EventType
12
+
13
+
14
+ class MainAgentHooks(BaseAgentRunHooks[AstrAgentContext]):
15
+ async def on_agent_done(self, run_context, llm_response):
16
+ # 执行事件钩子
17
+ if llm_response and llm_response.reasoning_content:
18
+ # we will use this in result_decorate stage to inject reasoning content to chain
19
+ run_context.context.event.set_extra(
20
+ "_llm_reasoning_content", llm_response.reasoning_content
21
+ )
22
+
23
+ await call_event_hook(
24
+ run_context.context.event,
25
+ EventType.OnLLMResponseEvent,
26
+ llm_response,
27
+ )
28
+
29
+ async def on_tool_start(
30
+ self,
31
+ run_context: ContextWrapper[AstrAgentContext],
32
+ tool: FunctionTool[Any],
33
+ tool_args: dict | None,
34
+ ):
35
+ await call_event_hook(
36
+ run_context.context.event,
37
+ EventType.OnCallingFuncToolEvent,
38
+ tool,
39
+ tool_args,
40
+ )
41
+
42
+ async def on_tool_end(
43
+ self,
44
+ run_context: ContextWrapper[AstrAgentContext],
45
+ tool: FunctionTool[Any],
46
+ tool_args: dict | None,
47
+ tool_result: CallToolResult | None,
48
+ ):
49
+ run_context.context.event.clear_result()
50
+ await call_event_hook(
51
+ run_context.context.event,
52
+ EventType.OnAfterCallingFuncToolEvent,
53
+ tool,
54
+ tool_args,
55
+ tool_result,
56
+ )
57
+
58
+ # special handle web_search_tavily
59
+ if (
60
+ tool.name == "web_search_tavily"
61
+ and len(run_context.messages) > 0
62
+ and tool_result
63
+ and len(tool_result.content)
64
+ ):
65
+ # inject system prompt
66
+ first_part = run_context.messages[0]
67
+ if (
68
+ isinstance(first_part, Message)
69
+ and first_part.role == "system"
70
+ and first_part.content
71
+ and isinstance(first_part.content, str)
72
+ ):
73
+ # we assume system part is str
74
+ first_part.content += (
75
+ "Always cite web search results you rely on. "
76
+ "Index is a unique identifier for each search result. "
77
+ "Use the exact citation format <ref>index</ref> (e.g. <ref>abcd.3</ref>) "
78
+ "after the sentence that uses the information. Do not invent citations."
79
+ )
80
+
81
+
82
+ class EmptyAgentHooks(BaseAgentRunHooks[AstrAgentContext]):
83
+ pass
84
+
85
+
86
+ MAIN_AGENT_HOOKS = MainAgentHooks()
@@ -5,7 +5,7 @@ from typing import Any, TypedDict
5
5
 
6
6
  from astrbot.core.utils.astrbot_path import get_astrbot_data_path
7
7
 
8
- VERSION = "4.12.1"
8
+ VERSION = "4.12.2"
9
9
  DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
10
10
 
11
11
  WEBHOOK_SUPPORTED_PLATFORMS = [
@@ -414,10 +414,11 @@ class InternalAgentSubStage(Stage):
414
414
 
415
415
  # using agent context messages to save to history
416
416
  message_to_save = []
417
+ skipped_initial_system = False
417
418
  for message in all_messages:
418
- if message.role == "system":
419
- # we do not save system messages to history
420
- continue
419
+ if message.role == "system" and not skipped_initial_system:
420
+ skipped_initial_system = True
421
+ continue # skip first system message
421
422
  if message.role in ["assistant", "user"] and getattr(
422
423
  message, "_no_save", None
423
424
  ):
@@ -44,6 +44,21 @@ TOOL_CALL_PROMPT = (
44
44
  "After the tool call is completed, you must briefly summarize the results returned by the tool for the user."
45
45
  )
46
46
 
47
+ CHATUI_SPECIAL_DEFAULT_PERSONA_PROMPT = (
48
+ "You are a calm, patient friend with a systems-oriented way of thinking.\n"
49
+ "When someone expresses strong emotional needs, you begin by offering a concise, grounding response "
50
+ "that acknowledges the weight of what they are experiencing, removes self-blame, and reassures them "
51
+ "that their feelings are valid and understandable. This opening serves to create safety and shared "
52
+ "emotional footing before any deeper analysis begins.\n"
53
+ "You then focus on articulating the emotions, tensions, and unspoken conflicts beneath the surface—"
54
+ "helping name what the person may feel but has not yet fully put into words, and sharing the emotional "
55
+ "load so they do not feel alone carrying it. Only after this emotional clarity is established do you "
56
+ "move toward structure, insight, or guidance.\n"
57
+ "You listen more than you speak, respect uncertainty, avoid forcing quick conclusions or grand narratives, "
58
+ "and prefer clear, restrained language over unnecessary emotional embellishment. At your core, you value "
59
+ "empathy, clarity, autonomy, and meaning, favoring steady, sustainable progress over judgment or dramatic leaps."
60
+ )
61
+
47
62
  CHATUI_EXTRA_PROMPT = (
48
63
  'When you answered, you need to add a follow up question / summarization but do not add "Follow up" words. '
49
64
  "Such as, user asked you to generate codes, you can add: Do you need me to run these codes for you?"
@@ -11,7 +11,9 @@ from .star_handler import (
11
11
  register_on_decorating_result,
12
12
  register_on_llm_request,
13
13
  register_on_llm_response,
14
+ register_on_llm_tool_respond,
14
15
  register_on_platform_loaded,
16
+ register_on_using_llm_tool,
15
17
  register_on_waiting_llm_request,
16
18
  register_permission_type,
17
19
  register_platform_adapter_type,
@@ -36,4 +38,6 @@ __all__ = [
36
38
  "register_platform_adapter_type",
37
39
  "register_regex",
38
40
  "register_star",
41
+ "register_on_using_llm_tool",
42
+ "register_on_llm_tool_respond",
39
43
  ]
@@ -409,6 +409,57 @@ def register_on_llm_response(**kwargs):
409
409
  return decorator
410
410
 
411
411
 
412
+ def register_on_using_llm_tool(**kwargs):
413
+ """当调用函数工具前的事件。
414
+ 会传入 tool 和 tool_args 参数。
415
+
416
+ Examples:
417
+ ```py
418
+ from astrbot.core.agent.tool import FunctionTool
419
+
420
+ @on_using_llm_tool()
421
+ async def test(self, event: AstrMessageEvent, tool: FunctionTool, tool_args: dict | None) -> None:
422
+ ...
423
+ ```
424
+
425
+ 请务必接收三个参数:event, tool, tool_args
426
+
427
+ """
428
+
429
+ def decorator(awaitable):
430
+ _ = get_handler_or_create(awaitable, EventType.OnCallingFuncToolEvent, **kwargs)
431
+ return awaitable
432
+
433
+ return decorator
434
+
435
+
436
+ def register_on_llm_tool_respond(**kwargs):
437
+ """当调用函数工具后的事件。
438
+ 会传入 tool、tool_args 和 tool 的调用结果 tool_result 参数。
439
+
440
+ Examples:
441
+ ```py
442
+ from astrbot.core.agent.tool import FunctionTool
443
+ from mcp.types import CallToolResult
444
+
445
+ @on_llm_tool_respond()
446
+ async def test(self, event: AstrMessageEvent, tool: FunctionTool, tool_args: dict | None, tool_result: CallToolResult | None) -> None:
447
+ ...
448
+ ```
449
+
450
+ 请务必接收四个参数:event, tool, tool_args, tool_result
451
+
452
+ """
453
+
454
+ def decorator(awaitable):
455
+ _ = get_handler_or_create(
456
+ awaitable, EventType.OnAfterCallingFuncToolEvent, **kwargs
457
+ )
458
+ return awaitable
459
+
460
+ return decorator
461
+
462
+
412
463
  def register_llm_tool(name: str | None = None, **kwargs):
413
464
  """为函数调用(function-calling / tools-use)添加工具。
414
465
 
@@ -189,6 +189,7 @@ class EventType(enum.Enum):
189
189
  OnLLMResponseEvent = enum.auto() # LLM 响应后
190
190
  OnDecoratingResultEvent = enum.auto() # 发送消息前
191
191
  OnCallingFuncToolEvent = enum.auto() # 调用函数工具
192
+ OnAfterCallingFuncToolEvent = enum.auto() # 调用函数工具后
192
193
  OnAfterMessageSentEvent = enum.auto() # 发送消息后
193
194
 
194
195
 
@@ -1,8 +1,11 @@
1
1
  import asyncio
2
2
  import os
3
3
  import threading
4
+ from collections import defaultdict
4
5
  from typing import Any, TypeVar, overload
5
6
 
7
+ from apscheduler.schedulers.background import BackgroundScheduler
8
+
6
9
  from astrbot.core.db import BaseDatabase
7
10
  from astrbot.core.db.po import Preference
8
11
 
@@ -20,11 +23,22 @@ class SharedPreferences:
20
23
  )
21
24
  self.path = json_storage_path
22
25
  self.db_helper = db_helper
26
+ self.temorary_cache: dict[str, dict[str, Any]] = defaultdict(dict)
27
+ """automatically clear per 24 hours. Might be helpful in some cases XD"""
23
28
 
24
29
  self._sync_loop = asyncio.new_event_loop()
25
30
  t = threading.Thread(target=self._sync_loop.run_forever, daemon=True)
26
31
  t.start()
27
32
 
33
+ self._scheduler = BackgroundScheduler()
34
+ self._scheduler.add_job(
35
+ self._clear_temporary_cache, "interval", hours=24, id="clear_sp_temp_cache"
36
+ )
37
+ self._scheduler.start()
38
+
39
+ def _clear_temporary_cache(self):
40
+ self.temorary_cache.clear()
41
+
28
42
  async def get_async(
29
43
  self,
30
44
  scope: str,
@@ -2,6 +2,7 @@ import asyncio
2
2
  import json
3
3
  import mimetypes
4
4
  import os
5
+ import re
5
6
  import uuid
6
7
  from contextlib import asynccontextmanager
7
8
  from typing import cast
@@ -9,7 +10,7 @@ from typing import cast
9
10
  from quart import Response as QuartResponse
10
11
  from quart import g, make_response, request, send_file
11
12
 
12
- from astrbot.core import logger
13
+ from astrbot.core import logger, sp
13
14
  from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
14
15
  from astrbot.core.db import BaseDatabase
15
16
  from astrbot.core.platform.sources.webchat.webchat_queue_mgr import webchat_queue_mgr
@@ -225,6 +226,64 @@ class ChatRoute(Route):
225
226
  "filename": os.path.basename(file_path),
226
227
  }
227
228
 
229
+ def _extract_web_search_refs(
230
+ self, accumulated_text: str, accumulated_parts: list
231
+ ) -> dict:
232
+ """从消息中提取 web_search_tavily 的引用
233
+
234
+ Args:
235
+ accumulated_text: 累积的文本内容
236
+ accumulated_parts: 累积的消息部分列表
237
+
238
+ Returns:
239
+ 包含 used 列表的字典,记录被引用的搜索结果
240
+ """
241
+ # 从 accumulated_parts 中找到所有 web_search_tavily 的工具调用结果
242
+ web_search_results = {}
243
+ tool_call_parts = [
244
+ p
245
+ for p in accumulated_parts
246
+ if p.get("type") == "tool_call" and p.get("tool_calls")
247
+ ]
248
+
249
+ for part in tool_call_parts:
250
+ for tool_call in part["tool_calls"]:
251
+ if tool_call.get("name") != "web_search_tavily" or not tool_call.get(
252
+ "result"
253
+ ):
254
+ continue
255
+ try:
256
+ result_data = json.loads(tool_call["result"])
257
+ for item in result_data.get("results", []):
258
+ if idx := item.get("index"):
259
+ web_search_results[idx] = {
260
+ "url": item.get("url"),
261
+ "title": item.get("title"),
262
+ "snippet": item.get("snippet"),
263
+ }
264
+ except (json.JSONDecodeError, KeyError):
265
+ pass
266
+
267
+ if not web_search_results:
268
+ return {}
269
+
270
+ # 从文本中提取所有 <ref>xxx</ref> 标签并去重
271
+ ref_indices = {
272
+ m.strip() for m in re.findall(r"<ref>(.*?)</ref>", accumulated_text)
273
+ }
274
+
275
+ # 构建被引用的结果列表
276
+ used_refs = []
277
+ for ref_index in ref_indices:
278
+ if ref_index not in web_search_results:
279
+ continue
280
+ payload = {"index": ref_index, **web_search_results[ref_index]}
281
+ if favicon := sp.temorary_cache.get("_ws_favicon", {}).get(payload["url"]):
282
+ payload["favicon"] = favicon
283
+ used_refs.append(payload)
284
+
285
+ return {"used": used_refs} if used_refs else {}
286
+
228
287
  async def _save_bot_message(
229
288
  self,
230
289
  webchat_conv_id: str,
@@ -232,6 +291,7 @@ class ChatRoute(Route):
232
291
  media_parts: list,
233
292
  reasoning: str,
234
293
  agent_stats: dict,
294
+ refs: dict,
235
295
  ):
236
296
  """保存 bot 消息到历史记录,返回保存的记录"""
237
297
  bot_message_parts = []
@@ -244,6 +304,8 @@ class ChatRoute(Route):
244
304
  new_his["reasoning"] = reasoning
245
305
  if agent_stats:
246
306
  new_his["agent_stats"] = agent_stats
307
+ if refs:
308
+ new_his["refs"] = refs
247
309
 
248
310
  record = await self.platform_history_mgr.insert(
249
311
  platform_id="webchat",
@@ -305,6 +367,7 @@ class ChatRoute(Route):
305
367
  accumulated_reasoning = ""
306
368
  tool_calls = {}
307
369
  agent_stats = {}
370
+ refs = {}
308
371
  try:
309
372
  async with track_conversation(self.running_convs, webchat_conv_id):
310
373
  while True:
@@ -426,12 +489,26 @@ class ChatRoute(Route):
426
489
  or chain_type == "tool_call_result"
427
490
  ):
428
491
  continue
492
+
493
+ # 提取 web_search_tavily 引用
494
+ try:
495
+ refs = self._extract_web_search_refs(
496
+ accumulated_text,
497
+ accumulated_parts,
498
+ )
499
+ except Exception as e:
500
+ logger.exception(
501
+ f"Failed to extract web search refs: {e}",
502
+ exc_info=True,
503
+ )
504
+
429
505
  saved_record = await self._save_bot_message(
430
506
  webchat_conv_id,
431
507
  accumulated_text,
432
508
  accumulated_parts,
433
509
  accumulated_reasoning,
434
510
  agent_stats,
511
+ refs,
435
512
  )
436
513
  # 发送保存的消息信息给前端
437
514
  if saved_record and not client_disconnected:
@@ -451,6 +528,7 @@ class ChatRoute(Route):
451
528
  accumulated_reasoning = ""
452
529
  # tool_calls = {}
453
530
  agent_stats = {}
531
+ refs = {}
454
532
  except BaseException as e:
455
533
  logger.exception(f"WebChat stream unexpected error: {e}", exc_info=True)
456
534
 
@@ -0,0 +1,6 @@
1
+ ## What's Changed
2
+
3
+ - fix: 只跳过 AstrBot 预设的位于开头的 System Message,防止一些非预期行为。
4
+ - feat: 优化 ChatUI 默认的 System Message
5
+ - feat: 新增 tool 调用时 `on_using_llm_tool`、tool 调用后 `on_llm_tool_respond` 的事件钩子。
6
+ - feat: 优化 ChatUI 对 Tavily 网页搜索工具的渲染,支持内联搜索引用、引用网页。
@@ -55,6 +55,7 @@
55
55
  @openImagePreview="openImagePreview"
56
56
  @replyMessage="handleReplyMessage"
57
57
  @replyWithText="handleReplyWithText"
58
+ @openRefs="handleOpenRefs"
58
59
  ref="messageList" />
59
60
  <div class="message-list-fade" :class="{ 'fade-dark': isDark }"></div>
60
61
  </div>
@@ -146,6 +147,8 @@
146
147
  />
147
148
  </div>
148
149
 
150
+ <!-- Refs Sidebar -->
151
+ <RefsSidebar v-model="refsSidebarOpen" :refs="refsSidebarRefs" />
149
152
  </div>
150
153
  </v-card-text>
151
154
  </v-card>
@@ -198,6 +201,7 @@ import ChatInput from '@/components/chat/ChatInput.vue';
198
201
  import ProjectDialog from '@/components/chat/ProjectDialog.vue';
199
202
  import ProjectView from '@/components/chat/ProjectView.vue';
200
203
  import WelcomeView from '@/components/chat/WelcomeView.vue';
204
+ import RefsSidebar from '@/components/chat/message_list_comps/RefsSidebar.vue';
201
205
  import type { ProjectFormData } from '@/components/chat/ProjectDialog.vue';
202
206
  import { useSessions } from '@/composables/useSessions';
203
207
  import { useMessages } from '@/composables/useMessages';
@@ -406,6 +410,21 @@ function handleReplyWithText(replyData: any) {
406
410
  };
407
411
  }
408
412
 
413
+ // Refs Sidebar 状态
414
+ const refsSidebarOpen = ref(false);
415
+ const refsSidebarRefs = ref<any>(null);
416
+
417
+ function handleOpenRefs(refs: any) {
418
+ // 如果sidebar已打开且点击的是同一个refs,则关闭
419
+ if (refsSidebarOpen.value && refsSidebarRefs.value === refs) {
420
+ refsSidebarOpen.value = false;
421
+ } else {
422
+ // 否则打开sidebar并更新refs
423
+ refsSidebarRefs.value = refs;
424
+ refsSidebarOpen.value = true;
425
+ }
426
+ }
427
+
409
428
  async function handleSelectConversation(sessionIds: string[]) {
410
429
  if (!sessionIds[0]) return;
411
430
 
@@ -215,7 +215,6 @@ function handleDeleteConversation(session: Session) {
215
215
  display: flex;
216
216
  flex-direction: column;
217
217
  padding: 0;
218
- border-right: 1px solid rgba(0, 0, 0, 0.04);
219
218
  height: 100%;
220
219
  max-height: 100%;
221
220
  position: relative;