Spaces:
Running
Running
| """agent/tools/base.py — the AgentTool contract. | |
| A tool is a name + description + JSON-Schema parameter spec + an async | |
| ``execute`` callable. Tools are registered with :class:`AgentLoop` and exposed | |
| to the model in the Ollama tool-calling format. | |
| See specs/ARCHITECTURE.md §2 Agent Tools. | |
| """ | |
| from __future__ import annotations | |
| from dataclasses import dataclass | |
| from typing import Awaitable, Callable | |
| class AgentTool: | |
| name: str | |
| description: str | |
| parameters: dict # JSON Schema object | |
| execute: Callable[[dict], Awaitable[dict]] # async (args) -> result dict | |
| def to_ollama_schema(self) -> dict: | |
| """Render this tool in the Ollama / OpenAI function-calling shape.""" | |
| return { | |
| "type": "function", | |
| "function": { | |
| "name": self.name, | |
| "description": self.description, | |
| "parameters": self.parameters, | |
| }, | |
| } | |
| __all__ = ["AgentTool"] | |