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