import asyncio
from cayu import Tool, ToolContext, ToolEffect, ToolResult, ToolSpec


class LookupTool(Tool):
    spec = ToolSpec(
        name="lookup",
        description="Look up a reviewed reference record.",
        input_schema={
            "type": "object",
            "properties": {"query": {"type": "string"}},
            "required": ["query"],
            "additionalProperties": False,
        },
        effect=ToolEffect.NONE,
    )

    async def run(self, ctx: ToolContext, args: dict) -> ToolResult:
        return ToolResult(
            content=f"Found {args['query']}",
            structured={"session_id": ctx.session_id},
        )


result = asyncio.run(LookupTool().run(ToolContext(session_id="test-session"), {"query": "Cayu"}))
assert result.content == "Found Cayu"
assert result.structured == {"session_id": "test-session"}
print(result.content)
