AstrBot 4.1.1__tar.gz → 4.1.3__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 (518) hide show
  1. astrbot-4.1.3/.github/PULL_REQUEST_TEMPLATE.md +46 -0
  2. astrbot-4.1.3/.github/workflows/code-format.yml +34 -0
  3. {astrbot-4.1.1 → astrbot-4.1.3}/.github/workflows/dashboard_ci.yml +1 -0
  4. {astrbot-4.1.1 → astrbot-4.1.3}/PKG-INFO +1 -1
  5. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/utils/plugin.py +22 -18
  6. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/response.py +1 -0
  7. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/run_context.py +1 -0
  8. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/runners/tool_loop_agent_runner.py +1 -1
  9. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/config/default.py +34 -11
  10. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/migration/helper.py +1 -1
  11. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/migration/shared_preferences_v3.py +2 -0
  12. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/migration/sqlite_v3.py +2 -1
  13. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/vec_db/faiss_impl/__init__.py +1 -1
  14. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +2 -1
  15. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/context_utils.py +1 -1
  16. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/respond/stage.py +103 -77
  17. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/astr_message_event.py +1 -1
  18. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/astrbot_message.py +23 -1
  19. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/manager.py +9 -9
  20. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +4 -1
  21. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +2 -2
  22. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/discord/client.py +2 -2
  23. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/discord/components.py +3 -1
  24. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/discord/discord_platform_event.py +8 -3
  25. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +36 -30
  26. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/slack/slack_adapter.py +3 -1
  27. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/slack/slack_event.py +7 -1
  28. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/telegram/tg_event.py +3 -1
  29. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +2 -0
  30. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +8 -4
  31. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/wecom/wecom_kf.py +15 -4
  32. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +27 -6
  33. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +3 -1
  34. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -1
  35. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/entities.py +1 -0
  36. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/manager.py +5 -1
  37. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +1 -1
  38. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/command.py +7 -12
  39. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/command_group.py +1 -2
  40. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/session_plugin_manager.py +4 -1
  41. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/star_manager.py +2 -2
  42. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/star_tools.py +22 -8
  43. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/config.py +0 -1
  44. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/log.py +12 -4
  45. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/route.py +0 -1
  46. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/tools.py +0 -1
  47. astrbot-4.1.3/changelogs/v4.1.1.md +5 -0
  48. astrbot-4.1.3/changelogs/v4.1.2.md +9 -0
  49. astrbot-4.1.3/changelogs/v4.1.3.md +8 -0
  50. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ItemCard.vue +22 -9
  51. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/core/common.json +2 -1
  52. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ProviderPage.vue +67 -13
  53. {astrbot-4.1.1 → astrbot-4.1.3}/packages/astrbot/long_term_memory.py +3 -1
  54. {astrbot-4.1.1 → astrbot-4.1.3}/packages/astrbot/main.py +12 -4
  55. {astrbot-4.1.1 → astrbot-4.1.3}/packages/web_searcher/main.py +4 -2
  56. {astrbot-4.1.1 → astrbot-4.1.3}/pyproject.toml +1 -1
  57. astrbot-4.1.1/.github/PULL_REQUEST_TEMPLATE.md +0 -19
  58. astrbot-4.1.1/changelogs/v4.1.1.md +0 -17
  59. {astrbot-4.1.1 → astrbot-4.1.3}/.dockerignore +0 -0
  60. {astrbot-4.1.1 → astrbot-4.1.3}/.github/FUNDING.yml +0 -0
  61. {astrbot-4.1.1 → astrbot-4.1.3}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
  62. {astrbot-4.1.1 → astrbot-4.1.3}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  63. {astrbot-4.1.1 → astrbot-4.1.3}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  64. {astrbot-4.1.1 → astrbot-4.1.3}/.github/auto_assign.yml +0 -0
  65. {astrbot-4.1.1 → astrbot-4.1.3}/.github/copilot-instructions.md +0 -0
  66. {astrbot-4.1.1 → astrbot-4.1.3}/.github/dependabot.yml +0 -0
  67. {astrbot-4.1.1 → astrbot-4.1.3}/.github/workflows/auto_release.yml +0 -0
  68. {astrbot-4.1.1 → astrbot-4.1.3}/.github/workflows/codeql.yml +0 -0
  69. {astrbot-4.1.1 → astrbot-4.1.3}/.github/workflows/coverage_test.yml +0 -0
  70. {astrbot-4.1.1 → astrbot-4.1.3}/.github/workflows/docker-image.yml +0 -0
  71. {astrbot-4.1.1 → astrbot-4.1.3}/.github/workflows/stale.yml +0 -0
  72. {astrbot-4.1.1 → astrbot-4.1.3}/.gitignore +0 -0
  73. {astrbot-4.1.1 → astrbot-4.1.3}/.pre-commit-config.yaml +0 -0
  74. {astrbot-4.1.1 → astrbot-4.1.3}/.python-version +0 -0
  75. {astrbot-4.1.1 → astrbot-4.1.3}/CODE_OF_CONDUCT.md +0 -0
  76. {astrbot-4.1.1 → astrbot-4.1.3}/Dockerfile +0 -0
  77. {astrbot-4.1.1 → astrbot-4.1.3}/Dockerfile_with_node +0 -0
  78. {astrbot-4.1.1 → astrbot-4.1.3}/LICENSE +0 -0
  79. {astrbot-4.1.1 → astrbot-4.1.3}/README.md +0 -0
  80. {astrbot-4.1.1 → astrbot-4.1.3}/README_en.md +0 -0
  81. {astrbot-4.1.1 → astrbot-4.1.3}/README_ja.md +0 -0
  82. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/__init__.py +0 -0
  83. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/__init__.py +0 -0
  84. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/all.py +0 -0
  85. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/event/__init__.py +0 -0
  86. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/event/filter/__init__.py +0 -0
  87. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/message_components.py +0 -0
  88. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/platform/__init__.py +0 -0
  89. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/provider/__init__.py +0 -0
  90. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/star/__init__.py +0 -0
  91. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/api/util/__init__.py +0 -0
  92. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/__init__.py +0 -0
  93. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/__main__.py +0 -0
  94. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/commands/__init__.py +0 -0
  95. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/commands/cmd_conf.py +0 -0
  96. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/commands/cmd_init.py +0 -0
  97. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/commands/cmd_plug.py +0 -0
  98. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/commands/cmd_run.py +0 -0
  99. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/utils/__init__.py +0 -0
  100. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/utils/basic.py +0 -0
  101. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/cli/utils/version_comparator.py +0 -0
  102. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/__init__.py +0 -0
  103. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/agent.py +0 -0
  104. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/handoff.py +0 -0
  105. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/hooks.py +0 -0
  106. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/mcp_client.py +0 -0
  107. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/runners/__init__.py +0 -0
  108. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/runners/base.py +0 -0
  109. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/tool.py +0 -0
  110. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/agent/tool_executor.py +0 -0
  111. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/astr_agent_context.py +0 -0
  112. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/astrbot_config_mgr.py +0 -0
  113. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/config/__init__.py +0 -0
  114. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/config/astrbot_config.py +0 -0
  115. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/conversation_mgr.py +0 -0
  116. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/core_lifecycle.py +0 -0
  117. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/__init__.py +0 -0
  118. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
  119. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/po.py +0 -0
  120. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/sqlite.py +0 -0
  121. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/vec_db/base.py +0 -0
  122. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
  123. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
  124. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
  125. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/event_bus.py +0 -0
  126. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/file_token_service.py +0 -0
  127. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/initial_loader.py +0 -0
  128. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/log.py +0 -0
  129. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/message/components.py +0 -0
  130. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/message/message_event_result.py +0 -0
  131. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/persona_mgr.py +0 -0
  132. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/__init__.py +0 -0
  133. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
  134. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
  135. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
  136. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
  137. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
  138. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/context.py +0 -0
  139. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
  140. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/process_stage/method/llm_request.py +0 -0
  141. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
  142. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/process_stage/stage.py +0 -0
  143. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
  144. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
  145. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/scheduler.py +0 -0
  146. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
  147. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/stage.py +0 -0
  148. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/waking_check/stage.py +0 -0
  149. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
  150. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/__init__.py +0 -0
  151. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/message_session.py +0 -0
  152. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/message_type.py +0 -0
  153. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/platform.py +0 -0
  154. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/platform_metadata.py +0 -0
  155. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/register.py +0 -0
  156. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
  157. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
  158. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
  159. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
  160. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
  161. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
  162. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
  163. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
  164. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
  165. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
  166. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
  167. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/slack/client.py +0 -0
  168. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/telegram/tg_adapter.py +0 -0
  169. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
  170. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
  171. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +0 -0
  172. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +0 -0
  173. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
  174. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
  175. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/platform_message_history_mgr.py +0 -0
  176. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/__init__.py +0 -0
  177. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/entites.py +0 -0
  178. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/func_tool_manager.py +0 -0
  179. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/provider.py +0 -0
  180. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/register.py +0 -0
  181. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/anthropic_source.py +0 -0
  182. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
  183. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/dashscope_source.py +0 -0
  184. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
  185. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/dify_source.py +0 -0
  186. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
  187. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
  188. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/gemini_source.py +0 -0
  189. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
  190. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
  191. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
  192. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
  193. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
  194. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/openai_source.py +0 -0
  195. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
  196. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
  197. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
  198. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
  199. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
  200. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
  201. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/provider/sources/zhipu_source.py +0 -0
  202. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/README.md +0 -0
  203. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/__init__.py +0 -0
  204. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/config.py +0 -0
  205. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/context.py +0 -0
  206. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/__init__.py +0 -0
  207. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/custom_filter.py +0 -0
  208. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/event_message_type.py +0 -0
  209. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/permission.py +0 -0
  210. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
  211. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/filter/regex.py +0 -0
  212. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/register/__init__.py +0 -0
  213. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/register/star.py +0 -0
  214. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/register/star_handler.py +0 -0
  215. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/session_llm_manager.py +0 -0
  216. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/star.py +0 -0
  217. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/star_handler.py +0 -0
  218. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/star/updator.py +0 -0
  219. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/updator.py +0 -0
  220. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/astrbot_path.py +0 -0
  221. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/command_parser.py +0 -0
  222. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/dify_api_client.py +0 -0
  223. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/io.py +0 -0
  224. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/log_pipe.py +0 -0
  225. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/metrics.py +0 -0
  226. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/path_util.py +0 -0
  227. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/pip_installer.py +0 -0
  228. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/session_lock.py +0 -0
  229. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/session_waiter.py +0 -0
  230. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/shared_preferences.py +0 -0
  231. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/t2i/__init__.py +0 -0
  232. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/t2i/local_strategy.py +0 -0
  233. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/t2i/network_strategy.py +0 -0
  234. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/t2i/renderer.py +0 -0
  235. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
  236. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/t2i/template/base.html +0 -0
  237. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/t2i/template_manager.py +0 -0
  238. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/tencent_record_helper.py +0 -0
  239. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/utils/version_comparator.py +0 -0
  240. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/core/zip_updator.py +0 -0
  241. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/__init__.py +0 -0
  242. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/auth.py +0 -0
  243. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/chat.py +0 -0
  244. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/conversation.py +0 -0
  245. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/file.py +0 -0
  246. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/persona.py +0 -0
  247. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/plugin.py +0 -0
  248. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/session_management.py +0 -0
  249. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/stat.py +0 -0
  250. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/static_file.py +0 -0
  251. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/t2i.py +0 -0
  252. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/routes/update.py +0 -0
  253. {astrbot-4.1.1 → astrbot-4.1.3}/astrbot/dashboard/server.py +0 -0
  254. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.0.md +0 -0
  255. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.1.md +0 -0
  256. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.10.md +0 -0
  257. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.11.md +0 -0
  258. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.12.md +0 -0
  259. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.13.md +0 -0
  260. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.14.md +0 -0
  261. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.15.md +0 -0
  262. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.16.md +0 -0
  263. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.17.md +0 -0
  264. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.18.md +0 -0
  265. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.19.md +0 -0
  266. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.20.md +0 -0
  267. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.21.md +0 -0
  268. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.22.md +0 -0
  269. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.23.md +0 -0
  270. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.24.md +0 -0
  271. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.25.md +0 -0
  272. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.26.md +0 -0
  273. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.27.md +0 -0
  274. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.28.md +0 -0
  275. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.29.md +0 -0
  276. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.3.md +0 -0
  277. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.30.md +0 -0
  278. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.31.md +0 -0
  279. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.32.md +0 -0
  280. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.33.md +0 -0
  281. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.35.md +0 -0
  282. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.36.md +0 -0
  283. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.37.md +0 -0
  284. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.38.md +0 -0
  285. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.39.md +0 -0
  286. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.4.md +0 -0
  287. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.5.md +0 -0
  288. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.6.md +0 -0
  289. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.7.md +0 -0
  290. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.8.md +0 -0
  291. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.4.9.md +0 -0
  292. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.0.md +0 -0
  293. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.1.md +0 -0
  294. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.10.md +0 -0
  295. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.11.md +0 -0
  296. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.12.md +0 -0
  297. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.13.md +0 -0
  298. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.14.md +0 -0
  299. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.15.md +0 -0
  300. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.16.md +0 -0
  301. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.17.md +0 -0
  302. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.18.md +0 -0
  303. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.19.md +0 -0
  304. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.2.md +0 -0
  305. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.20.md +0 -0
  306. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.21.md +0 -0
  307. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.22.md +0 -0
  308. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.23.md +0 -0
  309. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.24.md +0 -0
  310. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.25.md +0 -0
  311. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.26.md +0 -0
  312. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.27.md +0 -0
  313. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.3.1.md +0 -0
  314. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.3.2.md +0 -0
  315. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.3.md +0 -0
  316. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.4.md +0 -0
  317. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.5.md +0 -0
  318. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.6.md +0 -0
  319. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.7.md +0 -0
  320. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.8.md +0 -0
  321. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v3.5.9.md +0 -0
  322. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v4.0.0-beta.3.md +0 -0
  323. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v4.0.0-beta.4.md +0 -0
  324. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v4.0.0-beta.5.md +0 -0
  325. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v4.0.0.md +0 -0
  326. {astrbot-4.1.1 → astrbot-4.1.3}/changelogs/v4.1.0.md +0 -0
  327. {astrbot-4.1.1 → astrbot-4.1.3}/compose.yml +0 -0
  328. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/.gitignore +0 -0
  329. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/LICENSE +0 -0
  330. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/README.md +0 -0
  331. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/env.d.ts +0 -0
  332. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/index.html +0 -0
  333. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/public/_redirects +0 -0
  334. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/public/favicon.svg +0 -0
  335. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/App.vue +0 -0
  336. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/astrbot_banner.png +0 -0
  337. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
  338. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
  339. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
  340. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
  341. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
  342. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
  343. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
  344. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
  345. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
  346. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
  347. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
  348. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
  349. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/ConfirmDialog.vue +0 -0
  350. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/chat/ProviderModelSelector.vue +0 -0
  351. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
  352. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
  353. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
  354. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
  355. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
  356. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
  357. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
  358. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
  359. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/Logo.vue +0 -0
  360. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
  361. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
  362. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
  363. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
  364. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
  365. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ProxySelector.vue +0 -0
  366. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
  367. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
  368. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/UiParentCard.vue +0 -0
  369. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
  370. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/config.ts +0 -0
  371. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/composables.ts +0 -0
  372. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/loader.ts +0 -0
  373. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
  374. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
  375. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
  376. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
  377. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
  378. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
  379. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
  380. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
  381. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
  382. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
  383. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
  384. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/chat.json +0 -0
  385. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
  386. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
  387. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
  388. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
  389. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
  390. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
  391. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
  392. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
  393. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
  394. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
  395. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
  396. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
  397. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
  398. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
  399. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
  400. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
  401. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
  402. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
  403. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
  404. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
  405. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
  406. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
  407. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
  408. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
  409. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
  410. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/chat.json +0 -0
  411. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
  412. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
  413. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
  414. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
  415. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
  416. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
  417. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
  418. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
  419. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
  420. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
  421. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
  422. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
  423. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
  424. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
  425. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
  426. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/tools/index.ts +0 -0
  427. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/translations.ts +0 -0
  428. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/types.ts +0 -0
  429. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/i18n/validator.ts +0 -0
  430. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
  431. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/layouts/full/FullLayout.vue +0 -0
  432. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
  433. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
  434. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
  435. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
  436. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/main.ts +0 -0
  437. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/plugins/confirmPlugin.ts +0 -0
  438. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/plugins/vuetify.ts +0 -0
  439. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/router/AuthRoutes.ts +0 -0
  440. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
  441. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/router/MainRoutes.ts +0 -0
  442. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/router/index.ts +0 -0
  443. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/_override.scss +0 -0
  444. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/_variables.scss +0 -0
  445. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VButtons.scss +0 -0
  446. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VCard.scss +0 -0
  447. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VField.scss +0 -0
  448. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VInput.scss +0 -0
  449. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
  450. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
  451. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VShadow.scss +0 -0
  452. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VTabs.scss +0 -0
  453. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/components/_VTextField.scss +0 -0
  454. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/layout/_container.scss +0 -0
  455. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/layout/_sidebar.scss +0 -0
  456. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/pages/_dashboards.scss +0 -0
  457. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/scss/style.scss +0 -0
  458. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/stores/auth.ts +0 -0
  459. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/stores/common.js +0 -0
  460. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/stores/customizer.ts +0 -0
  461. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/theme/DarkTheme.ts +0 -0
  462. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/theme/LightTheme.ts +0 -0
  463. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
  464. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
  465. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
  466. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/AboutPage.vue +0 -0
  467. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/AlkaidPage.vue +0 -0
  468. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ChatBoxPage.vue +0 -0
  469. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ChatPage.vue +0 -0
  470. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ConfigPage.vue +0 -0
  471. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ConsolePage.vue +0 -0
  472. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ConversationPage.vue +0 -0
  473. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ExtensionPage.vue +0 -0
  474. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/PersonaPage.vue +0 -0
  475. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/PlatformPage.vue +0 -0
  476. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/SessionManagementPage.vue +0 -0
  477. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/Settings.vue +0 -0
  478. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/ToolUsePage.vue +0 -0
  479. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
  480. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
  481. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/alkaid/Other.vue +0 -0
  482. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
  483. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
  484. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
  485. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
  486. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
  487. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
  488. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
  489. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
  490. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
  491. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
  492. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/tsconfig.json +0 -0
  493. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/tsconfig.vite-config.json +0 -0
  494. {astrbot-4.1.1 → astrbot-4.1.3}/dashboard/vite.config.ts +0 -0
  495. {astrbot-4.1.1 → astrbot-4.1.3}/main.py +0 -0
  496. {astrbot-4.1.1 → astrbot-4.1.3}/packages/astrbot/metadata.yaml +0 -0
  497. {astrbot-4.1.1 → astrbot-4.1.3}/packages/python_interpreter/main.py +0 -0
  498. {astrbot-4.1.1 → astrbot-4.1.3}/packages/python_interpreter/metadata.yaml +0 -0
  499. {astrbot-4.1.1 → astrbot-4.1.3}/packages/python_interpreter/requirements.txt +0 -0
  500. {astrbot-4.1.1 → astrbot-4.1.3}/packages/python_interpreter/shared/api.py +0 -0
  501. {astrbot-4.1.1 → astrbot-4.1.3}/packages/reminder/main.py +0 -0
  502. {astrbot-4.1.1 → astrbot-4.1.3}/packages/reminder/metadata.yaml +0 -0
  503. {astrbot-4.1.1 → astrbot-4.1.3}/packages/session_controller/main.py +0 -0
  504. {astrbot-4.1.1 → astrbot-4.1.3}/packages/session_controller/metadata.yaml +0 -0
  505. {astrbot-4.1.1 → astrbot-4.1.3}/packages/thinking_filter/main.py +0 -0
  506. {astrbot-4.1.1 → astrbot-4.1.3}/packages/thinking_filter/metadata.yaml +0 -0
  507. {astrbot-4.1.1 → astrbot-4.1.3}/packages/web_searcher/engines/__init__.py +0 -0
  508. {astrbot-4.1.1 → astrbot-4.1.3}/packages/web_searcher/engines/bing.py +0 -0
  509. {astrbot-4.1.1 → astrbot-4.1.3}/packages/web_searcher/engines/google.py +0 -0
  510. {astrbot-4.1.1 → astrbot-4.1.3}/packages/web_searcher/engines/sogo.py +0 -0
  511. {astrbot-4.1.1 → astrbot-4.1.3}/packages/web_searcher/metadata.yaml +0 -0
  512. {astrbot-4.1.1 → astrbot-4.1.3}/requirements.txt +0 -0
  513. {astrbot-4.1.1 → astrbot-4.1.3}/samples/stt_health_check.wav +0 -0
  514. {astrbot-4.1.1 → astrbot-4.1.3}/tests/test_dashboard.py +0 -0
  515. {astrbot-4.1.1 → astrbot-4.1.3}/tests/test_main.py +0 -0
  516. {astrbot-4.1.1 → astrbot-4.1.3}/tests/test_pipeline.py +0 -0
  517. {astrbot-4.1.1 → astrbot-4.1.3}/tests/test_plugin_manager.py +0 -0
  518. {astrbot-4.1.1 → astrbot-4.1.3}/uv.lock +0 -0
