export interface ToolInputSchema { type: 'object'; properties: Record; required?: string[]; } export interface Tool { name: string; description: string; inputSchema: ToolInputSchema; /** Secret scopes required to execute this tool (optional). */ requiredSecretScopes?: string[]; execute(args: unknown, context?: ToolExecutionContext): Promise; } export interface ToolExecutionContext { signal?: AbortSignal; } export interface ToolCall { id: string; name: string; args: unknown; } export interface ToolResult { success: boolean; output: string; error?: string; } // Content block for assistant messages containing tool calls export interface ToolUseBlock { type: 'tool_use'; id: string; name: string; input: unknown; } // Content block for user messages returning tool results export interface ToolResultBlock { type: 'tool_result'; tool_use_id: string; content: string; is_error?: boolean; } // Message from assistant requesting tool use export interface ToolUseMessage { role: 'assistant'; content: ToolUseBlock[]; } // Message from user returning tool results export interface ToolResultMessage { role: 'user'; content: ToolResultBlock[]; }