"""FinishTool — signals agent loop termination.""" from typing import Any, ClassVar from pydantic import BaseModel, Field from app.models.config import AppConfig from app.models.tool_call import ToolResult, ToolResultStatus from app.tools.base import BaseTool class FinishParams(BaseModel): """Parameters for the finish tool.""" message: str = Field(default="Task complete.", description="Final message to the user") class FinishTool(BaseTool): """Signal that the agent has completed its task.""" name: ClassVar[str] = "finish" description: ClassVar[str] = ( "Call this tool when you have completed the user's task. " "Provide a brief summary message." ) params_model: ClassVar[type[BaseModel]] = FinishParams def execute(self, *, tool_call_id: str, **kwargs: Any) -> ToolResult: message = kwargs.get("message", "Task complete.") return ToolResult( tool_call_id=tool_call_id, tool_name=self.name, status=ToolResultStatus.SUCCESS, output=message, )