@@ -0,0 +1,46 @@
1
+ <!-- 如果有的话,请指定此 PR 旨在解决的 ISSUE 编号。 -->
2
+ <!-- If applicable, please specify the ISSUE number this PR aims to resolve. -->
3
+
4
+ fixes #XYZ
5
+
6
+ ---
7
+
8
+ ### Motivation / 动机
9
+
10
+ <!--请描述此项更改的动机:它解决了什么问题?(例如:修复了 XX 错误,添加了 YY 功能)-->
11
+ <!--Please describe the motivation for this change: What problem does it solve? (e.g., Fixes XX bug, adds YY feature)-->
12
+
13
+ ### Modifications / 改动点
14
+
15
+ <!--请总结你的改动:哪些核心文件被修改了?实现了什么功能?-->
16
+ <!--Please summarize your changes: What core files were modified? What functionality was implemented?-->
17
+
18
+ ### Verification Steps / 验证步骤
19
+
20
+ <!--请为审查者 (Reviewer) 提供清晰、可复现的验证步骤(例如:1. 导航到... 2. 点击...)。-->
21
+ <!--Please provide clear and reproducible verification steps for the Reviewer (e.g., 1. Navigate to... 2. Click...).-->
22
+
23
+ ### Screenshots or Test Results / 运行截图或测试结果
24
+
25
+ <!--请粘贴截图、GIF 或测试日志,作为执行“验证步骤”的证据,证明此改动有效。-->
26
+ <!--Please paste screenshots, GIFs, or test logs here as evidence of executing the "Verification Steps" to prove this change is effective.-->
27
+
28
+ ### Compatibility & Breaking Changes / 兼容性与破坏性变更
29
+
30
+ <!--请说明此变更的兼容性:哪些是破坏性变更?哪些地方做了向后兼容处理?是否提供了数据迁移方法?-->
31
+ <!--Please explain the compatibility of this change: What are the breaking changes? What backward-compatible measures were taken? Are data migration paths provided?-->
32
+
33
+ - [ ] 这是一个破坏性变更 (Breaking Change)。/ This is a breaking change.
34
+ - [ ] 这不是一个破坏性变更。/ This is NOT a breaking change.
35
+
36
+ ---
37
+
38
+ ### Checklist / 检查清单
39
+
40
+ <!--如果分支被合并,您的代码将服务于数万名用户!在提交前,请核查一下几点内容。-->
41
+ <!--If merged, your code will serve tens of thousands of users! Please double-check the following items before submitting.-->
42
+
43
+ - [ ] 😊 如果 PR 中有新加入的功能,已经通过 Issue / 邮件等方式和作者讨论过。/ If there are new features added in the PR, I have discussed it with the authors through issues/emails, etc.
44
+ - [ ] 👀 我的更改经过了良好的测试,**并已在上方提供了“验证步骤”和“运行截图”**。/ My changes have been well-tested, **and "Verification Steps" and "Screenshots" have been provided above**.
45
+ - [ ] 🤓 我确保没有引入新依赖库,或者引入了新依赖库的同时将其添加到了 `requirements.txt` 和 `pyproject.toml` 文件相应位置。/ I have ensured that no new dependencies are introduced, OR if new dependencies are introduced, they have been added to the appropriate locations in `requirements.txt` and `pyproject.toml`.
46
+ - [ ] 😮 我的更改没有引入恶意代码。/ My changes do not introduce malicious code.
@@ -0,0 +1,34 @@
1
+ name: Code Format Check
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [ master ]
6
+ push:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ format-check:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - name: Checkout code
15
+ uses: actions/checkout@v5
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v6
19
+ with:
20
+ python-version: '3.10'
21
+
22
+ - name: Install UV
23
+ run: pip install uv
24
+
25
+ - name: Install dependencies
26
+ run: uv sync
27
+
28
+ - name: Check code formatting with ruff
29
+ run: |
30
+ uv run ruff format --check .
31
+
32
+ - name: Check code style with ruff
33
+ run: |
34
+ uv run ruff check .
@@ -37,6 +37,7 @@ jobs:
37
37
  !dist/**/*.md
