/** * [WHO]: AutocompleteItem, SlashCommand, AutocompleteProvider, CombinedAutocompleteProvider * [FROM]: Depends on child_process, fs, os, path, ./fuzzy.js * [TO]: Consumed by core/lib/tui/src/index.ts * [HERE]: core/lib/tui/src/autocomplete.ts - */ export interface AutocompleteItem { value: string; label: string; description?: string; } export interface ArgumentCompletionContext { commandName: string; argumentText: string; argumentPrefix: string; tokenIndex: number; previousTokens: string[]; } export interface SlashCommand { name: string; description?: string; getArgumentCompletions?(argumentPrefix: string, context?: ArgumentCompletionContext): AutocompleteItem[] | null; } export interface AutocompleteProvider { getSuggestions(lines: string[], cursorLine: number, cursorCol: number): { items: AutocompleteItem[]; prefix: string; } | null; applyCompletion(lines: string[], cursorLine: number, cursorCol: number, item: AutocompleteItem, prefix: string): { lines: string[]; cursorLine: number; cursorCol: number; }; } export declare class CombinedAutocompleteProvider implements AutocompleteProvider { private commands; private basePath; private fdPath; constructor(commands?: (SlashCommand | AutocompleteItem)[], basePath?: string, fdPath?: string | null); getSuggestions(lines: string[], cursorLine: number, cursorCol: number): { items: AutocompleteItem[]; prefix: string; } | null; applyCompletion(lines: string[], cursorLine: number, cursorCol: number, item: AutocompleteItem, prefix: string): { lines: string[]; cursorLine: number; cursorCol: number; }; private extractAtPrefix; private extractPathPrefix; private expandHomePath; private resolveScopedFuzzyQuery; private scopedPathForDisplay; private getFileSuggestions; private scoreEntry; private getFuzzyFileSuggestions; getForceFileSuggestions(lines: string[], cursorLine: number, cursorCol: number): { items: AutocompleteItem[]; prefix: string; } | null; shouldTriggerFileCompletion(lines: string[], cursorLine: number, cursorCol: number): boolean; }