AstrBot 4.7.3__tar.gz → 4.7.4__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 (652) hide show
  1. {astrbot-4.7.3 → astrbot-4.7.4}/.gitignore +2 -0
  2. {astrbot-4.7.3 → astrbot-4.7.4}/PKG-INFO +1 -1
  3. astrbot-4.7.4/astrbot/cli/__init__.py +1 -0
  4. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/message.py +21 -5
  5. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/config/default.py +56 -1
  6. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/message/components.py +6 -1
  7. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +64 -5
  8. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +15 -2
  9. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +1 -1
  10. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/telegram/tg_adapter.py +3 -1
  11. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/provider.py +35 -0
  12. astrbot-4.7.4/astrbot/core/utils/file_extract.py +23 -0
  13. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/config.py +13 -165
  14. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/plugin.py +65 -6
  15. astrbot-4.7.4/changelogs/v4.7.4.md +7 -0
  16. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/config-metadata.json +21 -1
  17. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/extension.json +5 -2
  18. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json +31 -3
  19. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/extension.json +5 -2
  20. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ExtensionPage.vue +61 -0
  21. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/provider.py +139 -19
  22. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/long_term_memory.py +13 -7
  23. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/main.py +2 -5
  24. {astrbot-4.7.3 → astrbot-4.7.4}/pyproject.toml +1 -1
  25. astrbot-4.7.3/astrbot/cli/__init__.py +0 -1
  26. {astrbot-4.7.3 → astrbot-4.7.4}/.dockerignore +0 -0
  27. {astrbot-4.7.3 → astrbot-4.7.4}/.github/FUNDING.yml +0 -0
  28. {astrbot-4.7.3 → astrbot-4.7.4}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
  29. {astrbot-4.7.3 → astrbot-4.7.4}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  30. {astrbot-4.7.3 → astrbot-4.7.4}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  31. {astrbot-4.7.3 → astrbot-4.7.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  32. {astrbot-4.7.3 → astrbot-4.7.4}/.github/auto_assign.yml +0 -0
  33. {astrbot-4.7.3 → astrbot-4.7.4}/.github/copilot-instructions.md +0 -0
  34. {astrbot-4.7.3 → astrbot-4.7.4}/.github/dependabot.yml +0 -0
  35. {astrbot-4.7.3 → astrbot-4.7.4}/.github/workflows/auto_release.yml +0 -0
  36. {astrbot-4.7.3 → astrbot-4.7.4}/.github/workflows/code-format.yml +0 -0
  37. {astrbot-4.7.3 → astrbot-4.7.4}/.github/workflows/codeql.yml +0 -0
  38. {astrbot-4.7.3 → astrbot-4.7.4}/.github/workflows/coverage_test.yml +0 -0
  39. {astrbot-4.7.3 → astrbot-4.7.4}/.github/workflows/dashboard_ci.yml +0 -0
  40. {astrbot-4.7.3 → astrbot-4.7.4}/.github/workflows/docker-image.yml +0 -0
  41. {astrbot-4.7.3 → astrbot-4.7.4}/.github/workflows/stale.yml +0 -0
  42. {astrbot-4.7.3 → astrbot-4.7.4}/.pre-commit-config.yaml +0 -0
  43. {astrbot-4.7.3 → astrbot-4.7.4}/.python-version +0 -0
  44. {astrbot-4.7.3 → astrbot-4.7.4}/CODE_OF_CONDUCT.md +0 -0
  45. {astrbot-4.7.3 → astrbot-4.7.4}/Dockerfile +0 -0
  46. {astrbot-4.7.3 → astrbot-4.7.4}/LICENSE +0 -0
  47. {astrbot-4.7.3 → astrbot-4.7.4}/README.md +0 -0
  48. {astrbot-4.7.3 → astrbot-4.7.4}/README_en.md +0 -0
  49. {astrbot-4.7.3 → astrbot-4.7.4}/README_ja.md +0 -0
  50. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/__init__.py +0 -0
  51. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/__init__.py +0 -0
  52. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/all.py +0 -0
  53. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/event/__init__.py +0 -0
  54. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/event/filter/__init__.py +0 -0
  55. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/message_components.py +0 -0
  56. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/platform/__init__.py +0 -0
  57. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/provider/__init__.py +0 -0
  58. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/star/__init__.py +0 -0
  59. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/api/util/__init__.py +0 -0
  60. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/__main__.py +0 -0
  61. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/commands/__init__.py +0 -0
  62. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/commands/cmd_conf.py +0 -0
  63. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/commands/cmd_init.py +0 -0
  64. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/commands/cmd_plug.py +0 -0
  65. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/commands/cmd_run.py +0 -0
  66. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/utils/__init__.py +0 -0
  67. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/utils/basic.py +0 -0
  68. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/utils/plugin.py +0 -0
  69. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/cli/utils/version_comparator.py +0 -0
  70. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/__init__.py +0 -0
  71. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/agent.py +0 -0
  72. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/handoff.py +0 -0
  73. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/hooks.py +0 -0
  74. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/mcp_client.py +0 -0
  75. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/response.py +0 -0
  76. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/run_context.py +0 -0
  77. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/__init__.py +0 -0
  78. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/base.py +0 -0
  79. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/coze/coze_agent_runner.py +0 -0
  80. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/coze/coze_api_client.py +0 -0
  81. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py +0 -0
  82. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/dify/dify_agent_runner.py +0 -0
  83. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/dify/dify_api_client.py +0 -0
  84. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/runners/tool_loop_agent_runner.py +0 -0
  85. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/tool.py +0 -0
  86. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/agent/tool_executor.py +0 -0
  87. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/astr_agent_context.py +0 -0
  88. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/astr_agent_hooks.py +0 -0
  89. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/astr_agent_run_util.py +0 -0
  90. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/astr_agent_tool_exec.py +0 -0
  91. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/astrbot_config_mgr.py +0 -0
  92. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/config/__init__.py +0 -0
  93. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/config/astrbot_config.py +0 -0
  94. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/config/i18n_utils.py +0 -0
  95. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/conversation_mgr.py +0 -0
  96. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/core_lifecycle.py +0 -0
  97. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/__init__.py +0 -0
  98. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/migration/helper.py +0 -0
  99. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
  100. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/migration/migra_45_to_46.py +0 -0
  101. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/migration/migra_webchat_session.py +0 -0
  102. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/migration/shared_preferences_v3.py +0 -0
  103. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/migration/sqlite_v3.py +0 -0
  104. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/po.py +0 -0
  105. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/sqlite.py +0 -0
  106. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/vec_db/base.py +0 -0
  107. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/vec_db/faiss_impl/__init__.py +0 -0
  108. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
  109. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
  110. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
  111. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +0 -0
  112. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/event_bus.py +0 -0
  113. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/exceptions.py +0 -0
  114. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/file_token_service.py +0 -0
  115. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/initial_loader.py +0 -0
  116. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/chunking/__init__.py +0 -0
  117. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/chunking/base.py +0 -0
  118. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/chunking/fixed_size.py +0 -0
  119. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/chunking/recursive.py +0 -0
  120. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/kb_db_sqlite.py +0 -0
  121. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/kb_helper.py +0 -0
  122. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/kb_mgr.py +0 -0
  123. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/models.py +0 -0
  124. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/parsers/__init__.py +0 -0
  125. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/parsers/base.py +0 -0
  126. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/parsers/markitdown_parser.py +0 -0
  127. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/parsers/pdf_parser.py +0 -0
  128. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/parsers/text_parser.py +0 -0
  129. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/parsers/url_parser.py +0 -0
  130. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/parsers/util.py +0 -0
  131. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/prompts.py +0 -0
  132. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/retrieval/__init__.py +0 -0
  133. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +0 -0
  134. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/retrieval/manager.py +0 -0
  135. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/retrieval/rank_fusion.py +0 -0
  136. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/knowledge_base/retrieval/sparse_retriever.py +0 -0
  137. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/log.py +0 -0
  138. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/message/message_event_result.py +0 -0
  139. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/persona_mgr.py +0 -0
  140. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/__init__.py +0 -0
  141. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
  142. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
  143. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
  144. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
  145. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
  146. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/context.py +0 -0
  147. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/context_utils.py +0 -0
  148. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
  149. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/process_stage/method/agent_request.py +0 -0
  150. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py +0 -0
  151. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
  152. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/process_stage/stage.py +0 -0
  153. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/process_stage/utils.py +0 -0
  154. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
  155. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/respond/stage.py +0 -0
  156. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
  157. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/scheduler.py +0 -0
  158. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
  159. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/stage.py +0 -0
  160. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/waking_check/stage.py +0 -0
  161. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
  162. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/__init__.py +0 -0
  163. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/astr_message_event.py +0 -0
  164. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/astrbot_message.py +0 -0
  165. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/manager.py +0 -0
  166. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/message_session.py +0 -0
  167. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/message_type.py +0 -0
  168. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/platform.py +0 -0
  169. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/platform_metadata.py +0 -0
  170. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/register.py +0 -0
  171. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
  172. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +0 -0
  173. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/discord/client.py +0 -0
  174. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/discord/components.py +0 -0
  175. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
  176. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/discord/discord_platform_event.py +0 -0
  177. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
  178. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
  179. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/misskey/misskey_adapter.py +0 -0
  180. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/misskey/misskey_api.py +0 -0
  181. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/misskey/misskey_event.py +0 -0
  182. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/misskey/misskey_utils.py +0 -0
  183. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +0 -0
  184. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
  185. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
  186. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
  187. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
  188. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
  189. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
  190. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/slack/client.py +0 -0
  191. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/slack/slack_adapter.py +0 -0
  192. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/slack/slack_event.py +0 -0
  193. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/telegram/tg_event.py +0 -0
  194. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
  195. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
  196. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +0 -0
  197. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +0 -0
  198. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +0 -0
  199. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +0 -0
  200. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
  201. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
  202. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom/wecom_kf.py +0 -0
  203. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +0 -0
  204. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +0 -0
  205. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/__init__.py +0 -0
  206. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/ierror.py +0 -0
  207. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +0 -0
  208. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +0 -0
  209. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +0 -0
  210. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +0 -0
  211. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +0 -0
  212. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +0 -0
  213. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +0 -0
  214. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -0
  215. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/platform_message_history_mgr.py +0 -0
  216. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/__init__.py +0 -0
  217. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/entites.py +0 -0
  218. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/entities.py +0 -0
  219. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/func_tool_manager.py +0 -0
  220. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/manager.py +0 -0
  221. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/register.py +0 -0
  222. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/anthropic_source.py +0 -0
  223. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
  224. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/bailian_rerank_source.py +0 -0
  225. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
  226. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
  227. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +0 -0
  228. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
  229. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/gemini_source.py +0 -0
  230. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
  231. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/groq_source.py +0 -0
  232. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
  233. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
  234. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
  235. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
  236. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/openai_source.py +0 -0
  237. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
  238. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
  239. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
  240. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
  241. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
  242. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
  243. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/xinference_rerank_source.py +0 -0
  244. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/xinference_stt_provider.py +0 -0
  245. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/provider/sources/zhipu_source.py +0 -0
  246. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/README.md +0 -0
  247. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/__init__.py +0 -0
  248. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/config.py +0 -0
  249. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/context.py +0 -0
  250. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/__init__.py +0 -0
  251. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/command.py +0 -0
  252. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/command_group.py +0 -0
  253. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/custom_filter.py +0 -0
  254. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/event_message_type.py +0 -0
  255. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/permission.py +0 -0
  256. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
  257. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/filter/regex.py +0 -0
  258. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/register/__init__.py +0 -0
  259. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/register/star.py +0 -0
  260. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/register/star_handler.py +0 -0
  261. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/session_llm_manager.py +0 -0
  262. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/session_plugin_manager.py +0 -0
  263. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/star.py +0 -0
  264. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/star_handler.py +0 -0
  265. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/star_manager.py +0 -0
  266. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/star_tools.py +0 -0
  267. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/star/updator.py +0 -0
  268. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/umop_config_router.py +0 -0
  269. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/updator.py +0 -0
  270. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/astrbot_path.py +0 -0
  271. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/command_parser.py +0 -0
  272. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/io.py +0 -0
  273. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/log_pipe.py +0 -0
  274. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/metrics.py +0 -0
  275. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/migra_helper.py +0 -0
  276. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/path_util.py +0 -0
  277. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/pip_installer.py +0 -0
  278. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/session_lock.py +0 -0
  279. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/session_waiter.py +0 -0
  280. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/shared_preferences.py +0 -0
  281. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/t2i/__init__.py +0 -0
  282. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/t2i/local_strategy.py +0 -0
  283. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/t2i/network_strategy.py +0 -0
  284. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/t2i/renderer.py +0 -0
  285. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
  286. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/t2i/template/base.html +0 -0
  287. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/t2i/template_manager.py +0 -0
  288. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/tencent_record_helper.py +0 -0
  289. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/utils/version_comparator.py +0 -0
  290. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/core/zip_updator.py +0 -0
  291. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/__init__.py +0 -0
  292. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/auth.py +0 -0
  293. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/chat.py +0 -0
  294. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/conversation.py +0 -0
  295. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/file.py +0 -0
  296. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/knowledge_base.py +0 -0
  297. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/log.py +0 -0
  298. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/persona.py +0 -0
  299. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/route.py +0 -0
  300. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/session_management.py +0 -0
  301. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/stat.py +0 -0
  302. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/static_file.py +0 -0
  303. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/t2i.py +0 -0
  304. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/tools.py +0 -0
  305. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/routes/update.py +0 -0
  306. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/server.py +0 -0
  307. {astrbot-4.7.3 → astrbot-4.7.4}/astrbot/dashboard/utils.py +0 -0
  308. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.0.md +0 -0
  309. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.1.md +0 -0
  310. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.10.md +0 -0
  311. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.11.md +0 -0
  312. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.12.md +0 -0
  313. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.13.md +0 -0
  314. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.14.md +0 -0
  315. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.15.md +0 -0
  316. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.16.md +0 -0
  317. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.17.md +0 -0
  318. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.18.md +0 -0
  319. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.19.md +0 -0
  320. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.20.md +0 -0
  321. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.21.md +0 -0
  322. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.22.md +0 -0
  323. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.23.md +0 -0
  324. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.24.md +0 -0
  325. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.25.md +0 -0
  326. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.26.md +0 -0
  327. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.27.md +0 -0
  328. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.28.md +0 -0
  329. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.29.md +0 -0
  330. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.3.md +0 -0
  331. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.30.md +0 -0
  332. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.31.md +0 -0
  333. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.32.md +0 -0
  334. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.33.md +0 -0
  335. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.35.md +0 -0
  336. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.36.md +0 -0
  337. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.37.md +0 -0
  338. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.38.md +0 -0
  339. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.39.md +0 -0
  340. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.4.md +0 -0
  341. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.5.md +0 -0
  342. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.6.md +0 -0
  343. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.7.md +0 -0
  344. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.8.md +0 -0
  345. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.4.9.md +0 -0
  346. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.0.md +0 -0
  347. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.1.md +0 -0
  348. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.10.md +0 -0
  349. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.11.md +0 -0
  350. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.12.md +0 -0
  351. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.13.md +0 -0
  352. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.14.md +0 -0
  353. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.15.md +0 -0
  354. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.16.md +0 -0
  355. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.17.md +0 -0
  356. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.18.md +0 -0
  357. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.19.md +0 -0
  358. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.2.md +0 -0
  359. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.20.md +0 -0
  360. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.21.md +0 -0
  361. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.22.md +0 -0
  362. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.23.md +0 -0
  363. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.24.md +0 -0
  364. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.25.md +0 -0
  365. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.26.md +0 -0
  366. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.27.md +0 -0
  367. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.3.1.md +0 -0
  368. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.3.2.md +0 -0
  369. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.3.md +0 -0
  370. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.4.md +0 -0
  371. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.5.md +0 -0
  372. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.6.md +0 -0
  373. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.7.md +0 -0
  374. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.8.md +0 -0
  375. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v3.5.9.md +0 -0
  376. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.0.0-beta.3.md +0 -0
  377. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.0.0-beta.4.md +0 -0
  378. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.0.0-beta.5.md +0 -0
  379. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.0.0.md +0 -0
  380. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.0.md +0 -0
  381. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.1.md +0 -0
  382. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.2.md +0 -0
  383. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.3.md +0 -0
  384. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.4.md +0 -0
  385. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.5.md +0 -0
  386. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.6.md +0 -0
  387. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.1.7.md +0 -0
  388. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.2.0.md +0 -0
  389. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.2.1.md +0 -0
  390. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.3.0.md +0 -0
  391. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.3.1.md +0 -0
  392. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.3.2.md +0 -0
  393. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.3.3.md +0 -0
  394. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.3.5.md +0 -0
  395. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.0.md +0 -0
  396. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.1.md +0 -0
  397. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.2.md +0 -0
  398. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.3.md +0 -0
  399. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.4.md +0 -0
  400. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.5.md +0 -0
  401. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.6.md +0 -0
  402. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.7.md +0 -0
  403. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.5.8.md +0 -0
  404. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.6.0.md +0 -0
  405. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.6.1.md +0 -0
  406. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.7.0.md +0 -0
  407. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.7.1.md +0 -0
  408. {astrbot-4.7.3 → astrbot-4.7.4}/changelogs/v4.7.3.md +0 -0
  409. {astrbot-4.7.3 → astrbot-4.7.4}/compose.yml +0 -0
  410. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/.gitignore +0 -0
  411. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/LICENSE +0 -0
  412. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/README.md +0 -0
  413. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/env.d.ts +0 -0
  414. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/index.html +0 -0
  415. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/public/_redirects +0 -0
  416. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/public/favicon.svg +0 -0
  417. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/App.vue +0 -0
  418. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/astrbot_banner.png +0 -0
  419. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
  420. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/icon-no-shadow.svg +0 -0
  421. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
  422. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
  423. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
  424. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
  425. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/misskey.png +0 -0
  426. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
  427. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
  428. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
  429. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
  430. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
  431. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
  432. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
  433. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/assets/images/plugin_icon.png +0 -0
  434. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/ConfirmDialog.vue +0 -0
  435. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/chat/Chat.vue +0 -0
  436. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/chat/ChatInput.vue +0 -0
  437. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/chat/ConfigSelector.vue +0 -0
  438. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/chat/ConversationSidebar.vue +0 -0
  439. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/chat/MessageList.vue +0 -0
  440. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/chat/ProviderModelSelector.vue +0 -0
  441. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/chat/StandaloneChat.vue +0 -0
  442. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/config/AstrBotCoreConfigWrapper.vue +0 -0
  443. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/platform/AddNewPlatform.vue +0 -0
  444. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/provider/AddNewProvider.vue +0 -0
  445. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
  446. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
  447. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
  448. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
  449. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ItemCard.vue +0 -0
  450. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
  451. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
  452. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
  453. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
  454. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/Logo.vue +0 -0
  455. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
  456. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
  457. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/PersonaForm.vue +0 -0
  458. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
  459. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
  460. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
  461. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ProxySelector.vue +0 -0
  462. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
  463. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/SidebarCustomizer.vue +0 -0
  464. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
  465. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/UninstallConfirmDialog.vue +0 -0
  466. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
  467. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/composables/useConversations.ts +0 -0
  468. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/composables/useMediaHandling.ts +0 -0
  469. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/composables/useMessages.ts +0 -0
  470. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/composables/useRecording.ts +0 -0
  471. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/composables/useSessions.ts +0 -0
  472. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/config.ts +0 -0
  473. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/composables.ts +0 -0
  474. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/loader.ts +0 -0
  475. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
  476. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
  477. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
  478. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
  479. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/core/shared.json +0 -0
  480. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
  481. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
  482. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
  483. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
  484. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
  485. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
  486. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
  487. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/chat.json +0 -0
  488. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
  489. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
  490. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
  491. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
  492. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/knowledge-base/detail.json +0 -0
  493. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/knowledge-base/document.json +0 -0
  494. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/knowledge-base/index.json +0 -0
  495. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
  496. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
  497. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
  498. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
  499. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
  500. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
  501. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
  502. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
  503. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
  504. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
  505. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
  506. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
  507. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
  508. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
  509. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/core/shared.json +0 -0
  510. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
  511. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
  512. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
  513. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
  514. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
  515. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
  516. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
  517. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/chat.json +0 -0
  518. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
  519. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
  520. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
  521. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
  522. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/detail.json +0 -0
  523. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/document.json +0 -0
  524. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/index.json +0 -0
  525. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
  526. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
  527. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
  528. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
  529. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
  530. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
  531. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
  532. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
  533. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
  534. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
  535. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/tools/index.ts +0 -0
  536. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/translations.ts +0 -0
  537. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/types.ts +0 -0
  538. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/i18n/validator.ts +0 -0
  539. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
  540. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/layouts/full/FullLayout.vue +0 -0
  541. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
  542. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
  543. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
  544. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
  545. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/main.ts +0 -0
  546. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/plugins/confirmPlugin.ts +0 -0
  547. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/plugins/vuetify.ts +0 -0
  548. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/router/AuthRoutes.ts +0 -0
  549. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
  550. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/router/MainRoutes.ts +0 -0
  551. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/router/index.ts +0 -0
  552. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/_override.scss +0 -0
  553. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/_variables.scss +0 -0
  554. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VButtons.scss +0 -0
  555. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VCard.scss +0 -0
  556. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VField.scss +0 -0
  557. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VInput.scss +0 -0
  558. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
  559. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
  560. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VShadow.scss +0 -0
  561. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VTabs.scss +0 -0
  562. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/components/_VTextField.scss +0 -0
  563. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/layout/_container.scss +0 -0
  564. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/layout/_sidebar.scss +0 -0
  565. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/pages/_dashboards.scss +0 -0
  566. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/scss/style.scss +0 -0
  567. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/stores/auth.ts +0 -0
  568. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/stores/common.js +0 -0
  569. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/stores/customizer.ts +0 -0
  570. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/stores/toast.js +0 -0
  571. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/theme/DarkTheme.ts +0 -0
  572. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/theme/LightTheme.ts +0 -0
  573. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
  574. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
  575. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
  576. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/utils/platformUtils.js +0 -0
  577. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/utils/providerUtils.js +0 -0
  578. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/utils/sidebarCustomization.js +0 -0
  579. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/utils/toast.js +0 -0
  580. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/AboutPage.vue +0 -0
  581. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/AlkaidPage.vue +0 -0
  582. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ChatBoxPage.vue +0 -0
  583. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ChatPage.vue +0 -0
  584. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ConfigPage.vue +0 -0
  585. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ConsolePage.vue +0 -0
  586. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ConversationPage.vue +0 -0
  587. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/PersonaPage.vue +0 -0
  588. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/PlatformPage.vue +0 -0
  589. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ProviderPage.vue +0 -0
  590. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/SessionManagementPage.vue +0 -0
  591. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/Settings.vue +0 -0
  592. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/ToolUsePage.vue +0 -0
  593. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
  594. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
  595. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/alkaid/Other.vue +0 -0
  596. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
  597. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
  598. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
  599. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
  600. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
  601. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
  602. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
  603. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
  604. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
  605. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
  606. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/DocumentDetail.vue +0 -0
  607. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/KBDetail.vue +0 -0
  608. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/KBList.vue +0 -0
  609. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/components/DocumentsTab.vue +0 -0
  610. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/components/RetrievalTab.vue +0 -0
  611. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/components/SettingsTab.vue +0 -0
  612. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/components/TavilyKeyDialog.vue +0 -0
  613. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/src/views/knowledge-base/index.vue +0 -0
  614. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/tsconfig.json +0 -0
  615. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/tsconfig.vite-config.json +0 -0
  616. {astrbot-4.7.3 → astrbot-4.7.4}/dashboard/vite.config.ts +0 -0
  617. {astrbot-4.7.3 → astrbot-4.7.4}/main.py +0 -0
  618. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/__init__.py +0 -0
  619. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/admin.py +0 -0
  620. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/alter_cmd.py +0 -0
  621. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/conversation.py +0 -0
  622. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/help.py +0 -0
  623. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/llm.py +0 -0
  624. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/persona.py +0 -0
  625. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/plugin.py +0 -0
  626. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/setunset.py +0 -0
  627. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/sid.py +0 -0
  628. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/t2i.py +0 -0
  629. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/tool.py +0 -0
  630. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/tts.py +0 -0
  631. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/commands/utils/rst_scene.py +0 -0
  632. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/metadata.yaml +0 -0
  633. {astrbot-4.7.3 → astrbot-4.7.4}/packages/astrbot/process_llm_request.py +0 -0
  634. {astrbot-4.7.3 → astrbot-4.7.4}/packages/python_interpreter/main.py +0 -0
  635. {astrbot-4.7.3 → astrbot-4.7.4}/packages/python_interpreter/metadata.yaml +0 -0
  636. {astrbot-4.7.3 → astrbot-4.7.4}/packages/python_interpreter/requirements.txt +0 -0
  637. {astrbot-4.7.3 → astrbot-4.7.4}/packages/python_interpreter/shared/api.py +0 -0
  638. {astrbot-4.7.3 → astrbot-4.7.4}/packages/reminder/main.py +0 -0
  639. {astrbot-4.7.3 → astrbot-4.7.4}/packages/reminder/metadata.yaml +0 -0
  640. {astrbot-4.7.3 → astrbot-4.7.4}/packages/session_controller/main.py +0 -0
  641. {astrbot-4.7.3 → astrbot-4.7.4}/packages/session_controller/metadata.yaml +0 -0
  642. {astrbot-4.7.3 → astrbot-4.7.4}/packages/web_searcher/engines/__init__.py +0 -0
  643. {astrbot-4.7.3 → astrbot-4.7.4}/packages/web_searcher/engines/bing.py +0 -0
  644. {astrbot-4.7.3 → astrbot-4.7.4}/packages/web_searcher/engines/sogo.py +0 -0
  645. {astrbot-4.7.3 → astrbot-4.7.4}/packages/web_searcher/main.py +0 -0
  646. {astrbot-4.7.3 → astrbot-4.7.4}/packages/web_searcher/metadata.yaml +0 -0
  647. {astrbot-4.7.3 → astrbot-4.7.4}/requirements.txt +0 -0
  648. {astrbot-4.7.3 → astrbot-4.7.4}/samples/stt_health_check.wav +0 -0
  649. {astrbot-4.7.3 → astrbot-4.7.4}/tests/test_dashboard.py +0 -0
  650. {astrbot-4.7.3 → astrbot-4.7.4}/tests/test_main.py +0 -0
  651. {astrbot-4.7.3 → astrbot-4.7.4}/tests/test_plugin_manager.py +0 -0
  652. {astrbot-4.7.3 → astrbot-4.7.4}/tests/test_security_fixes.py +0 -0
@@ -48,3 +48,5 @@ astrbot.lock
48
48
  chroma
49
49
  venv/*
50
50
  pytest.ini
51
+ AGENTS.md
52
+ IFLOW.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.7.3
3
+ Version: 4.7.4
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
@@ -0,0 +1 @@
1
+ __version__ = "4.7.4"
@@ -3,7 +3,7 @@
3
3
 
4
4
  from typing import Any, ClassVar, Literal, cast
5
5
 
6
- from pydantic import BaseModel, GetCoreSchemaHandler
6
+ from pydantic import BaseModel, GetCoreSchemaHandler, model_validator
7
7
  from pydantic_core import core_schema
8
8
 
9
9
 
@@ -145,23 +145,39 @@ class Message(BaseModel):
145
145
  "tool",
146
146
  ]
147
147
 
148
- content: str | list[ContentPart]
148
+ content: str | list[ContentPart] | None = None
149
149
  """The content of the message."""
150
150
 
151
+ tool_calls: list[ToolCall] | list[dict] | None = None
152
+ """The tool calls of the message."""
153
+
154
+ tool_call_id: str | None = None
155
+ """The ID of the tool call."""
156
+
157
+ @model_validator(mode="after")
158
+ def check_content_required(self):
159
+ # assistant + tool_calls is not None: allow content to be None
160
+ if self.role == "assistant" and self.tool_calls is not None:
161
+ return self
162
+
163
+ # other all cases: content is required
164
+ if self.content is None:
165
+ raise ValueError(
166
+ "content is required unless role='assistant' and tool_calls is not None"
167
+ )
168
+ return self
169
+
151
170
 
152
171
  class AssistantMessageSegment(Message):
153
172
  """A message segment from the assistant."""
154
173
 
155
174
  role: Literal["assistant"] = "assistant"
156
- content: str | list[ContentPart] | None = None
157
- tool_calls: list[ToolCall] | list[dict] | None = None
158
175
 
159
176
 
160
177
  class ToolCallMessageSegment(Message):
161
178
  """A message segment representing a tool call."""
162
179
 
163
180
  role: Literal["tool"] = "tool"
164
- tool_call_id: str
165
181
 
166
182
 
167
183
  class UserMessageSegment(Message):
@@ -4,7 +4,7 @@ import os
4
4
 
5
5
  from astrbot.core.utils.astrbot_path import get_astrbot_data_path
6
6
 
7
- VERSION = "4.7.3"
7
+ VERSION = "4.7.4"
8
8
  DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
9
9
 
10
10
  # 默认配置
@@ -73,8 +73,14 @@ DEFAULT_CONFIG = {
73
73
  "coze_agent_runner_provider_id": "",
74
74
  "dashscope_agent_runner_provider_id": "",
75
75
  "unsupported_streaming_strategy": "realtime_segmenting",
76
+ "reachability_check": False,
76
77
  "max_agent_step": 30,
77
78
  "tool_call_timeout": 60,
79
+ "file_extract": {
80
+ "enable": False,
81
+ "provider": "moonshotai",
82
+ "moonshotai_api_key": "",
83
+ },
78
84
  },
79
85
  "provider_stt_settings": {
80
86
  "enable": False,
@@ -2068,6 +2074,20 @@ CONFIG_METADATA_2 = {
2068
2074
  "tool_call_timeout": {
2069
2075
  "type": "int",
2070
2076
  },
2077
+ "file_extract": {
2078
+ "type": "object",
2079
+ "items": {
2080
+ "enable": {
2081
+ "type": "bool",
2082
+ },
2083
+ "provider": {
2084
+ "type": "string",
2085
+ },
2086
+ "moonshotai_api_key": {
2087
+ "type": "string",
2088
+ },
2089
+ },
2090
+ },
2071
2091
  },
2072
2092
  },
2073
2093
  "provider_stt_settings": {
@@ -2402,6 +2422,36 @@ CONFIG_METADATA_3 = {
2402
2422
  "provider_settings.enable": True,
2403
2423
  },
2404
2424
  },
2425
+ # "file_extract": {
2426
+ # "description": "文档解析能力 [beta]",
2427
+ # "type": "object",
2428
+ # "items": {
2429
+ # "provider_settings.file_extract.enable": {
2430
+ # "description": "启用文档解析能力",
2431
+ # "type": "bool",
2432
+ # },
2433
+ # "provider_settings.file_extract.provider": {
2434
+ # "description": "文档解析提供商",
2435
+ # "type": "string",
2436
+ # "options": ["moonshotai"],
2437
+ # "condition": {
2438
+ # "provider_settings.file_extract.enable": True,
2439
+ # },
2440
+ # },
2441
+ # "provider_settings.file_extract.moonshotai_api_key": {
2442
+ # "description": "Moonshot AI API Key",
2443
+ # "type": "string",
2444
+ # "condition": {
2445
+ # "provider_settings.file_extract.provider": "moonshotai",
2446
+ # "provider_settings.file_extract.enable": True,
2447
+ # },
2448
+ # },
2449
+ # },
2450
+ # "condition": {
2451
+ # "provider_settings.agent_runner_type": "local",
2452
+ # "provider_settings.enable": True,
2453
+ # },
2454
+ # },
2405
2455
  "others": {
2406
2456
  "description": "其他配置",
2407
2457
  "type": "object",
@@ -2496,6 +2546,11 @@ CONFIG_METADATA_3 = {
2496
2546
  "description": "开启 TTS 时同时输出语音和文字内容",
2497
2547
  "type": "bool",
2498
2548
  },
2549
+ "provider_settings.reachability_check": {
2550
+ "description": "提供商可达性检测",
2551
+ "type": "bool",
2552
+ "hint": "/provider 命令列出模型时是否并发检测连通性。开启后会主动调用模型测试连通性,可能产生额外 token 消耗。",
2553
+ },
2499
2554
  },
2500
2555
  "condition": {
2501
2556
  "provider_settings.enable": True,
@@ -722,7 +722,12 @@ class File(BaseMessageComponent):
722
722
  """下载文件"""
723
723
  download_dir = os.path.join(get_astrbot_data_path(), "temp")
724
724
  os.makedirs(download_dir, exist_ok=True)
725
- file_path = os.path.join(download_dir, f"{uuid.uuid4().hex}")
725
+ if self.name:
726
+ name, ext = os.path.splitext(self.name)
727
+ filename = f"{name}_{uuid.uuid4().hex[:8]}{ext}"
728
+ else:
729
+ filename = f"{uuid.uuid4().hex}"
730
+ file_path = os.path.join(download_dir, filename)
726
731
  await download_file(self.url, file_path)
727
732
  self.file_ = os.path.abspath(file_path)
728
733
 
@@ -9,7 +9,7 @@ from astrbot.core import logger
9
9
  from astrbot.core.agent.tool import ToolSet
10
10
  from astrbot.core.astr_agent_context import AstrAgentContext
11
11
  from astrbot.core.conversation_mgr import Conversation
12
- from astrbot.core.message.components import Image
12
+ from astrbot.core.message.components import File, Image, Reply
13
13
  from astrbot.core.message.message_event_result import (
14
14
  MessageChain,
15
15
  MessageEventResult,
@@ -22,6 +22,7 @@ from astrbot.core.provider.entities import (
22
22
  ProviderRequest,
23
23
  )
24
24
  from astrbot.core.star.star_handler import EventType, star_map
25
+ from astrbot.core.utils.file_extract import extract_file_moonshotai
25
26
  from astrbot.core.utils.metrics import Metric
26
27
  from astrbot.core.utils.session_lock import session_lock_manager
27
28
 
@@ -56,6 +57,13 @@ class InternalAgentSubStage(Stage):
56
57
  self.show_reasoning = settings.get("display_reasoning_text", False)
57
58
  self.kb_agentic_mode: bool = conf.get("kb_agentic_mode", False)
58
59
 
60
+ file_extract_conf: dict = settings.get("file_extract", {})
61
+ self.file_extract_enabled: bool = file_extract_conf.get("enable", False)
62
+ self.file_extract_prov: str = file_extract_conf.get("provider", "moonshotai")
63
+ self.file_extract_msh_api_key: str = file_extract_conf.get(
64
+ "moonshotai_api_key", ""
65
+ )
66
+
59
67
  self.conv_manager = ctx.plugin_manager.context.conversation_manager
60
68
 
61
69
  def _select_provider(self, event: AstrMessageEvent):
@@ -114,6 +122,50 @@ class InternalAgentSubStage(Stage):
114
122
  req.func_tool = ToolSet()
115
123
  req.func_tool.add_tool(KNOWLEDGE_BASE_QUERY_TOOL)
116
124
 
125
+ async def _apply_file_extract(
126
+ self,
127
+ event: AstrMessageEvent,
128
+ req: ProviderRequest,
129
+ ):
130
+ """Apply file extract to the provider request"""
131
+ file_paths = []
132
+ file_names = []
133
+ for comp in event.message_obj.message:
134
+ if isinstance(comp, File):
135
+ file_paths.append(await comp.get_file())
136
+ file_names.append(comp.name)
137
+ elif isinstance(comp, Reply) and comp.chain:
138
+ for reply_comp in comp.chain:
139
+ if isinstance(reply_comp, File):
140
+ file_paths.append(await reply_comp.get_file())
141
+ file_names.append(reply_comp.name)
142
+ if not file_paths:
143
+ return
144
+ if not req.prompt:
145
+ req.prompt = "总结一下文件里面讲了什么?"
146
+ if self.file_extract_prov == "moonshotai":
147
+ if not self.file_extract_msh_api_key:
148
+ logger.error("Moonshot AI API key for file extract is not set")
149
+ return
150
+ file_contents = await asyncio.gather(
151
+ *[
152
+ extract_file_moonshotai(file_path, self.file_extract_msh_api_key)
153
+ for file_path in file_paths
154
+ ]
155
+ )
156
+ else:
157
+ logger.error(f"Unsupported file extract provider: {self.file_extract_prov}")
158
+ return
159
+
160
+ # add file extract results to contexts
161
+ for file_content, file_name in zip(file_contents, file_names):
162
+ req.contexts.append(
163
+ {
164
+ "role": "system",
165
+ "content": f"File Extract Results of user uploaded files:\n{file_content}\nFile Name: {file_name or 'Unknown'}",
166
+ },
167
+ )
168
+
117
169
  def _truncate_contexts(
118
170
  self,
119
171
  contexts: list[dict],
@@ -346,6 +398,17 @@ class InternalAgentSubStage(Stage):
346
398
 
347
399
  event.set_extra("provider_request", req)
348
400
 
401
+ # fix contexts json str
402
+ if isinstance(req.contexts, str):
403
+ req.contexts = json.loads(req.contexts)
404
+
405
+ # apply file extract
406
+ if self.file_extract_enabled:
407
+ try:
408
+ await self._apply_file_extract(event, req)
409
+ except Exception as e:
410
+ logger.error(f"Error occurred while applying file extract: {e}")
411
+
349
412
  if not req.prompt and not req.image_urls:
350
413
  return
351
414
 
@@ -356,10 +419,6 @@ class InternalAgentSubStage(Stage):
356
419
  # apply knowledge base feature
357
420
  await self._apply_kb(event, req)
358
421
 
359
- # fix contexts json str
360
- if isinstance(req.contexts, str):
361
- req.contexts = json.loads(req.contexts)
362
-
363
422
  # truncate contexts to fit max length
364
423
  if req.contexts:
365
424
  req.contexts = self._truncate_contexts(req.contexts)
@@ -246,7 +246,13 @@ class AiocqhttpAdapter(Platform):
246
246
  if m["data"].get("url") and m["data"].get("url").startswith("http"):
247
247
  # Lagrange
248
248
  logger.info("guessing lagrange")
249
- file_name = m["data"].get("file_name", "file")
249
+ # 检查多个可能的文件名字段
250
+ file_name = (
251
+ m["data"].get("file_name", "")
252
+ or m["data"].get("name", "")
253
+ or m["data"].get("file", "")
254
+ or "file"
255
+ )
250
256
  abm.message.append(File(name=file_name, url=m["data"]["url"]))
251
257
  else:
252
258
  try:
@@ -265,7 +271,14 @@ class AiocqhttpAdapter(Platform):
265
271
  )
266
272
  if ret and "url" in ret:
267
273
  file_url = ret["url"] # https
268
- a = File(name="", url=file_url)
274
+ # 优先从 API 返回值获取文件名,其次从原始消息数据获取
275
+ file_name = (
276
+ ret.get("file_name", "")
277
+ or ret.get("name", "")
278
+ or m["data"].get("file", "")
279
+ or m["data"].get("file_name", "")
280
+ )
281
+ a = File(name=file_name, url=file_url)
269
282
  abm.message.append(a)
270
283
  else:
271
284
  logger.error(f"获取文件失败: {ret}")
@@ -250,7 +250,7 @@ class DingtalkPlatformAdapter(Platform):
250
250
 
251
251
  async def terminate(self):
252
252
  def monkey_patch_close():
253
- raise Exception("Graceful shutdown")
253
+ raise KeyboardInterrupt("Graceful shutdown")
254
254
 
255
255
  self.client_.open_connection = monkey_patch_close
256
256
  await self.client_.websocket.close(code=1000, reason="Graceful shutdown")
@@ -381,7 +381,9 @@ class TelegramPlatformAdapter(Platform):
381
381
  f"Telegram document file_path is None, cannot save the file {file_name}.",
382
382
  )
383
383
  else:
384
- message.message.append(Comp.File(file=file_path, name=file_name))
384
+ message.message.append(
385
+ Comp.File(file=file_path, name=file_name, url=file_path)
386
+ )
385
387
 
386
388
  elif update.message.video:
387
389
  file = await update.message.video.get_file()
@@ -1,5 +1,6 @@
1
1
  import abc
2
2
  import asyncio
3
+ import os
3
4
  from collections.abc import AsyncGenerator
4
5
 
5
6
  from astrbot.core.agent.message import Message
@@ -11,6 +12,7 @@ from astrbot.core.provider.entities import (
11
12
  ToolCallsResult,
12
13
  )
13
14
  from astrbot.core.provider.register import provider_cls_map
15
+ from astrbot.core.utils.astrbot_path import get_astrbot_path
14
16
 
15
17
 
16
18
  class AbstractProvider(abc.ABC):
@@ -43,6 +45,14 @@ class AbstractProvider(abc.ABC):
43
45
  )
44
46
  return meta
45
47
 
48
+ async def test(self):
49
+ """test the provider is a
50
+
51
+ raises:
52
+ Exception: if the provider is not available
53
+ """
54
+ ...
55
+
46
56
 
47
57
  class Provider(AbstractProvider):
48
58
  """Chat Provider"""
@@ -165,6 +175,12 @@ class Provider(AbstractProvider):
165
175
 
166
176
  return dicts
167
177
 
178
+ async def test(self, timeout: float = 45.0):
179
+ await asyncio.wait_for(
180
+ self.text_chat(prompt="REPLY `PONG` ONLY"),
181
+ timeout=timeout,
182
+ )
183
+
168
184
 
169
185
  class STTProvider(AbstractProvider):
170
186
  def __init__(self, provider_config: dict, provider_settings: dict) -> None:
@@ -177,6 +193,14 @@ class STTProvider(AbstractProvider):
177
193
  """获取音频的文本"""
178
194
  raise NotImplementedError
179
195
 
196
+ async def test(self):
197
+ sample_audio_path = os.path.join(
198
+ get_astrbot_path(),
199
+ "samples",
200
+ "stt_health_check.wav",
201
+ )
202
+ await self.get_text(sample_audio_path)
203
+
180
204
 
181
205
  class TTSProvider(AbstractProvider):
182
206
  def __init__(self, provider_config: dict, provider_settings: dict) -> None:
@@ -189,6 +213,9 @@ class TTSProvider(AbstractProvider):
189
213
  """获取文本的音频,返回音频文件路径"""
190
214
  raise NotImplementedError
191
215
 
216
+ async def test(self):
217
+ await self.get_audio("hi")
218
+
192
219
 
193
220
  class EmbeddingProvider(AbstractProvider):
194
221
  def __init__(self, provider_config: dict, provider_settings: dict) -> None:
@@ -211,6 +238,9 @@ class EmbeddingProvider(AbstractProvider):
211
238
  """获取向量的维度"""
212
239
  ...
213
240
 
241
+ async def test(self):
242
+ await self.get_embedding("astrbot")
243
+
214
244
  async def get_embeddings_batch(
215
245
  self,
216
246
  texts: list[str],
@@ -294,3 +324,8 @@ class RerankProvider(AbstractProvider):
294
324
  ) -> list[RerankResult]:
295
325
  """获取查询和文档的重排序分数"""
296
326
  ...
327
+
328
+ async def test(self):
329
+ result = await self.rerank("Apple", documents=["apple", "banana"])
330
+ if not result:
331
+ raise Exception("Rerank provider test failed, no results returned")
@@ -0,0 +1,23 @@
1
+ from pathlib import Path
2
+
3
+ from openai import AsyncOpenAI
4
+
5
+
6
+ async def extract_file_moonshotai(file_path: str, api_key: str) -> str:
7
+ """Extract text from a file using Moonshot AI API"""
8
+ """
9
+ Args:
10
+ file_path: The path to the file to extract text from
11
+ api_key: The API key to use to extract text from the file
12
+ Returns:
13
+ The text extracted from the file
14
+ """
15
+ client = AsyncOpenAI(
16
+ api_key=api_key,
17
+ base_url="https://api.moonshot.cn/v1",
18
+ )
19
+ file_object = await client.files.create(
20
+ file=Path(file_path),
21
+ purpose="file-extract", # type: ignore
22
+ )
23
+ return (await client.files.content(file_id=file_object.id)).text
@@ -18,11 +18,8 @@ from astrbot.core.config.i18n_utils import ConfigMetadataI18n
18
18
  from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
19
19
  from astrbot.core.platform.register import platform_cls_map, platform_registry
20
20
  from astrbot.core.provider import Provider
21
- from astrbot.core.provider.entities import ProviderType
22
- from astrbot.core.provider.provider import RerankProvider
23
21
  from astrbot.core.provider.register import provider_registry
24
22
  from astrbot.core.star.star import star_registry
25
- from astrbot.core.utils.astrbot_path import get_astrbot_path
26
23
 
27
24
  from .route import Response, Route, RouteContext
28
25
 
@@ -356,169 +353,20 @@ class ConfigRoute(Route):
356
353
  f"Attempting to check provider: {status_info['name']} (ID: {status_info['id']}, Type: {status_info['type']}, Model: {status_info['model']})",
357
354
  )
358
355
 
359
- if provider_capability_type == ProviderType.CHAT_COMPLETION:
360
- try:
361
- logger.debug(f"Sending 'Ping' to provider: {status_info['name']}")
362
- response = await asyncio.wait_for(
363
- provider.text_chat(prompt="REPLY `PONG` ONLY"),
364
- timeout=45.0,
365
- )
366
- logger.debug(
367
- f"Received response from {status_info['name']}: {response}",
368
- )
369
- if response is not None:
370
- status_info["status"] = "available"
371
- response_text_snippet = ""
372
- if (
373
- hasattr(response, "completion_text")
374
- and response.completion_text
375
- ):
376
- response_text_snippet = (
377
- response.completion_text[:70] + "..."
378
- if len(response.completion_text) > 70
379
- else response.completion_text
380
- )
381
- elif hasattr(response, "result_chain") and response.result_chain:
382
- try:
383
- response_text_snippet = (
384
- response.result_chain.get_plain_text()[:70] + "..."
385
- if len(response.result_chain.get_plain_text()) > 70
386
- else response.result_chain.get_plain_text()
387
- )
388
- except Exception as _:
389
- pass
390
- logger.info(
391
- f"Provider {status_info['name']} (ID: {status_info['id']}) is available. Response snippet: '{response_text_snippet}'",
392
- )
393
- else:
394
- status_info["error"] = (
395
- "Test call returned None, but expected an LLMResponse object."
396
- )
397
- logger.warning(
398
- f"Provider {status_info['name']} (ID: {status_info['id']}) test call returned None.",
399
- )
400
-
401
- except asyncio.TimeoutError:
402
- status_info["error"] = (
403
- "Connection timed out after 45 seconds during test call."
404
- )
405
- logger.warning(
406
- f"Provider {status_info['name']} (ID: {status_info['id']}) timed out.",
407
- )
408
- except Exception as e:
409
- error_message = str(e)
410
- status_info["error"] = error_message
411
- logger.warning(
412
- f"Provider {status_info['name']} (ID: {status_info['id']}) is unavailable. Error: {error_message}",
413
- )
414
- logger.debug(
415
- f"Traceback for {status_info['name']}:\n{traceback.format_exc()}",
416
- )
417
-
418
- elif provider_capability_type == ProviderType.EMBEDDING:
419
- try:
420
- # For embedding, we can call the get_embedding method with a short prompt.
421
- embedding_result = await provider.get_embedding("health_check")
422
- if isinstance(embedding_result, list) and (
423
- not embedding_result or isinstance(embedding_result[0], float)
424
- ):
425
- status_info["status"] = "available"
426
- else:
427
- status_info["status"] = "unavailable"
428
- status_info["error"] = (
429
- f"Embedding test failed: unexpected result type {type(embedding_result)}"
430
- )
431
- except Exception as e:
432
- logger.error(
433
- f"Error testing embedding provider {provider_name}: {e}",
434
- exc_info=True,
435
- )
436
- status_info["status"] = "unavailable"
437
- status_info["error"] = f"Embedding test failed: {e!s}"
438
-
439
- elif provider_capability_type == ProviderType.TEXT_TO_SPEECH:
440
- try:
441
- # For TTS, we can call the get_audio method with a short prompt.
442
- audio_result = await provider.get_audio("你好")
443
- if isinstance(audio_result, str) and audio_result:
444
- status_info["status"] = "available"
445
- else:
446
- status_info["status"] = "unavailable"
447
- status_info["error"] = (
448
- f"TTS test failed: unexpected result type {type(audio_result)}"
449
- )
450
- except Exception as e:
451
- logger.error(
452
- f"Error testing TTS provider {provider_name}: {e}",
453
- exc_info=True,
454
- )
455
- status_info["status"] = "unavailable"
456
- status_info["error"] = f"TTS test failed: {e!s}"
457
- elif provider_capability_type == ProviderType.SPEECH_TO_TEXT:
458
- try:
459
- logger.debug(
460
- f"Sending health check audio to provider: {status_info['name']}",
461
- )
462
- sample_audio_path = os.path.join(
463
- get_astrbot_path(),
464
- "samples",
465
- "stt_health_check.wav",
466
- )
467
- if not os.path.exists(sample_audio_path):
468
- status_info["status"] = "unavailable"
469
- status_info["error"] = (
470
- "STT test failed: sample audio file not found."
471
- )
472
- logger.warning(
473
- f"STT test for {status_info['name']} failed: sample audio file not found at {sample_audio_path}",
474
- )
475
- else:
476
- text_result = await provider.get_text(sample_audio_path)
477
- if isinstance(text_result, str) and text_result:
478
- status_info["status"] = "available"
479
- snippet = (
480
- text_result[:70] + "..."
481
- if len(text_result) > 70
482
- else text_result
483
- )
484
- logger.info(
485
- f"Provider {status_info['name']} (ID: {status_info['id']}) is available. Response snippet: '{snippet}'",
486
- )
487
- else:
488
- status_info["status"] = "unavailable"
489
- status_info["error"] = (
490
- f"STT test failed: unexpected result type {type(text_result)}"
491
- )
492
- logger.warning(
493
- f"STT test for {status_info['name']} failed: unexpected result type {type(text_result)}",
494
- )
495
- except Exception as e:
496
- logger.error(
497
- f"Error testing STT provider {provider_name}: {e}",
498
- exc_info=True,
499
- )
500
- status_info["status"] = "unavailable"
501
- status_info["error"] = f"STT test failed: {e!s}"
502
- elif provider_capability_type == ProviderType.RERANK:
503
- try:
504
- assert isinstance(provider, RerankProvider)
505
- await provider.rerank("Apple", documents=["apple", "banana"])
506
- status_info["status"] = "available"
507
- except Exception as e:
508
- logger.error(
509
- f"Error testing rerank provider {provider_name}: {e}",
510
- exc_info=True,
511
- )
512
- status_info["status"] = "unavailable"
513
- status_info["error"] = f"Rerank test failed: {e!s}"
514
-
515
- else:
516
- logger.debug(
517
- f"Provider {provider_name} is not a Chat Completion or Embedding provider. Marking as available without test. Meta: {meta}",
518
- )
356
+ try:
357
+ await provider.test()
519
358
  status_info["status"] = "available"
520
- status_info["error"] = (
521
- "This provider type is not tested and is assumed to be available."
359
+ logger.info(
360
+ f"Provider {status_info['name']} (ID: {status_info['id']}) is available.",
361
+ )
362
+ except Exception as e:
363
+ error_message = str(e)
364
+ status_info["error"] = error_message
365
+ logger.warning(
366
+ f"Provider {status_info['name']} (ID: {status_info['id']}) is unavailable. Error: {error_message}",
367
+ )
368
+ logger.debug(
369
+ f"Traceback for {status_info['name']}:\n{traceback.format_exc()}",
522
370
  )
523
371
 
524
372
  return status_info