AstrBot 4.5.0__tar.gz → 4.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (608) hide show
  1. {astrbot-4.5.0 → astrbot-4.5.1}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +4 -3
  2. {astrbot-4.5.0 → astrbot-4.5.1}/.github/ISSUE_TEMPLATE/bug-report.yml +3 -3
  3. {astrbot-4.5.0 → astrbot-4.5.1}/.github/workflows/dashboard_ci.yml +1 -1
  4. {astrbot-4.5.0 → astrbot-4.5.1}/PKG-INFO +3 -2
  5. {astrbot-4.5.0 → astrbot-4.5.1}/README.md +1 -1
  6. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/config/default.py +41 -1
  7. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/migration/helper.py +6 -3
  8. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +5 -2
  9. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/manager.py +8 -0
  10. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/openai_source.py +25 -0
  11. astrbot-4.5.1/astrbot/core/provider/sources/xinference_rerank_source.py +108 -0
  12. astrbot-4.5.1/astrbot/core/provider/sources/xinference_stt_provider.py +187 -0
  13. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/context.py +16 -13
  14. astrbot-4.5.1/changelogs/v4.5.1.md +7 -0
  15. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ExtensionCard.vue +15 -1
  16. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ExtensionPage.vue +3 -3
  17. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/provider.py +5 -1
  18. {astrbot-4.5.0 → astrbot-4.5.1}/pyproject.toml +2 -1
  19. astrbot-4.5.1/requirements.txt +54 -0
  20. astrbot-4.5.0/requirements.txt +0 -51
  21. {astrbot-4.5.0 → astrbot-4.5.1}/.dockerignore +0 -0
  22. {astrbot-4.5.0 → astrbot-4.5.1}/.github/FUNDING.yml +0 -0
  23. {astrbot-4.5.0 → astrbot-4.5.1}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  24. {astrbot-4.5.0 → astrbot-4.5.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  25. {astrbot-4.5.0 → astrbot-4.5.1}/.github/auto_assign.yml +0 -0
  26. {astrbot-4.5.0 → astrbot-4.5.1}/.github/copilot-instructions.md +0 -0
  27. {astrbot-4.5.0 → astrbot-4.5.1}/.github/dependabot.yml +0 -0
  28. {astrbot-4.5.0 → astrbot-4.5.1}/.github/workflows/auto_release.yml +0 -0
  29. {astrbot-4.5.0 → astrbot-4.5.1}/.github/workflows/code-format.yml +0 -0
  30. {astrbot-4.5.0 → astrbot-4.5.1}/.github/workflows/codeql.yml +0 -0
  31. {astrbot-4.5.0 → astrbot-4.5.1}/.github/workflows/coverage_test.yml +0 -0
  32. {astrbot-4.5.0 → astrbot-4.5.1}/.github/workflows/docker-image.yml +0 -0
  33. {astrbot-4.5.0 → astrbot-4.5.1}/.github/workflows/stale.yml +0 -0
  34. {astrbot-4.5.0 → astrbot-4.5.1}/.gitignore +0 -0
  35. {astrbot-4.5.0 → astrbot-4.5.1}/.pre-commit-config.yaml +0 -0
  36. {astrbot-4.5.0 → astrbot-4.5.1}/.python-version +0 -0
  37. {astrbot-4.5.0 → astrbot-4.5.1}/CODE_OF_CONDUCT.md +0 -0
  38. {astrbot-4.5.0 → astrbot-4.5.1}/Dockerfile +0 -0
  39. {astrbot-4.5.0 → astrbot-4.5.1}/Dockerfile_with_node +0 -0
  40. {astrbot-4.5.0 → astrbot-4.5.1}/LICENSE +0 -0
  41. {astrbot-4.5.0 → astrbot-4.5.1}/README_en.md +0 -0
  42. {astrbot-4.5.0 → astrbot-4.5.1}/README_ja.md +0 -0
  43. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/__init__.py +0 -0
  44. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/__init__.py +0 -0
  45. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/all.py +0 -0
  46. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/event/__init__.py +0 -0
  47. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/event/filter/__init__.py +0 -0
  48. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/message_components.py +0 -0
  49. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/platform/__init__.py +0 -0
  50. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/provider/__init__.py +0 -0
  51. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/star/__init__.py +0 -0
  52. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/api/util/__init__.py +0 -0
  53. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/__init__.py +0 -0
  54. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/__main__.py +0 -0
  55. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/commands/__init__.py +0 -0
  56. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/commands/cmd_conf.py +0 -0
  57. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/commands/cmd_init.py +0 -0
  58. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/commands/cmd_plug.py +0 -0
  59. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/commands/cmd_run.py +0 -0
  60. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/utils/__init__.py +0 -0
  61. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/utils/basic.py +0 -0
  62. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/utils/plugin.py +0 -0
  63. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/cli/utils/version_comparator.py +0 -0
  64. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/__init__.py +0 -0
  65. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/agent.py +0 -0
  66. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/handoff.py +0 -0
  67. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/hooks.py +0 -0
  68. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/mcp_client.py +0 -0
  69. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/response.py +0 -0
  70. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/run_context.py +0 -0
  71. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/runners/__init__.py +0 -0
  72. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/runners/base.py +0 -0
  73. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/runners/tool_loop_agent_runner.py +0 -0
  74. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/tool.py +0 -0
  75. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/agent/tool_executor.py +0 -0
  76. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/astr_agent_context.py +0 -0
  77. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/astrbot_config_mgr.py +0 -0
  78. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/config/__init__.py +0 -0
  79. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/config/astrbot_config.py +0 -0
  80. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/conversation_mgr.py +0 -0
  81. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/core_lifecycle.py +0 -0
  82. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/__init__.py +0 -0
  83. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
  84. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/migration/migra_45_to_46.py +0 -0
  85. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/migration/shared_preferences_v3.py +0 -0
  86. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/migration/sqlite_v3.py +0 -0
  87. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/po.py +0 -0
  88. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/sqlite.py +0 -0
  89. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/vec_db/base.py +0 -0
  90. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/vec_db/faiss_impl/__init__.py +0 -0
  91. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
  92. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
  93. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
  94. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +0 -0
  95. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/event_bus.py +0 -0
  96. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/file_token_service.py +0 -0
  97. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/initial_loader.py +0 -0
  98. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/chunking/__init__.py +0 -0
  99. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/chunking/base.py +0 -0
  100. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/chunking/fixed_size.py +0 -0
  101. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/chunking/recursive.py +0 -0
  102. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/kb_db_sqlite.py +0 -0
  103. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/kb_helper.py +0 -0
  104. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/kb_mgr.py +0 -0
  105. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/models.py +0 -0
  106. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/parsers/__init__.py +0 -0
  107. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/parsers/base.py +0 -0
  108. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/parsers/markitdown_parser.py +0 -0
  109. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/parsers/pdf_parser.py +0 -0
  110. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/parsers/text_parser.py +0 -0
  111. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/parsers/util.py +0 -0
  112. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/retrieval/__init__.py +0 -0
  113. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +0 -0
  114. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/retrieval/manager.py +0 -0
  115. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/retrieval/rank_fusion.py +0 -0
  116. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/knowledge_base/retrieval/sparse_retriever.py +0 -0
  117. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/log.py +0 -0
  118. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/message/components.py +0 -0
  119. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/message/message_event_result.py +0 -0
  120. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/persona_mgr.py +0 -0
  121. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/__init__.py +0 -0
  122. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
  123. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
  124. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
  125. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
  126. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
  127. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/context.py +0 -0
  128. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/context_utils.py +0 -0
  129. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
  130. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/process_stage/method/llm_request.py +0 -0
  131. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
  132. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/process_stage/stage.py +0 -0
  133. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/process_stage/utils.py +0 -0
  134. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
  135. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/respond/stage.py +0 -0
  136. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
  137. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/scheduler.py +0 -0
  138. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
  139. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/stage.py +0 -0
  140. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/waking_check/stage.py +0 -0
  141. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
  142. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/__init__.py +0 -0
  143. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/astr_message_event.py +0 -0
  144. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/astrbot_message.py +0 -0
  145. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/manager.py +0 -0
  146. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/message_session.py +0 -0
  147. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/message_type.py +0 -0
  148. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/platform.py +0 -0
  149. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/platform_metadata.py +0 -0
  150. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/register.py +0 -0
  151. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
  152. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +0 -0
  153. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +0 -0
  154. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/discord/client.py +0 -0
  155. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/discord/components.py +0 -0
  156. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
  157. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/discord/discord_platform_event.py +0 -0
  158. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
  159. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
  160. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/misskey/misskey_adapter.py +0 -0
  161. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/misskey/misskey_api.py +0 -0
  162. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/misskey/misskey_event.py +0 -0
  163. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/misskey/misskey_utils.py +0 -0
  164. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +0 -0
  165. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
  166. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
  167. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
  168. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
  169. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
  170. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
  171. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/slack/client.py +0 -0
  172. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/slack/slack_adapter.py +0 -0
  173. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/slack/slack_event.py +0 -0
  174. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/telegram/tg_adapter.py +0 -0
  175. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/telegram/tg_event.py +0 -0
  176. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
  177. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
  178. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +0 -0
  179. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +0 -0
  180. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +0 -0
  181. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +0 -0
  182. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
  183. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
  184. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom/wecom_kf.py +0 -0
  185. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +0 -0
  186. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +0 -0
  187. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/__init__.py +0 -0
  188. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/ierror.py +0 -0
  189. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +0 -0
  190. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +0 -0
  191. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +0 -0
  192. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +0 -0
  193. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +0 -0
  194. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +0 -0
  195. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +0 -0
  196. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -0
  197. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/platform_message_history_mgr.py +0 -0
  198. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/__init__.py +0 -0
  199. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/entites.py +0 -0
  200. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/entities.py +0 -0
  201. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/func_tool_manager.py +0 -0
  202. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/provider.py +0 -0
  203. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/register.py +0 -0
  204. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/anthropic_source.py +0 -0
  205. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
  206. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/coze_api_client.py +0 -0
  207. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/coze_source.py +0 -0
  208. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/dashscope_source.py +0 -0
  209. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
  210. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/dify_source.py +0 -0
  211. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
  212. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +0 -0
  213. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
  214. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/gemini_source.py +0 -0
  215. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
  216. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
  217. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
  218. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
  219. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
  220. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
  221. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
  222. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
  223. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
  224. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
  225. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
  226. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/provider/sources/zhipu_source.py +0 -0
  227. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/README.md +0 -0
  228. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/__init__.py +0 -0
  229. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/config.py +0 -0
  230. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/__init__.py +0 -0
  231. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/command.py +0 -0
  232. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/command_group.py +0 -0
  233. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/custom_filter.py +0 -0
  234. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/event_message_type.py +0 -0
  235. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/permission.py +0 -0
  236. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
  237. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/filter/regex.py +0 -0
  238. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/register/__init__.py +0 -0
  239. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/register/star.py +0 -0
  240. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/register/star_handler.py +0 -0
  241. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/session_llm_manager.py +0 -0
  242. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/session_plugin_manager.py +0 -0
  243. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/star.py +0 -0
  244. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/star_handler.py +0 -0
  245. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/star_manager.py +0 -0
  246. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/star_tools.py +0 -0
  247. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/star/updator.py +0 -0
  248. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/umop_config_router.py +0 -0
  249. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/updator.py +0 -0
  250. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/astrbot_path.py +0 -0
  251. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/command_parser.py +0 -0
  252. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/dify_api_client.py +0 -0
  253. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/io.py +0 -0
  254. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/log_pipe.py +0 -0
  255. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/metrics.py +0 -0
  256. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/path_util.py +0 -0
  257. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/pip_installer.py +0 -0
  258. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/session_lock.py +0 -0
  259. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/session_waiter.py +0 -0
  260. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/shared_preferences.py +0 -0
  261. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/t2i/__init__.py +0 -0
  262. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/t2i/local_strategy.py +0 -0
  263. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/t2i/network_strategy.py +0 -0
  264. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/t2i/renderer.py +0 -0
  265. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
  266. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/t2i/template/base.html +0 -0
  267. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/t2i/template_manager.py +0 -0
  268. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/tencent_record_helper.py +0 -0
  269. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/utils/version_comparator.py +0 -0
  270. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/core/zip_updator.py +0 -0
  271. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/__init__.py +0 -0
  272. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/auth.py +0 -0
  273. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/chat.py +0 -0
  274. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/config.py +0 -0
  275. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/conversation.py +0 -0
  276. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/file.py +0 -0
  277. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/knowledge_base.py +0 -0
  278. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/log.py +0 -0
  279. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/persona.py +0 -0
  280. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/plugin.py +0 -0
  281. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/route.py +0 -0
  282. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/session_management.py +0 -0
  283. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/stat.py +0 -0
  284. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/static_file.py +0 -0
  285. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/t2i.py +0 -0
  286. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/tools.py +0 -0
  287. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/routes/update.py +0 -0
  288. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/server.py +0 -0
  289. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot/dashboard/utils.py +0 -0
  290. {astrbot-4.5.0 → astrbot-4.5.1}/astrbot.lock +0 -0
  291. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.0.md +0 -0
  292. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.1.md +0 -0
  293. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.10.md +0 -0
  294. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.11.md +0 -0
  295. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.12.md +0 -0
  296. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.13.md +0 -0
  297. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.14.md +0 -0
  298. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.15.md +0 -0
  299. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.16.md +0 -0
  300. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.17.md +0 -0
  301. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.18.md +0 -0
  302. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.19.md +0 -0
  303. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.20.md +0 -0
  304. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.21.md +0 -0
  305. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.22.md +0 -0
  306. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.23.md +0 -0
  307. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.24.md +0 -0
  308. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.25.md +0 -0
  309. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.26.md +0 -0
  310. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.27.md +0 -0
  311. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.28.md +0 -0
  312. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.29.md +0 -0
  313. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.3.md +0 -0
  314. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.30.md +0 -0
  315. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.31.md +0 -0
  316. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.32.md +0 -0
  317. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.33.md +0 -0
  318. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.35.md +0 -0
  319. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.36.md +0 -0
  320. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.37.md +0 -0
  321. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.38.md +0 -0
  322. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.39.md +0 -0
  323. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.4.md +0 -0
  324. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.5.md +0 -0
  325. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.6.md +0 -0
  326. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.7.md +0 -0
  327. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.8.md +0 -0
  328. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.4.9.md +0 -0
  329. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.0.md +0 -0
  330. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.1.md +0 -0
  331. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.10.md +0 -0
  332. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.11.md +0 -0
  333. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.12.md +0 -0
  334. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.13.md +0 -0
  335. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.14.md +0 -0
  336. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.15.md +0 -0
  337. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.16.md +0 -0
  338. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.17.md +0 -0
  339. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.18.md +0 -0
  340. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.19.md +0 -0
  341. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.2.md +0 -0
  342. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.20.md +0 -0
  343. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.21.md +0 -0
  344. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.22.md +0 -0
  345. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.23.md +0 -0
  346. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.24.md +0 -0
  347. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.25.md +0 -0
  348. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.26.md +0 -0
  349. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.27.md +0 -0
  350. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.3.1.md +0 -0
  351. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.3.2.md +0 -0
  352. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.3.md +0 -0
  353. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.4.md +0 -0
  354. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.5.md +0 -0
  355. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.6.md +0 -0
  356. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.7.md +0 -0
  357. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.8.md +0 -0
  358. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v3.5.9.md +0 -0
  359. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.0.0-beta.3.md +0 -0
  360. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.0.0-beta.4.md +0 -0
  361. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.0.0-beta.5.md +0 -0
  362. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.0.0.md +0 -0
  363. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.0.md +0 -0
  364. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.1.md +0 -0
  365. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.2.md +0 -0
  366. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.3.md +0 -0
  367. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.4.md +0 -0
  368. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.5.md +0 -0
  369. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.6.md +0 -0
  370. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.1.7.md +0 -0
  371. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.2.0.md +0 -0
  372. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.2.1.md +0 -0
  373. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.3.0.md +0 -0
  374. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.3.1.md +0 -0
  375. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.3.2.md +0 -0
  376. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.3.3.md +0 -0
  377. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.3.5.md +0 -0
  378. {astrbot-4.5.0 → astrbot-4.5.1}/changelogs/v4.5.0.md +0 -0
  379. {astrbot-4.5.0 → astrbot-4.5.1}/compose.yml +0 -0
  380. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/.gitignore +0 -0
  381. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/LICENSE +0 -0
  382. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/README.md +0 -0
  383. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/env.d.ts +0 -0
  384. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/index.html +0 -0
  385. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/public/_redirects +0 -0
  386. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/public/favicon.svg +0 -0
  387. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/App.vue +0 -0
  388. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/astrbot_banner.png +0 -0
  389. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
  390. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
  391. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
  392. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
  393. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
  394. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/misskey.png +0 -0
  395. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
  396. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
  397. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
  398. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
  399. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
  400. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
  401. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
  402. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/ConfirmDialog.vue +0 -0
  403. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/chat/Chat.vue +0 -0
  404. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/chat/MessageList.vue +0 -0
  405. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/chat/ProviderModelSelector.vue +0 -0
  406. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/config/AstrBotCoreConfigWrapper.vue +0 -0
  407. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/platform/AddNewPlatform.vue +0 -0
  408. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/provider/AddNewProvider.vue +0 -0
  409. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
  410. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
  411. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
  412. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ItemCard.vue +0 -0
  413. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
  414. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
  415. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
  416. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
  417. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/Logo.vue +0 -0
  418. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
  419. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
  420. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/PersonaForm.vue +0 -0
  421. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
  422. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
  423. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
  424. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ProxySelector.vue +0 -0
  425. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
  426. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
  427. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
  428. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/config.ts +0 -0
  429. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/composables.ts +0 -0
  430. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/loader.ts +0 -0
  431. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
  432. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
  433. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
  434. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
  435. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
  436. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
  437. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
  438. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
  439. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
  440. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
  441. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
  442. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/chat.json +0 -0
  443. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
  444. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
  445. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
  446. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
  447. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
  448. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/knowledge-base/detail.json +0 -0
  449. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/knowledge-base/document.json +0 -0
  450. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/knowledge-base/index.json +0 -0
  451. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
  452. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
  453. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
  454. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
  455. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
  456. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
  457. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
  458. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
  459. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
  460. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
  461. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
  462. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
  463. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
  464. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
  465. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
  466. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
  467. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
  468. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
  469. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
  470. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
  471. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
  472. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/chat.json +0 -0
  473. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
  474. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
  475. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
  476. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
  477. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
  478. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/detail.json +0 -0
  479. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/document.json +0 -0
  480. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/index.json +0 -0
  481. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
  482. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
  483. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
  484. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
  485. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
  486. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
  487. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
  488. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
  489. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
  490. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
  491. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/tools/index.ts +0 -0
  492. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/translations.ts +0 -0
  493. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/types.ts +0 -0
  494. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/i18n/validator.ts +0 -0
  495. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
  496. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/layouts/full/FullLayout.vue +0 -0
  497. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
  498. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
  499. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
  500. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
  501. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/main.ts +0 -0
  502. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/plugins/confirmPlugin.ts +0 -0
  503. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/plugins/vuetify.ts +0 -0
  504. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/router/AuthRoutes.ts +0 -0
  505. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
  506. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/router/MainRoutes.ts +0 -0
  507. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/router/index.ts +0 -0
  508. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/_override.scss +0 -0
  509. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/_variables.scss +0 -0
  510. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VButtons.scss +0 -0
  511. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VCard.scss +0 -0
  512. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VField.scss +0 -0
  513. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VInput.scss +0 -0
  514. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
  515. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
  516. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VShadow.scss +0 -0
  517. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VTabs.scss +0 -0
  518. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/components/_VTextField.scss +0 -0
  519. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/layout/_container.scss +0 -0
  520. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/layout/_sidebar.scss +0 -0
  521. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/pages/_dashboards.scss +0 -0
  522. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/scss/style.scss +0 -0
  523. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/stores/auth.ts +0 -0
  524. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/stores/common.js +0 -0
  525. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/stores/customizer.ts +0 -0
  526. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/stores/toast.js +0 -0
  527. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/theme/DarkTheme.ts +0 -0
  528. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/theme/LightTheme.ts +0 -0
  529. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
  530. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
  531. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
  532. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/utils/platformUtils.js +0 -0
  533. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/utils/providerUtils.js +0 -0
  534. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/utils/toast.js +0 -0
  535. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/AboutPage.vue +0 -0
  536. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/AlkaidPage.vue +0 -0
  537. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ChatBoxPage.vue +0 -0
  538. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ChatPage.vue +0 -0
  539. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ConfigPage.vue +0 -0
  540. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ConsolePage.vue +0 -0
  541. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ConversationPage.vue +0 -0
  542. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/PersonaPage.vue +0 -0
  543. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/PlatformPage.vue +0 -0
  544. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ProviderPage.vue +0 -0
  545. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/SessionManagementPage.vue +0 -0
  546. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/Settings.vue +0 -0
  547. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/ToolUsePage.vue +0 -0
  548. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
  549. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
  550. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/alkaid/Other.vue +0 -0
  551. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
  552. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
  553. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
  554. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
  555. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
  556. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
  557. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
  558. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
  559. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
  560. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
  561. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/knowledge-base/DocumentDetail.vue +0 -0
  562. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/knowledge-base/KBDetail.vue +0 -0
  563. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/knowledge-base/KBList.vue +0 -0
  564. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/knowledge-base/components/DocumentsTab.vue +0 -0
  565. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/knowledge-base/components/RetrievalTab.vue +0 -0
  566. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/knowledge-base/components/SettingsTab.vue +0 -0
  567. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/src/views/knowledge-base/index.vue +0 -0
  568. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/tsconfig.json +0 -0
  569. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/tsconfig.vite-config.json +0 -0
  570. {astrbot-4.5.0 → astrbot-4.5.1}/dashboard/vite.config.ts +0 -0
  571. {astrbot-4.5.0 → astrbot-4.5.1}/main.py +0 -0
  572. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/__init__.py +0 -0
  573. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/admin.py +0 -0
  574. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/alter_cmd.py +0 -0
  575. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/conversation.py +0 -0
  576. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/help.py +0 -0
  577. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/llm.py +0 -0
  578. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/persona.py +0 -0
  579. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/plugin.py +0 -0
  580. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/setunset.py +0 -0
  581. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/sid.py +0 -0
  582. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/t2i.py +0 -0
  583. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/tool.py +0 -0
  584. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/tts.py +0 -0
  585. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/commands/utils/rst_scene.py +0 -0
  586. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/long_term_memory.py +0 -0
  587. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/main.py +0 -0
  588. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/metadata.yaml +0 -0
  589. {astrbot-4.5.0 → astrbot-4.5.1}/packages/astrbot/process_llm_request.py +0 -0
  590. {astrbot-4.5.0 → astrbot-4.5.1}/packages/python_interpreter/main.py +0 -0
  591. {astrbot-4.5.0 → astrbot-4.5.1}/packages/python_interpreter/metadata.yaml +0 -0
  592. {astrbot-4.5.0 → astrbot-4.5.1}/packages/python_interpreter/requirements.txt +0 -0
  593. {astrbot-4.5.0 → astrbot-4.5.1}/packages/python_interpreter/shared/api.py +0 -0
  594. {astrbot-4.5.0 → astrbot-4.5.1}/packages/reminder/main.py +0 -0
  595. {astrbot-4.5.0 → astrbot-4.5.1}/packages/reminder/metadata.yaml +0 -0
  596. {astrbot-4.5.0 → astrbot-4.5.1}/packages/session_controller/main.py +0 -0
  597. {astrbot-4.5.0 → astrbot-4.5.1}/packages/session_controller/metadata.yaml +0 -0
  598. {astrbot-4.5.0 → astrbot-4.5.1}/packages/thinking_filter/main.py +0 -0
  599. {astrbot-4.5.0 → astrbot-4.5.1}/packages/thinking_filter/metadata.yaml +0 -0
  600. {astrbot-4.5.0 → astrbot-4.5.1}/packages/web_searcher/engines/__init__.py +0 -0
  601. {astrbot-4.5.0 → astrbot-4.5.1}/packages/web_searcher/engines/bing.py +0 -0
  602. {astrbot-4.5.0 → astrbot-4.5.1}/packages/web_searcher/engines/sogo.py +0 -0
  603. {astrbot-4.5.0 → astrbot-4.5.1}/packages/web_searcher/main.py +0 -0
  604. {astrbot-4.5.0 → astrbot-4.5.1}/packages/web_searcher/metadata.yaml +0 -0
  605. {astrbot-4.5.0 → astrbot-4.5.1}/samples/stt_health_check.wav +0 -0
  606. {astrbot-4.5.0 → astrbot-4.5.1}/tests/test_dashboard.py +0 -0
  607. {astrbot-4.5.0 → astrbot-4.5.1}/tests/test_main.py +0 -0
  608. {astrbot-4.5.0 → astrbot-4.5.1}/tests/test_plugin_manager.py +0 -0
@@ -26,12 +26,13 @@ body:
26
26
  value: |
27
27
  ```json
28
28
  {
29
- "name": "插件名",
30
- "desc": "插件介绍",
29
+ "name": "插件名,请以 astrbot_plugin_ 开头",
30
+ "display_name": "用于展示的插件名,方便人类阅读",
31
+ "desc": "插件的简短介绍",
31
32
  "author": "作者名",
32
33
  "repo": "插件仓库链接",
33
34
  "tags": [],
34
- "social_link": ""
35
+ "social_link": "",
35
36
  }
36
37
  ```
37
38
  validations:
@@ -6,13 +6,13 @@ body:
6
6
  - type: markdown
7
7
  attributes:
8
8
  value: |
9
- 感谢您抽出时间报告问题!请准确解释您的问题。如果可能,请提供一个可复现的片段(这有助于更快地解决问题)。
9
+ 感谢您抽出时间报告问题!请准确解释您的问题。如果可能,请提供一个可复现的片段(这有助于更快地解决问题)。请注意,不详细 / 没有日志的 issue 会被直接关闭,谢谢理解。
10
10
  - type: textarea
11
11
  attributes:
12
12
  label: 发生了什么
13
13
  description: 描述你遇到的异常
14
14
  placeholder: >
15
- 一个清晰且具体的描述这个异常是什么。
15
+ 一个清晰且具体的描述这个异常是什么。请注意,不详细 / 没有日志的 issue 会被直接关闭,谢谢理解。
16
16
  validations:
17
17
  required: true
18
18
 
@@ -55,7 +55,7 @@ body:
55
55
  attributes:
56
56
  label: 报错日志
57
57
  description: >
58
- 如报错日志、截图等。请提供完整的 Debug 级别的日志,不要介意它很长!
58
+ 如报错日志、截图等。请提供完整的 Debug 级别的日志,不要介意它很长!请注意,不详细 / 没有日志的 issue 会被直接关闭,谢谢理解。
59
59
  placeholder: >
60
60
  请提供完整的报错日志或截图。
61
61
  validations:
@@ -36,7 +36,7 @@ jobs:
36
36
  zip -r dist.zip dist
37
37
 
38
38
  - name: Archive production artifacts
39
- uses: actions/upload-artifact@v4
39
+ uses: actions/upload-artifact@v5
40
40
  with:
41
41
  name: dist-without-markdown
42
42
  path: |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.5.0
3
+ Version: 4.5.1
4
4
  Summary: 易上手的多平台 LLM 聊天机器人及开发框架
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -54,6 +54,7 @@ Requires-Dist: telegramify-markdown>=0.5.1
54
54
  Requires-Dist: watchfiles>=1.0.5
55
55
  Requires-Dist: websockets>=15.0.1
56
56
  Requires-Dist: wechatpy>=1.8.18
57
+ Requires-Dist: xinference-client
57
58
  Description-Content-Type: text/markdown
58
59
 
59
60
  ![AstrBot-Logo-Simplified](https://github.com/user-attachments/assets/ffd99b6b-3272-4682-beaa-6fe74250f7d9)
@@ -66,7 +67,7 @@ Description-Content-Type: text/markdown
66
67
 
67
68
  <div>
68
69
  <a href="https://trendshift.io/repositories/12875" target="_blank"><img src="https://trendshift.io/api/badge/repositories/12875" alt="Soulter%2FAstrBot | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
69
- <a href="https://hellogithub.com/repository/AstrBotDevs/AstrBot" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=d127d50cd5e54c5382328acc3bb25483&claim_uid=ZO9by7qCXgSd6Lp" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
70
+ <a href="https://hellogithub.com/repository/AstrBotDevs/AstrBot" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=d127d50cd5e54c5382328acc3bb25483&claim_uid=ZO9by7qCXgSd6Lp&t=1" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
70
71
  </div>
71
72
 
72
73
  <br>
@@ -8,7 +8,7 @@
8
8
 
9
9
  <div>
10
10
  <a href="https://trendshift.io/repositories/12875" target="_blank"><img src="https://trendshift.io/api/badge/repositories/12875" alt="Soulter%2FAstrBot | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
11
- <a href="https://hellogithub.com/repository/AstrBotDevs/AstrBot" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=d127d50cd5e54c5382328acc3bb25483&claim_uid=ZO9by7qCXgSd6Lp" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
11
+ <a href="https://hellogithub.com/repository/AstrBotDevs/AstrBot" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=d127d50cd5e54c5382328acc3bb25483&claim_uid=ZO9by7qCXgSd6Lp&t=1" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
12
12
  </div>
13
13
 
14
14
  <br>
@@ -6,7 +6,7 @@ import os
6
6
 
7
7
  from astrbot.core.utils.astrbot_path import get_astrbot_data_path
8
8
 
9
- VERSION = "4.5.0"
9
+ VERSION = "4.5.1"
10
10
  DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
11
11
 
12
12
  # 默认配置
@@ -324,6 +324,10 @@ CONFIG_METADATA_2 = {
324
324
  # "type": "string",
325
325
  # "options": ["fullscreen", "embedded"],
326
326
  # },
327
+ "is_sandbox": {
328
+ "description": "沙箱模式",
329
+ "type": "bool",
330
+ },
327
331
  "satori_api_base_url": {
328
332
  "description": "Satori API 终结点",
329
333
  "type": "string",
@@ -767,6 +771,7 @@ CONFIG_METADATA_2 = {
767
771
  "timeout": 120,
768
772
  "model_config": {"model": "grok-2-latest", "temperature": 0.4},
769
773
  "custom_extra_body": {},
774
+ "xai_native_search": False,
770
775
  "modalities": ["text", "image", "tool_use"],
771
776
  },
772
777
  "Anthropic": {
@@ -1258,8 +1263,38 @@ CONFIG_METADATA_2 = {
1258
1263
  "rerank_model": "BAAI/bge-reranker-base",
1259
1264
  "timeout": 20,
1260
1265
  },
1266
+ "Xinference Rerank": {
1267
+ "id": "xinference_rerank",
1268
+ "type": "xinference_rerank",
1269
+ "provider": "xinference",
1270
+ "provider_type": "rerank",
1271
+ "enable": True,
1272
+ "rerank_api_key": "",
1273
+ "rerank_api_base": "http://127.0.0.1:9997",
1274
+ "rerank_model": "BAAI/bge-reranker-base",
1275
+ "timeout": 20,
1276
+ "launch_model_if_not_running": False,
1277
+ },
1278
+ "Xinference STT": {
1279
+ "id": "xinference_stt",
1280
+ "type": "xinference_stt",
1281
+ "provider": "xinference",
1282
+ "provider_type": "speech_to_text",
1283
+ "enable": False,
1284
+ "api_key": "",
1285
+ "api_base": "http://127.0.0.1:9997",
1286
+ "model": "whisper-large-v3",
1287
+ "timeout": 180,
1288
+ "launch_model_if_not_running": False,
1289
+ },
1261
1290
  },
1262
1291
  "items": {
1292
+ "xai_native_search": {
1293
+ "description": "启用原生搜索功能",
1294
+ "type": "bool",
1295
+ "hint": "启用后,将通过 xAI 的 Chat Completions 原生 Live Search 进行联网检索(按需计费)。仅对 xAI 提供商生效。",
1296
+ "condition": {"provider": "xai"},
1297
+ },
1263
1298
  "rerank_api_base": {
1264
1299
  "description": "重排序模型 API Base URL",
1265
1300
  "type": "string",
@@ -1274,6 +1309,11 @@ CONFIG_METADATA_2 = {
1274
1309
  "description": "重排序模型名称",
1275
1310
  "type": "string",
1276
1311
  },
1312
+ "launch_model_if_not_running": {
1313
+ "description": "模型未运行时自动启动",
1314
+ "type": "bool",
1315
+ "hint": "如果模型当前未在 Xinference 服务中运行,是否尝试自动启动它。在生产环境中建议关闭。",
1316
+ },
1277
1317
  "modalities": {
1278
1318
  "description": "模型能力",
1279
1319
  "type": "list",
@@ -17,8 +17,11 @@ async def check_migration_needed_v4(db_helper: BaseDatabase) -> bool:
17
17
  检查是否需要进行数据库迁移
18
18
  如果存在 data_v3.db 并且 preference 中没有 migration_done_v4,则需要进行迁移。
19
19
  """
20
- data_v3_exists = os.path.exists(get_astrbot_data_path())
21
- if not data_v3_exists:
20
+ # 仅当 data 目录下存在旧版本数据(data_v3.db 文件)时才考虑迁移
21
+ data_dir = get_astrbot_data_path()
22
+ data_v3_db = os.path.join(data_dir, "data_v3.db")
23
+
24
+ if not os.path.exists(data_v3_db):
22
25
  return False
23
26
  migration_done = await db_helper.get_preference(
24
27
  "global", "global", "migration_done_v4"
@@ -32,7 +35,7 @@ async def do_migration_v4(
32
35
  db_helper: BaseDatabase,
33
36
  platform_id_map: dict[str, dict[str, str]],
34
37
  astrbot_config: AstrBotConfig,
35
- ):
38
+ ) -> None:
36
39
  """
37
40
  执行数据库迁移
38
41
  迁移旧的 webchat_conversation 表到新的 conversation 表。
@@ -100,8 +100,11 @@ class DingtalkPlatformAdapter(Platform):
100
100
  abm.raw_message = message
101
101
 
102
102
  if abm.type == MessageType.GROUP_MESSAGE:
103
- if message.is_in_at_list:
104
- abm.message.append(At(qq=abm.self_id))
103
+ # 处理所有被 @ 的用户(包括机器人自己,因 at_users 已包含)
104
+ if message.at_users:
105
+ for user in message.at_users:
106
+ if user.dingtalk_id:
107
+ abm.message.append(At(qq=user.dingtalk_id))
105
108
  abm.group_id = message.conversation_id
106
109
  if self.unique_session:
107
110
  abm.session_id = abm.sender.user_id
@@ -259,6 +259,10 @@ class ProviderManager:
259
259
  from .sources.whisper_selfhosted_source import (
260
260
  ProviderOpenAIWhisperSelfHost as ProviderOpenAIWhisperSelfHost,
261
261
  )
262
+ case "xinference_stt":
263
+ from .sources.xinference_stt_provider import (
264
+ ProviderXinferenceSTT as ProviderXinferenceSTT,
265
+ )
262
266
  case "openai_tts_api":
263
267
  from .sources.openai_tts_api_source import (
264
268
  ProviderOpenAITTSAPI as ProviderOpenAITTSAPI,
@@ -311,6 +315,10 @@ class ProviderManager:
311
315
  from .sources.vllm_rerank_source import (
312
316
  VLLMRerankProvider as VLLMRerankProvider,
313
317
  )
318
+ case "xinference_rerank":
319
+ from .sources.xinference_rerank_source import (
320
+ XinferenceRerankProvider as XinferenceRerankProvider,
321
+ )
314
322
  except (ImportError, ModuleNotFoundError) as e:
315
323
  logger.critical(
316
324
  f"加载 {provider_config['type']}({provider_config['id']}) 提供商适配器失败:{e}。可能是因为有未安装的依赖。"
@@ -68,6 +68,28 @@ class ProviderOpenAIOfficial(Provider):
68
68
  model = model_config.get("model", "unknown")
69
69
  self.set_model(model)
70
70
 
71
+ def _maybe_inject_xai_search(self, payloads: dict, **kwargs):
72
+ """当开启 xAI 原生搜索时,向请求体注入 Live Search 参数。
73
+
74
+ - 仅在 provider_config.xai_native_search 为 True 时生效
75
+ - 默认注入 {"mode": "auto"}
76
+ - 允许通过 kwargs 使用 xai_search_mode 覆盖(on/auto/off)
77
+ """
78
+ if not bool(self.provider_config.get("xai_native_search", False)):
79
+ return
80
+
81
+ mode = kwargs.get("xai_search_mode", "auto")
82
+ mode = str(mode).lower()
83
+ if mode not in ("auto", "on", "off"):
84
+ mode = "auto"
85
+
86
+ # off 时不注入,保持与未开启一致
87
+ if mode == "off":
88
+ return
89
+
90
+ # OpenAI SDK 不识别的字段会在 _query/_query_stream 中放入 extra_body
91
+ payloads["search_parameters"] = {"mode": mode}
92
+
71
93
  async def get_models(self):
72
94
  try:
73
95
  models_str = []
@@ -271,6 +293,9 @@ class ProviderOpenAIOfficial(Provider):
271
293
 
272
294
  payloads = {"messages": context_query, **model_config}
273
295
 
296
+ # xAI 原生搜索参数(最小侵入地在此处注入)
297
+ self._maybe_inject_xai_search(payloads, **kwargs)
298
+
274
299
  return payloads, context_query
275
300
 
276
301
  async def _handle_api_error(
@@ -0,0 +1,108 @@
1
+ from xinference_client.client.restful.async_restful_client import (
2
+ AsyncClient as Client,
3
+ )
4
+ from astrbot import logger
5
+ from ..provider import RerankProvider
6
+ from ..register import register_provider_adapter
7
+ from ..entities import ProviderType, RerankResult
8
+
9
+
10
+ @register_provider_adapter(
11
+ "xinference_rerank",
12
+ "Xinference Rerank 适配器",
13
+ provider_type=ProviderType.RERANK,
14
+ )
15
+ class XinferenceRerankProvider(RerankProvider):
16
+ def __init__(self, provider_config: dict, provider_settings: dict) -> None:
17
+ super().__init__(provider_config, provider_settings)
18
+ self.provider_config = provider_config
19
+ self.provider_settings = provider_settings
20
+ self.base_url = provider_config.get("rerank_api_base", "http://127.0.0.1:8000")
21
+ self.base_url = self.base_url.rstrip("/")
22
+ self.timeout = provider_config.get("timeout", 20)
23
+ self.model_name = provider_config.get("rerank_model", "BAAI/bge-reranker-base")
24
+ self.api_key = provider_config.get("rerank_api_key")
25
+ self.launch_model_if_not_running = provider_config.get(
26
+ "launch_model_if_not_running", False
27
+ )
28
+ self.client = None
29
+ self.model = None
30
+ self.model_uid = None
31
+
32
+ async def initialize(self):
33
+ if self.api_key:
34
+ logger.info("Xinference Rerank: Using API key for authentication.")
35
+ self.client = Client(self.base_url, api_key=self.api_key)
36
+ else:
37
+ logger.info("Xinference Rerank: No API key provided.")
38
+ self.client = Client(self.base_url)
39
+
40
+ try:
41
+ running_models = await self.client.list_models()
42
+ for uid, model_spec in running_models.items():
43
+ if model_spec.get("model_name") == self.model_name:
44
+ logger.info(
45
+ f"Model '{self.model_name}' is already running with UID: {uid}"
46
+ )
47
+ self.model_uid = uid
48
+ break
49
+
50
+ if self.model_uid is None:
51
+ if self.launch_model_if_not_running:
52
+ logger.info(f"Launching {self.model_name} model...")
53
+ self.model_uid = await self.client.launch_model(
54
+ model_name=self.model_name, model_type="rerank"
55
+ )
56
+ logger.info("Model launched.")
57
+ else:
58
+ logger.warning(
59
+ f"Model '{self.model_name}' is not running and auto-launch is disabled. Provider will not be available."
60
+ )
61
+ return
62
+
63
+ if self.model_uid:
64
+ self.model = await self.client.get_model(self.model_uid)
65
+
66
+ except Exception as e:
67
+ logger.error(f"Failed to initialize Xinference model: {e}")
68
+ logger.debug(
69
+ f"Xinference initialization failed with exception: {e}", exc_info=True
70
+ )
71
+ self.model = None
72
+
73
+ async def rerank(
74
+ self, query: str, documents: list[str], top_n: int | None = None
75
+ ) -> list[RerankResult]:
76
+ if not self.model:
77
+ logger.error("Xinference rerank model is not initialized.")
78
+ return []
79
+ try:
80
+ response = await self.model.rerank(documents, query, top_n)
81
+ results = response.get("results", [])
82
+ logger.debug(f"Rerank API response: {response}")
83
+
84
+ if not results:
85
+ logger.warning(
86
+ f"Rerank API returned an empty list. Original response: {response}"
87
+ )
88
+
89
+ return [
90
+ RerankResult(
91
+ index=result["index"],
92
+ relevance_score=result["relevance_score"],
93
+ )
94
+ for result in results
95
+ ]
96
+ except Exception as e:
97
+ logger.error(f"Xinference rerank failed: {e}")
98
+ logger.debug(f"Xinference rerank failed with exception: {e}", exc_info=True)
99
+ return []
100
+
101
+ async def terminate(self) -> None:
102
+ """关闭客户端会话"""
103
+ if self.client:
104
+ logger.info("Closing Xinference rerank client...")
105
+ try:
106
+ await self.client.close()
107
+ except Exception as e:
108
+ logger.error(f"Failed to close Xinference client: {e}", exc_info=True)
@@ -0,0 +1,187 @@
1
+ import uuid
2
+ import os
3
+ import aiohttp
4
+ from xinference_client.client.restful.async_restful_client import (
5
+ AsyncClient as Client,
6
+ )
7
+ from ..provider import STTProvider
8
+ from ..entities import ProviderType
9
+ from ..register import register_provider_adapter
10
+ from astrbot.core import logger
11
+ from astrbot.core.utils.tencent_record_helper import tencent_silk_to_wav
12
+ from astrbot.core.utils.astrbot_path import get_astrbot_data_path
13
+
14
+
15
+ @register_provider_adapter(
16
+ "xinference_stt",
17
+ "Xinference STT",
18
+ provider_type=ProviderType.SPEECH_TO_TEXT,
19
+ )
20
+ class ProviderXinferenceSTT(STTProvider):
21
+ def __init__(self, provider_config: dict, provider_settings: dict) -> None:
22
+ super().__init__(provider_config, provider_settings)
23
+ self.provider_config = provider_config
24
+ self.provider_settings = provider_settings
25
+ self.base_url = provider_config.get("api_base", "http://127.0.0.1:9997")
26
+ self.base_url = self.base_url.rstrip("/")
27
+ self.timeout = provider_config.get("timeout", 180)
28
+ self.model_name = provider_config.get("model", "whisper-large-v3")
29
+ self.api_key = provider_config.get("api_key")
30
+ self.launch_model_if_not_running = provider_config.get(
31
+ "launch_model_if_not_running", False
32
+ )
33
+ self.client = None
34
+ self.model_uid = None
35
+
36
+ async def initialize(self):
37
+ if self.api_key:
38
+ logger.info("Xinference STT: Using API key for authentication.")
39
+ self.client = Client(self.base_url, api_key=self.api_key)
40
+ else:
41
+ logger.info("Xinference STT: No API key provided.")
42
+ self.client = Client(self.base_url)
43
+
44
+ try:
45
+ running_models = await self.client.list_models()
46
+ for uid, model_spec in running_models.items():
47
+ if model_spec.get("model_name") == self.model_name:
48
+ logger.info(
49
+ f"Model '{self.model_name}' is already running with UID: {uid}"
50
+ )
51
+ self.model_uid = uid
52
+ break
53
+
54
+ if self.model_uid is None:
55
+ if self.launch_model_if_not_running:
56
+ logger.info(f"Launching {self.model_name} model...")
57
+ self.model_uid = await self.client.launch_model(
58
+ model_name=self.model_name, model_type="audio"
59
+ )
60
+ logger.info("Model launched.")
61
+ else:
62
+ logger.warning(
63
+ f"Model '{self.model_name}' is not running and auto-launch is disabled. Provider will not be available."
64
+ )
65
+ return
66
+
67
+ except Exception as e:
68
+ logger.error(f"Failed to initialize Xinference model: {e}")
69
+ logger.debug(
70
+ f"Xinference initialization failed with exception: {e}", exc_info=True
71
+ )
72
+
73
+ async def get_text(self, audio_url: str) -> str:
74
+ if not self.model_uid or self.client is None or self.client.session is None:
75
+ logger.error("Xinference STT model is not initialized.")
76
+ return ""
77
+
78
+ audio_bytes = None
79
+ temp_files = []
80
+ is_tencent = False
81
+
82
+ try:
83
+ # 1. Get audio bytes
84
+ if audio_url.startswith("http"):
85
+ if "multimedia.nt.qq.com.cn" in audio_url:
86
+ is_tencent = True
87
+ async with aiohttp.ClientSession() as session:
88
+ async with session.get(audio_url, timeout=self.timeout) as resp:
89
+ if resp.status == 200:
90
+ audio_bytes = await resp.read()
91
+ else:
92
+ logger.error(
93
+ f"Failed to download audio from {audio_url}, status: {resp.status}"
94
+ )
95
+ return ""
96
+ else:
97
+ if os.path.exists(audio_url):
98
+ with open(audio_url, "rb") as f:
99
+ audio_bytes = f.read()
100
+ else:
101
+ logger.error(f"File not found: {audio_url}")
102
+ return ""
103
+
104
+ if not audio_bytes:
105
+ logger.error("Audio bytes are empty.")
106
+ return ""
107
+
108
+ # 2. Check for conversion
109
+ needs_conversion = False
110
+ if (
111
+ audio_url.endswith((".amr", ".silk"))
112
+ or is_tencent
113
+ or b"SILK" in audio_bytes[:8]
114
+ ):
115
+ needs_conversion = True
116
+
117
+ # 3. Perform conversion if needed
118
+ if needs_conversion:
119
+ logger.info("Audio requires conversion, using temporary files...")
120
+ temp_dir = os.path.join(get_astrbot_data_path(), "temp")
121
+ os.makedirs(temp_dir, exist_ok=True)
122
+
123
+ input_path = os.path.join(temp_dir, str(uuid.uuid4()))
124
+ output_path = os.path.join(temp_dir, str(uuid.uuid4()) + ".wav")
125
+ temp_files.extend([input_path, output_path])
126
+
127
+ with open(input_path, "wb") as f:
128
+ f.write(audio_bytes)
129
+
130
+ logger.info("Converting silk/amr file to wav ...")
131
+ await tencent_silk_to_wav(input_path, output_path)
132
+
133
+ with open(output_path, "rb") as f:
134
+ audio_bytes = f.read()
135
+
136
+ # 4. Transcribe
137
+ # 官方asyncCLient的客户端似乎实现有点问题,这里直接用aiohttp实现openai标准兼容请求,提交issue等待官方修复后再改回来
138
+ url = f"{self.base_url}/v1/audio/transcriptions"
139
+ headers = {
140
+ "accept": "application/json",
141
+ }
142
+ if self.client and self.client._headers:
143
+ headers.update(self.client._headers)
144
+
145
+ data = aiohttp.FormData()
146
+ data.add_field("model", self.model_uid)
147
+ data.add_field(
148
+ "file", audio_bytes, filename="audio.wav", content_type="audio/wav"
149
+ )
150
+
151
+ async with self.client.session.post(
152
+ url, data=data, headers=headers, timeout=self.timeout
153
+ ) as resp:
154
+ if resp.status == 200:
155
+ result = await resp.json()
156
+ text = result.get("text", "")
157
+ logger.debug(f"Xinference STT result: {text}")
158
+ return text
159
+ else:
160
+ error_text = await resp.text()
161
+ logger.error(
162
+ f"Xinference STT transcription failed with status {resp.status}: {error_text}"
163
+ )
164
+ return ""
165
+
166
+ except Exception as e:
167
+ logger.error(f"Xinference STT failed: {e}")
168
+ logger.debug(f"Xinference STT failed with exception: {e}", exc_info=True)
169
+ return ""
170
+ finally:
171
+ # 5. Cleanup
172
+ for temp_file in temp_files:
173
+ try:
174
+ if os.path.exists(temp_file):
175
+ os.remove(temp_file)
176
+ logger.debug(f"Removed temporary file: {temp_file}")
177
+ except Exception as e:
178
+ logger.error(f"Failed to remove temporary file {temp_file}: {e}")
179
+
180
+ async def terminate(self) -> None:
181
+ """关闭客户端会话"""
182
+ if self.client:
183
+ logger.info("Closing Xinference STT client...")
184
+ try:
185
+ await self.client.close()
186
+ except Exception as e:
187
+ logger.error(f"Failed to close Xinference client: {e}", exc_info=True)
@@ -1,5 +1,4 @@
1
1
  from asyncio import Queue
2
- from typing import List, Union
3
2
 
4
3
  from astrbot.core.provider.provider import (
5
4
  Provider,
@@ -11,7 +10,7 @@ from astrbot.core.provider.provider import (
11
10
  from astrbot.core.provider.entities import ProviderType
12
11
  from astrbot.core.db import BaseDatabase
13
12
  from astrbot.core.config.astrbot_config import AstrBotConfig
14
- from astrbot.core.provider.func_tool_manager import FunctionToolManager
13
+ from astrbot.core.provider.func_tool_manager import FunctionToolManager, FunctionTool
15
14
  from astrbot.core.platform.astr_message_event import MessageSesion
16
15
  from astrbot.core.message.message_event_result import MessageChain
17
16
  from astrbot.core.provider.manager import ProviderManager
@@ -25,7 +24,8 @@ from .star import star_registry, StarMetadata, star_map
25
24
  from .star_handler import star_handlers_registry, StarHandlerMetadata, EventType
26
25
  from .filter.command import CommandFilter
27
26
  from .filter.regex import RegexFilter
28
- from typing import Awaitable, Any, Callable
27
+ from typing import Any
28
+ from collections.abc import Awaitable, Callable
29
29
  from astrbot.core.conversation_mgr import ConversationManager
30
30
  from astrbot.core.star.filter.platform_adapter_type import (
31
31
  PlatformAdapterType,
@@ -42,7 +42,7 @@ class Context:
42
42
  registered_web_apis: list = []
43
43
 
44
44
  # back compatibility
45
- _register_tasks: List[Awaitable] = []
45
+ _register_tasks: list[Awaitable] = []
46
46
  _star_manager = None
47
47
 
48
48
  def __init__(
@@ -78,7 +78,7 @@ class Context:
78
78
  if star.name == star_name:
79
79
  return star
80
80
 
81
- def get_all_stars(self) -> List[StarMetadata]:
81
+ def get_all_stars(self) -> list[StarMetadata]:
82
82
  """获取当前载入的所有插件 Metadata 的列表"""
83
83
  return star_registry
84
84
 
@@ -116,19 +116,19 @@ class Context:
116
116
  prov = self.provider_manager.inst_map.get(provider_id)
117
117
  return prov
118
118
 
119
- def get_all_providers(self) -> List[Provider]:
119
+ def get_all_providers(self) -> list[Provider]:
120
120
  """获取所有用于文本生成任务的 LLM Provider(Chat_Completion 类型)。"""
121
121
  return self.provider_manager.provider_insts
122
122
 
123
- def get_all_tts_providers(self) -> List[TTSProvider]:
123
+ def get_all_tts_providers(self) -> list[TTSProvider]:
124
124
  """获取所有用于 TTS 任务的 Provider。"""
125
125
  return self.provider_manager.tts_provider_insts
126
126
 
127
- def get_all_stt_providers(self) -> List[STTProvider]:
127
+ def get_all_stt_providers(self) -> list[STTProvider]:
128
128
  """获取所有用于 STT 任务的 Provider。"""
129
129
  return self.provider_manager.stt_provider_insts
130
130
 
131
- def get_all_embedding_providers(self) -> List[EmbeddingProvider]:
131
+ def get_all_embedding_providers(self) -> list[EmbeddingProvider]:
132
132
  """获取所有用于 Embedding 任务的 Provider。"""
133
133
  return self.provider_manager.embedding_provider_insts
134
134
 
@@ -196,9 +196,7 @@ class Context:
196
196
  return self._event_queue
197
197
 
198
198
  @deprecated(version="4.0.0", reason="Use get_platform_inst instead")
199
- def get_platform(
200
- self, platform_type: Union[PlatformAdapterType, str]
201
- ) -> Platform | None:
199
+ def get_platform(self, platform_type: PlatformAdapterType | str) -> Platform | None:
202
200
  """
203
201
  获取指定类型的平台适配器。
204
202
 
@@ -231,7 +229,7 @@ class Context:
231
229
  return platform
232
230
 
233
231
  async def send_message(
234
- self, session: Union[str, MessageSesion], message_chain: MessageChain
232
+ self, session: str | MessageSesion, message_chain: MessageChain
235
233
  ) -> bool:
236
234
  """
237
235
  根据 session(unified_msg_origin) 主动发送消息。
@@ -258,6 +256,11 @@ class Context:
258
256
  return True
259
257
  return False
260
258
 
259
+ def add_llm_tools(self, *tools: FunctionTool) -> None:
260
+ """添加 LLM 工具。"""
261
+ for tool in tools:
262
+ self.provider_manager.llm_tools.func_list.append(tool)
263
+
261
264
  """
262
265
  以下的方法已经不推荐使用。请从 AstrBot 文档查看更好的注册方式。
263
266
  """