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_rejected(self): with pytest.raises(ValueError, match="must be in ui.* or srv.* namespace"): validate_tool_spec({"name": "other.tool", "execution_target": "frontend"})