import { z } from "zod" export type ToolContext = { sessionID: string messageID: string agent: string abort: AbortSignal metadata(input: { title?: string; metadata?: { [key: string]: any } }): void ask(input: AskInput): Promise } type AskInput = { permission: string patterns: string[] always: string[] metadata: { [key: string]: any } } export function tool(input: { description: string args: Args execute(args: z.infer>, context: ToolContext): Promise }) { return input } tool.schema = z export type ToolDefinition = ReturnType