darkfire514's picture
Upload 160 files
399b80c verified
from ..tool.local_tool import LocalTool
from ..types import BackendType, ToolResult, ToolStatus
from ..grounding_client import GroundingClient
class _BaseSystemTool(LocalTool):
backend_type = BackendType.SYSTEM
def __init__(self, client: GroundingClient):
super().__init__(verbose=False, handle_errors=True)
self._client = client
@property
def client(self) -> GroundingClient:
return self._client
class ListProvidersTool(_BaseSystemTool):
_name = "list_providers"
_description = "List all registered backend providers"
async def _arun(self) -> ToolResult:
prov = list(self.client.list_providers().keys())
return ToolResult(
status=ToolStatus.SUCCESS,
content=", ".join(prov),
)
class ListBackendToolsTool(_BaseSystemTool):
_name = "list_backend_tools"
_description = "List static tools for a backend"
async def _arun(self, backend: str) -> ToolResult:
try:
be = BackendType(backend.lower())
except ValueError:
return ToolResult(ToolStatus.ERROR, error=f"Unknown backend '{backend}'")
tools = await self.client.list_backend_tools(be)
names = [t.schema.name for t in tools]
return ToolResult(
status=ToolStatus.SUCCESS,
content=", ".join(names),
)
class ListSessionToolsTool(_BaseSystemTool):
_name = "list_session_tools"
_description = "List tools (incl. dynamic) for a session"
async def _arun(self, session_id: str) -> ToolResult:
tools = await self.client.list_session_tools(session_id)
names = [t.schema.name for t in tools]
return ToolResult(
status=ToolStatus.SUCCESS,
content=", ".join(names),
)
class ListAllBackendToolsTool(_BaseSystemTool):
_name = "list_all_backend_tools"
_description = "List static tools for every registered backend"
async def _arun(self, use_cache: bool = False) -> ToolResult:
all_tools = await self.client.list_all_backend_tools(use_cache=use_cache)
lines = [
f"{backend.value}: {', '.join(t.schema.name for t in tools)}"
for backend, tools in all_tools.items()
]
return ToolResult(
status=ToolStatus.SUCCESS,
content="\n".join(lines),
)
SYSTEM_TOOLS: list[type[_BaseSystemTool]] = [
ListProvidersTool,
ListBackendToolsTool,
ListSessionToolsTool,
ListAllBackendToolsTool,
]