feat(system):优化后端
1.新增后端测试 2.增加了后端的加密 3.增加了i18n(国际化)
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
"""``GlobalToolManager`` 在真实仓库目录上的扫描结果。
|
||||
|
||||
期望(基于现有 plugin 目录):
|
||||
- approval / file_reader:is_system=True,进 system toolset
|
||||
- tavily_search:is_system=False,category=search,进 third_party
|
||||
"""
|
||||
|
||||
import pytest
|
||||
|
||||
from kilostar.core.global_state_machine.tool_manager import GlobalToolManager
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def manager() -> GlobalToolManager:
|
||||
return GlobalToolManager()
|
||||
|
||||
|
||||
def test_metadata_contains_known_plugins(manager: GlobalToolManager):
|
||||
names = set(manager.tool_metadata.keys())
|
||||
assert {"approval", "file_reader", "tavily_search"} <= names
|
||||
|
||||
|
||||
def test_system_and_third_party_classification(manager: GlobalToolManager):
|
||||
sys_tools = {m["name"] for m in manager.get_system_tools()}
|
||||
tp_tools = {m["name"] for m in manager.get_third_party_tools()}
|
||||
assert {"approval", "file_reader"} <= sys_tools
|
||||
assert "tavily_search" in tp_tools
|
||||
assert sys_tools.isdisjoint(tp_tools)
|
||||
|
||||
|
||||
def test_get_tools_by_category_returns_correct_buckets(manager: GlobalToolManager):
|
||||
by_system = {m["name"] for m in manager.get_tools_by_category("system")}
|
||||
by_search = {m["name"] for m in manager.get_tools_by_category("search")}
|
||||
assert {"approval", "file_reader"} <= by_system
|
||||
assert "tavily_search" in by_search
|
||||
|
||||
|
||||
def test_is_third_party_tool(manager: GlobalToolManager):
|
||||
assert manager.is_third_party_tool("tavily_search") is True
|
||||
assert manager.is_third_party_tool("approval") is False
|
||||
assert manager.is_third_party_tool("nonexistent") is False
|
||||
|
||||
|
||||
def test_get_toolsets_for_scope_returns_function_toolsets(manager: GlobalToolManager):
|
||||
from pydantic_ai.toolsets import FunctionToolset
|
||||
|
||||
sets = manager.get_toolsets_for_scope("control_node")
|
||||
assert sets, "control_node 应该至少有 system toolset"
|
||||
for ts in sets:
|
||||
assert isinstance(ts, FunctionToolset)
|
||||
|
||||
|
||||
def test_system_toolsets_have_correct_ids(manager: GlobalToolManager):
|
||||
sets = manager.get_toolsets_for_scope("consciousness_node")
|
||||
ids = {getattr(ts, "id", None) for ts in sets}
|
||||
for tid in ids:
|
||||
assert tid.startswith("system::") or tid.startswith("custom::")
|
||||
|
||||
|
||||
def test_no_mcp_category_in_metadata_for_local_plugins(manager: GlobalToolManager):
|
||||
for m in manager.tool_metadata.values():
|
||||
if m["category"] == "mcp":
|
||||
assert m["name"] not in manager._third_party_funcs
|
||||
for scope_funcs in manager._tool_funcs.values():
|
||||
assert m["name"] not in scope_funcs
|
||||
|
||||
|
||||
def test_unknown_scope_returns_only_default_and_custom(manager: GlobalToolManager):
|
||||
sets = manager.get_toolsets_for_scope("not_a_real_scope")
|
||||
for ts in sets:
|
||||
tid = getattr(ts, "id", "")
|
||||
assert tid.endswith("::default") or tid.startswith("custom::")
|
||||
|
||||
|
||||
def test_rebuild_custom_toolsets(manager: GlobalToolManager):
|
||||
custom_defs = {
|
||||
"grp1": {"tools": ["tavily_search"], "name": "search-group"},
|
||||
}
|
||||
manager.rebuild_custom_toolsets(custom_defs)
|
||||
assert "grp1" in manager._custom_toolsets
|
||||
sets = manager.get_toolsets_for_scope("default")
|
||||
custom_ids = [getattr(ts, "id", "") for ts in sets if "custom::" in getattr(ts, "id", "")]
|
||||
assert any("grp1" in cid for cid in custom_ids)
|
||||
manager.rebuild_custom_toolsets({})
|
||||
assert manager._custom_toolsets == {}
|
||||
|
||||
|
||||
def test_get_personal_tools_compat(manager: GlobalToolManager):
|
||||
assert manager.get_personal_tools() == manager.get_third_party_tools()
|
||||
|
||||
|
||||
def test_get_non_system_tools_compat(manager: GlobalToolManager):
|
||||
assert manager.get_non_system_tools() == manager.get_third_party_tools()
|
||||
Reference in New Issue
Block a user