AstrBot 4.1.1__tar.gz → 4.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- astrbot-4.1.2/.github/PULL_REQUEST_TEMPLATE.md +46 -0
- astrbot-4.1.2/.github/workflows/code-format.yml +34 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/dashboard_ci.yml +1 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/PKG-INFO +1 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/plugin.py +22 -18
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/response.py +1 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/run_context.py +1 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/config/default.py +11 -11
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/helper.py +1 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/shared_preferences_v3.py +2 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/sqlite_v3.py +2 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/__init__.py +1 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +2 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/context_utils.py +1 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/astr_message_event.py +1 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/manager.py +9 -9
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +3 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +2 -2
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/client.py +2 -2
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/components.py +3 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/discord_platform_event.py +8 -3
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +36 -30
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/slack/slack_adapter.py +3 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/slack/slack_event.py +7 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/telegram/tg_event.py +3 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +2 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_adapter.py +8 -4
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_kf.py +15 -4
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +27 -6
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +3 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/entities.py +1 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/manager.py +5 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +1 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/command.py +3 -9
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/command_group.py +1 -2
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/session_plugin_manager.py +4 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star_manager.py +2 -2
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star_tools.py +22 -8
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/config.py +0 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/log.py +12 -4
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/route.py +0 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/tools.py +0 -1
- astrbot-4.1.2/changelogs/v4.1.1.md +5 -0
- astrbot-4.1.2/changelogs/v4.1.2.md +9 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ProviderPage.vue +18 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/astrbot/long_term_memory.py +3 -1
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/astrbot/main.py +6 -4
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/main.py +4 -2
- {astrbot-4.1.1 → astrbot-4.1.2}/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.2}/.dockerignore +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/FUNDING.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/auto_assign.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/copilot-instructions.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/dependabot.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/auto_release.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/codeql.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/coverage_test.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/docker-image.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.github/workflows/stale.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.gitignore +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.pre-commit-config.yaml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/.python-version +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/CODE_OF_CONDUCT.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/Dockerfile +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/Dockerfile_with_node +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/LICENSE +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/README.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/README_en.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/README_ja.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/all.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/event/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/event/filter/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/message_components.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/platform/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/provider/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/star/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/api/util/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/__main__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_conf.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_init.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_plug.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/commands/cmd_run.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/basic.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/cli/utils/version_comparator.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/agent.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/handoff.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/hooks.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/mcp_client.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/runners/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/runners/base.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/runners/tool_loop_agent_runner.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/tool.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/agent/tool_executor.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/astr_agent_context.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/astrbot_config_mgr.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/config/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/config/astrbot_config.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/conversation_mgr.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/core_lifecycle.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/po.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/sqlite.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/base.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/event_bus.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/file_token_service.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/initial_loader.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/log.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/message/components.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/message/message_event_result.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/persona_mgr.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/context.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/process_stage/method/llm_request.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/process_stage/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/respond/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/scheduler.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/waking_check/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/astrbot_message.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/message_session.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/message_type.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/platform.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/platform_metadata.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/register.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/slack/client.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/telegram/tg_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wechatpadpro/wechatpadpro_message_event.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wechatpadpro/xml_data_parser.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform_message_history_mgr.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/entites.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/func_tool_manager.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/provider.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/register.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/anthropic_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/dashscope_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/dify_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gemini_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/openai_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/provider/sources/zhipu_source.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/README.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/config.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/context.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/custom_filter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/event_message_type.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/permission.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/filter/regex.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/register/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/register/star.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/register/star_handler.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/session_llm_manager.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/star_handler.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/star/updator.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/updator.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/astrbot_path.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/command_parser.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/dify_api_client.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/io.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/log_pipe.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/metrics.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/path_util.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/pip_installer.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/session_lock.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/session_waiter.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/shared_preferences.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/local_strategy.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/network_strategy.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/renderer.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/template/base.html +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/t2i/template_manager.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/tencent_record_helper.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/utils/version_comparator.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/zip_updator.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/auth.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/chat.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/conversation.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/file.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/persona.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/plugin.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/session_management.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/stat.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/static_file.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/t2i.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/routes/update.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/astrbot/dashboard/server.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.0.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.1.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.10.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.11.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.12.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.13.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.14.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.15.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.16.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.17.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.18.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.19.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.20.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.21.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.22.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.23.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.24.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.25.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.26.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.27.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.28.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.29.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.3.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.30.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.31.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.32.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.33.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.35.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.36.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.37.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.38.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.39.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.4.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.5.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.6.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.7.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.8.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.4.9.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.0.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.1.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.10.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.11.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.12.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.13.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.14.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.15.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.16.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.17.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.18.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.19.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.2.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.20.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.21.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.22.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.23.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.24.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.25.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.26.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.27.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.3.1.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.3.2.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.3.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.4.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.5.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.6.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.7.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.8.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v3.5.9.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0-beta.3.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0-beta.4.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0-beta.5.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.0.0.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/changelogs/v4.1.0.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/compose.yml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/.gitignore +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/LICENSE +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/README.md +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/env.d.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/index.html +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/public/_redirects +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/public/favicon.svg +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/App.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/astrbot_banner.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/ConfirmDialog.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/chat/ProviderModelSelector.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ItemCard.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/Logo.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ProxySelector.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/UiParentCard.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/config.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/composables.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/loader.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/chat.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/chat.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/tools/index.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/translations.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/types.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/i18n/validator.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/FullLayout.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/main.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/plugins/confirmPlugin.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/plugins/vuetify.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/AuthRoutes.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/MainRoutes.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/router/index.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/_override.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/_variables.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VButtons.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VCard.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VField.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VInput.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VShadow.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VTabs.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/components/_VTextField.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/layout/_container.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/layout/_sidebar.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/pages/_dashboards.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/scss/style.scss +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/stores/auth.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/stores/common.js +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/stores/customizer.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/theme/DarkTheme.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/theme/LightTheme.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/AboutPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/AlkaidPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ChatBoxPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ChatPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ConfigPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ConsolePage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ConversationPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ExtensionPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/PersonaPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/PlatformPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/SessionManagementPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/Settings.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/ToolUsePage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/alkaid/Other.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/tsconfig.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/tsconfig.vite-config.json +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/dashboard/vite.config.ts +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/main.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/astrbot/metadata.yaml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/main.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/metadata.yaml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/requirements.txt +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/python_interpreter/shared/api.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/reminder/main.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/reminder/metadata.yaml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/session_controller/main.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/session_controller/metadata.yaml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/thinking_filter/main.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/thinking_filter/metadata.yaml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/__init__.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/bing.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/google.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/engines/sogo.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/packages/web_searcher/metadata.yaml +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/requirements.txt +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/samples/stt_health_check.wav +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_dashboard.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_main.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_pipeline.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/tests/test_plugin_manager.py +0 -0
- {astrbot-4.1.1 → astrbot-4.1.2}/uv.lock +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- 如果有的话,请指定此 PR 旨在解决的 ISSUE 编号。 -->
|
|
2
|
+
<!-- If applicable, please specify the ISSUE number this PR aims to resolve. -->
|
|
3
|
+
|
|
4
|
+
fixes #XYZ
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
### Motivation / 动机
|
|
9
|
+
|
|
10
|
+
<!--请描述此项更改的动机:它解决了什么问题?(例如:修复了 XX 错误,添加了 YY 功能)-->
|
|
11
|
+
<!--Please describe the motivation for this change: What problem does it solve? (e.g., Fixes XX bug, adds YY feature)-->
|
|
12
|
+
|
|
13
|
+
### Modifications / 改动点
|
|
14
|
+
|
|
15
|
+
<!--请总结你的改动:哪些核心文件被修改了?实现了什么功能?-->
|
|
16
|
+
<!--Please summarize your changes: What core files were modified? What functionality was implemented?-->
|
|
17
|
+
|
|
18
|
+
### Verification Steps / 验证步骤
|
|
19
|
+
|
|
20
|
+
<!--请为审查者 (Reviewer) 提供清晰、可复现的验证步骤(例如:1. 导航到... 2. 点击...)。-->
|
|
21
|
+
<!--Please provide clear and reproducible verification steps for the Reviewer (e.g., 1. Navigate to... 2. Click...).-->
|
|
22
|
+
|
|
23
|
+
### Screenshots or Test Results / 运行截图或测试结果
|
|
24
|
+
|
|
25
|
+
<!--请粘贴截图、GIF 或测试日志,作为执行“验证步骤”的证据,证明此改动有效。-->
|
|
26
|
+
<!--Please paste screenshots, GIFs, or test logs here as evidence of executing the "Verification Steps" to prove this change is effective.-->
|
|
27
|
+
|
|
28
|
+
### Compatibility & Breaking Changes / 兼容性与破坏性变更
|
|
29
|
+
|
|
30
|
+
<!--请说明此变更的兼容性:哪些是破坏性变更?哪些地方做了向后兼容处理?是否提供了数据迁移方法?-->
|
|
31
|
+
<!--Please explain the compatibility of this change: What are the breaking changes? What backward-compatible measures were taken? Are data migration paths provided?-->
|
|
32
|
+
|
|
33
|
+
- [ ] 这是一个破坏性变更 (Breaking Change)。/ This is a breaking change.
|
|
34
|
+
- [ ] 这不是一个破坏性变更。/ This is NOT a breaking change.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### Checklist / 检查清单
|
|
39
|
+
|
|
40
|
+
<!--如果分支被合并,您的代码将服务于数万名用户!在提交前,请核查一下几点内容。-->
|
|
41
|
+
<!--If merged, your code will serve tens of thousands of users! Please double-check the following items before submitting.-->
|
|
42
|
+
|
|
43
|
+
- [ ] 😊 如果 PR 中有新加入的功能,已经通过 Issue / 邮件等方式和作者讨论过。/ If there are new features added in the PR, I have discussed it with the authors through issues/emails, etc.
|
|
44
|
+
- [ ] 👀 我的更改经过了良好的测试,**并已在上方提供了“验证步骤”和“运行截图”**。/ My changes have been well-tested, **and "Verification Steps" and "Screenshots" have been provided above**.
|
|
45
|
+
- [ ] 🤓 我确保没有引入新依赖库,或者引入了新依赖库的同时将其添加到了 `requirements.txt` 和 `pyproject.toml` 文件相应位置。/ I have ensured that no new dependencies are introduced, OR if new dependencies are introduced, they have been added to the appropriate locations in `requirements.txt` and `pyproject.toml`.
|
|
46
|
+
- [ ] 😮 我的更改没有引入恶意代码。/ My changes do not introduce malicious code.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Code Format Check
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [ master ]
|
|
6
|
+
push:
|
|
7
|
+
branches: [ master ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
format-check:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout code
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Set up Python
|
|
18
|
+
uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: '3.10'
|
|
21
|
+
|
|
22
|
+
- name: Install UV
|
|
23
|
+
run: pip install uv
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: uv sync
|
|
27
|
+
|
|
28
|
+
- name: Check code formatting with ruff
|
|
29
|
+
run: |
|
|
30
|
+
uv run ruff format --check .
|
|
31
|
+
|
|
32
|
+
- name: Check code style with ruff
|
|
33
|
+
run: |
|
|
34
|
+
uv run ruff check .
|
|
@@ -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
|
|
|
@@ -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.2"
|
|
10
10
|
DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
|
|
11
11
|
|
|
12
12
|
# 默认配置
|
|
@@ -2130,41 +2130,41 @@ CONFIG_METADATA_3 = {
|
|
|
2130
2130
|
"description": "内容安全",
|
|
2131
2131
|
"type": "object",
|
|
2132
2132
|
"items": {
|
|
2133
|
-
"
|
|
2133
|
+
"content_safety.also_use_in_response": {
|
|
2134
2134
|
"description": "同时检查模型的响应内容",
|
|
2135
2135
|
"type": "bool",
|
|
2136
2136
|
},
|
|
2137
|
-
"
|
|
2137
|
+
"content_safety.baidu_aip.enable": {
|
|
2138
2138
|
"description": "使用百度内容安全审核",
|
|
2139
2139
|
"type": "bool",
|
|
2140
2140
|
"hint": "您需要手动安装 baidu-aip 库。",
|
|
2141
2141
|
},
|
|
2142
|
-
"
|
|
2142
|
+
"content_safety.baidu_aip.app_id": {
|
|
2143
2143
|
"description": "App ID",
|
|
2144
2144
|
"type": "string",
|
|
2145
2145
|
"condition": {
|
|
2146
|
-
"
|
|
2146
|
+
"content_safety.baidu_aip.enable": True,
|
|
2147
2147
|
},
|
|
2148
2148
|
},
|
|
2149
|
-
"
|
|
2149
|
+
"content_safety.baidu_aip.api_key": {
|
|
2150
2150
|
"description": "API Key",
|
|
2151
2151
|
"type": "string",
|
|
2152
2152
|
"condition": {
|
|
2153
|
-
"
|
|
2153
|
+
"content_safety.baidu_aip.enable": True,
|
|
2154
2154
|
},
|
|
2155
2155
|
},
|
|
2156
|
-
"
|
|
2156
|
+
"content_safety.baidu_aip.secret_key": {
|
|
2157
2157
|
"description": "Secret Key",
|
|
2158
2158
|
"type": "string",
|
|
2159
2159
|
"condition": {
|
|
2160
|
-
"
|
|
2160
|
+
"content_safety.baidu_aip.enable": True,
|
|
2161
2161
|
},
|
|
2162
2162
|
},
|
|
2163
|
-
"
|
|
2163
|
+
"content_safety.internal_keywords.enable": {
|
|
2164
2164
|
"description": "关键词检查",
|
|
2165
2165
|
"type": "bool",
|
|
2166
2166
|
},
|
|
2167
|
-
"
|
|
2167
|
+
"content_safety.internal_keywords.extra_keywords": {
|
|
2168
2168
|
"description": "额外关键词",
|
|
2169
2169
|
"type": "list",
|
|
2170
2170
|
"items": {"type": "string"},
|
|
@@ -53,7 +53,7 @@ async def do_migration_v4(
|
|
|
53
53
|
await migration_webchat_data(db_helper, platform_id_map)
|
|
54
54
|
|
|
55
55
|
# 执行偏好设置迁移
|
|
56
|
-
await migration_preferences(db_helper,platform_id_map)
|
|
56
|
+
await migration_preferences(db_helper, platform_id_map)
|
|
57
57
|
|
|
58
58
|
# 执行平台统计表迁移
|
|
59
59
|
await migration_platform_table(db_helper, platform_id_map)
|
|
@@ -5,6 +5,7 @@ from astrbot.core.utils.astrbot_path import get_astrbot_data_path
|
|
|
5
5
|
|
|
6
6
|
_VT = TypeVar("_VT")
|
|
7
7
|
|
|
8
|
+
|
|
8
9
|
class SharedPreferences:
|
|
9
10
|
def __init__(self, path=None):
|
|
10
11
|
if path is None:
|
|
@@ -42,4 +43,5 @@ class SharedPreferences:
|
|
|
42
43
|
self._data.clear()
|
|
43
44
|
self._save_preferences()
|
|
44
45
|
|
|
46
|
+
|
|
45
47
|
sp = SharedPreferences()
|
|
@@ -4,6 +4,7 @@ from astrbot.core.db.po import Platform, Stats
|
|
|
4
4
|
from typing import Tuple, List, Dict, Any
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
@dataclass
|
|
8
9
|
class Conversation:
|
|
9
10
|
"""LLM 对话存储
|
|
@@ -76,7 +77,7 @@ PRAGMA encoding = 'UTF-8';
|
|
|
76
77
|
"""
|
|
77
78
|
|
|
78
79
|
|
|
79
|
-
class SQLiteDatabase
|
|
80
|
+
class SQLiteDatabase:
|
|
80
81
|
def __init__(self, db_path: str) -> None:
|
|
81
82
|
super().__init__()
|
|
82
83
|
self.db_path = db_path
|
|
@@ -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
|
|
@@ -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):
|
|
@@ -68,23 +68,23 @@ class PlatformManager:
|
|
|
68
68
|
)
|
|
69
69
|
case "lark":
|
|
70
70
|
from .sources.lark.lark_adapter import (
|
|
71
|
-
LarkPlatformAdapter,
|
|
72
|
-
)
|
|
71
|
+
LarkPlatformAdapter, # noqa: F401
|
|
72
|
+
)
|
|
73
73
|
case "dingtalk":
|
|
74
74
|
from .sources.dingtalk.dingtalk_adapter import (
|
|
75
75
|
DingtalkPlatformAdapter, # noqa: F401
|
|
76
76
|
)
|
|
77
77
|
case "telegram":
|
|
78
78
|
from .sources.telegram.tg_adapter import (
|
|
79
|
-
TelegramPlatformAdapter,
|
|
80
|
-
)
|
|
79
|
+
TelegramPlatformAdapter, # noqa: F401
|
|
80
|
+
)
|
|
81
81
|
case "wecom":
|
|
82
82
|
from .sources.wecom.wecom_adapter import (
|
|
83
|
-
WecomPlatformAdapter,
|
|
84
|
-
)
|
|
83
|
+
WecomPlatformAdapter, # noqa: F401
|
|
84
|
+
)
|
|
85
85
|
case "weixin_official_account":
|
|
86
86
|
from .sources.weixin_official_account.weixin_offacc_adapter import (
|
|
87
|
-
WeixinOfficialAccountPlatformAdapter, # noqa
|
|
87
|
+
WeixinOfficialAccountPlatformAdapter, # noqa: F401
|
|
88
88
|
)
|
|
89
89
|
case "discord":
|
|
90
90
|
from .sources.discord.discord_platform_adapter import (
|
|
@@ -94,8 +94,8 @@ class PlatformManager:
|
|
|
94
94
|
from .sources.slack.slack_adapter import SlackAdapter # noqa: F401
|
|
95
95
|
case "satori":
|
|
96
96
|
from .sources.satori.satori_adapter import (
|
|
97
|
-
SatoriPlatformAdapter,
|
|
98
|
-
)
|
|
97
|
+
SatoriPlatformAdapter, # noqa: F401
|
|
98
|
+
)
|
|
99
99
|
except (ImportError, ModuleNotFoundError) as e:
|
|
100
100
|
logger.error(
|
|
101
101
|
f"加载平台适配器 {platform_config['type']} 失败,原因:{e}。请检查依赖库是否安装。提示:可以在 管理面板->控制台->安装Pip库 中安装依赖库。"
|
|
@@ -321,7 +321,9 @@ class AiocqhttpAdapter(Platform):
|
|
|
321
321
|
user_id=int(m["data"]["qq"]),
|
|
322
322
|
no_cache=False,
|
|
323
323
|
)
|
|
324
|
-
nickname = at_info.get("nick", "") or at_info.get(
|
|
324
|
+
nickname = at_info.get("nick", "") or at_info.get(
|
|
325
|
+
"nickname", ""
|
|
326
|
+
)
|
|
325
327
|
is_at_self = str(m["data"]["qq"]) in {abm.self_id, "all"}
|
|
326
328
|
|
|
327
329
|
abm.message.append(
|
|
@@ -54,9 +54,9 @@ class DingtalkMessageEvent(AstrMessageEvent):
|
|
|
54
54
|
logger.debug(f"send image: {ret}")
|
|
55
55
|
|
|
56
56
|
except Exception as e:
|
|
57
|
-
logger.
|
|
58
|
-
logger.warning(f"跳过图片发送: {image_path}")
|
|
57
|
+
logger.warning(f"钉钉图片处理失败: {e}, 跳过图片发送")
|
|
59
58
|
continue
|
|
59
|
+
|
|
60
60
|
async def send(self, message: MessageChain):
|
|
61
61
|
await self.send_with_client(self.client, message)
|
|
62
62
|
await super().send(message)
|
|
@@ -41,7 +41,8 @@ class DiscordBotClient(discord.Bot):
|
|
|
41
41
|
await self.on_ready_once_callback()
|
|
42
42
|
except Exception as e:
|
|
43
43
|
logger.error(
|
|
44
|
-
f"[Discord] on_ready_once_callback 执行失败: {e}", exc_info=True
|
|
44
|
+
f"[Discord] on_ready_once_callback 执行失败: {e}", exc_info=True
|
|
45
|
+
)
|
|
45
46
|
|
|
46
47
|
def _create_message_data(self, message: discord.Message) -> dict:
|
|
47
48
|
"""从 discord.Message 创建数据字典"""
|
|
@@ -90,7 +91,6 @@ class DiscordBotClient(discord.Bot):
|
|
|
90
91
|
message_data = self._create_message_data(message)
|
|
91
92
|
await self.on_message_received(message_data)
|
|
92
93
|
|
|
93
|
-
|
|
94
94
|
def _extract_interaction_content(self, interaction: discord.Interaction) -> str:
|
|
95
95
|
"""从交互中提取内容"""
|
|
96
96
|
interaction_type = interaction.type
|
|
@@ -79,9 +79,12 @@ class DiscordButton(BaseMessageComponent):
|
|
|
79
79
|
self.url = url
|
|
80
80
|
self.disabled = disabled
|
|
81
81
|
|
|
82
|
+
|
|
82
83
|
class DiscordReference(BaseMessageComponent):
|
|
83
84
|
"""Discord引用组件"""
|
|
85
|
+
|
|
84
86
|
type: str = "discord_reference"
|
|
87
|
+
|
|
85
88
|
def __init__(self, message_id: str, channel_id: str):
|
|
86
89
|
self.message_id = message_id
|
|
87
90
|
self.channel_id = channel_id
|
|
@@ -98,7 +101,6 @@ class DiscordView(BaseMessageComponent):
|
|
|
98
101
|
self.components = components or []
|
|
99
102
|
self.timeout = timeout
|
|
100
103
|
|
|
101
|
-
|
|
102
104
|
def to_discord_view(self) -> discord.ui.View:
|
|
103
105
|
"""转换为Discord View对象"""
|
|
104
106
|
view = discord.ui.View(timeout=self.timeout)
|
{astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/discord/discord_platform_event.py
RENAMED
|
@@ -53,7 +53,13 @@ class DiscordPlatformEvent(AstrMessageEvent):
|
|
|
53
53
|
|
|
54
54
|
# 解析消息链为 Discord 所需的对象
|
|
55
55
|
try:
|
|
56
|
-
|
|
56
|
+
(
|
|
57
|
+
content,
|
|
58
|
+
files,
|
|
59
|
+
view,
|
|
60
|
+
embeds,
|
|
61
|
+
reference_message_id,
|
|
62
|
+
) = await self._parse_to_discord(message)
|
|
57
63
|
except Exception as e:
|
|
58
64
|
logger.error(f"[Discord] 解析消息链时失败: {e}", exc_info=True)
|
|
59
65
|
return
|
|
@@ -206,8 +212,7 @@ class DiscordPlatformEvent(AstrMessageEvent):
|
|
|
206
212
|
if await asyncio.to_thread(path.exists):
|
|
207
213
|
file_bytes = await asyncio.to_thread(path.read_bytes)
|
|
208
214
|
files.append(
|
|
209
|
-
discord.File(BytesIO(file_bytes),
|
|
210
|
-
filename=i.name)
|
|
215
|
+
discord.File(BytesIO(file_bytes), filename=i.name)
|
|
211
216
|
)
|
|
212
217
|
else:
|
|
213
218
|
logger.warning(
|
{astrbot-4.1.1 → astrbot-4.1.2}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py
RENAMED
|
@@ -94,10 +94,15 @@ class QQOfficialMessageEvent(AstrMessageEvent):
|
|
|
94
94
|
plain_text,
|
|
95
95
|
image_base64,
|
|
96
96
|
image_path,
|
|
97
|
-
record_file_path
|
|
97
|
+
record_file_path,
|
|
98
98
|
) = await QQOfficialMessageEvent._parse_to_qqofficial(self.send_buffer)
|
|
99
99
|
|
|
100
|
-
if
|
|
100
|
+
if (
|
|
101
|
+
not plain_text
|
|
102
|
+
and not image_base64
|
|
103
|
+
and not image_path
|
|
104
|
+
and not record_file_path
|
|
105
|
+
):
|
|
101
106
|
return
|
|
102
107
|
|
|
103
108
|
payload = {
|
|
@@ -118,7 +123,7 @@ class QQOfficialMessageEvent(AstrMessageEvent):
|
|
|
118
123
|
)
|
|
119
124
|
payload["media"] = media
|
|
120
125
|
payload["msg_type"] = 7
|
|
121
|
-
if record_file_path:
|
|
126
|
+
if record_file_path: # group record msg
|
|
122
127
|
media = await self.upload_group_and_c2c_record(
|
|
123
128
|
record_file_path, 3, group_openid=source.group_openid
|
|
124
129
|
)
|
|
@@ -134,9 +139,9 @@ class QQOfficialMessageEvent(AstrMessageEvent):
|
|
|
134
139
|
)
|
|
135
140
|
payload["media"] = media
|
|
136
141
|
payload["msg_type"] = 7
|
|
137
|
-
if record_file_path:
|
|
142
|
+
if record_file_path: # c2c record
|
|
138
143
|
media = await self.upload_group_and_c2c_record(
|
|
139
|
-
record_file_path, 3, openid
|
|
144
|
+
record_file_path, 3, openid=source.author.user_openid
|
|
140
145
|
)
|
|
141
146
|
payload["media"] = media
|
|
142
147
|
payload["msg_type"] = 7
|
|
@@ -190,58 +195,55 @@ class QQOfficialMessageEvent(AstrMessageEvent):
|
|
|
190
195
|
return await self.bot.api._http.request(route, json=payload)
|
|
191
196
|
|
|
192
197
|
async def upload_group_and_c2c_record(
|
|
193
|
-
self,
|
|
194
|
-
file_source: str,
|
|
195
|
-
file_type: int,
|
|
196
|
-
srv_send_msg: bool = False,
|
|
197
|
-
**kwargs
|
|
198
|
+
self, file_source: str, file_type: int, srv_send_msg: bool = False, **kwargs
|
|
198
199
|
) -> Optional[Media]:
|
|
199
200
|
"""
|
|
200
201
|
上传媒体文件
|
|
201
202
|
"""
|
|
202
203
|
# 构建基础payload
|
|
203
|
-
payload = {
|
|
204
|
-
|
|
205
|
-
"srv_send_msg": srv_send_msg
|
|
206
|
-
}
|
|
207
|
-
|
|
204
|
+
payload = {"file_type": file_type, "srv_send_msg": srv_send_msg}
|
|
205
|
+
|
|
208
206
|
# 处理文件数据
|
|
209
207
|
if os.path.exists(file_source):
|
|
210
208
|
# 读取本地文件
|
|
211
|
-
async with aiofiles.open(file_source,
|
|
209
|
+
async with aiofiles.open(file_source, "rb") as f:
|
|
212
210
|
file_content = await f.read()
|
|
213
211
|
# use base64 encode
|
|
214
|
-
payload["file_data"] = base64.b64encode(file_content).decode(
|
|
212
|
+
payload["file_data"] = base64.b64encode(file_content).decode("utf-8")
|
|
215
213
|
else:
|
|
216
214
|
# 使用URL
|
|
217
215
|
payload["url"] = file_source
|
|
218
|
-
|
|
216
|
+
|
|
219
217
|
# 添加接收者信息和确定路由
|
|
220
218
|
if "openid" in kwargs:
|
|
221
219
|
payload["openid"] = kwargs["openid"]
|
|
222
220
|
route = Route("POST", "/v2/users/{openid}/files", openid=kwargs["openid"])
|
|
223
221
|
elif "group_openid" in kwargs:
|
|
224
|
-
payload["group_openid"] =kwargs["group_openid"]
|
|
225
|
-
route = Route(
|
|
222
|
+
payload["group_openid"] = kwargs["group_openid"]
|
|
223
|
+
route = Route(
|
|
224
|
+
"POST",
|
|
225
|
+
"/v2/groups/{group_openid}/files",
|
|
226
|
+
group_openid=kwargs["group_openid"],
|
|
227
|
+
)
|
|
226
228
|
else:
|
|
227
229
|
return None
|
|
228
|
-
|
|
230
|
+
|
|
229
231
|
try:
|
|
230
232
|
# 使用底层HTTP请求
|
|
231
233
|
result = await self.bot.api._http.request(route, json=payload)
|
|
232
|
-
|
|
234
|
+
|
|
233
235
|
if result:
|
|
234
236
|
return Media(
|
|
235
237
|
file_uuid=result.get("file_uuid"),
|
|
236
238
|
file_info=result.get("file_info"),
|
|
237
239
|
ttl=result.get("ttl", 0),
|
|
238
|
-
file_id=result.get("id", "")
|
|
240
|
+
file_id=result.get("id", ""),
|
|
239
241
|
)
|
|
240
242
|
except Exception as e:
|
|
241
243
|
logger.error(f"上传请求错误: {e}")
|
|
242
|
-
|
|
244
|
+
|
|
243
245
|
return None
|
|
244
|
-
|
|
246
|
+
|
|
245
247
|
async def post_c2c_message(
|
|
246
248
|
self,
|
|
247
249
|
openid: str,
|
|
@@ -286,19 +288,23 @@ class QQOfficialMessageEvent(AstrMessageEvent):
|
|
|
286
288
|
image_base64 = image_base64.removeprefix("base64://")
|
|
287
289
|
elif isinstance(i, Record):
|
|
288
290
|
if i.file:
|
|
289
|
-
record_wav_path = await i.convert_to_file_path()
|
|
291
|
+
record_wav_path = await i.convert_to_file_path() # wav 路径
|
|
290
292
|
temp_dir = os.path.join(get_astrbot_data_path(), "temp")
|
|
291
|
-
record_tecent_silk_path = os.path.join(
|
|
293
|
+
record_tecent_silk_path = os.path.join(
|
|
294
|
+
temp_dir, f"{uuid.uuid4()}.silk"
|
|
295
|
+
)
|
|
292
296
|
try:
|
|
293
|
-
duration = await wav_to_tencent_silk(
|
|
297
|
+
duration = await wav_to_tencent_silk(
|
|
298
|
+
record_wav_path, record_tecent_silk_path
|
|
299
|
+
)
|
|
294
300
|
if duration > 0:
|
|
295
301
|
record_file_path = record_tecent_silk_path
|
|
296
302
|
else:
|
|
297
|
-
record_file_path = None
|
|
303
|
+
record_file_path = None
|
|
298
304
|
logger.error("转换音频格式时出错:音频时长不大于0")
|
|
299
305
|
except Exception as e:
|
|
300
306
|
logger.error(f"处理语音时出错: {e}")
|
|
301
|
-
record_file_path = None
|
|
307
|
+
record_file_path = None
|
|
302
308
|
else:
|
|
303
309
|
logger.debug(f"qq_official 忽略 {i.type}")
|
|
304
310
|
return plain_text, image_base64, image_file_path, record_file_path
|
|
@@ -308,7 +308,9 @@ class SlackAdapter(Platform):
|
|
|
308
308
|
base64_content = base64.b64encode(content).decode("utf-8")
|
|
309
309
|
return base64_content
|
|
310
310
|
else:
|
|
311
|
-
logger.error(
|
|
311
|
+
logger.error(
|
|
312
|
+
f"Failed to download slack file: {resp.status} {await resp.text()}"
|
|
313
|
+
)
|
|
312
314
|
raise Exception(f"下载文件失败: {resp.status}")
|
|
313
315
|
|
|
314
316
|
async def run(self) -> Awaitable[Any]:
|
|
@@ -75,7 +75,13 @@ class SlackMessageEvent(AstrMessageEvent):
|
|
|
75
75
|
"text": {"type": "mrkdwn", "text": "文件上传失败"},
|
|
76
76
|
}
|
|
77
77
|
file_url = response["files"][0]["permalink"]
|
|
78
|
-
return {
|
|
78
|
+
return {
|
|
79
|
+
"type": "section",
|
|
80
|
+
"text": {
|
|
81
|
+
"type": "mrkdwn",
|
|
82
|
+
"text": f"文件: <{file_url}|{segment.name or '文件'}>",
|
|
83
|
+
},
|
|
84
|
+
}
|
|
79
85
|
else:
|
|
80
86
|
return {"type": "section", "text": {"type": "mrkdwn", "text": str(segment)}}
|
|
81
87
|
|
|
@@ -66,7 +66,9 @@ class TelegramPlatformEvent(AstrMessageEvent):
|
|
|
66
66
|
return chunks
|
|
67
67
|
|
|
68
68
|
@classmethod
|
|
69
|
-
async def send_with_client(
|
|
69
|
+
async def send_with_client(
|
|
70
|
+
cls, client: ExtBot, message: MessageChain, user_name: str
|
|
71
|
+
):
|
|
70
72
|
image_path = None
|
|
71
73
|
|
|
72
74
|
has_reply = False
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
|
|
3
|
+
|
|
3
4
|
class WebChatQueueMgr:
|
|
4
5
|
def __init__(self) -> None:
|
|
5
6
|
self.queues = {}
|
|
@@ -30,4 +31,5 @@ class WebChatQueueMgr:
|
|
|
30
31
|
"""Check if a queue exists for the given conversation ID"""
|
|
31
32
|
return conversation_id in self.queues
|
|
32
33
|
|
|
34
|
+
|
|
33
35
|
webchat_queue_mgr = WebChatQueueMgr()
|