/** * Language detection and language-server discovery. Capability-driven: never * assumes a server is installed. Candidate precedence is deterministic and * documented; the first executable found on PATH wins. */ export interface ServerCandidate { /** Pragmatic server command (as installed on PATH). */ executable: string; args?: string[]; } export interface LanguageServerSpec { languageId: string; candidates: ServerCandidate[]; extensions: string[]; } /** * Default language-server candidates with documented precedence. Order within * `candidates` is the precedence order. These are conventions, not * installations — discovery reports which are actually available. */ export declare const DEFAULT_LANGUAGE_SERVERS: LanguageServerSpec[]; export interface LanguageDetectionResult { languageId: string | null; matchedExtension: string | null; } export declare function detectLanguage(filePath: string, specs?: LanguageServerSpec[]): LanguageDetectionResult; export interface ServerResolution { languageId: string; executable: string | null; resolvedPath: string | null; args: string[]; reason?: string; } /** * Deterministically resolve the best available server candidate for a * language. Returns `executable: null` when none is installed. */ export declare function resolveServer(languageId: string, specs?: LanguageServerSpec[]): Promise; export interface LanguageServerStatusRow { languageId: string; candidate: string; available: boolean; resolvedPath: string | null; reason?: string; } /** Report availability for all configured languages (diagnostics). */ export declare function reportAllServers(specs?: LanguageServerSpec[]): Promise; export declare function commandExists(command: string): Promise; export declare function isWindowsPathExecutable(): boolean; //# sourceMappingURL=discovery.d.ts.map