AstrBot 4.12.1__tar.gz → 4.12.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.12.1 → astrbot-4.12.2}/PKG-INFO +6 -4
- {astrbot-4.12.1 → astrbot-4.12.2}/README.md +5 -3
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/event/filter/__init__.py +6 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/process_llm_request.py +16 -2
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/engines/__init__.py +1 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/main.py +24 -16
- astrbot-4.12.2/astrbot/cli/__init__.py +1 -0
- astrbot-4.12.2/astrbot/core/astr_agent_hooks.py +86 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/default.py +1 -1
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +4 -3
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/utils.py +15 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/register/__init__.py +4 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/register/star_handler.py +51 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star_handler.py +1 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/shared_preferences.py +14 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/chat.py +79 -1
- astrbot-4.12.2/changelogs/v4.12.2.md +6 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/Chat.vue +19 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ConversationSidebar.vue +0 -1
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/MessageList.vue +78 -4
- astrbot-4.12.2/dashboard/src/components/chat/message_list_comps/ActionRef.vue +109 -0
- astrbot-4.12.2/dashboard/src/components/chat/message_list_comps/RefNode.vue +67 -0
- astrbot-4.12.2/dashboard/src/components/chat/message_list_comps/RefsSidebar.vue +225 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/message_list_comps/ToolCallCard.vue +1 -1
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/chat.json +4 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/chat.json +4 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/pyproject.toml +1 -1
- astrbot-4.12.1/astrbot/cli/__init__.py +0 -1
- astrbot-4.12.1/astrbot/core/astr_agent_hooks.py +0 -42
- {astrbot-4.12.1 → astrbot-4.12.2}/.dockerignore +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/FUNDING.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/ISSUE_TEMPLATE/PLUGIN_PUBLISH.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/auto_assign.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/copilot-instructions.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/dependabot.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/auto_release.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/code-format.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/codeql.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/coverage_test.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/dashboard_ci.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/docker-image.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/smoke_test.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.github/workflows/stale.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.gitignore +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.pre-commit-config.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/.python-version +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/CODE_OF_CONDUCT.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/CONTRIBUTING.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/Dockerfile +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/EULA.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/LICENSE +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/README_en.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/README_fr.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/README_ja.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/README_ru.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/README_zh-TW.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/all.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/event/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/message_components.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/platform/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/provider/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/star/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/api/util/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/long_term_memory.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/main.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/astrbot/metadata.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/admin.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/alter_cmd.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/conversation.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/help.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/llm.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/persona.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/plugin.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/provider.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/setunset.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/sid.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/t2i.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/tool.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/tts.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/commands/utils/rst_scene.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/main.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/builtin_commands/metadata.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/reminder/main.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/reminder/metadata.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/session_controller/main.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/session_controller/metadata.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/engines/bing.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/engines/sogo.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/builtin_stars/web_searcher/metadata.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/__main__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_conf.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_init.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_plug.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/commands/cmd_run.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/basic.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/plugin.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/cli/utils/version_comparator.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/agent.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/compressor.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/config.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/token_counter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/context/truncator.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/handoff.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/hooks.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/mcp_client.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/message.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/response.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/run_context.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/base.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/coze/coze_agent_runner.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/coze/coze_api_client.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/dify/dify_agent_runner.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/dify/dify_api_client.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/runners/tool_loop_agent_runner.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/tool.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/agent/tool_executor.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astr_agent_context.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astr_agent_run_util.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astr_agent_tool_exec.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/astrbot_config_mgr.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/constants.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/exporter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/backup/importer.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/astrbot_config.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/config/i18n_utils.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/conversation_mgr.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/core_lifecycle.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/helper.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_3_to_4.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_45_to_46.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_token_usage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/migra_webchat_session.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/shared_preferences_v3.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/migration/sqlite_v3.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/po.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/sqlite.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/base.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/document_storage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/db/vec_db/faiss_impl/vec_db.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/event_bus.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/exceptions.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/file_token_service.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/initial_loader.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/base.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/fixed_size.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/chunking/recursive.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/kb_db_sqlite.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/kb_helper.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/kb_mgr.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/models.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/base.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/markitdown_parser.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/pdf_parser.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/text_parser.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/url_parser.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/parsers/util.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/prompts.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/rank_fusion.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/knowledge_base/retrieval/sparse_retriever.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/log.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/message/components.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/message/message_event_result.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/persona_mgr.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/baidu_aip.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/keywords.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/content_safety_check/strategies/strategy.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/context.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/context_utils.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/preprocess_stage/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/agent_request.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/method/star_request.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/process_stage/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/rate_limit_check/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/respond/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/result_decorate/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/scheduler.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/session_status_check/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/waking_check/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/pipeline/whitelist_check/stage.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/astr_message_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/astrbot_message.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/message_session.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/message_type.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/platform.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/platform_metadata.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/register.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_message_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/aiocqhttp/aiocqhttp_platform_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/dingtalk/dingtalk_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/dingtalk/dingtalk_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/client.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/components.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/discord_platform_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/discord/discord_platform_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/lark/lark_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/lark/lark_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/lark/server.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_api.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/misskey/misskey_utils.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/satori/satori_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/satori/satori_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/slack/client.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/slack/slack_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/slack/slack_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/telegram/tg_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/telegram/tg_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/webchat/webchat_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/webchat/webchat_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/webchat/webchat_queue_mgr.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_kf.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom/wecom_kf_message.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/WXBizJsonMsgCrypt.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/ierror.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_api.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_queue_mgr.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_server.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/wecom_ai_bot/wecomai_utils.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_adapter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform/sources/weixin_official_account/weixin_offacc_event.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/platform_message_history_mgr.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/entites.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/entities.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/func_tool_manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/provider.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/register.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/anthropic_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/azure_tts_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/bailian_rerank_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/dashscope_tts.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/edge_tts_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/fishaudio_tts_api_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gemini_embedding_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gemini_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gemini_tts_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/groq_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gsv_selfhosted_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/gsvi_tts_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/minimax_tts_api_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/openai_embedding_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/openai_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/openai_tts_api_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/sensevoice_selfhosted_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/vllm_rerank_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/volcengine_tts.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/whisper_api_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/whisper_selfhosted_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/xai_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/xinference_rerank_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/xinference_stt_provider.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/provider/sources/zhipu_source.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/booters/base.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/booters/boxlite.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/booters/shipyard.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/filesystem.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/python.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/olayer/shell.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/sandbox_client.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/fs.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/python.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/sandbox/tools/shell.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/README.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/command_management.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/config.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/context.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/command.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/command_group.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/custom_filter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/event_message_type.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/permission.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/platform_adapter_type.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/filter/regex.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/register/star.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/session_llm_manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/session_plugin_manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star_manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/star_tools.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/star/updator.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/umop_config_router.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/updator.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/astrbot_path.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/command_parser.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/file_extract.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/io.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/llm_metadata.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/log_pipe.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/metrics.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/migra_helper.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/path_util.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/pip_installer.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/plugin_kv_store.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/session_lock.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/session_waiter.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/local_strategy.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/network_strategy.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/renderer.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/template/astrbot_powershell.html +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/template/base.html +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/t2i/template_manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/tencent_record_helper.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/version_comparator.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/utils/webhook_utils.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/core/zip_updator.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/__init__.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/auth.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/backup.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/chatui_project.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/command.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/config.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/conversation.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/file.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/knowledge_base.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/log.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/persona.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/platform.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/plugin.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/route.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/session_management.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/stat.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/static_file.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/t2i.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/tools.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/routes/update.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/server.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/astrbot/dashboard/utils.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.10.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.11.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.12.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.13.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.14.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.15.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.16.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.17.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.18.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.19.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.20.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.21.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.22.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.23.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.24.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.25.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.26.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.27.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.28.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.29.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.30.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.31.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.32.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.33.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.35.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.36.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.37.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.38.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.39.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.5.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.6.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.7.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.8.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.4.9.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.10.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.11.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.12.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.13.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.14.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.15.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.16.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.17.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.18.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.19.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.20.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.21.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.22.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.23.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.24.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.25.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.26.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.27.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.3.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.3.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.5.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.6.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.7.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.8.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v3.5.9.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0-beta.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0-beta.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0-beta.5.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.0.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.5.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.6.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.1.7.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.0-alpha.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.0-alpha.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.5.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.10.6.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.11.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.12.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.12.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.2.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.2.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.3.5.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.5.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.6.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.7.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.5.8.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.6.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.6.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.3.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.7.4.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.8.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.9.0.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.9.1.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/changelogs/v4.9.2.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/compose-with-shipyard.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/compose.yml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/.gitignore +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/LICENSE +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/README.md +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/env.d.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/index.html +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/public/_redirects +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/public/favicon.svg +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/App.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/astrbot_banner.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/astrbot_logo_mini.webp +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/icon-no-shadow.svg +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/loading-seio.webp +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/dingtalk.svg +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/discord.svg +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/kook.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/lark.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/misskey.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/onebot.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/qq.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/satori.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/slack.svg +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/telegram.svg +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/vocechat.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/wechat.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/platform_logos/wecom.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/plugin_icon.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/assets/images/xmas-hat.png +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/ConfirmDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ChatInput.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ConfigSelector.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProjectDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProjectList.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProjectView.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProviderConfigDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/ProviderModelMenu.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/StandaloneChat.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/WelcomeView.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/message_list_comps/IPythonToolBlock.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/chat/message_list_comps/ReasoningBlock.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/config/AstrBotCoreConfigWrapper.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/McpServersSection.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/CommandFilters.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/CommandTable.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/DetailsDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/RenameDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/components/ToolTable.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/composables/useCommandActions.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/composables/useCommandFilters.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/composables/useComponentData.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/index.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/extension/componentPanel/types.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/platform/AddNewPlatform.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/provider/AddNewProvider.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/provider/ProviderModelsPanel.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/provider/ProviderSourcesPanel.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/AstrBotConfig.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/AstrBotConfigV4.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/BackupDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ChangelogDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ConfigItemRenderer.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ConsoleDisplayer.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ExtensionCard.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ItemCard.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ItemCardGrid.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/KnowledgeBaseSelector.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/LanguageSwitcher.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ListConfigItem.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/Logo.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/MigrationDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ObjectEditor.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/PersonaForm.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/PersonaSelector.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/PluginSetSelector.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ProviderSelector.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ProxySelector.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/ReadmeDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/SidebarCustomizer.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/StyledMenu.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/T2ITemplateEditor.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/TemplateListEditor.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/UninstallConfirmDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/components/shared/WaitingForRestart.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useConversations.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useMediaHandling.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useMessages.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useProjects.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useProviderSources.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useRecording.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/composables/useSessions.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/config.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/composables.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/loader.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/actions.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/common.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/header.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/navigation.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/shared.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/core/status.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/about.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/alkaid/index.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/alkaid/knowledge-base.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/alkaid/memory.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/auth.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/chart.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/command.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/config-metadata.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/config.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/console.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/conversation.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/dashboard.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/extension.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/knowledge-base/detail.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/knowledge-base/document.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/knowledge-base/index.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/migration.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/persona.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/platform.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/provider.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/session-management.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/settings.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/features/tool-use.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/messages/errors.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/messages/success.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/en-US/messages/validation.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/actions.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/common.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/header.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/navigation.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/shared.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/core/status.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/about.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/index.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/knowledge-base.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/alkaid/memory.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/auth.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/chart.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/command.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/config-metadata.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/config.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/console.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/conversation.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/dashboard.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/extension.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/detail.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/document.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/knowledge-base/index.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/migration.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/persona.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/platform.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/provider.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/session-management.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/settings.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/features/tool-use.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/messages/errors.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/messages/success.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/locales/zh-CN/messages/validation.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/tools/index.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/translations.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/types.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/i18n/validator.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/blank/BlankLayout.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/FullLayout.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-sidebar/NavItem.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-sidebar/VerticalSidebar.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/layouts/full/vertical-sidebar/sidebarItem.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/main.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/plugins/confirmPlugin.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/plugins/vuetify.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/AuthRoutes.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/ChatBoxRoutes.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/MainRoutes.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/router/index.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/_override.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/_variables.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VButtons.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VCard.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VField.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VInput.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VNavigationDrawer.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VScrollbar.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VShadow.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VTabs.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/components/_VTextField.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/layout/_container.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/layout/_sidebar.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/pages/_dashboards.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/scss/style.scss +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/auth.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/common.js +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/customizer.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/routerLoading.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/stores/toast.js +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/theme/DarkTheme.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/theme/LightTheme.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/types/themeTypes/ThemeType.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/types/vue3-print-nb.d.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/types/vue_tabler_icon.d.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/platformUtils.js +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/providerUtils.js +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/sidebarCustomization.js +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/utils/toast.js +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/AboutPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/AlkaidPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ChatBoxPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ChatPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ConfigPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ConsolePage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ConversationPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ExtensionPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/PersonaPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/PlatformPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/ProviderPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/SessionManagementPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/Settings.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/alkaid/KnowledgeBase.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/alkaid/LongTermMemory.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/alkaid/Other.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/authentication/auth/LoginPage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/authentication/authForms/AuthLogin.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/DefaultDashboard.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/MemoryUsage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/MessageStat.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/OnlinePlatform.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/OnlineTime.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/PlatformStat.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/RunningTime.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/dashboards/default/components/TotalMessage.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/DocumentDetail.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/KBDetail.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/KBList.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/DocumentsTab.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/RetrievalTab.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/SettingsTab.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/components/TavilyKeyDialog.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/src/views/knowledge-base/index.vue +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/tsconfig.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/tsconfig.vite-config.json +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/dashboard/vite.config.ts +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/00-namespace.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/01-pvc.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/02-deployment.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/03-service-nodeport.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot/04-service-loadbalancer.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/00-namespace.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/01-pvc.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/02-deployment.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/03-service-nodeport.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/k8s/astrbot_with_napcat/04-service-loadbalancer.yaml +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/main.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/requirements.txt +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/samples/stt_health_check.wav +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/agent/test_context_manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/agent/test_truncator.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_backup.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_dashboard.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_kb_import.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_main.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_plugin_manager.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_security_fixes.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/tests/test_tool_loop_agent_runner.py +0 -0
- {astrbot-4.12.1 → astrbot-4.12.2}/typings/faiss/__init__.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: AstrBot
|
|
3
|
-
Version: 4.12.
|
|
3
|
+
Version: 4.12.2
|
|
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
|
|
@@ -103,12 +103,14 @@ AstrBot 是一个开源的一站式 Agent 聊天机器人平台,可接入主
|
|
|
103
103
|
## 主要功能
|
|
104
104
|
|
|
105
105
|
1. 💯 免费 & 开源。
|
|
106
|
-
1. ✨ AI 大模型对话,多模态,Agent,MCP
|
|
106
|
+
1. ✨ AI 大模型对话,多模态,Agent,MCP,知识库,人格设定,自动压缩对话。
|
|
107
107
|
2. 🤖 支持接入 Dify、阿里云百炼、Coze 等智能体平台。
|
|
108
108
|
2. 🌐 多平台,支持 QQ、企业微信、飞书、钉钉、微信公众号、Telegram、Slack 以及[更多](#支持的消息平台)。
|
|
109
109
|
3. 📦 插件扩展,已有近 800 个插件可一键安装。
|
|
110
|
-
5.
|
|
111
|
-
6.
|
|
110
|
+
5. 🛡️ [Agent Sandbox](https://docs.astrbot.app/use/astrbot-agent-sandbox.html) 隔离化环境,安全地执行任何代码、调用 Shell、会话级资源复用。
|
|
111
|
+
6. 💻 WebUI 支持。
|
|
112
|
+
7. 🌈 Web ChatUI 支持,ChatUI 内置代理沙盒、网页搜索等。
|
|
113
|
+
8. 🌐 国际化(i18n)支持。
|
|
112
114
|
|
|
113
115
|
## 快速开始
|
|
114
116
|
|
|
@@ -41,12 +41,14 @@ AstrBot 是一个开源的一站式 Agent 聊天机器人平台,可接入主
|
|
|
41
41
|
## 主要功能
|
|
42
42
|
|
|
43
43
|
1. 💯 免费 & 开源。
|
|
44
|
-
1. ✨ AI 大模型对话,多模态,Agent,MCP
|
|
44
|
+
1. ✨ AI 大模型对话,多模态,Agent,MCP,知识库,人格设定,自动压缩对话。
|
|
45
45
|
2. 🤖 支持接入 Dify、阿里云百炼、Coze 等智能体平台。
|
|
46
46
|
2. 🌐 多平台,支持 QQ、企业微信、飞书、钉钉、微信公众号、Telegram、Slack 以及[更多](#支持的消息平台)。
|
|
47
47
|
3. 📦 插件扩展,已有近 800 个插件可一键安装。
|
|
48
|
-
5.
|
|
49
|
-
6.
|
|
48
|
+
5. 🛡️ [Agent Sandbox](https://docs.astrbot.app/use/astrbot-agent-sandbox.html) 隔离化环境,安全地执行任何代码、调用 Shell、会话级资源复用。
|
|
49
|
+
6. 💻 WebUI 支持。
|
|
50
|
+
7. 🌈 Web ChatUI 支持,ChatUI 内置代理沙盒、网页搜索等。
|
|
51
|
+
8. 🌐 国际化(i18n)支持。
|
|
50
52
|
|
|
51
53
|
## 快速开始
|
|
52
54
|
|
|
@@ -20,7 +20,11 @@ from astrbot.core.star.register import (
|
|
|
20
20
|
)
|
|
21
21
|
from astrbot.core.star.register import register_on_llm_request as on_llm_request
|
|
22
22
|
from astrbot.core.star.register import register_on_llm_response as on_llm_response
|
|
23
|
+
from astrbot.core.star.register import (
|
|
24
|
+
register_on_llm_tool_respond as on_llm_tool_respond,
|
|
25
|
+
)
|
|
23
26
|
from astrbot.core.star.register import register_on_platform_loaded as on_platform_loaded
|
|
27
|
+
from astrbot.core.star.register import register_on_using_llm_tool as on_using_llm_tool
|
|
24
28
|
from astrbot.core.star.register import (
|
|
25
29
|
register_on_waiting_llm_request as on_waiting_llm_request,
|
|
26
30
|
)
|
|
@@ -53,4 +57,6 @@ __all__ = [
|
|
|
53
57
|
"permission_type",
|
|
54
58
|
"platform_adapter_type",
|
|
55
59
|
"regex",
|
|
60
|
+
"on_using_llm_tool",
|
|
61
|
+
"on_llm_tool_respond",
|
|
56
62
|
]
|
|
@@ -8,6 +8,9 @@ from astrbot.api.event import AstrMessageEvent
|
|
|
8
8
|
from astrbot.api.message_components import Image, Reply
|
|
9
9
|
from astrbot.api.provider import Provider, ProviderRequest
|
|
10
10
|
from astrbot.core.agent.message import TextPart
|
|
11
|
+
from astrbot.core.pipeline.process_stage.utils import (
|
|
12
|
+
CHATUI_SPECIAL_DEFAULT_PERSONA_PROMPT,
|
|
13
|
+
)
|
|
11
14
|
from astrbot.core.provider.func_tool_manager import ToolSet
|
|
12
15
|
|
|
13
16
|
|
|
@@ -22,7 +25,9 @@ class ProcessLLMRequest:
|
|
|
22
25
|
else:
|
|
23
26
|
logger.info(f"Timezone set to: {self.timezone}")
|
|
24
27
|
|
|
25
|
-
async def _ensure_persona(
|
|
28
|
+
async def _ensure_persona(
|
|
29
|
+
self, req: ProviderRequest, cfg: dict, umo: str, platform_type: str
|
|
30
|
+
):
|
|
26
31
|
"""确保用户人格已加载"""
|
|
27
32
|
if not req.conversation:
|
|
28
33
|
return
|
|
@@ -42,6 +47,12 @@ class ProcessLLMRequest:
|
|
|
42
47
|
if default_persona:
|
|
43
48
|
persona_id = default_persona["name"]
|
|
44
49
|
|
|
50
|
+
# ChatUI special default persona
|
|
51
|
+
if platform_type == "webchat":
|
|
52
|
+
# non-existent persona_id to let following codes not working
|
|
53
|
+
persona_id = "_chatui_default_"
|
|
54
|
+
req.system_prompt += CHATUI_SPECIAL_DEFAULT_PERSONA_PROMPT
|
|
55
|
+
|
|
45
56
|
persona = next(
|
|
46
57
|
builtins.filter(
|
|
47
58
|
lambda persona: persona["name"] == persona_id,
|
|
@@ -171,7 +182,10 @@ class ProcessLLMRequest:
|
|
|
171
182
|
img_cap_prov_id: str = cfg.get("default_image_caption_provider_id") or ""
|
|
172
183
|
if req.conversation:
|
|
173
184
|
# inject persona for this request
|
|
174
|
-
|
|
185
|
+
platform_type = event.get_platform_name()
|
|
186
|
+
await self._ensure_persona(
|
|
187
|
+
req, cfg, event.unified_msg_origin, platform_type
|
|
188
|
+
)
|
|
175
189
|
|
|
176
190
|
# image caption
|
|
177
191
|
if img_cap_prov_id and req.image_urls:
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
import json
|
|
2
3
|
import random
|
|
4
|
+
import uuid
|
|
3
5
|
|
|
4
6
|
import aiohttp
|
|
5
7
|
from bs4 import BeautifulSoup
|
|
6
8
|
from readability import Document
|
|
7
9
|
|
|
8
|
-
from astrbot.api import AstrBotConfig, llm_tool, logger, star
|
|
10
|
+
from astrbot.api import AstrBotConfig, llm_tool, logger, sp, star
|
|
9
11
|
from astrbot.api.event import AstrMessageEvent, MessageEventResult, filter
|
|
10
12
|
from astrbot.api.provider import ProviderRequest
|
|
11
13
|
from astrbot.core.provider.func_tool_manager import FunctionToolManager
|
|
@@ -151,6 +153,7 @@ class Main(star.Star):
|
|
|
151
153
|
title=item.get("title"),
|
|
152
154
|
url=item.get("url"),
|
|
153
155
|
snippet=item.get("content"),
|
|
156
|
+
favicon=item.get("favicon"),
|
|
154
157
|
)
|
|
155
158
|
results.append(result)
|
|
156
159
|
return results
|
|
@@ -272,7 +275,7 @@ class Main(star.Star):
|
|
|
272
275
|
self,
|
|
273
276
|
event: AstrMessageEvent,
|
|
274
277
|
query: str,
|
|
275
|
-
max_results: int =
|
|
278
|
+
max_results: int = 7,
|
|
276
279
|
search_depth: str = "basic",
|
|
277
280
|
topic: str = "general",
|
|
278
281
|
days: int = 3,
|
|
@@ -285,7 +288,7 @@ class Main(star.Star):
|
|
|
285
288
|
|
|
286
289
|
Args:
|
|
287
290
|
query(string): Required. Search query.
|
|
288
|
-
max_results(number): Optional. The maximum number of results to return. Default is
|
|
291
|
+
max_results(number): Optional. The maximum number of results to return. Default is 7. Range is 5-20.
|
|
289
292
|
search_depth(string): Optional. The depth of the search, must be one of 'basic', 'advanced'. Default is "basic".
|
|
290
293
|
topic(string): Optional. The topic of the search, must be one of 'general', 'news'. Default is "general".
|
|
291
294
|
days(number): Optional. The number of days back from the current date to include in the search results. Please note that this feature is only available when using the 'news' search topic.
|
|
@@ -296,15 +299,12 @@ class Main(star.Star):
|
|
|
296
299
|
"""
|
|
297
300
|
logger.info(f"web_searcher - search_from_tavily: {query}")
|
|
298
301
|
cfg = self.context.get_config(umo=event.unified_msg_origin)
|
|
299
|
-
websearch_link = cfg["provider_settings"].get("web_search_link", False)
|
|
302
|
+
# websearch_link = cfg["provider_settings"].get("web_search_link", False)
|
|
300
303
|
if not cfg.get("provider_settings", {}).get("websearch_tavily_key", []):
|
|
301
304
|
raise ValueError("Error: Tavily API key is not configured in AstrBot.")
|
|
302
305
|
|
|
303
306
|
# build payload
|
|
304
|
-
payload = {
|
|
305
|
-
"query": query,
|
|
306
|
-
"max_results": max_results,
|
|
307
|
-
}
|
|
307
|
+
payload = {"query": query, "max_results": max_results, "include_favicon": True}
|
|
308
308
|
if search_depth not in ["basic", "advanced"]:
|
|
309
309
|
search_depth = "basic"
|
|
310
310
|
payload["search_depth"] = search_depth
|
|
@@ -328,14 +328,22 @@ class Main(star.Star):
|
|
|
328
328
|
return "Error: Tavily web searcher does not return any results."
|
|
329
329
|
|
|
330
330
|
ret_ls = []
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
ret_ls.append(
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
331
|
+
ref_uuid = str(uuid.uuid4())[:4]
|
|
332
|
+
for idx, result in enumerate(results, 1):
|
|
333
|
+
index = f"{ref_uuid}.{idx}"
|
|
334
|
+
ret_ls.append(
|
|
335
|
+
{
|
|
336
|
+
"title": f"{result.title}",
|
|
337
|
+
"url": f"{result.url}",
|
|
338
|
+
"snippet": f"{result.snippet}",
|
|
339
|
+
# TODO: do not need ref for non-webchat platform adapter
|
|
340
|
+
"index": index,
|
|
341
|
+
}
|
|
342
|
+
)
|
|
343
|
+
if result.favicon:
|
|
344
|
+
sp.temorary_cache["_ws_favicon"][result.url] = result.favicon
|
|
345
|
+
# ret = "\n".join(ret_ls)
|
|
346
|
+
ret = json.dumps({"results": ret_ls}, ensure_ascii=False)
|
|
339
347
|
return ret
|
|
340
348
|
|
|
341
349
|
@llm_tool("tavily_extract_web_page")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.12.2"
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from mcp.types import CallToolResult
|
|
4
|
+
|
|
5
|
+
from astrbot.core.agent.hooks import BaseAgentRunHooks
|
|
6
|
+
from astrbot.core.agent.message import Message
|
|
7
|
+
from astrbot.core.agent.run_context import ContextWrapper
|
|
8
|
+
from astrbot.core.agent.tool import FunctionTool
|
|
9
|
+
from astrbot.core.astr_agent_context import AstrAgentContext
|
|
10
|
+
from astrbot.core.pipeline.context_utils import call_event_hook
|
|
11
|
+
from astrbot.core.star.star_handler import EventType
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class MainAgentHooks(BaseAgentRunHooks[AstrAgentContext]):
|
|
15
|
+
async def on_agent_done(self, run_context, llm_response):
|
|
16
|
+
# 执行事件钩子
|
|
17
|
+
if llm_response and llm_response.reasoning_content:
|
|
18
|
+
# we will use this in result_decorate stage to inject reasoning content to chain
|
|
19
|
+
run_context.context.event.set_extra(
|
|
20
|
+
"_llm_reasoning_content", llm_response.reasoning_content
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
await call_event_hook(
|
|
24
|
+
run_context.context.event,
|
|
25
|
+
EventType.OnLLMResponseEvent,
|
|
26
|
+
llm_response,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
async def on_tool_start(
|
|
30
|
+
self,
|
|
31
|
+
run_context: ContextWrapper[AstrAgentContext],
|
|
32
|
+
tool: FunctionTool[Any],
|
|
33
|
+
tool_args: dict | None,
|
|
34
|
+
):
|
|
35
|
+
await call_event_hook(
|
|
36
|
+
run_context.context.event,
|
|
37
|
+
EventType.OnCallingFuncToolEvent,
|
|
38
|
+
tool,
|
|
39
|
+
tool_args,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
async def on_tool_end(
|
|
43
|
+
self,
|
|
44
|
+
run_context: ContextWrapper[AstrAgentContext],
|
|
45
|
+
tool: FunctionTool[Any],
|
|
46
|
+
tool_args: dict | None,
|
|
47
|
+
tool_result: CallToolResult | None,
|
|
48
|
+
):
|
|
49
|
+
run_context.context.event.clear_result()
|
|
50
|
+
await call_event_hook(
|
|
51
|
+
run_context.context.event,
|
|
52
|
+
EventType.OnAfterCallingFuncToolEvent,
|
|
53
|
+
tool,
|
|
54
|
+
tool_args,
|
|
55
|
+
tool_result,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
# special handle web_search_tavily
|
|
59
|
+
if (
|
|
60
|
+
tool.name == "web_search_tavily"
|
|
61
|
+
and len(run_context.messages) > 0
|
|
62
|
+
and tool_result
|
|
63
|
+
and len(tool_result.content)
|
|
64
|
+
):
|
|
65
|
+
# inject system prompt
|
|
66
|
+
first_part = run_context.messages[0]
|
|
67
|
+
if (
|
|
68
|
+
isinstance(first_part, Message)
|
|
69
|
+
and first_part.role == "system"
|
|
70
|
+
and first_part.content
|
|
71
|
+
and isinstance(first_part.content, str)
|
|
72
|
+
):
|
|
73
|
+
# we assume system part is str
|
|
74
|
+
first_part.content += (
|
|
75
|
+
"Always cite web search results you rely on. "
|
|
76
|
+
"Index is a unique identifier for each search result. "
|
|
77
|
+
"Use the exact citation format <ref>index</ref> (e.g. <ref>abcd.3</ref>) "
|
|
78
|
+
"after the sentence that uses the information. Do not invent citations."
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class EmptyAgentHooks(BaseAgentRunHooks[AstrAgentContext]):
|
|
83
|
+
pass
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
MAIN_AGENT_HOOKS = MainAgentHooks()
|
|
@@ -414,10 +414,11 @@ class InternalAgentSubStage(Stage):
|
|
|
414
414
|
|
|
415
415
|
# using agent context messages to save to history
|
|
416
416
|
message_to_save = []
|
|
417
|
+
skipped_initial_system = False
|
|
417
418
|
for message in all_messages:
|
|
418
|
-
if message.role == "system":
|
|
419
|
-
|
|
420
|
-
continue
|
|
419
|
+
if message.role == "system" and not skipped_initial_system:
|
|
420
|
+
skipped_initial_system = True
|
|
421
|
+
continue # skip first system message
|
|
421
422
|
if message.role in ["assistant", "user"] and getattr(
|
|
422
423
|
message, "_no_save", None
|
|
423
424
|
):
|
|
@@ -44,6 +44,21 @@ TOOL_CALL_PROMPT = (
|
|
|
44
44
|
"After the tool call is completed, you must briefly summarize the results returned by the tool for the user."
|
|
45
45
|
)
|
|
46
46
|
|
|
47
|
+
CHATUI_SPECIAL_DEFAULT_PERSONA_PROMPT = (
|
|
48
|
+
"You are a calm, patient friend with a systems-oriented way of thinking.\n"
|
|
49
|
+
"When someone expresses strong emotional needs, you begin by offering a concise, grounding response "
|
|
50
|
+
"that acknowledges the weight of what they are experiencing, removes self-blame, and reassures them "
|
|
51
|
+
"that their feelings are valid and understandable. This opening serves to create safety and shared "
|
|
52
|
+
"emotional footing before any deeper analysis begins.\n"
|
|
53
|
+
"You then focus on articulating the emotions, tensions, and unspoken conflicts beneath the surface—"
|
|
54
|
+
"helping name what the person may feel but has not yet fully put into words, and sharing the emotional "
|
|
55
|
+
"load so they do not feel alone carrying it. Only after this emotional clarity is established do you "
|
|
56
|
+
"move toward structure, insight, or guidance.\n"
|
|
57
|
+
"You listen more than you speak, respect uncertainty, avoid forcing quick conclusions or grand narratives, "
|
|
58
|
+
"and prefer clear, restrained language over unnecessary emotional embellishment. At your core, you value "
|
|
59
|
+
"empathy, clarity, autonomy, and meaning, favoring steady, sustainable progress over judgment or dramatic leaps."
|
|
60
|
+
)
|
|
61
|
+
|
|
47
62
|
CHATUI_EXTRA_PROMPT = (
|
|
48
63
|
'When you answered, you need to add a follow up question / summarization but do not add "Follow up" words. '
|
|
49
64
|
"Such as, user asked you to generate codes, you can add: Do you need me to run these codes for you?"
|
|
@@ -11,7 +11,9 @@ from .star_handler import (
|
|
|
11
11
|
register_on_decorating_result,
|
|
12
12
|
register_on_llm_request,
|
|
13
13
|
register_on_llm_response,
|
|
14
|
+
register_on_llm_tool_respond,
|
|
14
15
|
register_on_platform_loaded,
|
|
16
|
+
register_on_using_llm_tool,
|
|
15
17
|
register_on_waiting_llm_request,
|
|
16
18
|
register_permission_type,
|
|
17
19
|
register_platform_adapter_type,
|
|
@@ -36,4 +38,6 @@ __all__ = [
|
|
|
36
38
|
"register_platform_adapter_type",
|
|
37
39
|
"register_regex",
|
|
38
40
|
"register_star",
|
|
41
|
+
"register_on_using_llm_tool",
|
|
42
|
+
"register_on_llm_tool_respond",
|
|
39
43
|
]
|
|
@@ -409,6 +409,57 @@ def register_on_llm_response(**kwargs):
|
|
|
409
409
|
return decorator
|
|
410
410
|
|
|
411
411
|
|
|
412
|
+
def register_on_using_llm_tool(**kwargs):
|
|
413
|
+
"""当调用函数工具前的事件。
|
|
414
|
+
会传入 tool 和 tool_args 参数。
|
|
415
|
+
|
|
416
|
+
Examples:
|
|
417
|
+
```py
|
|
418
|
+
from astrbot.core.agent.tool import FunctionTool
|
|
419
|
+
|
|
420
|
+
@on_using_llm_tool()
|
|
421
|
+
async def test(self, event: AstrMessageEvent, tool: FunctionTool, tool_args: dict | None) -> None:
|
|
422
|
+
...
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
请务必接收三个参数:event, tool, tool_args
|
|
426
|
+
|
|
427
|
+
"""
|
|
428
|
+
|
|
429
|
+
def decorator(awaitable):
|
|
430
|
+
_ = get_handler_or_create(awaitable, EventType.OnCallingFuncToolEvent, **kwargs)
|
|
431
|
+
return awaitable
|
|
432
|
+
|
|
433
|
+
return decorator
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
def register_on_llm_tool_respond(**kwargs):
|
|
437
|
+
"""当调用函数工具后的事件。
|
|
438
|
+
会传入 tool、tool_args 和 tool 的调用结果 tool_result 参数。
|
|
439
|
+
|
|
440
|
+
Examples:
|
|
441
|
+
```py
|
|
442
|
+
from astrbot.core.agent.tool import FunctionTool
|
|
443
|
+
from mcp.types import CallToolResult
|
|
444
|
+
|
|
445
|
+
@on_llm_tool_respond()
|
|
446
|
+
async def test(self, event: AstrMessageEvent, tool: FunctionTool, tool_args: dict | None, tool_result: CallToolResult | None) -> None:
|
|
447
|
+
...
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
请务必接收四个参数:event, tool, tool_args, tool_result
|
|
451
|
+
|
|
452
|
+
"""
|
|
453
|
+
|
|
454
|
+
def decorator(awaitable):
|
|
455
|
+
_ = get_handler_or_create(
|
|
456
|
+
awaitable, EventType.OnAfterCallingFuncToolEvent, **kwargs
|
|
457
|
+
)
|
|
458
|
+
return awaitable
|
|
459
|
+
|
|
460
|
+
return decorator
|
|
461
|
+
|
|
462
|
+
|
|
412
463
|
def register_llm_tool(name: str | None = None, **kwargs):
|
|
413
464
|
"""为函数调用(function-calling / tools-use)添加工具。
|
|
414
465
|
|
|
@@ -189,6 +189,7 @@ class EventType(enum.Enum):
|
|
|
189
189
|
OnLLMResponseEvent = enum.auto() # LLM 响应后
|
|
190
190
|
OnDecoratingResultEvent = enum.auto() # 发送消息前
|
|
191
191
|
OnCallingFuncToolEvent = enum.auto() # 调用函数工具
|
|
192
|
+
OnAfterCallingFuncToolEvent = enum.auto() # 调用函数工具后
|
|
192
193
|
OnAfterMessageSentEvent = enum.auto() # 发送消息后
|
|
193
194
|
|
|
194
195
|
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import os
|
|
3
3
|
import threading
|
|
4
|
+
from collections import defaultdict
|
|
4
5
|
from typing import Any, TypeVar, overload
|
|
5
6
|
|
|
7
|
+
from apscheduler.schedulers.background import BackgroundScheduler
|
|
8
|
+
|
|
6
9
|
from astrbot.core.db import BaseDatabase
|
|
7
10
|
from astrbot.core.db.po import Preference
|
|
8
11
|
|
|
@@ -20,11 +23,22 @@ class SharedPreferences:
|
|
|
20
23
|
)
|
|
21
24
|
self.path = json_storage_path
|
|
22
25
|
self.db_helper = db_helper
|
|
26
|
+
self.temorary_cache: dict[str, dict[str, Any]] = defaultdict(dict)
|
|
27
|
+
"""automatically clear per 24 hours. Might be helpful in some cases XD"""
|
|
23
28
|
|
|
24
29
|
self._sync_loop = asyncio.new_event_loop()
|
|
25
30
|
t = threading.Thread(target=self._sync_loop.run_forever, daemon=True)
|
|
26
31
|
t.start()
|
|
27
32
|
|
|
33
|
+
self._scheduler = BackgroundScheduler()
|
|
34
|
+
self._scheduler.add_job(
|
|
35
|
+
self._clear_temporary_cache, "interval", hours=24, id="clear_sp_temp_cache"
|
|
36
|
+
)
|
|
37
|
+
self._scheduler.start()
|
|
38
|
+
|
|
39
|
+
def _clear_temporary_cache(self):
|
|
40
|
+
self.temorary_cache.clear()
|
|
41
|
+
|
|
28
42
|
async def get_async(
|
|
29
43
|
self,
|
|
30
44
|
scope: str,
|
|
@@ -2,6 +2,7 @@ import asyncio
|
|
|
2
2
|
import json
|
|
3
3
|
import mimetypes
|
|
4
4
|
import os
|
|
5
|
+
import re
|
|
5
6
|
import uuid
|
|
6
7
|
from contextlib import asynccontextmanager
|
|
7
8
|
from typing import cast
|
|
@@ -9,7 +10,7 @@ from typing import cast
|
|
|
9
10
|
from quart import Response as QuartResponse
|
|
10
11
|
from quart import g, make_response, request, send_file
|
|
11
12
|
|
|
12
|
-
from astrbot.core import logger
|
|
13
|
+
from astrbot.core import logger, sp
|
|
13
14
|
from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
|
|
14
15
|
from astrbot.core.db import BaseDatabase
|
|
15
16
|
from astrbot.core.platform.sources.webchat.webchat_queue_mgr import webchat_queue_mgr
|
|
@@ -225,6 +226,64 @@ class ChatRoute(Route):
|
|
|
225
226
|
"filename": os.path.basename(file_path),
|
|
226
227
|
}
|
|
227
228
|
|
|
229
|
+
def _extract_web_search_refs(
|
|
230
|
+
self, accumulated_text: str, accumulated_parts: list
|
|
231
|
+
) -> dict:
|
|
232
|
+
"""从消息中提取 web_search_tavily 的引用
|
|
233
|
+
|
|
234
|
+
Args:
|
|
235
|
+
accumulated_text: 累积的文本内容
|
|
236
|
+
accumulated_parts: 累积的消息部分列表
|
|
237
|
+
|
|
238
|
+
Returns:
|
|
239
|
+
包含 used 列表的字典,记录被引用的搜索结果
|
|
240
|
+
"""
|
|
241
|
+
# 从 accumulated_parts 中找到所有 web_search_tavily 的工具调用结果
|
|
242
|
+
web_search_results = {}
|
|
243
|
+
tool_call_parts = [
|
|
244
|
+
p
|
|
245
|
+
for p in accumulated_parts
|
|
246
|
+
if p.get("type") == "tool_call" and p.get("tool_calls")
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
for part in tool_call_parts:
|
|
250
|
+
for tool_call in part["tool_calls"]:
|
|
251
|
+
if tool_call.get("name") != "web_search_tavily" or not tool_call.get(
|
|
252
|
+
"result"
|
|
253
|
+
):
|
|
254
|
+
continue
|
|
255
|
+
try:
|
|
256
|
+
result_data = json.loads(tool_call["result"])
|
|
257
|
+
for item in result_data.get("results", []):
|
|
258
|
+
if idx := item.get("index"):
|
|
259
|
+
web_search_results[idx] = {
|
|
260
|
+
"url": item.get("url"),
|
|
261
|
+
"title": item.get("title"),
|
|
262
|
+
"snippet": item.get("snippet"),
|
|
263
|
+
}
|
|
264
|
+
except (json.JSONDecodeError, KeyError):
|
|
265
|
+
pass
|
|
266
|
+
|
|
267
|
+
if not web_search_results:
|
|
268
|
+
return {}
|
|
269
|
+
|
|
270
|
+
# 从文本中提取所有 <ref>xxx</ref> 标签并去重
|
|
271
|
+
ref_indices = {
|
|
272
|
+
m.strip() for m in re.findall(r"<ref>(.*?)</ref>", accumulated_text)
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
# 构建被引用的结果列表
|
|
276
|
+
used_refs = []
|
|
277
|
+
for ref_index in ref_indices:
|
|
278
|
+
if ref_index not in web_search_results:
|
|
279
|
+
continue
|
|
280
|
+
payload = {"index": ref_index, **web_search_results[ref_index]}
|
|
281
|
+
if favicon := sp.temorary_cache.get("_ws_favicon", {}).get(payload["url"]):
|
|
282
|
+
payload["favicon"] = favicon
|
|
283
|
+
used_refs.append(payload)
|
|
284
|
+
|
|
285
|
+
return {"used": used_refs} if used_refs else {}
|
|
286
|
+
|
|
228
287
|
async def _save_bot_message(
|
|
229
288
|
self,
|
|
230
289
|
webchat_conv_id: str,
|
|
@@ -232,6 +291,7 @@ class ChatRoute(Route):
|
|
|
232
291
|
media_parts: list,
|
|
233
292
|
reasoning: str,
|
|
234
293
|
agent_stats: dict,
|
|
294
|
+
refs: dict,
|
|
235
295
|
):
|
|
236
296
|
"""保存 bot 消息到历史记录,返回保存的记录"""
|
|
237
297
|
bot_message_parts = []
|
|
@@ -244,6 +304,8 @@ class ChatRoute(Route):
|
|
|
244
304
|
new_his["reasoning"] = reasoning
|
|
245
305
|
if agent_stats:
|
|
246
306
|
new_his["agent_stats"] = agent_stats
|
|
307
|
+
if refs:
|
|
308
|
+
new_his["refs"] = refs
|
|
247
309
|
|
|
248
310
|
record = await self.platform_history_mgr.insert(
|
|
249
311
|
platform_id="webchat",
|
|
@@ -305,6 +367,7 @@ class ChatRoute(Route):
|
|
|
305
367
|
accumulated_reasoning = ""
|
|
306
368
|
tool_calls = {}
|
|
307
369
|
agent_stats = {}
|
|
370
|
+
refs = {}
|
|
308
371
|
try:
|
|
309
372
|
async with track_conversation(self.running_convs, webchat_conv_id):
|
|
310
373
|
while True:
|
|
@@ -426,12 +489,26 @@ class ChatRoute(Route):
|
|
|
426
489
|
or chain_type == "tool_call_result"
|
|
427
490
|
):
|
|
428
491
|
continue
|
|
492
|
+
|
|
493
|
+
# 提取 web_search_tavily 引用
|
|
494
|
+
try:
|
|
495
|
+
refs = self._extract_web_search_refs(
|
|
496
|
+
accumulated_text,
|
|
497
|
+
accumulated_parts,
|
|
498
|
+
)
|
|
499
|
+
except Exception as e:
|
|
500
|
+
logger.exception(
|
|
501
|
+
f"Failed to extract web search refs: {e}",
|
|
502
|
+
exc_info=True,
|
|
503
|
+
)
|
|
504
|
+
|
|
429
505
|
saved_record = await self._save_bot_message(
|
|
430
506
|
webchat_conv_id,
|
|
431
507
|
accumulated_text,
|
|
432
508
|
accumulated_parts,
|
|
433
509
|
accumulated_reasoning,
|
|
434
510
|
agent_stats,
|
|
511
|
+
refs,
|
|
435
512
|
)
|
|
436
513
|
# 发送保存的消息信息给前端
|
|
437
514
|
if saved_record and not client_disconnected:
|
|
@@ -451,6 +528,7 @@ class ChatRoute(Route):
|
|
|
451
528
|
accumulated_reasoning = ""
|
|
452
529
|
# tool_calls = {}
|
|
453
530
|
agent_stats = {}
|
|
531
|
+
refs = {}
|
|
454
532
|
except BaseException as e:
|
|
455
533
|
logger.exception(f"WebChat stream unexpected error: {e}", exc_info=True)
|
|
456
534
|
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
@openImagePreview="openImagePreview"
|
|
56
56
|
@replyMessage="handleReplyMessage"
|
|
57
57
|
@replyWithText="handleReplyWithText"
|
|
58
|
+
@openRefs="handleOpenRefs"
|
|
58
59
|
ref="messageList" />
|
|
59
60
|
<div class="message-list-fade" :class="{ 'fade-dark': isDark }"></div>
|
|
60
61
|
</div>
|
|
@@ -146,6 +147,8 @@
|
|
|
146
147
|
/>
|
|
147
148
|
</div>
|
|
148
149
|
|
|
150
|
+
<!-- Refs Sidebar -->
|
|
151
|
+
<RefsSidebar v-model="refsSidebarOpen" :refs="refsSidebarRefs" />
|
|
149
152
|
</div>
|
|
150
153
|
</v-card-text>
|
|
151
154
|
</v-card>
|
|
@@ -198,6 +201,7 @@ import ChatInput from '@/components/chat/ChatInput.vue';
|
|
|
198
201
|
import ProjectDialog from '@/components/chat/ProjectDialog.vue';
|
|
199
202
|
import ProjectView from '@/components/chat/ProjectView.vue';
|
|
200
203
|
import WelcomeView from '@/components/chat/WelcomeView.vue';
|
|
204
|
+
import RefsSidebar from '@/components/chat/message_list_comps/RefsSidebar.vue';
|
|
201
205
|
import type { ProjectFormData } from '@/components/chat/ProjectDialog.vue';
|
|
202
206
|
import { useSessions } from '@/composables/useSessions';
|
|
203
207
|
import { useMessages } from '@/composables/useMessages';
|
|
@@ -406,6 +410,21 @@ function handleReplyWithText(replyData: any) {
|
|
|
406
410
|
};
|
|
407
411
|
}
|
|
408
412
|
|
|
413
|
+
// Refs Sidebar 状态
|
|
414
|
+
const refsSidebarOpen = ref(false);
|
|
415
|
+
const refsSidebarRefs = ref<any>(null);
|
|
416
|
+
|
|
417
|
+
function handleOpenRefs(refs: any) {
|
|
418
|
+
// 如果sidebar已打开且点击的是同一个refs,则关闭
|
|
419
|
+
if (refsSidebarOpen.value && refsSidebarRefs.value === refs) {
|
|
420
|
+
refsSidebarOpen.value = false;
|
|
421
|
+
} else {
|
|
422
|
+
// 否则打开sidebar并更新refs
|
|
423
|
+
refsSidebarRefs.value = refs;
|
|
424
|
+
refsSidebarOpen.value = true;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
|
|
409
428
|
async function handleSelectConversation(sessionIds: string[]) {
|
|
410
429
|
if (!sessionIds[0]) return;
|
|
411
430
|
|