AstrBot 4.11.4__tar.gz → 4.12.1__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.11.4 → astrbot-4.12.1}/EULA.md +2 -3
- {astrbot-4.11.4 → astrbot-4.12.1}/PKG-INFO +2 -1
- astrbot-4.12.1/astrbot/cli/__init__.py +1 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/tool_loop_agent_runner.py +10 -8
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/config/default.py +66 -2
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/__init__.py +84 -2
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/po.py +65 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/sqlite.py +225 -4
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +103 -49
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/process_stage/utils.py +40 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/astr_message_event.py +23 -4
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +2 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/telegram/tg_adapter.py +2 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/webchat/webchat_adapter.py +3 -2
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/webchat/webchat_event.py +17 -4
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/anthropic_source.py +44 -0
- astrbot-4.12.1/astrbot/core/sandbox/booters/base.py +31 -0
- astrbot-4.12.1/astrbot/core/sandbox/booters/boxlite.py +186 -0
- astrbot-4.12.1/astrbot/core/sandbox/booters/shipyard.py +67 -0
- astrbot-4.12.1/astrbot/core/sandbox/olayer/__init__.py +5 -0
- astrbot-4.12.1/astrbot/core/sandbox/olayer/filesystem.py +33 -0
- astrbot-4.12.1/astrbot/core/sandbox/olayer/python.py +19 -0
- astrbot-4.12.1/astrbot/core/sandbox/olayer/shell.py +21 -0
- astrbot-4.12.1/astrbot/core/sandbox/sandbox_client.py +52 -0
- astrbot-4.12.1/astrbot/core/sandbox/tools/__init__.py +10 -0
- astrbot-4.12.1/astrbot/core/sandbox/tools/fs.py +188 -0
- astrbot-4.12.1/astrbot/core/sandbox/tools/python.py +74 -0
- astrbot-4.12.1/astrbot/core/sandbox/tools/shell.py +55 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/context.py +162 -44
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/__init__.py +2 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/chat.py +40 -12
- astrbot-4.12.1/astrbot/dashboard/routes/chatui_project.py +245 -0
- astrbot-4.12.1/astrbot/dashboard/routes/session_management.py +938 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/server.py +1 -0
- astrbot-4.12.1/changelogs/v4.12.0.md +19 -0
- astrbot-4.12.1/changelogs/v4.12.1.md +23 -0
- astrbot-4.12.1/compose-with-shipyard.yml +47 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/Chat.vue +228 -35
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/ChatInput.vue +49 -33
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/ConfigSelector.vue +21 -20
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/ConversationSidebar.vue +23 -3
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/MessageList.vue +113 -299
- astrbot-4.12.1/dashboard/src/components/chat/ProjectDialog.vue +114 -0
- astrbot-4.12.1/dashboard/src/components/chat/ProjectList.vue +159 -0
- astrbot-4.12.1/dashboard/src/components/chat/ProjectView.vue +186 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/ProviderModelMenu.vue +6 -1
- astrbot-4.12.1/dashboard/src/components/chat/WelcomeView.vue +144 -0
- astrbot-4.12.1/dashboard/src/components/chat/message_list_comps/IPythonToolBlock.vue +220 -0
- astrbot-4.12.1/dashboard/src/components/chat/message_list_comps/ReasoningBlock.vue +73 -0
- astrbot-4.12.1/dashboard/src/components/chat/message_list_comps/ToolCallCard.vue +290 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/composables/useMessages.ts +7 -0
- astrbot-4.12.1/dashboard/src/composables/useProjects.ts +120 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/chat.json +18 -3
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/config-metadata.json +30 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/session-management.json +40 -2
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/chat.json +18 -1
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json +30 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +19 -1
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/ExtensionPage.vue +14 -1
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/SessionManagementPage.vue +490 -1
- {astrbot-4.11.4 → astrbot-4.12.1}/pyproject.toml +2 -1
- {astrbot-4.11.4 → astrbot-4.12.1}/requirements.txt +2 -1
- astrbot-4.11.4/astrbot/builtin_stars/python_interpreter/main.py +0 -536
- astrbot-4.11.4/astrbot/builtin_stars/python_interpreter/metadata.yaml +0 -4
- astrbot-4.11.4/astrbot/builtin_stars/python_interpreter/requirements.txt +0 -1
- astrbot-4.11.4/astrbot/builtin_stars/python_interpreter/shared/api.py +0 -22
- astrbot-4.11.4/astrbot/cli/__init__.py +0 -1
- astrbot-4.11.4/astrbot/dashboard/routes/session_management.py +0 -393
- {astrbot-4.11.4 → astrbot-4.12.1}/.dockerignore +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/FUNDING.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/auto_assign.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/copilot-instructions.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/dependabot.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/auto_release.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/code-format.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/codeql.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/coverage_test.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/dashboard_ci.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/docker-image.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/smoke_test.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.github/workflows/stale.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.gitignore +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.pre-commit-config.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/.python-version +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/CODE_OF_CONDUCT.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/CONTRIBUTING.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/Dockerfile +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/LICENSE +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/README.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/README_en.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/README_fr.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/README_ja.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/README_ru.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/README_zh-TW.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/all.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/event/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/event/filter/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/message_components.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/platform/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/provider/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/star/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/api/util/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/astrbot/long_term_memory.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/astrbot/main.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/astrbot/metadata.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/astrbot/process_llm_request.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/admin.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/alter_cmd.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/conversation.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/help.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/llm.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/persona.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/plugin.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/provider.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/setunset.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/sid.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/t2i.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/tool.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/tts.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/commands/utils/rst_scene.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/main.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/builtin_commands/metadata.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/reminder/main.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/reminder/metadata.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/session_controller/main.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/session_controller/metadata.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/web_searcher/engines/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/web_searcher/engines/bing.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/web_searcher/engines/sogo.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/web_searcher/main.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/builtin_stars/web_searcher/metadata.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/__main__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/commands/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/commands/cmd_conf.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/commands/cmd_init.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/commands/cmd_plug.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/commands/cmd_run.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/utils/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/utils/basic.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/utils/plugin.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/cli/utils/version_comparator.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/agent.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/context/compressor.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/context/config.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/context/manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/context/token_counter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/context/truncator.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/handoff.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/hooks.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/mcp_client.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/message.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/response.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/run_context.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/base.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/coze/coze_agent_runner.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/coze/coze_api_client.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/dify/dify_agent_runner.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/runners/dify/dify_api_client.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/tool.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/agent/tool_executor.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/astr_agent_context.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/astr_agent_hooks.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/astr_agent_run_util.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/astr_agent_tool_exec.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/astrbot_config_mgr.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/backup/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/backup/constants.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/backup/exporter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/backup/importer.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/config/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/config/astrbot_config.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/config/i18n_utils.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/conversation_mgr.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/core_lifecycle.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/migration/helper.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/migration/migra_45_to_46.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/migration/migra_token_usage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/migration/migra_webchat_session.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/migration/shared_preferences_v3.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/migration/sqlite_v3.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/vec_db/base.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/vec_db/faiss_impl/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/event_bus.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/exceptions.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/file_token_service.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/initial_loader.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/chunking/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/chunking/base.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/chunking/fixed_size.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/chunking/recursive.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/kb_db_sqlite.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/kb_helper.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/kb_mgr.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/models.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/parsers/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/parsers/base.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/parsers/markitdown_parser.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/parsers/pdf_parser.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/parsers/text_parser.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/parsers/url_parser.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/parsers/util.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/prompts.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/retrieval/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/retrieval/manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/retrieval/rank_fusion.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/knowledge_base/retrieval/sparse_retriever.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/log.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/message/components.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/message/message_event_result.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/persona_mgr.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/context.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/context_utils.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/process_stage/method/agent_request.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/process_stage/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/respond/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/scheduler.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/waking_check/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/astrbot_message.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/message_session.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/message_type.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/platform.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/platform_metadata.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/register.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/discord/client.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/discord/components.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/discord/discord_platform_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/lark/server.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/misskey/misskey_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/misskey/misskey_api.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/misskey/misskey_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/misskey/misskey_utils.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/slack/client.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/slack/slack_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/slack/slack_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/telegram/tg_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom/wecom_kf.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/ierror.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/platform_message_history_mgr.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/entites.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/entities.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/func_tool_manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/provider.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/register.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/bailian_rerank_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/gemini_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/groq_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/openai_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/xai_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/xinference_rerank_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/xinference_stt_provider.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/provider/sources/zhipu_source.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/README.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/command_management.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/config.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/command.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/command_group.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/custom_filter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/event_message_type.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/permission.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/filter/regex.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/register/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/register/star.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/register/star_handler.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/session_llm_manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/session_plugin_manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/star.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/star_handler.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/star_manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/star_tools.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/star/updator.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/umop_config_router.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/updator.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/astrbot_path.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/command_parser.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/file_extract.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/io.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/llm_metadata.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/log_pipe.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/metrics.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/migra_helper.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/path_util.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/pip_installer.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/plugin_kv_store.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/session_lock.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/session_waiter.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/shared_preferences.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/t2i/__init__.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/t2i/local_strategy.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/t2i/network_strategy.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/t2i/renderer.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/t2i/template/base.html +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/t2i/template_manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/tencent_record_helper.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/version_comparator.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/utils/webhook_utils.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/core/zip_updator.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/auth.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/backup.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/command.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/config.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/conversation.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/file.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/knowledge_base.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/log.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/persona.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/platform.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/plugin.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/route.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/stat.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/static_file.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/t2i.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/tools.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/routes/update.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/astrbot/dashboard/utils.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.10.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.11.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.12.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.13.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.14.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.15.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.16.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.17.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.18.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.19.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.20.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.21.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.22.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.23.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.24.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.25.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.26.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.27.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.28.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.29.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.30.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.31.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.32.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.33.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.35.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.36.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.37.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.38.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.39.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.5.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.6.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.7.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.8.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.4.9.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.10.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.11.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.12.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.13.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.14.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.15.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.16.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.17.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.18.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.19.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.20.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.21.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.22.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.23.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.24.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.25.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.26.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.27.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.3.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.3.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.5.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.6.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.7.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.8.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v3.5.9.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.0.0-beta.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.0.0-beta.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.0.0-beta.5.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.0.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.5.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.6.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.1.7.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.0-alpha.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.0-alpha.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.5.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.10.6.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.11.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.11.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.11.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.11.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.11.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.2.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.2.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.3.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.3.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.3.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.3.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.3.5.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.5.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.6.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.7.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.5.8.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.6.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.6.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.7.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.7.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.7.3.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.7.4.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.8.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.9.0.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.9.1.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/changelogs/v4.9.2.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/compose.yml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/.gitignore +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/LICENSE +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/README.md +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/env.d.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/index.html +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/public/_redirects +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/public/favicon.svg +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/App.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/astrbot_banner.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/icon-no-shadow.svg +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/loading-seio.webp +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/misskey.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/onebot.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/plugin_icon.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/assets/images/xmas-hat.png +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/ConfirmDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/ProviderConfigDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/chat/StandaloneChat.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/config/AstrBotCoreConfigWrapper.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/McpServersSection.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/components/CommandFilters.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/components/CommandTable.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/components/DetailsDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/components/RenameDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/components/ToolTable.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/composables/useCommandActions.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/composables/useCommandFilters.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/composables/useComponentData.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/index.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/extension/componentPanel/types.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/platform/AddNewPlatform.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/provider/AddNewProvider.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/provider/ProviderModelsPanel.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/provider/ProviderSourcesPanel.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/BackupDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ChangelogDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ConfigItemRenderer.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ItemCard.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/Logo.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/PersonaForm.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ProxySelector.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/SidebarCustomizer.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/StyledMenu.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/TemplateListEditor.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/UninstallConfirmDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/composables/useConversations.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/composables/useMediaHandling.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/composables/useProviderSources.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/composables/useRecording.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/composables/useSessions.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/config.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/composables.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/loader.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/core/shared.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/command.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/knowledge-base/detail.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/knowledge-base/document.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/knowledge-base/index.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/core/shared.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/command.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/detail.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/document.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/index.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/tools/index.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/translations.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/types.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/i18n/validator.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/layouts/full/FullLayout.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/main.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/plugins/confirmPlugin.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/plugins/vuetify.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/router/AuthRoutes.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/router/MainRoutes.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/router/index.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/_override.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/_variables.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VButtons.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VCard.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VField.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VInput.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VShadow.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VTabs.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/components/_VTextField.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/layout/_container.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/layout/_sidebar.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/pages/_dashboards.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/scss/style.scss +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/stores/auth.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/stores/common.js +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/stores/customizer.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/stores/routerLoading.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/stores/toast.js +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/theme/DarkTheme.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/theme/LightTheme.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/utils/platformUtils.js +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/utils/providerUtils.js +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/utils/sidebarCustomization.js +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/utils/toast.js +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/AboutPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/AlkaidPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/ChatBoxPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/ChatPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/ConfigPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/ConsolePage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/ConversationPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/PersonaPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/PlatformPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/ProviderPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/Settings.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/alkaid/Other.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/DocumentDetail.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/KBDetail.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/KBList.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/components/DocumentsTab.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/components/RetrievalTab.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/components/SettingsTab.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/components/TavilyKeyDialog.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/src/views/knowledge-base/index.vue +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/tsconfig.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/tsconfig.vite-config.json +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/dashboard/vite.config.ts +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot/00-namespace.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot/01-pvc.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot/02-deployment.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot/03-service-nodeport.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot/04-service-loadbalancer.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot_with_napcat/00-namespace.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot_with_napcat/01-pvc.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot_with_napcat/02-deployment.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot_with_napcat/03-service-nodeport.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/k8s/astrbot_with_napcat/04-service-loadbalancer.yaml +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/main.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/samples/stt_health_check.wav +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/agent/test_context_manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/agent/test_truncator.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/test_backup.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/test_dashboard.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/test_kb_import.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/test_main.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/test_plugin_manager.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/test_security_fixes.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/tests/test_tool_loop_agent_runner.py +0 -0
- {astrbot-4.11.4 → astrbot-4.12.1}/typings/faiss/__init__.pyi +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> 我们热爱开源软件,并始终致力于为所有用户提供健康、安全、可靠的使用体验。 ❤️
|
|
4
4
|
|
|
5
|
-
For
|
|
5
|
+
For English edition, please refer to the section below the Chinese version.
|
|
6
6
|
|
|
7
7
|
**最后更新:** 2026-01-12
|
|
8
8
|
|
|
@@ -15,8 +15,7 @@ For Enlish edition, please refer to the section below the Chinese version.
|
|
|
15
15
|
|
|
16
16
|
AstrBot 是一个遵循 **GNU Affero General Public License v3(AGPLv3)** 协议发布的**免费开源软件项目**。
|
|
17
17
|
|
|
18
|
-
* AstrBot
|
|
19
|
-
* AstrBot 团队不通过本项目提供任何收费服务。
|
|
18
|
+
* 截至目前,AstrBot 项目未开展任何形式的商业化服务,AstrBot 团队也未通过本项目向用户提供任何收费服务。若您因使用 AstrBot 被要求付费,请务必提高警惕,谨防诈骗行为。
|
|
20
19
|
* AstrBot 的代码实现未对任何第三方系统进行逆向工程、破解、反编译或绕过安全机制等行为。AstrBot 仅使用并支持各即时通讯(IM)平台官方公开提供的机器人接入接口、开放平台能力或相关通信协议进行集成与通信。
|
|
21
20
|
|
|
22
21
|
## 2. 无担保声明
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: AstrBot
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.12.1
|
|
4
4
|
Summary: Easy-to-use multi-platform LLM chatbot and development framework
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Keywords: Astrbot,Astrbot Module,Astrbot Plugin
|
|
@@ -47,6 +47,7 @@ Requires-Dist: qq-botpy>=1.2.1
|
|
|
47
47
|
Requires-Dist: quart>=0.20.0
|
|
48
48
|
Requires-Dist: rank-bm25>=0.2.2
|
|
49
49
|
Requires-Dist: readability-lxml>=0.8.4.1
|
|
50
|
+
Requires-Dist: shipyard-python-sdk>=0.2.4
|
|
50
51
|
Requires-Dist: silk-python>=0.2.6
|
|
51
52
|
Requires-Dist: slack-sdk>=3.35.0
|
|
52
53
|
Requires-Dist: sqlalchemy[asyncio]>=2.0.41
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.12.1"
|
|
@@ -227,7 +227,8 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
227
227
|
encrypted=llm_resp.reasoning_signature,
|
|
228
228
|
)
|
|
229
229
|
)
|
|
230
|
-
|
|
230
|
+
if llm_resp.completion_text:
|
|
231
|
+
parts.append(TextPart(text=llm_resp.completion_text))
|
|
231
232
|
self.run_context.messages.append(Message(role="assistant", content=parts))
|
|
232
233
|
|
|
233
234
|
# call the on_agent_done hook
|
|
@@ -277,7 +278,8 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
277
278
|
encrypted=llm_resp.reasoning_signature,
|
|
278
279
|
)
|
|
279
280
|
)
|
|
280
|
-
|
|
281
|
+
if llm_resp.completion_text:
|
|
282
|
+
parts.append(TextPart(text=llm_resp.completion_text))
|
|
281
283
|
tool_calls_result = ToolCallsResult(
|
|
282
284
|
tool_calls_info=AssistantMessageSegment(
|
|
283
285
|
tool_calls=llm_resp.to_openai_to_calls_model(),
|
|
@@ -361,7 +363,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
361
363
|
ToolCallMessageSegment(
|
|
362
364
|
role="tool",
|
|
363
365
|
tool_call_id=func_tool_id,
|
|
364
|
-
content=f"error:
|
|
366
|
+
content=f"error: Tool {func_tool_name} not found.",
|
|
365
367
|
),
|
|
366
368
|
)
|
|
367
369
|
continue
|
|
@@ -427,7 +429,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
427
429
|
ToolCallMessageSegment(
|
|
428
430
|
role="tool",
|
|
429
431
|
tool_call_id=func_tool_id,
|
|
430
|
-
content="
|
|
432
|
+
content="The tool has successfully returned an image and sent directly to the user. You can describe it in your next response.",
|
|
431
433
|
),
|
|
432
434
|
)
|
|
433
435
|
yield MessageChain(type="tool_direct_result").base64_image(
|
|
@@ -452,7 +454,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
452
454
|
ToolCallMessageSegment(
|
|
453
455
|
role="tool",
|
|
454
456
|
tool_call_id=func_tool_id,
|
|
455
|
-
content="
|
|
457
|
+
content="The tool has successfully returned an image and sent directly to the user. You can describe it in your next response.",
|
|
456
458
|
),
|
|
457
459
|
)
|
|
458
460
|
yield MessageChain(
|
|
@@ -463,7 +465,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
463
465
|
ToolCallMessageSegment(
|
|
464
466
|
role="tool",
|
|
465
467
|
tool_call_id=func_tool_id,
|
|
466
|
-
content="
|
|
468
|
+
content="The tool has returned a data type that is not supported.",
|
|
467
469
|
),
|
|
468
470
|
)
|
|
469
471
|
|
|
@@ -480,7 +482,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
480
482
|
ToolCallMessageSegment(
|
|
481
483
|
role="tool",
|
|
482
484
|
tool_call_id=func_tool_id,
|
|
483
|
-
content="
|
|
485
|
+
content="The tool has no return value, or has sent the result directly to the user.",
|
|
484
486
|
),
|
|
485
487
|
)
|
|
486
488
|
else:
|
|
@@ -492,7 +494,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
492
494
|
ToolCallMessageSegment(
|
|
493
495
|
role="tool",
|
|
494
496
|
tool_call_id=func_tool_id,
|
|
495
|
-
content="
|
|
497
|
+
content="*The tool has returned an unsupported type. Please tell the user to check the definition and implementation of this tool.*",
|
|
496
498
|
),
|
|
497
499
|
)
|
|
498
500
|
|
|
@@ -5,7 +5,7 @@ from typing import Any, TypedDict
|
|
|
5
5
|
|
|
6
6
|
from astrbot.core.utils.astrbot_path import get_astrbot_data_path
|
|
7
7
|
|
|
8
|
-
VERSION = "4.
|
|
8
|
+
VERSION = "4.12.1"
|
|
9
9
|
DB_PATH = os.path.join(get_astrbot_data_path(), "data_v4.db")
|
|
10
10
|
|
|
11
11
|
WEBHOOK_SUPPORTED_PLATFORMS = [
|
|
@@ -113,6 +113,14 @@ DEFAULT_CONFIG = {
|
|
|
113
113
|
"provider": "moonshotai",
|
|
114
114
|
"moonshotai_api_key": "",
|
|
115
115
|
},
|
|
116
|
+
"sandbox": {
|
|
117
|
+
"enable": False,
|
|
118
|
+
"booter": "shipyard",
|
|
119
|
+
"shipyard_endpoint": "",
|
|
120
|
+
"shipyard_access_token": "",
|
|
121
|
+
"shipyard_ttl": 3600,
|
|
122
|
+
"shipyard_max_sessions": 10,
|
|
123
|
+
},
|
|
116
124
|
},
|
|
117
125
|
"provider_stt_settings": {
|
|
118
126
|
"enable": False,
|
|
@@ -242,7 +250,7 @@ CONFIG_METADATA_2 = {
|
|
|
242
250
|
"callback_server_host": "0.0.0.0",
|
|
243
251
|
"port": 6196,
|
|
244
252
|
},
|
|
245
|
-
"OneBot v11
|
|
253
|
+
"OneBot v11": {
|
|
246
254
|
"id": "default",
|
|
247
255
|
"type": "aiocqhttp",
|
|
248
256
|
"enable": False,
|
|
@@ -2539,6 +2547,62 @@ CONFIG_METADATA_3 = {
|
|
|
2539
2547
|
# "provider_settings.enable": True,
|
|
2540
2548
|
# },
|
|
2541
2549
|
# },
|
|
2550
|
+
"sandbox": {
|
|
2551
|
+
"description": "Agent 沙箱环境",
|
|
2552
|
+
"type": "object",
|
|
2553
|
+
"items": {
|
|
2554
|
+
"provider_settings.sandbox.enable": {
|
|
2555
|
+
"description": "启用沙箱环境",
|
|
2556
|
+
"type": "bool",
|
|
2557
|
+
"hint": "启用后,Agent 可以使用沙箱环境中的工具和资源,如 Python 代码执行、Shell 等。",
|
|
2558
|
+
},
|
|
2559
|
+
"provider_settings.sandbox.booter": {
|
|
2560
|
+
"description": "沙箱环境驱动器",
|
|
2561
|
+
"type": "string",
|
|
2562
|
+
"options": ["shipyard"],
|
|
2563
|
+
"condition": {
|
|
2564
|
+
"provider_settings.sandbox.enable": True,
|
|
2565
|
+
},
|
|
2566
|
+
},
|
|
2567
|
+
"provider_settings.sandbox.shipyard_endpoint": {
|
|
2568
|
+
"description": "Shipyard API Endpoint",
|
|
2569
|
+
"type": "string",
|
|
2570
|
+
"hint": "Shipyard 服务的 API 访问地址。",
|
|
2571
|
+
"condition": {
|
|
2572
|
+
"provider_settings.sandbox.enable": True,
|
|
2573
|
+
"provider_settings.sandbox.booter": "shipyard",
|
|
2574
|
+
},
|
|
2575
|
+
"_special": "check_shipyard_connection",
|
|
2576
|
+
},
|
|
2577
|
+
"provider_settings.sandbox.shipyard_access_token": {
|
|
2578
|
+
"description": "Shipyard Access Token",
|
|
2579
|
+
"type": "string",
|
|
2580
|
+
"hint": "用于访问 Shipyard 服务的访问令牌。",
|
|
2581
|
+
"condition": {
|
|
2582
|
+
"provider_settings.sandbox.enable": True,
|
|
2583
|
+
"provider_settings.sandbox.booter": "shipyard",
|
|
2584
|
+
},
|
|
2585
|
+
},
|
|
2586
|
+
"provider_settings.sandbox.shipyard_ttl": {
|
|
2587
|
+
"description": "Shipyard Session TTL",
|
|
2588
|
+
"type": "int",
|
|
2589
|
+
"hint": "Shipyard 会话的生存时间(秒)。",
|
|
2590
|
+
"condition": {
|
|
2591
|
+
"provider_settings.sandbox.enable": True,
|
|
2592
|
+
"provider_settings.sandbox.booter": "shipyard",
|
|
2593
|
+
},
|
|
2594
|
+
},
|
|
2595
|
+
"provider_settings.sandbox.shipyard_max_sessions": {
|
|
2596
|
+
"description": "Shipyard Max Sessions",
|
|
2597
|
+
"type": "int",
|
|
2598
|
+
"hint": "Shipyard 最大会话数量。",
|
|
2599
|
+
"condition": {
|
|
2600
|
+
"provider_settings.sandbox.enable": True,
|
|
2601
|
+
"provider_settings.sandbox.booter": "shipyard",
|
|
2602
|
+
},
|
|
2603
|
+
},
|
|
2604
|
+
},
|
|
2605
|
+
},
|
|
2542
2606
|
"truncate_and_compress": {
|
|
2543
2607
|
"description": "上下文管理策略",
|
|
2544
2608
|
"type": "object",
|
|
@@ -9,6 +9,7 @@ from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_asyn
|
|
|
9
9
|
|
|
10
10
|
from astrbot.core.db.po import (
|
|
11
11
|
Attachment,
|
|
12
|
+
ChatUIProject,
|
|
12
13
|
CommandConfig,
|
|
13
14
|
CommandConflict,
|
|
14
15
|
ConversationV2,
|
|
@@ -17,6 +18,7 @@ from astrbot.core.db.po import (
|
|
|
17
18
|
PlatformSession,
|
|
18
19
|
PlatformStat,
|
|
19
20
|
Preference,
|
|
21
|
+
SessionProjectRelation,
|
|
20
22
|
Stats,
|
|
21
23
|
)
|
|
22
24
|
|
|
@@ -446,8 +448,11 @@ class BaseDatabase(abc.ABC):
|
|
|
446
448
|
platform_id: str | None = None,
|
|
447
449
|
page: int = 1,
|
|
448
450
|
page_size: int = 20,
|
|
449
|
-
) -> list[
|
|
450
|
-
"""Get all Platform sessions for a specific creator (username) and optionally platform.
|
|
451
|
+
) -> list[dict]:
|
|
452
|
+
"""Get all Platform sessions for a specific creator (username) and optionally platform.
|
|
453
|
+
|
|
454
|
+
Returns a list of dicts containing session info and project info (if session belongs to a project).
|
|
455
|
+
"""
|
|
451
456
|
...
|
|
452
457
|
|
|
453
458
|
@abc.abstractmethod
|
|
@@ -463,3 +468,80 @@ class BaseDatabase(abc.ABC):
|
|
|
463
468
|
async def delete_platform_session(self, session_id: str) -> None:
|
|
464
469
|
"""Delete a Platform session by its ID."""
|
|
465
470
|
...
|
|
471
|
+
|
|
472
|
+
# ====
|
|
473
|
+
# ChatUI Project Management
|
|
474
|
+
# ====
|
|
475
|
+
|
|
476
|
+
@abc.abstractmethod
|
|
477
|
+
async def create_chatui_project(
|
|
478
|
+
self,
|
|
479
|
+
creator: str,
|
|
480
|
+
title: str,
|
|
481
|
+
emoji: str | None = "📁",
|
|
482
|
+
description: str | None = None,
|
|
483
|
+
) -> ChatUIProject:
|
|
484
|
+
"""Create a new ChatUI project."""
|
|
485
|
+
...
|
|
486
|
+
|
|
487
|
+
@abc.abstractmethod
|
|
488
|
+
async def get_chatui_project_by_id(self, project_id: str) -> ChatUIProject | None:
|
|
489
|
+
"""Get a ChatUI project by its ID."""
|
|
490
|
+
...
|
|
491
|
+
|
|
492
|
+
@abc.abstractmethod
|
|
493
|
+
async def get_chatui_projects_by_creator(
|
|
494
|
+
self,
|
|
495
|
+
creator: str,
|
|
496
|
+
page: int = 1,
|
|
497
|
+
page_size: int = 100,
|
|
498
|
+
) -> list[ChatUIProject]:
|
|
499
|
+
"""Get all ChatUI projects for a specific creator."""
|
|
500
|
+
...
|
|
501
|
+
|
|
502
|
+
@abc.abstractmethod
|
|
503
|
+
async def update_chatui_project(
|
|
504
|
+
self,
|
|
505
|
+
project_id: str,
|
|
506
|
+
title: str | None = None,
|
|
507
|
+
emoji: str | None = None,
|
|
508
|
+
description: str | None = None,
|
|
509
|
+
) -> None:
|
|
510
|
+
"""Update a ChatUI project."""
|
|
511
|
+
...
|
|
512
|
+
|
|
513
|
+
@abc.abstractmethod
|
|
514
|
+
async def delete_chatui_project(self, project_id: str) -> None:
|
|
515
|
+
"""Delete a ChatUI project by its ID."""
|
|
516
|
+
...
|
|
517
|
+
|
|
518
|
+
@abc.abstractmethod
|
|
519
|
+
async def add_session_to_project(
|
|
520
|
+
self,
|
|
521
|
+
session_id: str,
|
|
522
|
+
project_id: str,
|
|
523
|
+
) -> SessionProjectRelation:
|
|
524
|
+
"""Add a session to a project."""
|
|
525
|
+
...
|
|
526
|
+
|
|
527
|
+
@abc.abstractmethod
|
|
528
|
+
async def remove_session_from_project(self, session_id: str) -> None:
|
|
529
|
+
"""Remove a session from its project."""
|
|
530
|
+
...
|
|
531
|
+
|
|
532
|
+
@abc.abstractmethod
|
|
533
|
+
async def get_project_sessions(
|
|
534
|
+
self,
|
|
535
|
+
project_id: str,
|
|
536
|
+
page: int = 1,
|
|
537
|
+
page_size: int = 100,
|
|
538
|
+
) -> list[PlatformSession]:
|
|
539
|
+
"""Get all sessions in a project."""
|
|
540
|
+
...
|
|
541
|
+
|
|
542
|
+
@abc.abstractmethod
|
|
543
|
+
async def get_project_by_session(
|
|
544
|
+
self, session_id: str, creator: str
|
|
545
|
+
) -> ChatUIProject | None:
|
|
546
|
+
"""Get the project that a session belongs to."""
|
|
547
|
+
...
|
|
@@ -239,6 +239,71 @@ class Attachment(SQLModel, table=True):
|
|
|
239
239
|
)
|
|
240
240
|
|
|
241
241
|
|
|
242
|
+
class ChatUIProject(SQLModel, table=True):
|
|
243
|
+
"""This class represents projects for organizing ChatUI conversations.
|
|
244
|
+
|
|
245
|
+
Projects allow users to group related conversations together.
|
|
246
|
+
"""
|
|
247
|
+
|
|
248
|
+
__tablename__: str = "chatui_projects"
|
|
249
|
+
|
|
250
|
+
inner_id: int | None = Field(
|
|
251
|
+
primary_key=True,
|
|
252
|
+
sa_column_kwargs={"autoincrement": True},
|
|
253
|
+
default=None,
|
|
254
|
+
)
|
|
255
|
+
project_id: str = Field(
|
|
256
|
+
max_length=36,
|
|
257
|
+
nullable=False,
|
|
258
|
+
unique=True,
|
|
259
|
+
default_factory=lambda: str(uuid.uuid4()),
|
|
260
|
+
)
|
|
261
|
+
creator: str = Field(nullable=False)
|
|
262
|
+
"""Username of the project creator"""
|
|
263
|
+
emoji: str | None = Field(default="📁", max_length=10)
|
|
264
|
+
"""Emoji icon for the project"""
|
|
265
|
+
title: str = Field(nullable=False, max_length=255)
|
|
266
|
+
"""Title of the project"""
|
|
267
|
+
description: str | None = Field(default=None, max_length=1000)
|
|
268
|
+
"""Description of the project"""
|
|
269
|
+
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
270
|
+
updated_at: datetime = Field(
|
|
271
|
+
default_factory=lambda: datetime.now(timezone.utc),
|
|
272
|
+
sa_column_kwargs={"onupdate": datetime.now(timezone.utc)},
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
__table_args__ = (
|
|
276
|
+
UniqueConstraint(
|
|
277
|
+
"project_id",
|
|
278
|
+
name="uix_chatui_project_id",
|
|
279
|
+
),
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class SessionProjectRelation(SQLModel, table=True):
|
|
284
|
+
"""This class represents the relationship between platform sessions and ChatUI projects."""
|
|
285
|
+
|
|
286
|
+
__tablename__: str = "session_project_relations"
|
|
287
|
+
|
|
288
|
+
id: int | None = Field(
|
|
289
|
+
primary_key=True,
|
|
290
|
+
sa_column_kwargs={"autoincrement": True},
|
|
291
|
+
default=None,
|
|
292
|
+
)
|
|
293
|
+
session_id: str = Field(nullable=False, max_length=100)
|
|
294
|
+
"""Session ID from PlatformSession"""
|
|
295
|
+
project_id: str = Field(nullable=False, max_length=36)
|
|
296
|
+
"""Project ID from ChatUIProject"""
|
|
297
|
+
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
298
|
+
|
|
299
|
+
__table_args__ = (
|
|
300
|
+
UniqueConstraint(
|
|
301
|
+
"session_id",
|
|
302
|
+
name="uix_session_project_relation",
|
|
303
|
+
),
|
|
304
|
+
)
|
|
305
|
+
|
|
306
|
+
|
|
242
307
|
class CommandConfig(SQLModel, table=True):
|
|
243
308
|
"""Per-command configuration overrides for dashboard management."""
|
|
244
309
|
|
|
@@ -11,6 +11,7 @@ from sqlmodel import col, delete, desc, func, or_, select, text, update
|
|
|
11
11
|
from astrbot.core.db import BaseDatabase
|
|
12
12
|
from astrbot.core.db.po import (
|
|
13
13
|
Attachment,
|
|
14
|
+
ChatUIProject,
|
|
14
15
|
CommandConfig,
|
|
15
16
|
CommandConflict,
|
|
16
17
|
ConversationV2,
|
|
@@ -19,6 +20,7 @@ from astrbot.core.db.po import (
|
|
|
19
20
|
PlatformSession,
|
|
20
21
|
PlatformStat,
|
|
21
22
|
Preference,
|
|
23
|
+
SessionProjectRelation,
|
|
22
24
|
SQLModel,
|
|
23
25
|
)
|
|
24
26
|
from astrbot.core.db.po import (
|
|
@@ -1060,12 +1062,35 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
1060
1062
|
platform_id: str | None = None,
|
|
1061
1063
|
page: int = 1,
|
|
1062
1064
|
page_size: int = 20,
|
|
1063
|
-
) -> list[
|
|
1064
|
-
"""Get all Platform sessions for a specific creator (username) and optionally platform.
|
|
1065
|
+
) -> list[dict]:
|
|
1066
|
+
"""Get all Platform sessions for a specific creator (username) and optionally platform.
|
|
1067
|
+
|
|
1068
|
+
Returns a list of dicts containing session info and project info (if session belongs to a project).
|
|
1069
|
+
"""
|
|
1065
1070
|
async with self.get_db() as session:
|
|
1066
1071
|
session: AsyncSession
|
|
1067
1072
|
offset = (page - 1) * page_size
|
|
1068
|
-
|
|
1073
|
+
|
|
1074
|
+
# LEFT JOIN with SessionProjectRelation and ChatUIProject to get project info
|
|
1075
|
+
query = (
|
|
1076
|
+
select(
|
|
1077
|
+
PlatformSession,
|
|
1078
|
+
col(ChatUIProject.project_id),
|
|
1079
|
+
col(ChatUIProject.title).label("project_title"),
|
|
1080
|
+
col(ChatUIProject.emoji).label("project_emoji"),
|
|
1081
|
+
)
|
|
1082
|
+
.outerjoin(
|
|
1083
|
+
SessionProjectRelation,
|
|
1084
|
+
col(PlatformSession.session_id)
|
|
1085
|
+
== col(SessionProjectRelation.session_id),
|
|
1086
|
+
)
|
|
1087
|
+
.outerjoin(
|
|
1088
|
+
ChatUIProject,
|
|
1089
|
+
col(SessionProjectRelation.project_id)
|
|
1090
|
+
== col(ChatUIProject.project_id),
|
|
1091
|
+
)
|
|
1092
|
+
.where(col(PlatformSession.creator) == creator)
|
|
1093
|
+
)
|
|
1069
1094
|
|
|
1070
1095
|
if platform_id:
|
|
1071
1096
|
query = query.where(PlatformSession.platform_id == platform_id)
|
|
@@ -1076,7 +1101,24 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
1076
1101
|
.limit(page_size)
|
|
1077
1102
|
)
|
|
1078
1103
|
result = await session.execute(query)
|
|
1079
|
-
|
|
1104
|
+
|
|
1105
|
+
# Convert to list of dicts with session and project info
|
|
1106
|
+
sessions_with_projects = []
|
|
1107
|
+
for row in result.all():
|
|
1108
|
+
platform_session = row[0]
|
|
1109
|
+
project_id = row[1]
|
|
1110
|
+
project_title = row[2]
|
|
1111
|
+
project_emoji = row[3]
|
|
1112
|
+
|
|
1113
|
+
session_dict = {
|
|
1114
|
+
"session": platform_session,
|
|
1115
|
+
"project_id": project_id,
|
|
1116
|
+
"project_title": project_title,
|
|
1117
|
+
"project_emoji": project_emoji,
|
|
1118
|
+
}
|
|
1119
|
+
sessions_with_projects.append(session_dict)
|
|
1120
|
+
|
|
1121
|
+
return sessions_with_projects
|
|
1080
1122
|
|
|
1081
1123
|
async def update_platform_session(
|
|
1082
1124
|
self,
|
|
@@ -1107,3 +1149,182 @@ class SQLiteDatabase(BaseDatabase):
|
|
|
1107
1149
|
col(PlatformSession.session_id) == session_id,
|
|
1108
1150
|
),
|
|
1109
1151
|
)
|
|
1152
|
+
|
|
1153
|
+
# ====
|
|
1154
|
+
# ChatUI Project Management
|
|
1155
|
+
# ====
|
|
1156
|
+
|
|
1157
|
+
async def create_chatui_project(
|
|
1158
|
+
self,
|
|
1159
|
+
creator: str,
|
|
1160
|
+
title: str,
|
|
1161
|
+
emoji: str | None = "📁",
|
|
1162
|
+
description: str | None = None,
|
|
1163
|
+
) -> ChatUIProject:
|
|
1164
|
+
"""Create a new ChatUI project."""
|
|
1165
|
+
async with self.get_db() as session:
|
|
1166
|
+
session: AsyncSession
|
|
1167
|
+
async with session.begin():
|
|
1168
|
+
project = ChatUIProject(
|
|
1169
|
+
creator=creator,
|
|
1170
|
+
title=title,
|
|
1171
|
+
emoji=emoji,
|
|
1172
|
+
description=description,
|
|
1173
|
+
)
|
|
1174
|
+
session.add(project)
|
|
1175
|
+
await session.flush()
|
|
1176
|
+
await session.refresh(project)
|
|
1177
|
+
return project
|
|
1178
|
+
|
|
1179
|
+
async def get_chatui_project_by_id(self, project_id: str) -> ChatUIProject | None:
|
|
1180
|
+
"""Get a ChatUI project by its ID."""
|
|
1181
|
+
async with self.get_db() as session:
|
|
1182
|
+
session: AsyncSession
|
|
1183
|
+
result = await session.execute(
|
|
1184
|
+
select(ChatUIProject).where(
|
|
1185
|
+
col(ChatUIProject.project_id) == project_id,
|
|
1186
|
+
),
|
|
1187
|
+
)
|
|
1188
|
+
return result.scalar_one_or_none()
|
|
1189
|
+
|
|
1190
|
+
async def get_chatui_projects_by_creator(
|
|
1191
|
+
self,
|
|
1192
|
+
creator: str,
|
|
1193
|
+
page: int = 1,
|
|
1194
|
+
page_size: int = 100,
|
|
1195
|
+
) -> list[ChatUIProject]:
|
|
1196
|
+
"""Get all ChatUI projects for a specific creator."""
|
|
1197
|
+
async with self.get_db() as session:
|
|
1198
|
+
session: AsyncSession
|
|
1199
|
+
offset = (page - 1) * page_size
|
|
1200
|
+
result = await session.execute(
|
|
1201
|
+
select(ChatUIProject)
|
|
1202
|
+
.where(col(ChatUIProject.creator) == creator)
|
|
1203
|
+
.order_by(desc(ChatUIProject.updated_at))
|
|
1204
|
+
.limit(page_size)
|
|
1205
|
+
.offset(offset),
|
|
1206
|
+
)
|
|
1207
|
+
return list(result.scalars().all())
|
|
1208
|
+
|
|
1209
|
+
async def update_chatui_project(
|
|
1210
|
+
self,
|
|
1211
|
+
project_id: str,
|
|
1212
|
+
title: str | None = None,
|
|
1213
|
+
emoji: str | None = None,
|
|
1214
|
+
description: str | None = None,
|
|
1215
|
+
) -> None:
|
|
1216
|
+
"""Update a ChatUI project."""
|
|
1217
|
+
async with self.get_db() as session:
|
|
1218
|
+
session: AsyncSession
|
|
1219
|
+
async with session.begin():
|
|
1220
|
+
values: dict[str, T.Any] = {"updated_at": datetime.now(timezone.utc)}
|
|
1221
|
+
if title is not None:
|
|
1222
|
+
values["title"] = title
|
|
1223
|
+
if emoji is not None:
|
|
1224
|
+
values["emoji"] = emoji
|
|
1225
|
+
if description is not None:
|
|
1226
|
+
values["description"] = description
|
|
1227
|
+
|
|
1228
|
+
await session.execute(
|
|
1229
|
+
update(ChatUIProject)
|
|
1230
|
+
.where(col(ChatUIProject.project_id) == project_id)
|
|
1231
|
+
.values(**values),
|
|
1232
|
+
)
|
|
1233
|
+
|
|
1234
|
+
async def delete_chatui_project(self, project_id: str) -> None:
|
|
1235
|
+
"""Delete a ChatUI project by its ID."""
|
|
1236
|
+
async with self.get_db() as session:
|
|
1237
|
+
session: AsyncSession
|
|
1238
|
+
async with session.begin():
|
|
1239
|
+
# First remove all session relations
|
|
1240
|
+
await session.execute(
|
|
1241
|
+
delete(SessionProjectRelation).where(
|
|
1242
|
+
col(SessionProjectRelation.project_id) == project_id,
|
|
1243
|
+
),
|
|
1244
|
+
)
|
|
1245
|
+
# Then delete the project
|
|
1246
|
+
await session.execute(
|
|
1247
|
+
delete(ChatUIProject).where(
|
|
1248
|
+
col(ChatUIProject.project_id) == project_id,
|
|
1249
|
+
),
|
|
1250
|
+
)
|
|
1251
|
+
|
|
1252
|
+
async def add_session_to_project(
|
|
1253
|
+
self,
|
|
1254
|
+
session_id: str,
|
|
1255
|
+
project_id: str,
|
|
1256
|
+
) -> SessionProjectRelation:
|
|
1257
|
+
"""Add a session to a project."""
|
|
1258
|
+
async with self.get_db() as session:
|
|
1259
|
+
session: AsyncSession
|
|
1260
|
+
async with session.begin():
|
|
1261
|
+
# First remove existing relation if any
|
|
1262
|
+
await session.execute(
|
|
1263
|
+
delete(SessionProjectRelation).where(
|
|
1264
|
+
col(SessionProjectRelation.session_id) == session_id,
|
|
1265
|
+
),
|
|
1266
|
+
)
|
|
1267
|
+
# Then create new relation
|
|
1268
|
+
relation = SessionProjectRelation(
|
|
1269
|
+
session_id=session_id,
|
|
1270
|
+
project_id=project_id,
|
|
1271
|
+
)
|
|
1272
|
+
session.add(relation)
|
|
1273
|
+
await session.flush()
|
|
1274
|
+
await session.refresh(relation)
|
|
1275
|
+
return relation
|
|
1276
|
+
|
|
1277
|
+
async def remove_session_from_project(self, session_id: str) -> None:
|
|
1278
|
+
"""Remove a session from its project."""
|
|
1279
|
+
async with self.get_db() as session:
|
|
1280
|
+
session: AsyncSession
|
|
1281
|
+
async with session.begin():
|
|
1282
|
+
await session.execute(
|
|
1283
|
+
delete(SessionProjectRelation).where(
|
|
1284
|
+
col(SessionProjectRelation.session_id) == session_id,
|
|
1285
|
+
),
|
|
1286
|
+
)
|
|
1287
|
+
|
|
1288
|
+
async def get_project_sessions(
|
|
1289
|
+
self,
|
|
1290
|
+
project_id: str,
|
|
1291
|
+
page: int = 1,
|
|
1292
|
+
page_size: int = 100,
|
|
1293
|
+
) -> list[PlatformSession]:
|
|
1294
|
+
"""Get all sessions in a project."""
|
|
1295
|
+
async with self.get_db() as session:
|
|
1296
|
+
session: AsyncSession
|
|
1297
|
+
offset = (page - 1) * page_size
|
|
1298
|
+
result = await session.execute(
|
|
1299
|
+
select(PlatformSession)
|
|
1300
|
+
.join(
|
|
1301
|
+
SessionProjectRelation,
|
|
1302
|
+
col(PlatformSession.session_id)
|
|
1303
|
+
== col(SessionProjectRelation.session_id),
|
|
1304
|
+
)
|
|
1305
|
+
.where(col(SessionProjectRelation.project_id) == project_id)
|
|
1306
|
+
.order_by(desc(PlatformSession.updated_at))
|
|
1307
|
+
.limit(page_size)
|
|
1308
|
+
.offset(offset),
|
|
1309
|
+
)
|
|
1310
|
+
return list(result.scalars().all())
|
|
1311
|
+
|
|
1312
|
+
async def get_project_by_session(
|
|
1313
|
+
self, session_id: str, creator: str
|
|
1314
|
+
) -> ChatUIProject | None:
|
|
1315
|
+
"""Get the project that a session belongs to."""
|
|
1316
|
+
async with self.get_db() as session:
|
|
1317
|
+
session: AsyncSession
|
|
1318
|
+
result = await session.execute(
|
|
1319
|
+
select(ChatUIProject)
|
|
1320
|
+
.join(
|
|
1321
|
+
SessionProjectRelation,
|
|
1322
|
+
col(ChatUIProject.project_id)
|
|
1323
|
+
== col(SessionProjectRelation.project_id),
|
|
1324
|
+
)
|
|
1325
|
+
.where(
|
|
1326
|
+
col(SessionProjectRelation.session_id) == session_id,
|
|
1327
|
+
col(ChatUIProject.creator) == creator,
|
|
1328
|
+
),
|
|
1329
|
+
)
|
|
1330
|
+
return result.scalar_one_or_none()
|