38
38
 
39
39
  - name: Create GitHub Release
40
+ if: github.event_name == 'push'
40
41
  uses: ncipollo/release-action@v1
41
42
  with:
42
43
  tag: release-${{ github.sha }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.1.1
3
+ Version: 4.1.3
4
4
  Summary: 易上手的多平台 LLM 聊天机器人及开发框架
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -124,15 +124,17 @@ def build_plug_list(plugins_dir: Path) -> list:
124
124
  if metadata and all(
125
125
  k in metadata for k in ["name", "desc", "version", "author", "repo"]
126
126
  ):
127
- result.append({
128
- "name": str(metadata.get("name", "")),
129
- "desc": str(metadata.get("desc", "")),
130
- "version": str(metadata.get("version", "")),
131
- "author": str(metadata.get("author", "")),
132
- "repo": str(metadata.get("repo", "")),
133
- "status": PluginStatus.INSTALLED,
134
- "local_path": str(plugin_dir),
135
- })
127
+ result.append(
128
+ {
129
+ "name": str(metadata.get("name", "")),
130
+ "desc": str(metadata.get("desc", "")),
131
+ "version": str(metadata.get("version", "")),
132
+ "author": str(metadata.get("author", "")),
133
+ "repo": str(metadata.get("repo", "")),
134
+ "status": PluginStatus.INSTALLED,
135
+ "local_path": str(plugin_dir),
136
+ }
137
+ )
136
138
 
137
139
  # 获取在线插件列表
138
140
  online_plugins = []
@@ -142,15 +144,17 @@ def build_plug_list(plugins_dir: Path) -> list:
142
144
  resp.raise_for_status()
143
145
  data = resp.json()
144
146
  for plugin_id, plugin_info in data.items():
145
- online_plugins.append({
146
- "name": str(plugin_id),
147
- "desc": str(plugin_info.get("desc", "")),
148
- "version": str(plugin_info.get("version", "")),
149
- "author": str(plugin_info.get("author", "")),
150
- "repo": str(plugin_info.get("repo", "")),
151
- "status": PluginStatus.NOT_INSTALLED,
152
- "local_path": None,
153
- })
147
+ online_plugins.append(
148
+ {
149
+ "name": str(plugin_id),
150
+ "desc": str(plugin_info.get("desc", "")),
151
+ "version": str(plugin_info.get("version", "")),
152
+ "author": str(plugin_info.get("author", "")),
153
+ "repo": str(plugin_info.get("repo", "")),
154
+ "status": PluginStatus.NOT_INSTALLED,
155
+ "local_path": None,
156
+ }
157
+ )
154
158
  except Exception as e:
155
159
  click.echo(f"获取在线插件列表失败: {e}", err=True)
156
160
 
@@ -2,6 +2,7 @@ from dataclasses import dataclass
2
2
  import typing as T
3
3
  from astrbot.core.message.message_event_result import MessageChain
4
4
 
5
+
5
6
  class AgentResponseData(T.TypedDict):
6
7
  chain: MessageChain
7
8
 
@@ -14,4 +14,5 @@ class ContextWrapper(Generic[TContext]):
14
14
  context: TContext
15
15
  event: AstrMessageEvent
16
16
 
17
+
17
18
  NoContext = ContextWrapper[None]
@@ -258,7 +258,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
258
258
  )
