Files
oai-web/server/tools/mock.py
2026-04-08 12:43:24 +02:00

62 lines
1.8 KiB
Python

"""
tools/mock.py — Mock tools for testing the agent loop without real integrations.
EchoTool — returns its input unchanged, no side effects
ConfirmTool — always requires confirmation; logs that confirmation was received
"""
from __future__ import annotations
from .base import BaseTool, ToolResult
class EchoTool(BaseTool):
name = "echo"
description = (
"Returns whatever text you pass in. Useful for testing. "
"Use this when you need to verify tool calling works."
)
input_schema = {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The text to echo back",
}
},
"required": ["message"],
}
requires_confirmation = False
allowed_in_scheduled_tasks = True
async def execute(self, message: str = "", **kwargs) -> ToolResult:
return ToolResult(success=True, data={"echo": message})
class ConfirmTool(BaseTool):
name = "confirm_action"
description = (
"A test tool that always requires user confirmation before proceeding. "
"Use to verify the confirmation flow works end-to-end."
)
input_schema = {
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Description of the action requiring confirmation",
}
},
"required": ["action"],
}
requires_confirmation = True
allowed_in_scheduled_tasks = False
async def execute(self, action: str = "", **kwargs) -> ToolResult:
return ToolResult(
success=True,
data={"confirmed": True, "action": action},
)
def confirmation_description(self, action: str = "", **kwargs) -> str:
return f"Perform action: {action}"