feat(agent): add tool registry domain validation

This commit is contained in:
qzl
2026-03-03 15:30:53 +08:00
parent 17e6de177c
commit e03923e593
2 changed files with 39 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
from __future__ import annotations
from typing import Any
def validate_tool_spec(spec: dict[str, Any]) -> None:
name = spec["name"]
target = spec["execution_target"]
if name.startswith("ui.") and target != "frontend":
raise ValueError("ui.* must use frontend target")
if name.startswith("srv.") and target != "backend":
raise ValueError("srv.* must use backend target")
@@ -0,0 +1,27 @@
import pytest
from v1.agent.tool_registry import validate_tool_spec
class TestValidateToolSpec:
def test_ui_namespace_must_be_frontend(self):
with pytest.raises(ValueError, match="ui.* must use frontend target"):
validate_tool_spec(
{"name": "ui.navigate_to", "execution_target": "backend"}
)
def test_srv_namespace_must_be_backend(self):
with pytest.raises(ValueError, match="srv.* must use backend target"):
validate_tool_spec(
{"name": "srv.search_docs", "execution_target": "frontend"}
)
def test_ui_namespace_with_frontend_is_valid(self):
validate_tool_spec({"name": "ui.navigate_to", "execution_target": "frontend"})
def test_srv_namespace_with_backend_is_valid(self):
validate_tool_spec({"name": "srv.search_docs", "execution_target": "backend"})
def test_other_namespace_is_valid(self):
validate_tool_spec({"name": "other.tool", "execution_target": "frontend"})
validate_tool_spec({"name": "other.tool", "execution_target": "backend"})