ducklm/duck_core/tools/base.py

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:
...