export interface McpcTheme { fg(color: string, text: string): string; bold(text: string): string; } export interface McpcKeybindings { matches(data: string, keybinding: "tui.select.up" | "tui.select.down" | "tui.select.cancel"): boolean; } export interface McpcTui { requestRender(): void; } export interface McpcUi { notify(message: string, level?: "info" | "warning" | "error"): void; custom( factory: ( tui: McpcTui, theme: McpcTheme, keybindings: McpcKeybindings, done: (result: T) => void, ) => { render(width: number): string[]; handleInput?(data: string): void; invalidate(): void; dispose?(): void; }, options?: { overlay?: boolean; overlayOptions?: { anchor?: string; width?: number | string; minWidth?: number; maxHeight?: number | string }; }, ): Promise; } export interface McpcContext { cwd: string; mode: "tui" | "rpc" | "json" | "print"; hasUI: boolean; ui: McpcUi; } export interface McpcCommandContext extends McpcContext { reload(): Promise; } export interface McpcCommandOptions { description: string; getArgumentCompletions?: (prefix: string) => Array<{ value: string; label: string }> | null; handler(args: string, ctx: McpcCommandContext): Promise | void; } export interface McpcExtensionApi { registerCommand(name: string, options: McpcCommandOptions): void; on(event: "session_start", handler: (event: unknown, ctx: McpcContext) => Promise | void): void; }