export interface AgentToolResult { content: Array<{ type: string; [key: string]: unknown; }>; details?: T; terminate?: boolean; } export type AgentToolUpdateCallback = (partialResult: AgentToolResult) => void; export interface ExtensionContext { [key: string]: unknown; } export interface ExtensionCommandContext { ui: { notify(message: string, level?: string): void; }; [key: string]: unknown; } export interface ToolDefinition { name: string; label: string; description: string; promptSnippet?: string; promptGuidelines?: string[]; parameters: TParams; renderShell?: "default" | "self"; prepareArguments?: (args: unknown) => unknown; executionMode?: "sequential" | "parallel"; execute(toolCallId: string, params: any, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback | undefined, ctx: ExtensionContext): Promise>; } export interface ExtensionAPI { on(event: string, handler: (...args: any[]) => any): void; registerTool(tool: ToolDefinition): void; registerCommand(name: string, options: { description?: string; handler: (...args: any[]) => any; }): void; onShutdown?(handler: () => Promise | void): void; }