19 lines
366 B
Python
19 lines
366 B
Python
from typing import Any, Protocol
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ToolResult(BaseModel):
|
|
ok: bool
|
|
output: str | None = None
|
|
error: str | None = None
|
|
metadata: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
|
|
class Tool(Protocol):
|
|
name: str
|
|
risk_level: str
|
|
|
|
async def run(self, args: dict[str, Any]) -> ToolResult:
|
|
...
|