import { z } from "zod"; export type ToolContext = { sessionID: string; callID?: string; signal?: AbortSignal }; // Keep business schemas and executors independent from OpenCode's plugin API. export function tool(definition: { description: string; args: Args; execute(args: z.infer>, context: ToolContext): Promise; }) { return definition; } tool.schema = z;