| from dataclasses import dataclass |
| from typing import Any, Callable |
|
|
|
|
| ToolContext = dict[str, Any] |
| ToolArgs = dict[str, Any] |
| ToolRunner = Callable[[ToolArgs, ToolContext], dict[str, Any]] |
|
|
|
|
| @dataclass(frozen=True) |
| class ToolSpec: |
| name: str |
| description: str |
| input_schema: dict[str, Any] |
| run: ToolRunner |
| enabled: bool = True |
| cost_level: str = "low" |
|
|
| def prompt_block(self) -> str: |
| enabled_text = "enabled" if self.enabled else "disabled" |
| return ( |
| f"- {self.name} ({enabled_text}, cost={self.cost_level})\n" |
| f" description: {self.description}\n" |
| f" args_schema: {self.input_schema}" |
| ) |
|
|