AstrBot 4.1.4__tar.gz → 4.1.6__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 (525) hide show
  1. {astrbot-4.1.4 → astrbot-4.1.6}/PKG-INFO +6 -7
  2. {astrbot-4.1.4 → astrbot-4.1.6}/README.md +3 -6
  3. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/agent.py +1 -1
  4. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/mcp_client.py +3 -1
  5. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/runners/tool_loop_agent_runner.py +6 -27
  6. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/tool.py +28 -17
  7. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/config/default.py +50 -14
  8. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/sqlite.py +16 -1
  9. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/content_safety_check/stage.py +1 -1
  10. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +1 -1
  11. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +1 -1
  12. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/context_utils.py +4 -1
  13. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/process_stage/method/llm_request.py +23 -4
  14. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/process_stage/method/star_request.py +8 -6
  15. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/manager.py +4 -0
  16. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +2 -1
  17. astrbot-4.1.6/astrbot/core/platform/sources/misskey/misskey_adapter.py +391 -0
  18. astrbot-4.1.6/astrbot/core/platform/sources/misskey/misskey_api.py +404 -0
  19. astrbot-4.1.6/astrbot/core/platform/sources/misskey/misskey_event.py +123 -0
  20. astrbot-4.1.6/astrbot/core/platform/sources/misskey/misskey_utils.py +327 -0
  21. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/satori/satori_adapter.py +290 -24
  22. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/satori/satori_event.py +9 -0
  23. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/telegram/tg_event.py +0 -1
  24. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/entities.py +13 -3
  25. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/func_tool_manager.py +4 -4
  26. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/manager.py +53 -24
  27. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/context.py +31 -14
  28. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/command_group.py +4 -4
  29. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/platform_adapter_type.py +10 -5
  30. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/register/star.py +3 -1
  31. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/register/star_handler.py +65 -36
  32. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/session_plugin_manager.py +3 -0
  33. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/star_handler.py +4 -4
  34. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/star_manager.py +10 -4
  35. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/star_tools.py +6 -2
  36. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/updator.py +3 -0
  37. astrbot-4.1.6/changelogs/v4.1.5.md +11 -0
  38. astrbot-4.1.6/changelogs/v4.1.6.md +3 -0
  39. astrbot-4.1.6/dashboard/src/assets/images/platform_logos/misskey.png +0 -0
  40. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +3 -3
  41. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +7 -7
  42. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ConversationPage.vue +56 -103
  43. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ExtensionPage.vue +18 -39
  44. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/PlatformPage.vue +3 -0
  45. astrbot-4.1.6/dashboard/src/views/SessionManagementPage.vue +811 -0
  46. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +1 -0
  47. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/components/MessageStat.vue +5 -2
  48. {astrbot-4.1.4 → astrbot-4.1.6}/packages/astrbot/main.py +9 -4
  49. {astrbot-4.1.4 → astrbot-4.1.6}/packages/web_searcher/main.py +8 -3
  50. {astrbot-4.1.4 → astrbot-4.1.6}/pyproject.toml +3 -1
  51. {astrbot-4.1.4 → astrbot-4.1.6}/requirements.txt +2 -1
  52. astrbot-4.1.4/dashboard/src/views/SessionManagementPage.vue +0 -1083
  53. astrbot-4.1.4/uv.lock +0 -3407
  54. {astrbot-4.1.4 → astrbot-4.1.6}/.dockerignore +0 -0
  55. {astrbot-4.1.4 → astrbot-4.1.6}/.github/FUNDING.yml +0 -0
  56. {astrbot-4.1.4 → astrbot-4.1.6}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
  57. {astrbot-4.1.4 → astrbot-4.1.6}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  58. {astrbot-4.1.4 → astrbot-4.1.6}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  59. {astrbot-4.1.4 → astrbot-4.1.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  60. {astrbot-4.1.4 → astrbot-4.1.6}/.github/auto_assign.yml +0 -0
  61. {astrbot-4.1.4 → astrbot-4.1.6}/.github/copilot-instructions.md +0 -0
  62. {astrbot-4.1.4 → astrbot-4.1.6}/.github/dependabot.yml +0 -0
  63. {astrbot-4.1.4 → astrbot-4.1.6}/.github/workflows/auto_release.yml +0 -0
  64. {astrbot-4.1.4 → astrbot-4.1.6}/.github/workflows/code-format.yml +0 -0
  65. {astrbot-4.1.4 → astrbot-4.1.6}/.github/workflows/codeql.yml +0 -0
  66. {astrbot-4.1.4 → astrbot-4.1.6}/.github/workflows/coverage_test.yml +0 -0
  67. {astrbot-4.1.4 → astrbot-4.1.6}/.github/workflows/dashboard_ci.yml +0 -0
  68. {astrbot-4.1.4 → astrbot-4.1.6}/.github/workflows/docker-image.yml +0 -0
  69. {astrbot-4.1.4 → astrbot-4.1.6}/.github/workflows/stale.yml +0 -0
  70. {astrbot-4.1.4 → astrbot-4.1.6}/.gitignore +0 -0
  71. {astrbot-4.1.4 → astrbot-4.1.6}/.pre-commit-config.yaml +0 -0
  72. {astrbot-4.1.4 → astrbot-4.1.6}/.python-version +0 -0
  73. {astrbot-4.1.4 → astrbot-4.1.6}/CODE_OF_CONDUCT.md +0 -0
  74. {astrbot-4.1.4 → astrbot-4.1.6}/Dockerfile +0 -0
  75. {astrbot-4.1.4 → astrbot-4.1.6}/Dockerfile_with_node +0 -0
  76. {astrbot-4.1.4 → astrbot-4.1.6}/LICENSE +0 -0
  77. {astrbot-4.1.4 → astrbot-4.1.6}/README_en.md +0 -0
  78. {astrbot-4.1.4 → astrbot-4.1.6}/README_ja.md +0 -0
  79. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/__init__.py +0 -0
  80. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/__init__.py +0 -0
  81. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/all.py +0 -0
  82. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/event/__init__.py +0 -0
  83. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/event/filter/__init__.py +0 -0
  84. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/message_components.py +0 -0
  85. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/platform/__init__.py +0 -0
  86. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/provider/__init__.py +0 -0
  87. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/star/__init__.py +0 -0
  88. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/api/util/__init__.py +0 -0
  89. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/__init__.py +0 -0
  90. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/__main__.py +0 -0
  91. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/commands/__init__.py +0 -0
  92. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/commands/cmd_conf.py +0 -0
  93. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/commands/cmd_init.py +0 -0
  94. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/commands/cmd_plug.py +0 -0
  95. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/commands/cmd_run.py +0 -0
  96. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/utils/__init__.py +0 -0
  97. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/utils/basic.py +0 -0
  98. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/utils/plugin.py +0 -0
  99. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/cli/utils/version_comparator.py +0 -0
  100. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/__init__.py +0 -0
  101. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/handoff.py +0 -0
  102. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/hooks.py +0 -0
  103. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/response.py +0 -0
  104. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/run_context.py +0 -0
  105. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/runners/__init__.py +0 -0
  106. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/runners/base.py +0 -0
  107. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/agent/tool_executor.py +0 -0
  108. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/astr_agent_context.py +0 -0
  109. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/astrbot_config_mgr.py +0 -0
  110. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/config/__init__.py +0 -0
  111. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/config/astrbot_config.py +0 -0
  112. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/conversation_mgr.py +0 -0
  113. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/core_lifecycle.py +0 -0
  114. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/__init__.py +0 -0
  115. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/migration/helper.py +0 -0
  116. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
  117. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/migration/shared_preferences_v3.py +0 -0
  118. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/migration/sqlite_v3.py +0 -0
  119. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/po.py +0 -0
  120. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/vec_db/base.py +0 -0
  121. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/vec_db/faiss_impl/__init__.py +0 -0
  122. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
  123. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
  124. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
  125. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +0 -0
  126. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/event_bus.py +0 -0
  127. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/file_token_service.py +0 -0
  128. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/initial_loader.py +0 -0
  129. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/log.py +0 -0
  130. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/message/components.py +0 -0
  131. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/message/message_event_result.py +0 -0
  132. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/persona_mgr.py +0 -0
  133. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/__init__.py +0 -0
  134. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
  135. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
  136. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/context.py +0 -0
  137. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
  138. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/process_stage/stage.py +0 -0
  139. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
  140. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/respond/stage.py +0 -0
  141. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
  142. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/scheduler.py +0 -0
  143. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
  144. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/stage.py +0 -0
  145. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/waking_check/stage.py +0 -0
  146. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
  147. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/__init__.py +0 -0
  148. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/astr_message_event.py +0 -0
  149. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/astrbot_message.py +0 -0
  150. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/message_session.py +0 -0
  151. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/message_type.py +0 -0
  152. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/platform.py +0 -0
  153. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/platform_metadata.py +0 -0
  154. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/register.py +0 -0
  155. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
  156. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
  157. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +0 -0
  158. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/discord/client.py +0 -0
  159. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/discord/components.py +0 -0
  160. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
  161. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/discord/discord_platform_event.py +0 -0
  162. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
  163. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
  164. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +0 -0
  165. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
  166. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
  167. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
  168. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
  169. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/slack/client.py +0 -0
  170. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/slack/slack_adapter.py +0 -0
  171. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/slack/slack_event.py +0 -0
  172. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/telegram/tg_adapter.py +0 -0
  173. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
  174. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
  175. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +0 -0
  176. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +0 -0
  177. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +0 -0
  178. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +0 -0
  179. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
  180. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
  181. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/wecom/wecom_kf.py +0 -0
  182. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +0 -0
  183. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +0 -0
  184. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -0
  185. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/platform_message_history_mgr.py +0 -0
  186. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/__init__.py +0 -0
  187. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/entites.py +0 -0
  188. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/provider.py +0 -0
  189. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/register.py +0 -0
  190. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/anthropic_source.py +0 -0
  191. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
  192. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/dashscope_source.py +0 -0
  193. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
  194. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/dify_source.py +0 -0
  195. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
  196. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +0 -0
  197. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
  198. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/gemini_source.py +0 -0
  199. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
  200. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
  201. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
  202. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
  203. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
  204. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/openai_source.py +0 -0
  205. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
  206. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
  207. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
  208. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
  209. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
  210. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
  211. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/provider/sources/zhipu_source.py +0 -0
  212. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/README.md +0 -0
  213. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/__init__.py +0 -0
  214. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/config.py +0 -0
  215. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/__init__.py +0 -0
  216. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/command.py +0 -0
  217. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/custom_filter.py +0 -0
  218. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/event_message_type.py +0 -0
  219. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/permission.py +0 -0
  220. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/filter/regex.py +0 -0
  221. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/register/__init__.py +0 -0
  222. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/session_llm_manager.py +0 -0
  223. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/star/star.py +0 -0
  224. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/updator.py +0 -0
  225. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/astrbot_path.py +0 -0
  226. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/command_parser.py +0 -0
  227. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/dify_api_client.py +0 -0
  228. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/io.py +0 -0
  229. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/log_pipe.py +0 -0
  230. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/metrics.py +0 -0
  231. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/path_util.py +0 -0
  232. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/pip_installer.py +0 -0
  233. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/session_lock.py +0 -0
  234. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/session_waiter.py +0 -0
  235. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/shared_preferences.py +0 -0
  236. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/t2i/__init__.py +0 -0
  237. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/t2i/local_strategy.py +0 -0
  238. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/t2i/network_strategy.py +0 -0
  239. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/t2i/renderer.py +0 -0
  240. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
  241. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/t2i/template/base.html +0 -0
  242. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/t2i/template_manager.py +0 -0
  243. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/tencent_record_helper.py +0 -0
  244. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/utils/version_comparator.py +0 -0
  245. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/core/zip_updator.py +0 -0
  246. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/__init__.py +0 -0
  247. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/auth.py +0 -0
  248. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/chat.py +0 -0
  249. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/config.py +0 -0
  250. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/conversation.py +0 -0
  251. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/file.py +0 -0
  252. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/log.py +0 -0
  253. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/persona.py +0 -0
  254. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/plugin.py +0 -0
  255. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/route.py +0 -0
  256. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/session_management.py +0 -0
  257. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/stat.py +0 -0
  258. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/static_file.py +0 -0
  259. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/t2i.py +0 -0
  260. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/tools.py +0 -0
  261. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/routes/update.py +0 -0
  262. {astrbot-4.1.4 → astrbot-4.1.6}/astrbot/dashboard/server.py +0 -0
  263. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.0.md +0 -0
  264. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.1.md +0 -0
  265. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.10.md +0 -0
  266. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.11.md +0 -0
  267. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.12.md +0 -0
  268. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.13.md +0 -0
  269. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.14.md +0 -0
  270. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.15.md +0 -0
  271. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.16.md +0 -0
  272. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.17.md +0 -0
  273. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.18.md +0 -0
  274. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.19.md +0 -0
  275. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.20.md +0 -0
  276. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.21.md +0 -0
  277. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.22.md +0 -0
  278. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.23.md +0 -0
  279. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.24.md +0 -0
  280. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.25.md +0 -0
  281. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.26.md +0 -0
  282. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.27.md +0 -0
  283. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.28.md +0 -0
  284. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.29.md +0 -0
  285. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.3.md +0 -0
  286. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.30.md +0 -0
  287. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.31.md +0 -0
  288. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.32.md +0 -0
  289. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.33.md +0 -0
  290. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.35.md +0 -0
  291. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.36.md +0 -0
  292. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.37.md +0 -0
  293. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.38.md +0 -0
  294. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.39.md +0 -0
  295. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.4.md +0 -0
  296. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.5.md +0 -0
  297. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.6.md +0 -0
  298. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.7.md +0 -0
  299. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.8.md +0 -0
  300. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.4.9.md +0 -0
  301. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.0.md +0 -0
  302. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.1.md +0 -0
  303. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.10.md +0 -0
  304. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.11.md +0 -0
  305. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.12.md +0 -0
  306. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.13.md +0 -0
  307. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.14.md +0 -0
  308. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.15.md +0 -0
  309. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.16.md +0 -0
  310. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.17.md +0 -0
  311. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.18.md +0 -0
  312. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.19.md +0 -0
  313. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.2.md +0 -0
  314. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.20.md +0 -0
  315. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.21.md +0 -0
  316. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.22.md +0 -0
  317. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.23.md +0 -0
  318. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.24.md +0 -0
  319. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.25.md +0 -0
  320. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.26.md +0 -0
  321. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.27.md +0 -0
  322. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.3.1.md +0 -0
  323. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.3.2.md +0 -0
  324. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.3.md +0 -0
  325. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.4.md +0 -0
  326. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.5.md +0 -0
  327. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.6.md +0 -0
  328. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.7.md +0 -0
  329. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.8.md +0 -0
  330. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v3.5.9.md +0 -0
  331. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.0.0-beta.3.md +0 -0
  332. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.0.0-beta.4.md +0 -0
  333. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.0.0-beta.5.md +0 -0
  334. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.0.0.md +0 -0
  335. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.1.0.md +0 -0
  336. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.1.1.md +0 -0
  337. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.1.2.md +0 -0
  338. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.1.3.md +0 -0
  339. {astrbot-4.1.4 → astrbot-4.1.6}/changelogs/v4.1.4.md +0 -0
  340. {astrbot-4.1.4 → astrbot-4.1.6}/compose.yml +0 -0
  341. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/.gitignore +0 -0
  342. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/LICENSE +0 -0
  343. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/README.md +0 -0
  344. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/env.d.ts +0 -0
  345. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/index.html +0 -0
  346. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/public/_redirects +0 -0
  347. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/public/favicon.svg +0 -0
  348. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/App.vue +0 -0
  349. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/astrbot_banner.png +0 -0
  350. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
  351. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
  352. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
  353. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
  354. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
  355. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
  356. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
  357. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
  358. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
  359. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
  360. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
  361. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
  362. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/ConfirmDialog.vue +0 -0
  363. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/chat/ProviderModelSelector.vue +0 -0
  364. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
  365. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
  366. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
  367. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
  368. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ItemCard.vue +0 -0
  369. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
  370. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
  371. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
  372. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
  373. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/Logo.vue +0 -0
  374. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
  375. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
  376. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
  377. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
  378. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
  379. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ProxySelector.vue +0 -0
  380. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
  381. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
  382. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/UiParentCard.vue +0 -0
  383. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
  384. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/config.ts +0 -0
  385. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/composables.ts +0 -0
  386. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/loader.ts +0 -0
  387. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
  388. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
  389. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
  390. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
  391. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
  392. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
  393. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
  394. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
  395. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
  396. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
  397. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
  398. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/chat.json +0 -0
  399. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
  400. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
  401. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
  402. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
  403. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
  404. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
  405. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
  406. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
  407. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
  408. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
  409. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
  410. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
  411. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
  412. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
  413. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
  414. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
  415. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
  416. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
  417. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
  418. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
  419. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
  420. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
  421. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
  422. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
  423. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
  424. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
  425. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/chat.json +0 -0
  426. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
  427. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
  428. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
  429. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
  430. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
  431. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
  432. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
  433. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
  434. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
  435. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
  436. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
  437. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
  438. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
  439. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/tools/index.ts +0 -0
  440. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/translations.ts +0 -0
  441. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/types.ts +0 -0
  442. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/i18n/validator.ts +0 -0
  443. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
  444. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/layouts/full/FullLayout.vue +0 -0
  445. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
  446. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
  447. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
  448. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
  449. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/main.ts +0 -0
  450. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/plugins/confirmPlugin.ts +0 -0
  451. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/plugins/vuetify.ts +0 -0
  452. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/router/AuthRoutes.ts +0 -0
  453. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
  454. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/router/MainRoutes.ts +0 -0
  455. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/router/index.ts +0 -0
  456. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/_override.scss +0 -0
  457. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/_variables.scss +0 -0
  458. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VButtons.scss +0 -0
  459. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VCard.scss +0 -0
  460. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VField.scss +0 -0
  461. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VInput.scss +0 -0
  462. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
  463. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
  464. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VShadow.scss +0 -0
  465. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VTabs.scss +0 -0
  466. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/components/_VTextField.scss +0 -0
  467. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/layout/_container.scss +0 -0
  468. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/layout/_sidebar.scss +0 -0
  469. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/pages/_dashboards.scss +0 -0
  470. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/scss/style.scss +0 -0
  471. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/stores/auth.ts +0 -0
  472. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/stores/common.js +0 -0
  473. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/stores/customizer.ts +0 -0
  474. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/theme/DarkTheme.ts +0 -0
  475. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/theme/LightTheme.ts +0 -0
  476. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
  477. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
  478. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
  479. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/AboutPage.vue +0 -0
  480. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/AlkaidPage.vue +0 -0
  481. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ChatBoxPage.vue +0 -0
  482. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ChatPage.vue +0 -0
  483. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ConfigPage.vue +0 -0
  484. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ConsolePage.vue +0 -0
  485. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/PersonaPage.vue +0 -0
  486. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ProviderPage.vue +0 -0
  487. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/Settings.vue +0 -0
  488. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/ToolUsePage.vue +0 -0
  489. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
  490. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
  491. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/alkaid/Other.vue +0 -0
  492. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
  493. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
  494. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
  495. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
  496. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
  497. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
  498. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
  499. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
  500. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/tsconfig.json +0 -0
  501. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/tsconfig.vite-config.json +0 -0
  502. {astrbot-4.1.4 → astrbot-4.1.6}/dashboard/vite.config.ts +0 -0
  503. {astrbot-4.1.4 → astrbot-4.1.6}/main.py +0 -0
  504. {astrbot-4.1.4 → astrbot-4.1.6}/packages/astrbot/long_term_memory.py +0 -0
  505. {astrbot-4.1.4 → astrbot-4.1.6}/packages/astrbot/metadata.yaml +0 -0
  506. {astrbot-4.1.4 → astrbot-4.1.6}/packages/python_interpreter/main.py +0 -0
  507. {astrbot-4.1.4 → astrbot-4.1.6}/packages/python_interpreter/metadata.yaml +0 -0
  508. {astrbot-4.1.4 → astrbot-4.1.6}/packages/python_interpreter/requirements.txt +0 -0
  509. {astrbot-4.1.4 → astrbot-4.1.6}/packages/python_interpreter/shared/api.py +0 -0
  510. {astrbot-4.1.4 → astrbot-4.1.6}/packages/reminder/main.py +0 -0
  511. {astrbot-4.1.4 → astrbot-4.1.6}/packages/reminder/metadata.yaml +0 -0
  512. {astrbot-4.1.4 → astrbot-4.1.6}/packages/session_controller/main.py +0 -0
  513. {astrbot-4.1.4 → astrbot-4.1.6}/packages/session_controller/metadata.yaml +0 -0
  514. {astrbot-4.1.4 → astrbot-4.1.6}/packages/thinking_filter/main.py +0 -0
  515. {astrbot-4.1.4 → astrbot-4.1.6}/packages/thinking_filter/metadata.yaml +0 -0
  516. {astrbot-4.1.4 → astrbot-4.1.6}/packages/web_searcher/engines/__init__.py +0 -0
  517. {astrbot-4.1.4 → astrbot-4.1.6}/packages/web_searcher/engines/bing.py +0 -0
  518. {astrbot-4.1.4 → astrbot-4.1.6}/packages/web_searcher/engines/google.py +0 -0
  519. {astrbot-4.1.4 → astrbot-4.1.6}/packages/web_searcher/engines/sogo.py +0 -0
  520. {astrbot-4.1.4 → astrbot-4.1.6}/packages/web_searcher/metadata.yaml +0 -0
  521. {astrbot-4.1.4 → astrbot-4.1.6}/samples/stt_health_check.wav +0 -0
  522. {astrbot-4.1.4 → astrbot-4.1.6}/tests/test_dashboard.py +0 -0
  523. {astrbot-4.1.4 → astrbot-4.1.6}/tests/test_main.py +0 -0
  524. {astrbot-4.1.4 → astrbot-4.1.6}/tests/test_pipeline.py +0 -0
  525. {astrbot-4.1.4 → astrbot-4.1.6}/tests/test_plugin_manager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.1.4
3
+ Version: 4.1.6
4
4
  Summary: 易上手的多平台 LLM 聊天机器人及开发框架
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -10,9 +10,11 @@ Requires-Dist: aiohttp>=3.11.18
10
10
  Requires-Dist: aiosqlite>=0.21.0
11
11
  Requires-Dist: anthropic>=0.51.0
12
12
  Requires-Dist: apscheduler>=3.11.0
13
+ Requires-Dist: audioop-lts; python_full_version >= '3.13'
13
14
  Requires-Dist: beautifulsoup4>=4.13.4
14
15
  Requires-Dist: certifi>=2025.4.26
15
16
  Requires-Dist: chardet~=5.1.0
17
+ Requires-Dist: click>=8.2.1
16
18
  Requires-Dist: colorlog>=6.9.0
17
19
  Requires-Dist: cryptography>=44.0.3
18
20
  Requires-Dist: dashscope>=1.23.2
@@ -162,7 +164,6 @@ uv run main.py
162
164
 
163
165
  <a href="https://discord.gg/hAVk6tgV36"><img alt="Discord_community" src="https://img.shields.io/badge/Discord-AstrBot-purple?style=for-the-badge&color=76bad9"></a>
164
166
 
165
-
166
167
  ## ⚡ 消息平台支持情况
167
168
 
168
169
  | 平台 | 支持性 |
@@ -179,6 +180,8 @@ uv run main.py
179
180
  | Discord | ✔ |
180
181
  | [KOOK](https://github.com/wuyan1003/astrbot_plugin_kook_adapter) | ✔ |
181
182
  | [VoceChat](https://github.com/HikariFroya/astrbot_plugin_vocechat) | ✔ |
183
+ | Satori | ✔ |
184
+ | Misskey | ✔ |
182
185
 
183
186
  ## ⚡ 提供商支持情况
184
187
 
@@ -224,7 +227,6 @@ pip install pre-commit
224
227
  pre-commit install
225
228
  ```
226
229
 
227
-
228
230
  ## ❤️ Special Thanks
229
231
 
230
232
  特别感谢所有 Contributors 和插件开发者对 AstrBot 的贡献 ❤️
@@ -252,14 +254,11 @@ pre-commit install
252
254
  > 如果本项目对您的生活 / 工作产生了帮助,或者您关注本项目的未来发展,请给项目 Star,这是我维护这个开源项目的动力 <3
253
255
 
254
256
  <div align="center">
255
-
257
+
256
258
  [![Star History Chart](https://api.star-history.com/svg?repos=soulter/astrbot&type=Date)](https://star-history.com/#soulter/astrbot&Date)
257
259
 
258
260
  </div>
259
261
 
260
-
261
262
  </details>
262
263
 
263
-
264
264
  _私は、高性能ですから!_
265
-
@@ -110,7 +110,6 @@ uv run main.py
110
110
 
111
111
  <a href="https://discord.gg/hAVk6tgV36"><img alt="Discord_community" src="https://img.shields.io/badge/Discord-AstrBot-purple?style=for-the-badge&color=76bad9"></a>
112
112
 
113
-
114
113
  ## ⚡ 消息平台支持情况
115
114
 
116
115
  | 平台 | 支持性 |
@@ -127,6 +126,8 @@ uv run main.py
127
126
  | Discord | ✔ |
128
127
  | [KOOK](https://github.com/wuyan1003/astrbot_plugin_kook_adapter) | ✔ |
129
128
  | [VoceChat](https://github.com/HikariFroya/astrbot_plugin_vocechat) | ✔ |
129
+ | Satori | ✔ |
130
+ | Misskey | ✔ |
130
131
 
131
132
  ## ⚡ 提供商支持情况
132
133
 
@@ -172,7 +173,6 @@ pip install pre-commit
172
173
  pre-commit install
173
174
  ```
174
175
 
175
-
176
176
  ## ❤️ Special Thanks
177
177
 
178
178
  特别感谢所有 Contributors 和插件开发者对 AstrBot 的贡献 ❤️
@@ -200,14 +200,11 @@ pre-commit install
200
200
  > 如果本项目对您的生活 / 工作产生了帮助,或者您关注本项目的未来发展,请给项目 Star,这是我维护这个开源项目的动力 <3
201
201
 
202
202
  <div align="center">
203
-
203
+
204
204
  [![Star History Chart](https://api.star-history.com/svg?repos=soulter/astrbot&type=Date)](https://star-history.com/#soulter/astrbot&Date)
205
205
 
206
206
  </div>
207
207
 
208
-
209
208
  </details>
210
209
 
211
-
212
210
  _私は、高性能ですから!_
213
-
@@ -9,5 +9,5 @@ from .hooks import BaseAgentRunHooks
9
9
  class Agent(Generic[TContext]):
10
10
  name: str
11
11
  instructions: str | None = None
12
- tools: list[str, FunctionTool] | None = None
12
+ tools: list[str | FunctionTool] | None = None
13
13
  run_hooks: BaseAgentRunHooks[TContext] | None = None
@@ -92,7 +92,7 @@ class MCPClient:
92
92
  self.session: Optional[mcp.ClientSession] = None
93
93
  self.exit_stack = AsyncExitStack()
94
94
 
95
- self.name = None
95
+ self.name: str | None = None
96
96
  self.active: bool = True
97
97
  self.tools: list[mcp.Tool] = []
98
98
  self.server_errlogs: list[str] = []
@@ -198,6 +198,8 @@ class MCPClient:
198
198
 
199
199
  async def list_tools_and_save(self) -> mcp.ListToolsResult:
200
200
  """List all tools from the server and save them to self.tools"""
201
+ if not self.session:
202
+ raise Exception("MCP Client is not initialized")
201
203
  response = await self.session.list_tools()
202
204
  self.tools = response.tools
203
205
  return response
@@ -269,17 +269,6 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
269
269
  )
270
270
  yield MessageChain().message("返回的数据类型不受支持。")
271
271
 
272
- try:
273
- await self.agent_hooks.on_tool_end(
274
- self.run_context,
275
- func_tool_name,
276
- func_tool_args,
277
- resp,
278
- )
279
- except Exception as e:
280
- logger.error(
281
- f"Error in on_tool_end hook: {e}", exc_info=True
282
- )
283
272
  elif resp is None:
284
273
  # Tool 直接请求发送消息给用户
285
274
  # 这里我们将直接结束 Agent Loop。
@@ -289,27 +278,17 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
289
278
  yield MessageChain(
290
279
  chain=res.chain, type="tool_direct_result"
291
280
  )
292
- try:
293
- await self.agent_hooks.on_tool_end(
294
- self.run_context, func_tool_name, func_tool_args, None
295
- )
296
- except Exception as e:
297
- logger.error(
298
- f"Error in on_tool_end hook: {e}", exc_info=True
299
- )
300
281
  else:
301
282
  logger.warning(
302
283
  f"Tool 返回了不支持的类型: {type(resp)},将忽略。"
303
284
  )
304
285
 
305
- try:
306
- await self.agent_hooks.on_tool_end(
307
- self.run_context, func_tool_name, func_tool_args, None
308
- )
309
- except Exception as e:
310
- logger.error(
311
- f"Error in on_tool_end hook: {e}", exc_info=True
312
- )
286
+ try:
287
+ await self.agent_hooks.on_tool_end(
288
+ self.run_context, func_tool, func_tool_args, None
289
+ )
290
+ except Exception as e:
291
+ logger.error(f"Error in on_tool_end hook: {e}", exc_info=True)
313
292
 
314
293
  self.run_context.event.clear_result()
315
294
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  from dataclasses import dataclass
2
2
  from deprecated import deprecated
3
- from typing import Awaitable, Literal, Any, Optional
3
+ from typing import Awaitable, Callable, Literal, Any, Optional
4
4
  from .mcp_client import MCPClient
5
5
 
6
6
 
@@ -8,10 +8,10 @@ from .mcp_client import MCPClient
8
8
  class FunctionTool:
9
9
  """A class representing a function tool that can be used in function calling."""
10
10
 
11
- name: str | None = None
11
+ name: str
12
12
  parameters: dict | None = None
13
13
  description: str | None = None
14
- handler: Awaitable | None = None
14
+ handler: Callable[..., Awaitable[Any]] | None = None
15
15
  """处理函数, 当 origin 为 mcp 时,这个为空"""
16
16
  handler_module_path: str | None = None
17
17
  """处理函数的模块路径,当 origin 为 mcp 时,这个为空
@@ -51,7 +51,7 @@ class ToolSet:
51
51
  This class provides methods to add, remove, and retrieve tools, as well as
52
52
  convert the tools to different API formats (OpenAI, Anthropic, Google GenAI)."""
53
53
 
54
- def __init__(self, tools: list[FunctionTool] = None):
54
+ def __init__(self, tools: list[FunctionTool] | None = None):
55
55
  self.tools: list[FunctionTool] = tools or []
56
56
 
57
57
  def empty(self) -> bool:
@@ -79,7 +79,13 @@ class ToolSet:
79
79
  return None
80
80
 
81
81
  @deprecated(reason="Use add_tool() instead", version="4.0.0")
82
- def add_func(self, name: str, func_args: list, desc: str, handler: Awaitable):
82
+ def add_func(
83
+ self,
84
+ name: str,
85
+ func_args: list,
86
+ desc: str,
87
+ handler: Callable[..., Awaitable[Any]],
88
+ ):
83
89
  """Add a function tool to the set."""
84
90
  params = {
85
91
  "type": "object", # hard-coded here
@@ -104,7 +110,7 @@ class ToolSet:
104
110
  self.remove_tool(name)
105
111
 
106
112
  @deprecated(reason="Use get_tool() instead", version="4.0.0")
107
- def get_func(self, name: str) -> list[FunctionTool]:
113
+ def get_func(self, name: str) -> FunctionTool | None:
108
114
  """Get all function tools."""
109
115
  return self.get_tool(name)
110
116
 
@@ -125,7 +131,11 @@ class ToolSet:
125
131
  },
126
132
  }
127
133
 
128
- if tool.parameters.get("properties") or not omit_empty_parameter_field:
134
+ if (
135
+ tool.parameters
136
+ and tool.parameters.get("properties")
137
+ or not omit_empty_parameter_field
138
+ ):
129
139
  func_def["function"]["parameters"] = tool.parameters
130
140
 
131
141
  result.append(func_def)
@@ -135,14 +145,14 @@ class ToolSet:
135
145
  """Convert tools to Anthropic API format."""
136
146
  result = []
137
147
  for tool in self.tools:
148
+ input_schema = {"type": "object"}
149
+ if tool.parameters:
150
+ input_schema["properties"] = tool.parameters.get("properties", {})
151
+ input_schema["required"] = tool.parameters.get("required", [])
138
152
  tool_def = {
139
153
  "name": tool.name,
140
154
  "description": tool.description,
141
- "input_schema": {
142
- "type": "object",
143
- "properties": tool.parameters.get("properties", {}),
144
- "required": tool.parameters.get("required", []),
145
- },
155
+ "input_schema": input_schema,
146
156
  }
147
157
  result.append(tool_def)
148
158
  return result
@@ -210,14 +220,15 @@ class ToolSet:
210
220
 
211
221
  return result
212
222
 
213
- tools = [
214
- {
223
+ tools = []
224
+ for tool in self.tools:
225
+ d = {
215
226
  "name": tool.name,
216
227
  "description": tool.description,
217
- "parameters": convert_schema(tool.parameters),
218
228
  }
219
- for tool in self.tools
220
- ]
229
+ if tool.parameters:
230
+ d["parameters"] = convert_schema(tool.parameters)
231
+ tools.append(d)
221
232
 
222
233
  declarations = {}
223
234
  if tools:
@@ -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.4"
9
+ VERSION = "4.1.6"
10
10
  DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
11
11
 
12
12
  # 默认配置
@@ -236,6 +236,16 @@ CONFIG_METADATA_2 = {
236
236
  "discord_guild_id_for_debug": "",
237
237
  "discord_activity_name": "",
238
238
  },
239
+ "Misskey": {
240
+ "id": "misskey",
241
+ "type": "misskey",
242
+ "enable": False,
243
+ "misskey_instance_url": "https://misskey.example",
244
+ "misskey_token": "",
245
+ "misskey_default_visibility": "public",
246
+ "misskey_local_only": False,
247
+ "misskey_enable_chat": True,
248
+ },
239
249
  "Slack": {
240
250
  "id": "slack",
241
251
  "type": "slack",
@@ -253,7 +263,7 @@ CONFIG_METADATA_2 = {
253
263
  "type": "satori",
254
264
  "enable": False,
255
265
  "satori_api_base_url": "http://localhost:5140/satori/v1",
256
- "satori_endpoint": "ws://127.0.0.1:5140/satori/v1/events",
266
+ "satori_endpoint": "ws://localhost:5140/satori/v1/events",
257
267
  "satori_token": "",
258
268
  "satori_auto_reconnect": True,
259
269
  "satori_heartbeat_interval": 10,
@@ -262,34 +272,34 @@ CONFIG_METADATA_2 = {
262
272
  },
263
273
  "items": {
264
274
  "satori_api_base_url": {
265
- "description": "Satori API Base URL",
275
+ "description": "Satori API 终结点",
266
276
  "type": "string",
267
- "hint": "The base URL for the Satori API.",
277
+ "hint": "Satori API 的基础地址。",
268
278
  },
269
279
  "satori_endpoint": {
270
- "description": "Satori WebSocket Endpoint",
280
+ "description": "Satori WebSocket 终结点",
271
281
  "type": "string",
272
- "hint": "The WebSocket endpoint for Satori events.",
282
+ "hint": "Satori 事件的 WebSocket 端点。",
273
283
  },
274
284
  "satori_token": {
275
- "description": "Satori Token",
285
+ "description": "Satori 令牌",
276
286
  "type": "string",
277
- "hint": "The token used for authenticating with the Satori API.",
287
+ "hint": "用于 Satori API 身份验证的令牌。",
278
288
  },
279
289
  "satori_auto_reconnect": {
280
- "description": "Enable Auto Reconnect",
290
+ "description": "启用自动重连",
281
291
  "type": "bool",
282
- "hint": "Whether to automatically reconnect the WebSocket on disconnection.",
292
+ "hint": "断开连接时是否自动重新连接 WebSocket",
283
293
  },
284
294
  "satori_heartbeat_interval": {
285
- "description": "Satori Heartbeat Interval",
295
+ "description": "Satori 心跳间隔",
286
296
  "type": "int",
287
- "hint": "The interval (in seconds) for sending heartbeat messages.",
297
+ "hint": "发送心跳消息的间隔(秒)。",
288
298
  },
289
299
  "satori_reconnect_delay": {
290
- "description": "Satori Reconnect Delay",
300
+ "description": "Satori 重连延迟",
291
301
  "type": "int",
292
- "hint": "The delay (in seconds) before attempting to reconnect.",
302
+ "hint": "尝试重新连接前的延迟时间(秒)。",
293
303
  },
294
304
  "slack_connection_mode": {
295
305
  "description": "Slack Connection Mode",
@@ -337,6 +347,32 @@ CONFIG_METADATA_2 = {
337
347
  "type": "string",
338
348
  "hint": "如果你的网络环境为中国大陆,请在 `其他配置` 处设置代理或更改 api_base。",
339
349
  },
350
+ "misskey_instance_url": {
351
+ "description": "Misskey 实例 URL",
352
+ "type": "string",
353
+ "hint": "例如 https://misskey.example,填写 Bot 账号所在的 Misskey 实例地址",
354
+ },
355
+ "misskey_token": {
356
+ "description": "Misskey Access Token",
357
+ "type": "string",
358
+ "hint": "连接服务设置生成的 API 鉴权访问令牌(Access token)",
359
+ },
360
+ "misskey_default_visibility": {
361
+ "description": "默认帖子可见性",
362
+ "type": "string",
363
+ "options": ["public", "home", "followers"],
364
+ "hint": "机器人发帖时的默认可见性设置。public:公开,home:主页时间线,followers:仅关注者。",
365
+ },
366
+ "misskey_local_only": {
367
+ "description": "仅限本站(不参与联合)",
368
+ "type": "bool",
369
+ "hint": "启用后,机器人发出的帖子将仅在本实例可见,不会联合到其他实例",
370
+ },
371
+ "misskey_enable_chat": {
372
+ "description": "启用聊天消息响应",
373
+ "type": "bool",
374
+ "hint": "启用后,机器人将会监听和响应私信聊天消息",
375
+ },
340
376
  "telegram_command_register": {
341
377
  "description": "Telegram 命令注册",
342
378
  "type": "bool",
@@ -18,6 +18,7 @@ from astrbot.core.db.po import (
18
18
  from sqlalchemy import select, update, delete, text
19
19
  from sqlalchemy.ext.asyncio import AsyncSession
20
20
  from sqlalchemy.sql import func
21
+ from sqlalchemy import or_
21
22
 
22
23
  NOT_GIVEN = T.TypeVar("NOT_GIVEN")
23
24
 
@@ -153,8 +154,22 @@ class SQLiteDatabase(BaseDatabase):
153
154
  ConversationV2.platform_id.in_(platform_ids)
154
155
  )
155
156
  if search_query:
157
+ search_query = search_query.encode("unicode_escape").decode("utf-8")
156
158
  base_query = base_query.where(
157
- ConversationV2.title.ilike(f"%{search_query}%")
159
+ or_(
160
+ ConversationV2.title.ilike(f"%{search_query}%"),
161
+ ConversationV2.content.ilike(f"%{search_query}%"),
162
+ ConversationV2.user_id.ilike(f"%{search_query}%"),
163
+ )
164
+ )
165
+ if "message_types" in kwargs and len(kwargs["message_types"]) > 0:
166
+ for msg_type in kwargs["message_types"]:
167
+ base_query = base_query.where(
168
+ ConversationV2.user_id.ilike(f"%:{msg_type}:%")
169
+ )
170
+ if "platforms" in kwargs and len(kwargs["platforms"]) > 0:
171
+ base_query = base_query.where(
172
+ ConversationV2.platform_id.in_(kwargs["platforms"])
158
173
  )
159
174
 
160
175
  # Get total count matching the filters
@@ -19,7 +19,7 @@ class ContentSafetyCheckStage(Stage):
19
19
  self.strategy_selector = StrategySelector(config)
20
20
 
21
21
  async def process(
22
- self, event: AstrMessageEvent, check_text: str = None
22
+ self, event: AstrMessageEvent, check_text: str | None = None
23
23
  ) -> Union[None, AsyncGenerator[None, None]]:
24
24
  """检查内容安全"""
25
25
  text = check_text if check_text else event.get_message_str()
@@ -13,7 +13,7 @@ class BaiduAipStrategy(ContentSafetyStrategy):
13
13
  self.secret_key = sk
14
14
  self.client = AipContentCensor(self.app_id, self.api_key, self.secret_key)
15
15
 
16
- def check(self, content: str):
16
+ def check(self, content: str) -> tuple[bool, str]:
17
17
  res = self.client.textCensorUserDefined(content)
18
18
  if "conclusionType" not in res:
19
19
  return False, ""
@@ -16,7 +16,7 @@ class KeywordsStrategy(ContentSafetyStrategy):
16
16
  # json.loads(base64.b64decode(f.read()).decode("utf-8"))["keywords"]
17
17
  # )
18
18
 
19
- def check(self, content: str) -> bool:
19
+ def check(self, content: str) -> tuple[bool, str]:
20
20
  for keyword in self.keywords:
21
21
  if re.search(keyword, content):
22
22
  return False, "内容安全检查不通过,匹配到敏感词。"
@@ -10,7 +10,7 @@ from astrbot.core.platform.astr_message_event import AstrMessageEvent
10
10
 
11
11
  async def call_handler(
12
12
  event: AstrMessageEvent,
13
- handler: T.Awaitable,
13
+ handler: T.Callable[..., T.Awaitable[T.Any]],
14
14
  *args,
15
15
  **kwargs,
16
16
  ) -> T.AsyncGenerator[T.Any, None]:
@@ -36,6 +36,9 @@ async def call_handler(
36
36
  except TypeError:
37
37
  logger.error("处理函数参数不匹配,请检查 handler 的定义。", exc_info=True)
38
38
 
39
+ if not ready_to_call:
40
+ return
41
+
39
42
  if inspect.isasyncgen(ready_to_call):
40
43
  _has_yielded = False
41
44
  try:
@@ -7,6 +7,7 @@ import copy
7
7
  import json
8
8
  import traceback
9
9
  from typing import AsyncGenerator, Union
10
+ from astrbot.core.conversation_mgr import Conversation
10
11
  from astrbot.core import logger
11
12
  from astrbot.core.message.components import Image
12
13
  from astrbot.core.message.message_event_result import (
@@ -133,6 +134,15 @@ class FunctionToolExecutor(BaseFunctionToolExecutor[AstrAgentContext]):
133
134
 
134
135
  if agent_runner.done():
135
136
  llm_response = agent_runner.get_final_llm_resp()
137
+
138
+ if not llm_response:
139
+ text_content = mcp.types.TextContent(
140
+ type="text",
141
+ text=f"error when deligate task to {tool.agent.name}",
142
+ )
143
+ yield mcp.types.CallToolResult(content=[text_content])
144
+ return
145
+
136
146
  logger.debug(
137
147
  f"Agent {tool.agent.name} 任务完成, response: {llm_response.completion_text}"
138
148
  )
@@ -148,7 +158,7 @@ class FunctionToolExecutor(BaseFunctionToolExecutor[AstrAgentContext]):
148
158
  )
149
159
  yield mcp.types.CallToolResult(content=[text_content])
150
160
  else:
151
- yield mcp.types.TextContent(
161
+ text_content = mcp.types.TextContent(
152
162
  type="text",
153
163
  text=f"error when deligate task to {tool.agent.name}",
154
164
  )
@@ -200,7 +210,11 @@ class FunctionToolExecutor(BaseFunctionToolExecutor[AstrAgentContext]):
200
210
  ):
201
211
  if not tool.mcp_client:
202
212
  raise ValueError("MCP client is not available for MCP function tools.")
203
- res = await tool.mcp_client.session.call_tool(
213
+
214
+ session = tool.mcp_client.session
215
+ if not session:
216
+ raise ValueError("MCP session is not available for MCP function tools.")
217
+ res = await session.call_tool(
204
218
  name=tool.name,
205
219
  arguments=tool_args,
206
220
  )
@@ -325,7 +339,7 @@ class LLMRequestSubStage(Stage):
325
339
 
326
340
  return _ctx.get_using_provider(umo=event.unified_msg_origin)
327
341
 
328
- async def _get_session_conv(self, event: AstrMessageEvent):
342
+ async def _get_session_conv(self, event: AstrMessageEvent) -> Conversation:
329
343
  umo = event.unified_msg_origin
330
344
  conv_mgr = self.conv_manager
331
345
 
@@ -337,6 +351,8 @@ class LLMRequestSubStage(Stage):
337
351
  if not conversation:
338
352
  cid = await conv_mgr.new_conversation(umo, event.get_platform_id())
339
353
  conversation = await conv_mgr.get_conversation(umo, cid)
354
+ if not conversation:
355
+ raise RuntimeError("无法创建新的对话。")
340
356
  return conversation
341
357
 
342
358
  async def process(
@@ -444,7 +460,10 @@ class LLMRequestSubStage(Stage):
444
460
  if event.plugins_name is not None and req.func_tool:
445
461
  new_tool_set = ToolSet()
446
462
  for tool in req.func_tool.tools:
447
- plugin = star_map.get(tool.handler_module_path)
463
+ mp = tool.handler_module_path
464
+ if not mp:
465
+ continue
466
+ plugin = star_map.get(mp)
448
467
  if not plugin:
449
468
  continue
450
469
  if plugin.name in event.plugins_name or plugin.reserved:
@@ -34,12 +34,14 @@ class StarRequestSubStage(Stage):
34
34
 
35
35
  for handler in activated_handlers:
36
36
  params = handlers_parsed_params.get(handler.handler_full_name, {})
37
- try:
38
- if handler.handler_module_path not in star_map:
39
- continue
40
- logger.debug(
41
- f"plugin -> {star_map.get(handler.handler_module_path).name} - {handler.handler_name}"
37
+ md = star_map.get(handler.handler_module_path)
38
+ if not md:
39
+ logger.warning(
40
+ f"Cannot find plugin for given handler module path: {handler.handler_module_path}"
42
41
  )
42
+ continue
43
+ logger.debug(f"plugin -> {md.name} - {handler.handler_name}")
44
+ try:
43
45
  wrapper = call_handler(event, handler.handler, **params)
44
46
  async for ret in wrapper:
45
47
  yield ret
@@ -49,7 +51,7 @@ class StarRequestSubStage(Stage):
49
51
  logger.error(f"Star {handler.handler_full_name} handle error: {e}")
50
52
 
51
53
  if event.is_at_or_wake_command:
52
- ret = f":(\n\n在调用插件 {star_map.get(handler.handler_module_path).name} 的处理函数 {handler.handler_name} 时出现异常:{e}"
54
+ ret = f":(\n\n在调用插件 {md.name} 的处理函数 {handler.handler_name} 时出现异常:{e}"
53
55
  event.set_result(MessageEventResult().message(ret))
54
56
  yield
55
57
  event.clear_result()
@@ -90,6 +90,10 @@ class PlatformManager:
90
90
  from .sources.discord.discord_platform_adapter import (
91
91
  DiscordPlatformAdapter, # noqa: F401
92
92
  )
93
+ case "misskey":
94
+ from .sources.misskey.misskey_adapter import (
95
+ MisskeyPlatformAdapter, # noqa: F401
96
+ )
93
97
  case "slack":
94
98
  from .sources.slack.slack_adapter import SlackAdapter # noqa: F401
95
99
  case "satori":
@@ -182,7 +182,8 @@ class AiocqhttpAdapter(Platform):
182
182
  abm = AstrBotMessage()
183
183
  abm.self_id = str(event.self_id)
184
184
  abm.sender = MessageMember(
185
- str(event.sender["user_id"]), event.sender["nickname"]
185
+ str(event.sender["user_id"]),
186
+ event.sender.get("card") or event.sender.get("nickname", "N/A"),
186
187
  )
187
188
  if event["message_type"] == "group":
188
189
  abm.type = MessageType.GROUP_MESSAGE