259
259
  yield MessageChain(
260
260
  type="tool_direct_result"
261
- ).base64_image(res.content[0].data)
261
+ ).base64_image(resource.blob)
262
262
  else:
263
263
  tool_call_result_blocks.append(
264
264
  ToolCallMessageSegment(
@@ -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.1.1"
9
+ VERSION = "4.1.3"
10
10
  DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
11
11
 
12
12
  # 默认配置
@@ -60,6 +60,7 @@ DEFAULT_CONFIG = {
60
60
  "web_search_link": False,
61
61
  "display_reasoning_text": False,
62
62
  "identifier": False,
63
+ "group_name_display": False,
63
64
  "datetime_system_prompt": True,
64
65
  "default_personality": "default",
65
66
  "persona_pool": ["*"],
@@ -1724,6 +1725,9 @@ CONFIG_METADATA_2 = {
1724
1725
  "identifier": {
1725
1726
  "type": "bool",
1726
1727
  },
1728
+ "group_name_display": {
1729
+ "type": "bool",
1730
+ },
1727
1731
  "datetime_system_prompt": {
1728
1732
  "type": "bool",
1729
1733
  },
@@ -1903,17 +1907,31 @@ CONFIG_METADATA_3 = {
1903
1907
  "_special": "select_provider",
1904
1908
  "hint": "留空代表不使用。可用于不支持视觉模态的聊天模型。",
1905
1909
  },
1910
+ "provider_stt_settings.enable": {
1911
+ "description": "默认启用语音转文本",
1912
+ "type": "bool",
1913
+ },
1906
1914
  "provider_stt_settings.provider_id": {
1907
1915
  "description": "语音转文本模型",
1908
1916
  "type": "string",
1909
1917
  "hint": "留空代表不使用。",
1910
1918
  "_special": "select_provider_stt",
1919
+ "condition": {
1920
+ "provider_stt_settings.enable": True,
1921
+ },
1922
+ },
1923
+ "provider_tts_settings.enable": {
1924
+ "description": "默认启用文本转语音",
1925
+ "type": "bool",
1911
1926
  },
1912
1927
  "provider_tts_settings.provider_id": {
1913
1928
  "description": "文本转语音模型",
1914
1929
  "type": "string",
1915
1930
  "hint": "留空代表不使用。",
1916
1931
  "_special": "select_provider_tts",
1932
+ "condition": {
1933
+ "provider_tts_settings.enable": True,
1934
+ },
1917
1935
  },
1918
1936
  "provider_settings.image_caption_prompt": {
1919
1937
  "description": "图片转述提示词",
@@ -1983,6 +2001,11 @@ CONFIG_METADATA_3 = {
1983
2001
  "description": "用户识别",
1984
2002
  "type": "bool",
1985
2003
  },
2004
+ "provider_settings.group_name_display": {
2005
+ "description": "显示群名称",
2006
+ "type": "bool",
2007
+ "hint": "启用后,在支持的平台(aiocqhttp)上会在 prompt 中包含群名称信息。",
2008
+ },
1986
2009
  "provider_settings.datetime_system_prompt": {
1987
2010
  "description": "现实世界时间感知",
1988
2011
  "type": "bool",
@@ -2130,41 +2153,41 @@ CONFIG_METADATA_3 = {
2130
2153
  "description": "内容安全",
2131
2154
  "type": "object",
2132
2155
  "items": {
2133
- "platform_settings.content_safety.also_use_in_response": {
2156
+ "content_safety.also_use_in_response": {
2134
2157
  "description": "同时检查模型的响应内容",
2135
2158
  "type": "bool",
2136
2159
  },
2137
- "platform_settings.content_safety.baidu_aip.enable": {
2160
+ "content_safety.baidu_aip.enable": {
2138
2161
  "description": "使用百度内容安全审核",
2139
2162
  "type": "bool",
2140
2163
  "hint": "您需要手动安装 baidu-aip 库。",
2141
2164
  },
2142
- "platform_settings.content_safety.baidu_aip.app_id": {
2165
+ "content_safety.baidu_aip.app_id": {
2143
2166
  "description": "App ID",
2144
2167
  "type": "string",
2145
2168
  "condition": {
2146
- "platform_settings.content_safety.baidu_aip.enable": True,
2169
+ "content_safety.baidu_aip.enable": True,
2147
2170
  },
2148
2171
  },
2149
- "platform_settings.content_safety.baidu_aip.api_key": {
2172
+ "content_safety.baidu_aip.api_key": {
2150
2173
  "description": "API Key",
2151
2174
  "type": "string",
2152
2175
  "condition": {
2153
- "platform_settings.content_safety.baidu_aip.enable": True,
2176
+ "content_safety.baidu_aip.enable": True,
2154
2177
  },
2155
2178
  },
2156
- "platform_settings.content_safety.baidu_aip.secret_key": {
2179
+ "content_safety.baidu_aip.secret_key": {
2157
2180
  "description": "Secret Key",
2158
2181
  "type": "string",
2159
2182
  "condition": {
2160
- "platform_settings.content_safety.baidu_aip.enable": True,
2183
+ "content_safety.baidu_aip.enable": True,
2161
2184
  },
2162
2185
  },
2163
- "platform_settings.content_safety.internal_keywords.enable": {
2186
+ "content_safety.internal_keywords.enable": {
2164
2187
  "description": "关键词检查",
2165
2188
  "type": "bool",
2166
2189
  },
2167
- "platform_settings.content_safety.internal_keywords.extra_keywords": {
2190
+ "content_safety.internal_keywords.extra_keywords": {
2168
2191
  "description": "额外关键词",
2169
2192
  "type": "list",
2170
2193
  "items": {"type": "string"},
@@ -53,7 +53,7 @@ async def do_migration_v4(
53
53
  await migration_webchat_data(db_helper, platform_id_map)
54
54
 
55
55
  # 执行偏好设置迁移
56
- await migration_preferences(db_helper,platform_id_map)
56
+ await migration_preferences(db_helper, platform_id_map)
57
57
 
58
58
  # 执行平台统计表迁移
59
59
  await migration_platform_table(db_helper, platform_id_map)
@@ -5,6 +5,7 @@ from astrbot.core.utils.astrbot_path import get_astrbot_data_path
5
5
 
6
6
  _VT = TypeVar("_VT")
7
7
 
8
+
8
9
  class SharedPreferences:
9
10
  def __init__(self, path=None):
10
11
  if path is None:
@@ -42,4 +43,5 @@ class SharedPreferences:
42
43
  self._data.clear()
43
44
  self._save_preferences()
44
45
 
46
+
45
47
  sp = SharedPreferences()
@@ -4,6 +4,7 @@ from astrbot.core.db.po import Platform, Stats
4
4
  from typing import Tuple, List, Dict, Any
5
5
  from dataclasses import dataclass
6
6
 
7
+
7
8
  @dataclass
8
9
  class Conversation:
9
10
  """LLM 对话存储
@@ -76,7 +77,7 @@ PRAGMA encoding = 'UTF-8';
76
77
  """
77
78
 
78
79
 
79
- class SQLiteDatabase():
80
+ class SQLiteDatabase:
80
81
  def __init__(self, db_path: str) -> None:
81
82
  super().__init__()
82
83
  self.db_path = db_path
@@ -1,3 +1,3 @@
1
1
  from .vec_db import FaissVecDB
2
2
 
3
- __all__ = ["FaissVecDB"]
3
+ __all__ = ["FaissVecDB"]
@@ -113,7 +113,8 @@ class FaissVecDB(BaseVecDB):
113
113
  reranked_results, key=lambda x: x.relevance_score, reverse=True
114
114
  )
115
115
  top_k_results = [
116
- top_k_results[reranked_result.index] for reranked_result in reranked_results
116
+ top_k_results[reranked_result.index]
117
+ for reranked_result in reranked_results
117
118
  ]
118
119
 
119
120
  return top_k_results
@@ -77,7 +77,7 @@ async def call_event_hook(
77
77
 
78
78
  Returns:
79
79
  bool: 如果事件被终止,返回 True
80
- # """
80
+ #"""
81
81
  handlers = star_handlers_registry.get_handlers_by_event_type(
82
82
  hook_type, plugins_name=event.plugins_name
83
83
  )
@@ -1,17 +1,15 @@
1
1
  import random
2
2
  import asyncio
3
3
  import math
4
- import traceback
5
4
  import astrbot.core.message.components as Comp
6
5
  from typing import Union, AsyncGenerator
7
6
  from ..stage import register_stage, Stage
8
- from ..context import PipelineContext
7
+ from ..context import PipelineContext, call_event_hook
9
8
  from astrbot.core.platform.astr_message_event import AstrMessageEvent
10
9
  from astrbot.core.message.message_event_result import MessageChain, ResultContentType
11
10
  from astrbot.core import logger
12
- from astrbot.core.message.message_event_result import BaseMessageComponent
13
- from astrbot.core.star.star_handler import star_handlers_registry, EventType
14
- from astrbot.core.star.star import star_map
11
+ from astrbot.core.message.components import BaseMessageComponent, ComponentType
12
+ from astrbot.core.star.star_handler import EventType
15
13
  from astrbot.core.utils.path_util import path_Mapping
16
14
  from astrbot.core.utils.session_lock import session_lock_manager
17
15
 
@@ -114,6 +112,43 @@ class RespondStage(Stage):
114
112
  # 如果所有组件都为空
115
113
  return True
116
114
 
115
+ def is_seg_reply_required(self, event: AstrMessageEvent) -> bool:
116
+ """检查是否需要分段回复"""
117
+ if not self.enable_seg:
118
+ return False
119
+
120
+ if self.only_llm_result and not event.get_result().is_llm_result():
121
+ return False
122
+
123
+ if event.get_platform_name() in [
124
+ "qq_official",
125
+ "weixin_official_account",
126
+ "dingtalk",
127
+ ]:
128
+ return False
129
+
130
+ return True
131
+
132
+ def _extract_comp(
133
+ self,
134
+ raw_chain: list[BaseMessageComponent],
135
+ extract_types: set[ComponentType],
136
+ modify_raw_chain: bool = True,
137
+ ):
138
+ extracted = []
139
+ if modify_raw_chain:
140
+ remaining = []
141
+ for comp in raw_chain:
142
+ if comp.type in extract_types:
143
+ extracted.append(comp)
144
+ else:
145
+ remaining.append(comp)
146
+ raw_chain[:] = remaining
147
+ else:
148
+ extracted = [comp for comp in raw_chain if comp.type in extract_types]
149
+
150
+ return extracted
151
+
117
152
  async def process(
118
153
  self, event: AstrMessageEvent
119
154
  ) -> Union[None, AsyncGenerator[None, None]]:
@@ -123,7 +158,14 @@ class RespondStage(Stage):
123
158
  if result.result_content_type == ResultContentType.STREAMING_FINISH:
124
159
  return
125
160
 
161
+ logger.info(
162
+ f"Prepare to send - {event.get_sender_name()}/{event.get_sender_id()}: {event._outline_chain(result.chain)}"
163
+ )
164
+
126
165
  if result.result_content_type == ResultContentType.STREAMING_RESULT:
166
+ if result.async_stream is None:
167
+ logger.warning("async_stream 为空,跳过发送。")
168
+ return
127
169
  # 流式结果直接交付平台适配器处理
128
170
  use_fallback = self.config.get("provider_settings", {}).get(
129
171
  "streaming_segmented", False
@@ -148,87 +190,71 @@ class RespondStage(Stage):
148
190
  except Exception as e:
149
191
  logger.warning(f"空内容检查异常: {e}")
150
192
 
151
- record_comps = [c for c in result.chain if isinstance(c, Comp.Record)]
152
- non_record_comps = [
153
- c for c in result.chain if not isinstance(c, Comp.Record)
154
- ]
155
-
156
- if (
157
- self.enable_seg
158
- and (
159
- (self.only_llm_result and result.is_llm_result())
160
- or not self.only_llm_result
193
+ # 发送消息链
194
+ # Record 需要强制单独发送
195
+ need_separately = {ComponentType.Record}
196
+ if self.is_seg_reply_required(event):
197
+ header_comps = self._extract_comp(
198
+ result.chain,
199
+ {ComponentType.Reply, ComponentType.At},
200
+ modify_raw_chain=True,
161
201
  )
162
- and event.get_platform_name()
163
- not in ["qq_official", "weixin_official_account", "dingtalk"]
164
- ):
165
- decorated_comps = []
166
- if self.reply_with_mention:
167
- for comp in result.chain:
168
- if isinstance(comp, Comp.At):
169
- decorated_comps.append(comp)
170
- result.chain.remove(comp)
171
- break
172
- if self.reply_with_quote:
173
- for comp in result.chain:
174
- if isinstance(comp, Comp.Reply):
175
- decorated_comps.append(comp)
176
- result.chain.remove(comp)
177
- break
178
-
179
- # leverage lock to guarentee the order of message sending among different events
202
+ if not result.chain or len(result.chain) == 0:
203
+ # may fix #2670
204
+ logger.warning(
205
+ f"实际消息链为空, 跳过发送阶段。header_chain: {header_comps}, actual_chain: {result.chain}"
206
+ )
207
+ return
180
208
  async with session_lock_manager.acquire_lock(event.unified_msg_origin):
181
- for rcomp in record_comps:
182
- i = await self._calc_comp_interval(rcomp)
183
- await asyncio.sleep(i)
184
- try:
185
- await event.send(MessageChain([rcomp]))
186
- except Exception as e:
187
- logger.error(f"发送消息失败: {e} chain: {result.chain}")
188
- break
189
- # 分段回复
190
- for comp in non_record_comps:
209
+ for comp in result.chain:
191
210
  i = await self._calc_comp_interval(comp)
192
211
  await asyncio.sleep(i)
193
212
  try:
194
- await event.send(MessageChain([*decorated_comps, comp]))
195
- decorated_comps = [] # 清空已发送的装饰组件
213
+ if comp.type in need_separately:
214
+ await event.send(MessageChain([comp]))
215
+ else:
216
+ await event.send(MessageChain([*header_comps, comp]))
217
+ header_comps.clear()
196
218
  except Exception as e:
197
- logger.error(f"发送消息失败: {e} chain: {result.chain}")
198
- break
219
+ logger.error(
220
+ f"发送消息链失败: chain = {MessageChain([comp])}, error = {e}",
221
+ exc_info=True,
222
+ )
199
223
  else:
200
- for rcomp in record_comps:
224
+ if all(
225
+ comp.type in {ComponentType.Reply, ComponentType.At}
226
+ for comp in result.chain
227
+ ):
228
+ # may fix #2670
229
+ logger.warning(
230
+ f"消息链全为 Reply 和 At 消息段, 跳过发送阶段。chain: {result.chain}"
231
+ )
232
+ return
233
+ sep_comps = self._extract_comp(
234
+ result.chain,
235
+ need_separately,
236
+ modify_raw_chain=True,
237
+ )
238
+ for comp in sep_comps:
239
+ chain = MessageChain([comp])
201
240
  try:
202
- await event.send(MessageChain([rcomp]))
241
+ await event.send(chain)
203
242
  except Exception as e:
204
- logger.error(f"发送消息失败: {e} chain: {result.chain}")
205
-
206
- try:
207
- await event.send(MessageChain(non_record_comps))
208
- except Exception as e:
209
- logger.error(traceback.format_exc())
210
- logger.error(f"发送消息失败: {e} chain: {result.chain}")
211
-
212
- logger.info(
213
- f"AstrBot -> {event.get_sender_name()}/{event.get_sender_id()}: {event._outline_chain(result.chain)}"
214
- )
215
-
216
- handlers = star_handlers_registry.get_handlers_by_event_type(
217
- EventType.OnAfterMessageSentEvent, plugins_name=event.plugins_name
218
- )
219
- for handler in handlers:
220
- try:
221
- logger.debug(
222
- f"hook(on_after_message_sent) -> {star_map[handler.handler_module_path].name} - {handler.handler_name}"
223
- )
224
- await handler.handler(event)
225
- except BaseException:
226
- logger.error(traceback.format_exc())
243
+ logger.error(
244
+ f"发送消息链失败: chain = {chain}, error = {e}",
245
+ exc_info=True,
246
+ )
247
+ chain = MessageChain(result.chain)
248
+ if result.chain and len(result.chain) > 0:
249
+ try:
250
+ await event.send(chain)
251
+ except Exception as e:
252
+ logger.error(
253
+ f"发送消息链失败: chain = {chain}, error = {e}",
254
+ exc_info=True,
255
+ )
227
256
 
228
- if event.is_stopped():
229
- logger.info(
230
- f"{star_map[handler.handler_module_path].name} - {handler.handler_name} 终止了事件传播。"
231
- )
232
- return
257
+ if await call_event_hook(event, EventType.OnAfterMessageSentEvent):
258
+ return
233
259
 
234
260
  event.clear_result()
@@ -24,7 +24,7 @@ from astrbot.core.provider.entities import ProviderRequest
24
24
  from astrbot.core.utils.metrics import Metric
25
25
  from .astrbot_message import AstrBotMessage, Group
26
26
  from .platform_metadata import PlatformMetadata
27
- from .message_session import MessageSession, MessageSesion # noqa
27
+ from .message_session import MessageSession, MessageSesion # noqa
28
28
 
29
29
 
30
30
  class AstrMessageEvent(abc.ABC):
@@ -55,7 +55,7 @@ class AstrBotMessage:
55
55
  self_id: str # 机器人的识别id
56
56
  session_id: str # 会话id。取决于 unique_session 的设置。
57
57
  message_id: str # 消息id
58
- group_id: str = "" # 群组id,如果为私聊,则为空
58
+ group: Group # 群组
59
59
  sender: MessageMember # 发送者
60
60
  message: List[BaseMessageComponent] # 消息链使用 Nakuru 的消息链格式
61
61
  message_str: str # 最直观的纯文本消息字符串
@@ -64,6 +64,28 @@ class AstrBotMessage:
64
64
 
65
65
  def __init__(self) -> None:
66
66
  self.timestamp = int(time.time())
67
+ self.group = None
67
68
 
68
69
  def __str__(self) -> str:
69
70
  return str(self.__dict__)
71
+
72
+ @property
73
+ def group_id(self) -> str:
74
+ """
75
+ 向后兼容的 group_id 属性
76
+ 群组id,如果为私聊,则为空
77
+ """
78
+ if self.group:
79
+ return self.group.group_id
80
+ return ""
81
+
82
+ @group_id.setter
83
+ def group_id(self, value: str):
84
+ """设置 group_id"""
85
+ if value:
86
+ if self.group:
87
+ self.group.group_id = value
88
+ else:
89
+ self.group = Group(group_id=value)
90
+ else:
91
+ self.group = None