Merge remote-tracking branch 'origin/v3' into v3

# Conflicts:
#	app/api/endpoints/agent.py
#	app/api/endpoints/anthropic.py
#	app/api/endpoints/openai.py
#	app/chain/__init__.py
#	app/chain/message.py
#	app/chain/site.py
#	app/chain/subscribe.py
#	app/chain/transfer.py
#	app/modules/discord/__init__.py
#	app/modules/qqbot/__init__.py
#	app/modules/slack/__init__.py
#	app/modules/telegram/__init__.py
#	app/modules/wechat/__init__.py
#	app/runtime/extensions/module_manager.py
#	app/runtime/extensions/service_registry.py
#	tests/test_agent_interaction.py
#	tests/test_slash_command_interactions.py
#	tests/test_web_agent_stream.py
This commit is contained in:
jxxghp
2026-08-16 19:44:43 +08:00
232 changed files with 21375 additions and 6683 deletions
+18 -6
View File
@@ -5,6 +5,8 @@ import json
from types import SimpleNamespace
from unittest.mock import AsyncMock, patch
from app.agent.tools.catalog import ToolCatalogSnapshot
from app.agent.tools.factory import MoviePilotToolFactory
from app.agent.tools.impl.edit_file import EditFileTool
from app.agent.tools.impl.list_directory import ListDirectoryTool
from app.agent.tools.impl.query_downloaders import QueryDownloadersTool
@@ -28,10 +30,16 @@ def test_non_admin_manager_exposes_resource_flow_helper_tools():
"""普通用户应能看到搜索、订阅、下载流程所需的辅助工具。"""
site_tool = QuerySitesTool(session_id="session-1", user_id="10001")
downloader_tool = QueryDownloadersTool(session_id="session-1", user_id="10001")
catalog = ToolCatalogSnapshot.from_tools(
[site_tool, downloader_tool],
plugin_revision=0,
factory_revision="test",
)
with patch(
"app.agent.tools.manager.MoviePilotToolFactory.create_tools",
return_value=[site_tool, downloader_tool],
with patch.object(
MoviePilotToolFactory,
"create_catalog",
return_value=catalog,
):
manager = MoviePilotToolsManager(is_admin=False)
@@ -48,10 +56,14 @@ def test_non_admin_manager_exposes_restricted_file_tools():
EditFileTool(session_id="session-1", user_id="10001"),
ListDirectoryTool(session_id="session-1", user_id="10001"),
]
catalog = ToolCatalogSnapshot.from_tools(
tools, plugin_revision=0, factory_revision="test"
)
with patch(
"app.agent.tools.manager.MoviePilotToolFactory.create_tools",
return_value=tools,
with patch.object(
MoviePilotToolFactory,
"create_catalog",
return_value=catalog,
):
manager = MoviePilotToolsManager(is_admin=False)