import type { ToolDefinition } from "@opencode-ai/plugin"; export type ToolBuilderInput< TArgs extends ToolDefinition["args"] = ToolDefinition["args"], TExecuteArgs = Record, > = { description: string; args: TArgs; execute: ( args: TExecuteArgs, context: Parameters[1], ) => Promise; }; export function buildTool< TArgs extends ToolDefinition["args"] = ToolDefinition["args"], TExecuteArgs = Record, >(input: ToolBuilderInput): ToolDefinition { return { description: input.description, args: input.args, execute: (args, context) => input.execute(args as TExecuteArgs, context), }; }