AstrBot 4.1.1__tar.gz → 4.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. astrbot-4.1.2/.github/PULL_REQUEST_TEMPLATE.md +46 -0
  2. astrbot-4.1.2/.github/workflows/code-format.yml +34 -0
  3. {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/dashboard_ci.yml +1 -0
  4. {astrbot-4.1.1 → astrbot-4.1.2}/PKG-INFO +1 -1
  5. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/plugin.py +22 -18
  6. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/response.py +1 -0
  7. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/run_context.py +1 -0
  8. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/config/default.py +11 -11
  9. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/helper.py +1 -1
  10. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/shared_preferences_v3.py +2 -0
  11. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/sqlite_v3.py +2 -1
  12. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/__init__.py +1 -1
  13. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +2 -1
  14. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/context_utils.py +1 -1
  15. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/astr_message_event.py +1 -1
  16. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/manager.py +9 -9
  17. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +3 -1
  18. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +2 -2
  19. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/client.py +2 -2
  20. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/components.py +3 -1
  21. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/discord_platform_event.py +8 -3
  22. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +36 -30
  23. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/slack/slack_adapter.py +3 -1
  24. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/slack/slack_event.py +7 -1
  25. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/telegram/tg_event.py +3 -1
  26. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +2 -0
  27. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +8 -4
  28. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_kf.py +15 -4
  29. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +27 -6
  30. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +3 -1
  31. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -1
  32. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/entities.py +1 -0
  33. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/manager.py +5 -1
  34. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +1 -1
  35. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/command.py +3 -9
  36. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/command_group.py +1 -2
  37. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/session_plugin_manager.py +4 -1
  38. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star_manager.py +2 -2
  39. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star_tools.py +22 -8
  40. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/config.py +0 -1
  41. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/log.py +12 -4
  42. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/route.py +0 -1
  43. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/tools.py +0 -1
  44. astrbot-4.1.2/changelogs/v4.1.1.md +5 -0
  45. astrbot-4.1.2/changelogs/v4.1.2.md +9 -0
  46. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ProviderPage.vue +18 -0
  47. {astrbot-4.1.1 → astrbot-4.1.2}/packages/astrbot/long_term_memory.py +3 -1
  48. {astrbot-4.1.1 → astrbot-4.1.2}/packages/astrbot/main.py +6 -4
  49. {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/main.py +4 -2
  50. {astrbot-4.1.1 → astrbot-4.1.2}/pyproject.toml +1 -1
  51. astrbot-4.1.1/.github/PULL_REQUEST_TEMPLATE.md +0 -19
  52. astrbot-4.1.1/changelogs/v4.1.1.md +0 -17
  53. {astrbot-4.1.1 → astrbot-4.1.2}/.dockerignore +0 -0
  54. {astrbot-4.1.1 → astrbot-4.1.2}/.github/FUNDING.yml +0 -0
  55. {astrbot-4.1.1 → astrbot-4.1.2}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
  56. {astrbot-4.1.1 → astrbot-4.1.2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  57. {astrbot-4.1.1 → astrbot-4.1.2}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  58. {astrbot-4.1.1 → astrbot-4.1.2}/.github/auto_assign.yml +0 -0
  59. {astrbot-4.1.1 → astrbot-4.1.2}/.github/copilot-instructions.md +0 -0
  60. {astrbot-4.1.1 → astrbot-4.1.2}/.github/dependabot.yml +0 -0
  61. {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/auto_release.yml +0 -0
  62. {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/codeql.yml +0 -0
  63. {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/coverage_test.yml +0 -0
  64. {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/docker-image.yml +0 -0
  65. {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/stale.yml +0 -0
  66. {astrbot-4.1.1 → astrbot-4.1.2}/.gitignore +0 -0
  67. {astrbot-4.1.1 → astrbot-4.1.2}/.pre-commit-config.yaml +0 -0
  68. {astrbot-4.1.1 → astrbot-4.1.2}/.python-version +0 -0
  69. {astrbot-4.1.1 → astrbot-4.1.2}/CODE_OF_CONDUCT.md +0 -0
  70. {astrbot-4.1.1 → astrbot-4.1.2}/Dockerfile +0 -0
  71. {astrbot-4.1.1 → astrbot-4.1.2}/Dockerfile_with_node +0 -0
  72. {astrbot-4.1.1 → astrbot-4.1.2}/LICENSE +0 -0
  73. {astrbot-4.1.1 → astrbot-4.1.2}/README.md +0 -0
  74. {astrbot-4.1.1 → astrbot-4.1.2}/README_en.md +0 -0
  75. {astrbot-4.1.1 → astrbot-4.1.2}/README_ja.md +0 -0
  76. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/__init__.py +0 -0
  77. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/__init__.py +0 -0
  78. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/all.py +0 -0
  79. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/event/__init__.py +0 -0
  80. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/event/filter/__init__.py +0 -0
  81. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/message_components.py +0 -0
  82. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/platform/__init__.py +0 -0
  83. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/provider/__init__.py +0 -0
  84. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/star/__init__.py +0 -0
  85. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/util/__init__.py +0 -0
  86. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/__init__.py +0 -0
  87. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/__main__.py +0 -0
  88. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/__init__.py +0 -0
  89. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_conf.py +0 -0
  90. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_init.py +0 -0
  91. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_plug.py +0 -0
  92. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_run.py +0 -0
  93. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/__init__.py +0 -0
  94. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/basic.py +0 -0
  95. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/version_comparator.py +0 -0
  96. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/__init__.py +0 -0
  97. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/agent.py +0 -0
  98. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/handoff.py +0 -0
  99. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/hooks.py +0 -0
  100. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/mcp_client.py +0 -0
  101. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/runners/__init__.py +0 -0
  102. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/runners/base.py +0 -0
  103. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/runners/tool_loop_agent_runner.py +0 -0
  104. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/tool.py +0 -0
  105. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/tool_executor.py +0 -0
  106. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/astr_agent_context.py +0 -0
  107. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/astrbot_config_mgr.py +0 -0
  108. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/config/__init__.py +0 -0
  109. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/config/astrbot_config.py +0 -0
  110. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/conversation_mgr.py +0 -0
  111. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/core_lifecycle.py +0 -0
  112. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/__init__.py +0 -0
  113. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
  114. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/po.py +0 -0
  115. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/sqlite.py +0 -0
  116. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/base.py +0 -0
  117. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
  118. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
  119. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
  120. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/event_bus.py +0 -0
  121. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/file_token_service.py +0 -0
  122. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/initial_loader.py +0 -0
  123. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/log.py +0 -0
  124. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/message/components.py +0 -0
  125. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/message/message_event_result.py +0 -0
  126. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/persona_mgr.py +0 -0
  127. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/__init__.py +0 -0
  128. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
  129. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
  130. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
  131. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
  132. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
  133. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/context.py +0 -0
  134. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
  135. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/process_stage/method/llm_request.py +0 -0
  136. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
  137. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/process_stage/stage.py +0 -0
  138. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
  139. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/respond/stage.py +0 -0
  140. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
  141. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/scheduler.py +0 -0
  142. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
  143. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/stage.py +0 -0
  144. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/waking_check/stage.py +0 -0
  145. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
  146. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/__init__.py +0 -0
  147. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/astrbot_message.py +0 -0
  148. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/message_session.py +0 -0
  149. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/message_type.py +0 -0
  150. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/platform.py +0 -0
  151. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/platform_metadata.py +0 -0
  152. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/register.py +0 -0
  153. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
  154. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
  155. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
  156. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
  157. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
  158. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
  159. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
  160. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
  161. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
  162. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
  163. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
  164. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/slack/client.py +0 -0
  165. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/telegram/tg_adapter.py +0 -0
  166. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
  167. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
  168. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +0 -0
  169. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +0 -0
  170. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
  171. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
  172. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform_message_history_mgr.py +0 -0
  173. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/__init__.py +0 -0
  174. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/entites.py +0 -0
  175. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/func_tool_manager.py +0 -0
  176. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/provider.py +0 -0
  177. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/register.py +0 -0
  178. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/anthropic_source.py +0 -0
  179. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
  180. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/dashscope_source.py +0 -0
  181. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
  182. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/dify_source.py +0 -0
  183. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
  184. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
  185. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gemini_source.py +0 -0
  186. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
  187. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
  188. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
  189. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
  190. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
  191. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/openai_source.py +0 -0
  192. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
  193. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
  194. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
  195. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
  196. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
  197. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
  198. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/zhipu_source.py +0 -0
  199. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/README.md +0 -0
  200. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/__init__.py +0 -0
  201. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/config.py +0 -0
  202. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/context.py +0 -0
  203. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/__init__.py +0 -0
  204. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/custom_filter.py +0 -0
  205. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/event_message_type.py +0 -0
  206. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/permission.py +0 -0
  207. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
  208. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/regex.py +0 -0
  209. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/register/__init__.py +0 -0
  210. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/register/star.py +0 -0
  211. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/register/star_handler.py +0 -0
  212. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/session_llm_manager.py +0 -0
  213. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star.py +0 -0
  214. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star_handler.py +0 -0
  215. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/updator.py +0 -0
  216. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/updator.py +0 -0
  217. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/astrbot_path.py +0 -0
  218. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/command_parser.py +0 -0
  219. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/dify_api_client.py +0 -0
  220. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/io.py +0 -0
  221. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/log_pipe.py +0 -0
  222. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/metrics.py +0 -0
  223. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/path_util.py +0 -0
  224. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/pip_installer.py +0 -0
  225. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/session_lock.py +0 -0
  226. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/session_waiter.py +0 -0
  227. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/shared_preferences.py +0 -0
  228. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/__init__.py +0 -0
  229. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/local_strategy.py +0 -0
  230. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/network_strategy.py +0 -0
  231. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/renderer.py +0 -0
  232. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
  233. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/template/base.html +0 -0
  234. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/template_manager.py +0 -0
  235. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/tencent_record_helper.py +0 -0
  236. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/version_comparator.py +0 -0
  237. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/zip_updator.py +0 -0
  238. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/__init__.py +0 -0
  239. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/auth.py +0 -0
  240. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/chat.py +0 -0
  241. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/conversation.py +0 -0
  242. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/file.py +0 -0
  243. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/persona.py +0 -0
  244. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/plugin.py +0 -0
  245. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/session_management.py +0 -0
  246. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/stat.py +0 -0
  247. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/static_file.py +0 -0
  248. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/t2i.py +0 -0
  249. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/update.py +0 -0
  250. {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/server.py +0 -0
  251. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.0.md +0 -0
  252. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.1.md +0 -0
  253. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.10.md +0 -0
  254. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.11.md +0 -0
  255. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.12.md +0 -0
  256. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.13.md +0 -0
  257. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.14.md +0 -0
  258. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.15.md +0 -0
  259. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.16.md +0 -0
  260. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.17.md +0 -0
  261. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.18.md +0 -0
  262. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.19.md +0 -0
  263. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.20.md +0 -0
  264. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.21.md +0 -0
  265. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.22.md +0 -0
  266. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.23.md +0 -0
  267. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.24.md +0 -0
  268. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.25.md +0 -0
  269. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.26.md +0 -0
  270. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.27.md +0 -0
  271. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.28.md +0 -0
  272. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.29.md +0 -0
  273. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.3.md +0 -0
  274. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.30.md +0 -0
  275. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.31.md +0 -0
  276. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.32.md +0 -0
  277. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.33.md +0 -0
  278. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.35.md +0 -0
  279. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.36.md +0 -0
  280. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.37.md +0 -0
  281. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.38.md +0 -0
  282. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.39.md +0 -0
  283. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.4.md +0 -0
  284. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.5.md +0 -0
  285. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.6.md +0 -0
  286. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.7.md +0 -0
  287. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.8.md +0 -0
  288. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.9.md +0 -0
  289. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.0.md +0 -0
  290. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.1.md +0 -0
  291. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.10.md +0 -0
  292. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.11.md +0 -0
  293. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.12.md +0 -0
  294. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.13.md +0 -0
  295. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.14.md +0 -0
  296. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.15.md +0 -0
  297. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.16.md +0 -0
  298. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.17.md +0 -0
  299. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.18.md +0 -0
  300. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.19.md +0 -0
  301. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.2.md +0 -0
  302. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.20.md +0 -0
  303. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.21.md +0 -0
  304. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.22.md +0 -0
  305. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.23.md +0 -0
  306. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.24.md +0 -0
  307. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.25.md +0 -0
  308. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.26.md +0 -0
  309. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.27.md +0 -0
  310. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.3.1.md +0 -0
  311. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.3.2.md +0 -0
  312. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.3.md +0 -0
  313. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.4.md +0 -0
  314. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.5.md +0 -0
  315. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.6.md +0 -0
  316. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.7.md +0 -0
  317. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.8.md +0 -0
  318. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.9.md +0 -0
  319. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0-beta.3.md +0 -0
  320. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0-beta.4.md +0 -0
  321. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0-beta.5.md +0 -0
  322. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0.md +0 -0
  323. {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.1.0.md +0 -0
  324. {astrbot-4.1.1 → astrbot-4.1.2}/compose.yml +0 -0
  325. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/.gitignore +0 -0
  326. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/LICENSE +0 -0
  327. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/README.md +0 -0
  328. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/env.d.ts +0 -0
  329. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/index.html +0 -0
  330. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/public/_redirects +0 -0
  331. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/public/favicon.svg +0 -0
  332. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/App.vue +0 -0
  333. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/astrbot_banner.png +0 -0
  334. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
  335. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
  336. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
  337. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
  338. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
  339. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
  340. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
  341. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
  342. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
  343. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
  344. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
  345. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
  346. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/ConfirmDialog.vue +0 -0
  347. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/chat/ProviderModelSelector.vue +0 -0
  348. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
  349. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
  350. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
  351. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
  352. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ItemCard.vue +0 -0
  353. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
  354. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
  355. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
  356. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
  357. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/Logo.vue +0 -0
  358. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
  359. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
  360. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
  361. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
  362. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
  363. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ProxySelector.vue +0 -0
  364. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
  365. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
  366. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/UiParentCard.vue +0 -0
  367. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
  368. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/config.ts +0 -0
  369. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/composables.ts +0 -0
  370. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/loader.ts +0 -0
  371. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
  372. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
  373. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
  374. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
  375. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
  376. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
  377. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
  378. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
  379. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
  380. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
  381. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
  382. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/chat.json +0 -0
  383. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
  384. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
  385. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
  386. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
  387. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
  388. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
  389. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
  390. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
  391. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
  392. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
  393. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
  394. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
  395. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
  396. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
  397. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
  398. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
  399. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
  400. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
  401. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
  402. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
  403. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
  404. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
  405. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
  406. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
  407. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
  408. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
  409. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/chat.json +0 -0
  410. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
  411. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
  412. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
  413. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
  414. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
  415. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
  416. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
  417. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
  418. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
  419. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
  420. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
  421. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
  422. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
  423. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
  424. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
  425. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/tools/index.ts +0 -0
  426. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/translations.ts +0 -0
  427. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/types.ts +0 -0
  428. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/validator.ts +0 -0
  429. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
  430. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/FullLayout.vue +0 -0
  431. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
  432. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
  433. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
  434. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
  435. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/main.ts +0 -0
  436. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/plugins/confirmPlugin.ts +0 -0
  437. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/plugins/vuetify.ts +0 -0
  438. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/AuthRoutes.ts +0 -0
  439. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
  440. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/MainRoutes.ts +0 -0
  441. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/index.ts +0 -0
  442. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/_override.scss +0 -0
  443. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/_variables.scss +0 -0
  444. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VButtons.scss +0 -0
  445. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VCard.scss +0 -0
  446. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VField.scss +0 -0
  447. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VInput.scss +0 -0
  448. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
  449. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
  450. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VShadow.scss +0 -0
  451. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VTabs.scss +0 -0
  452. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VTextField.scss +0 -0
  453. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/layout/_container.scss +0 -0
  454. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/layout/_sidebar.scss +0 -0
  455. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/pages/_dashboards.scss +0 -0
  456. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/style.scss +0 -0
  457. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/stores/auth.ts +0 -0
  458. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/stores/common.js +0 -0
  459. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/stores/customizer.ts +0 -0
  460. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/theme/DarkTheme.ts +0 -0
  461. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/theme/LightTheme.ts +0 -0
  462. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
  463. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
  464. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
  465. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/AboutPage.vue +0 -0
  466. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/AlkaidPage.vue +0 -0
  467. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ChatBoxPage.vue +0 -0
  468. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ChatPage.vue +0 -0
  469. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ConfigPage.vue +0 -0
  470. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ConsolePage.vue +0 -0
  471. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ConversationPage.vue +0 -0
  472. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ExtensionPage.vue +0 -0
  473. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/PersonaPage.vue +0 -0
  474. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/PlatformPage.vue +0 -0
  475. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/SessionManagementPage.vue +0 -0
  476. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/Settings.vue +0 -0
  477. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ToolUsePage.vue +0 -0
  478. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
  479. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
  480. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/alkaid/Other.vue +0 -0
  481. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
  482. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
  483. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
  484. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
  485. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
  486. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
  487. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
  488. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
  489. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
  490. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
  491. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/tsconfig.json +0 -0
  492. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/tsconfig.vite-config.json +0 -0
  493. {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/vite.config.ts +0 -0
  494. {astrbot-4.1.1 → astrbot-4.1.2}/main.py +0 -0
  495. {astrbot-4.1.1 → astrbot-4.1.2}/packages/astrbot/metadata.yaml +0 -0
  496. {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/main.py +0 -0
  497. {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/metadata.yaml +0 -0
  498. {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/requirements.txt +0 -0
  499. {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/shared/api.py +0 -0
  500. {astrbot-4.1.1 → astrbot-4.1.2}/packages/reminder/main.py +0 -0
  501. {astrbot-4.1.1 → astrbot-4.1.2}/packages/reminder/metadata.yaml +0 -0
  502. {astrbot-4.1.1 → astrbot-4.1.2}/packages/session_controller/main.py +0 -0
  503. {astrbot-4.1.1 → astrbot-4.1.2}/packages/session_controller/metadata.yaml +0 -0
  504. {astrbot-4.1.1 → astrbot-4.1.2}/packages/thinking_filter/main.py +0 -0
  505. {astrbot-4.1.1 → astrbot-4.1.2}/packages/thinking_filter/metadata.yaml +0 -0
  506. {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/__init__.py +0 -0
  507. {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/bing.py +0 -0
  508. {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/google.py +0 -0
  509. {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/sogo.py +0 -0
  510. {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/metadata.yaml +0 -0
  511. {astrbot-4.1.1 → astrbot-4.1.2}/requirements.txt +0 -0
  512. {astrbot-4.1.1 → astrbot-4.1.2}/samples/stt_health_check.wav +0 -0
  513. {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_dashboard.py +0 -0
  514. {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_main.py +0 -0
  515. {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_pipeline.py +0 -0
  516. {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_plugin_manager.py +0 -0
  517. {astrbot-4.1.1 → astrbot-4.1.2}/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@v4
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v5
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.2
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]
@@ -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.2"
10
10
  DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
11
11
 
12
12
  # 默认配置
@@ -2130,41 +2130,41 @@ CONFIG_METADATA_3 = {
2130
2130
  "description": "内容安全",
2131
2131
  "type": "object",
2132
2132
  "items": {
2133
- "platform_settings.content_safety.also_use_in_response": {
2133
+ "content_safety.also_use_in_response": {
2134
2134
  "description": "同时检查模型的响应内容",
2135
2135
  "type": "bool",
2136
2136
  },
2137
- "platform_settings.content_safety.baidu_aip.enable": {
2137
+ "content_safety.baidu_aip.enable": {
2138
2138
  "description": "使用百度内容安全审核",
2139
2139
  "type": "bool",
2140
2140
  "hint": "您需要手动安装 baidu-aip 库。",
2141
2141
  },
2142
- "platform_settings.content_safety.baidu_aip.app_id": {
2142
+ "content_safety.baidu_aip.app_id": {
2143
2143
  "description": "App ID",
2144
2144
  "type": "string",
2145
2145
  "condition": {
2146
- "platform_settings.content_safety.baidu_aip.enable": True,
2146
+ "content_safety.baidu_aip.enable": True,
2147
2147
  },
2148
2148
  },
2149
- "platform_settings.content_safety.baidu_aip.api_key": {
2149
+ "content_safety.baidu_aip.api_key": {
2150
2150
  "description": "API Key",
2151
2151
  "type": "string",
2152
2152
  "condition": {
2153
- "platform_settings.content_safety.baidu_aip.enable": True,
2153
+ "content_safety.baidu_aip.enable": True,
2154
2154
  },
2155
2155
  },
2156
- "platform_settings.content_safety.baidu_aip.secret_key": {
2156
+ "content_safety.baidu_aip.secret_key": {
2157
2157
  "description": "Secret Key",
2158
2158
  "type": "string",
2159
2159
  "condition": {
2160
- "platform_settings.content_safety.baidu_aip.enable": True,
2160
+ "content_safety.baidu_aip.enable": True,
2161
2161
  },
2162
2162
  },
2163
- "platform_settings.content_safety.internal_keywords.enable": {
2163
+ "content_safety.internal_keywords.enable": {
2164
2164
  "description": "关键词检查",
2165
2165
  "type": "bool",
2166
2166
  },
2167
- "platform_settings.content_safety.internal_keywords.extra_keywords": {
2167
+ "content_safety.internal_keywords.extra_keywords": {
2168
2168
  "description": "额外关键词",
2169
2169
  "type": "list",
2170
2170
  "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
  )
@@ -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):
@@ -68,23 +68,23 @@ class PlatformManager:
68
68
  )
69
69
  case "lark":
70
70
  from .sources.lark.lark_adapter import (
71
- LarkPlatformAdapter,
72
- ) # noqa: F401
71
+ LarkPlatformAdapter, # noqa: F401
72
+ )
73
73
  case "dingtalk":
74
74
  from .sources.dingtalk.dingtalk_adapter import (
75
75
  DingtalkPlatformAdapter, # noqa: F401
76
76
  )
77
77
  case "telegram":
78
78
  from .sources.telegram.tg_adapter import (
79
- TelegramPlatformAdapter,
80
- ) # noqa: F401
79
+ TelegramPlatformAdapter, # noqa: F401
80
+ )
81
81
  case "wecom":
82
82
  from .sources.wecom.wecom_adapter import (
83
- WecomPlatformAdapter,
84
- ) # noqa: F401
83
+ WecomPlatformAdapter, # noqa: F401
84
+ )
85
85
  case "weixin_official_account":
86
86
  from .sources.weixin_official_account.weixin_offacc_adapter import (
87
- WeixinOfficialAccountPlatformAdapter, # noqa
87
+ WeixinOfficialAccountPlatformAdapter, # noqa: F401
88
88
  )
89
89
  case "discord":
90
90
  from .sources.discord.discord_platform_adapter import (
@@ -94,8 +94,8 @@ class PlatformManager:
94
94
  from .sources.slack.slack_adapter import SlackAdapter # noqa: F401
95
95
  case "satori":
96
96
  from .sources.satori.satori_adapter import (
97
- SatoriPlatformAdapter,
98
- ) # noqa: F401
97
+ SatoriPlatformAdapter, # noqa: F401
98
+ )
99
99
  except (ImportError, ModuleNotFoundError) as e:
100
100
  logger.error(
101
101
  f"加载平台适配器 {platform_config['type']} 失败,原因:{e}。请检查依赖库是否安装。提示:可以在 管理面板->控制台->安装Pip库 中安装依赖库。"
@@ -321,7 +321,9 @@ class AiocqhttpAdapter(Platform):
321
321
  user_id=int(m["data"]["qq"]),
322
322
  no_cache=False,
323
323
  )
324
- nickname = at_info.get("nick", "") or at_info.get("nickname", "")
324
+ nickname = at_info.get("nick", "") or at_info.get(
325
+ "nickname", ""
326
+ )
325
327
  is_at_self = str(m["data"]["qq"]) in {abm.self_id, "all"}
326
328
 
327
329
  abm.message.append(
@@ -54,9 +54,9 @@ class DingtalkMessageEvent(AstrMessageEvent):
54
54
  logger.debug(f"send image: {ret}")
55
55
 
56
56
  except Exception as e:
57
- logger.error(f"钉钉图片处理失败: {e}")
58
- logger.warning(f"跳过图片发送: {image_path}")
57
+ logger.warning(f"钉钉图片处理失败: {e}, 跳过图片发送")
59
58
  continue
59
+
60
60
  async def send(self, message: MessageChain):
61
61
  await self.send_with_client(self.client, message)
62
62
  await super().send(message)
@@ -41,7 +41,8 @@ class DiscordBotClient(discord.Bot):
41
41
  await self.on_ready_once_callback()
42
42
  except Exception as e:
43
43
  logger.error(
44
- f"[Discord] on_ready_once_callback 执行失败: {e}", exc_info=True)
44
+ f"[Discord] on_ready_once_callback 执行失败: {e}", exc_info=True
45
+ )
45
46
 
46
47
  def _create_message_data(self, message: discord.Message) -> dict:
47
48
  """从 discord.Message 创建数据字典"""
@@ -90,7 +91,6 @@ class DiscordBotClient(discord.Bot):
90
91
  message_data = self._create_message_data(message)
91
92
  await self.on_message_received(message_data)
92
93
 
93
-
94
94
  def _extract_interaction_content(self, interaction: discord.Interaction) -> str:
95
95
  """从交互中提取内容"""
96
96
  interaction_type = interaction.type
@@ -79,9 +79,12 @@ class DiscordButton(BaseMessageComponent):
79
79
  self.url = url
80
80
  self.disabled = disabled
81
81
 
82
+
82
83
  class DiscordReference(BaseMessageComponent):
83
84
  """Discord引用组件"""
85
+
84
86
  type: str = "discord_reference"
87
+
85
88
  def __init__(self, message_id: str, channel_id: str):
86
89
  self.message_id = message_id
87
90
  self.channel_id = channel_id
@@ -98,7 +101,6 @@ class DiscordView(BaseMessageComponent):
98
101
  self.components = components or []
99
102
  self.timeout = timeout
100
103
 
101
-
102
104
  def to_discord_view(self) -> discord.ui.View:
103
105
  """转换为Discord View对象"""
104
106
  view = discord.ui.View(timeout=self.timeout)
@@ -53,7 +53,13 @@ class DiscordPlatformEvent(AstrMessageEvent):
53
53
 
54
54
  # 解析消息链为 Discord 所需的对象
55
55
  try:
56
- content, files, view, embeds, reference_message_id = await self._parse_to_discord(message)
56
+ (
57
+ content,
58
+ files,
59
+ view,
60
+ embeds,
61
+ reference_message_id,
62
+ ) = await self._parse_to_discord(message)
57
63
  except Exception as e:
58
64
  logger.error(f"[Discord] 解析消息链时失败: {e}", exc_info=True)
59
65
  return
@@ -206,8 +212,7 @@ class DiscordPlatformEvent(AstrMessageEvent):
206
212
  if await asyncio.to_thread(path.exists):
207
213
  file_bytes = await asyncio.to_thread(path.read_bytes)
208
214
  files.append(
209
- discord.File(BytesIO(file_bytes),
210
- filename=i.name)
215
+ discord.File(BytesIO(file_bytes), filename=i.name)
211
216
  )
212
217
  else:
213
218
  logger.warning(
@@ -94,10 +94,15 @@ class QQOfficialMessageEvent(AstrMessageEvent):
94
94
  plain_text,
95
95
  image_base64,
96
96
  image_path,
97
- record_file_path
97
+ record_file_path,
98
98
  ) = await QQOfficialMessageEvent._parse_to_qqofficial(self.send_buffer)
99
99
 
100
- if not plain_text and not image_base64 and not image_path and not record_file_path:
100
+ if (
101
+ not plain_text
102
+ and not image_base64
103
+ and not image_path
104
+ and not record_file_path
105
+ ):
101
106
  return
102
107
 
103
108
  payload = {
@@ -118,7 +123,7 @@ class QQOfficialMessageEvent(AstrMessageEvent):
118
123
  )
119
124
  payload["media"] = media
120
125
  payload["msg_type"] = 7
121
- if record_file_path: # group record msg
126
+ if record_file_path: # group record msg
122
127
  media = await self.upload_group_and_c2c_record(
123
128
  record_file_path, 3, group_openid=source.group_openid
124
129
  )
@@ -134,9 +139,9 @@ class QQOfficialMessageEvent(AstrMessageEvent):
134
139
  )
135
140
  payload["media"] = media
136
141
  payload["msg_type"] = 7
137
- if record_file_path: # c2c record
142
+ if record_file_path: # c2c record
138
143
  media = await self.upload_group_and_c2c_record(
139
- record_file_path, 3, openid = source.author.user_openid
144
+ record_file_path, 3, openid=source.author.user_openid
140
145
  )
141
146
  payload["media"] = media
142
147
  payload["msg_type"] = 7
@@ -190,58 +195,55 @@ class QQOfficialMessageEvent(AstrMessageEvent):
190
195
  return await self.bot.api._http.request(route, json=payload)
191
196
 
192
197
  async def upload_group_and_c2c_record(
193
- self,
194
- file_source: str,
195
- file_type: int,
196
- srv_send_msg: bool = False,
197
- **kwargs
198
+ self, file_source: str, file_type: int, srv_send_msg: bool = False, **kwargs
198
199
  ) -> Optional[Media]:
199
200
  """
200
201
  上传媒体文件
201
202
  """
202
203
  # 构建基础payload
203
- payload = {
204
- "file_type": file_type,
205
- "srv_send_msg": srv_send_msg
206
- }
207
-
204
+ payload = {"file_type": file_type, "srv_send_msg": srv_send_msg}
205
+
208
206
  # 处理文件数据
209
207
  if os.path.exists(file_source):
210
208
  # 读取本地文件
211
- async with aiofiles.open(file_source, 'rb') as f:
209
+ async with aiofiles.open(file_source, "rb") as f:
212
210
  file_content = await f.read()
213
211
  # use base64 encode
214
- payload["file_data"] = base64.b64encode(file_content).decode('utf-8')
212
+ payload["file_data"] = base64.b64encode(file_content).decode("utf-8")
215
213
  else:
216
214
  # 使用URL
217
215
  payload["url"] = file_source
218
-
216
+
219
217
  # 添加接收者信息和确定路由
220
218
  if "openid" in kwargs:
221
219
  payload["openid"] = kwargs["openid"]
222
220
  route = Route("POST", "/v2/users/{openid}/files", openid=kwargs["openid"])
223
221
  elif "group_openid" in kwargs:
224
- payload["group_openid"] =kwargs["group_openid"]
225
- route = Route("POST", "/v2/groups/{group_openid}/files", group_openid=kwargs["group_openid"])
222
+ payload["group_openid"] = kwargs["group_openid"]
223
+ route = Route(
224
+ "POST",
225
+ "/v2/groups/{group_openid}/files",
226
+ group_openid=kwargs["group_openid"],
227
+ )
226
228
  else:
227
229
  return None
228
-
230
+
229
231
  try:
230
232
  # 使用底层HTTP请求
231
233
  result = await self.bot.api._http.request(route, json=payload)
232
-
234
+
233
235
  if result:
234
236
  return Media(
235
237
  file_uuid=result.get("file_uuid"),
236
238
  file_info=result.get("file_info"),
237
239
  ttl=result.get("ttl", 0),
238
- file_id=result.get("id", "")
240
+ file_id=result.get("id", ""),
239
241
  )
240
242
  except Exception as e:
241
243
  logger.error(f"上传请求错误: {e}")
242
-
244
+
243
245
  return None
244
-
246
+
245
247
  async def post_c2c_message(
246
248
  self,
247
249
  openid: str,
@@ -286,19 +288,23 @@ class QQOfficialMessageEvent(AstrMessageEvent):
286
288
  image_base64 = image_base64.removeprefix("base64://")
287
289
  elif isinstance(i, Record):
288
290
  if i.file:
289
- record_wav_path = await i.convert_to_file_path() # wav 路径
291
+ record_wav_path = await i.convert_to_file_path() # wav 路径
290
292
  temp_dir = os.path.join(get_astrbot_data_path(), "temp")
291
- record_tecent_silk_path = os.path.join(temp_dir, f"{uuid.uuid4()}.silk")
293
+ record_tecent_silk_path = os.path.join(
294
+ temp_dir, f"{uuid.uuid4()}.silk"
295
+ )
292
296
  try:
293
- duration = await wav_to_tencent_silk(record_wav_path, record_tecent_silk_path)
297
+ duration = await wav_to_tencent_silk(
298
+ record_wav_path, record_tecent_silk_path
299
+ )
294
300
  if duration > 0:
295
301
  record_file_path = record_tecent_silk_path
296
302
  else:
297
- record_file_path = None
303
+ record_file_path = None
298
304
  logger.error("转换音频格式时出错:音频时长不大于0")
299
305
  except Exception as e:
300
306
  logger.error(f"处理语音时出错: {e}")
301
- record_file_path = None
307
+ record_file_path = None
302
308
  else:
303
309
  logger.debug(f"qq_official 忽略 {i.type}")
304
310
  return plain_text, image_base64, image_file_path, record_file_path
@@ -308,7 +308,9 @@ class SlackAdapter(Platform):
308
308
  base64_content = base64.b64encode(content).decode("utf-8")
309
309
  return base64_content
310
310
  else:
311
- logger.error(f"Failed to download slack file: {resp.status} {await resp.text()}")
311
+ logger.error(
312
+ f"Failed to download slack file: {resp.status} {await resp.text()}"
313
+ )
312
314
  raise Exception(f"下载文件失败: {resp.status}")
313
315
 
314
316
  async def run(self) -> Awaitable[Any]:
@@ -75,7 +75,13 @@ class SlackMessageEvent(AstrMessageEvent):
75
75
  "text": {"type": "mrkdwn", "text": "文件上传失败"},
76
76
  }
77
77
  file_url = response["files"][0]["permalink"]
78
- return {"type": "section", "text": {"type": "mrkdwn", "text": f"文件: <{file_url}|{segment.name or '文件'}>"}}
78
+ return {
79
+ "type": "section",
80
+ "text": {
81
+ "type": "mrkdwn",
82
+ "text": f"文件: <{file_url}|{segment.name or '文件'}>",
83
+ },
84
+ }
79
85
  else:
80
86
  return {"type": "section", "text": {"type": "mrkdwn", "text": str(segment)}}
81
87
 
@@ -66,7 +66,9 @@ class TelegramPlatformEvent(AstrMessageEvent):
66
66
  return chunks
67
67
 
68
68
  @classmethod
69
- async def send_with_client(cls, client: ExtBot, message: MessageChain, user_name: str):
69
+ async def send_with_client(
70
+ cls, client: ExtBot, message: MessageChain, user_name: str
71
+ ):
70
72
  image_path = None
71
73
 
72
74
  has_reply = False
@@ -1,5 +1,6 @@
1
1
  import asyncio
2
2
 
3
+
3
4
  class WebChatQueueMgr:
4
5
  def __init__(self) -> None:
5
6
  self.queues = {}
@@ -30,4 +31,5 @@ class WebChatQueueMgr:
30
31
  """Check if a queue exists for the given conversation ID"""
31
32
  return conversation_id in self.queues
32
33
 
34
+
33
35
  webchat_queue_mgr = WebChatQueueMgr()