/** * Language-server catalog. Binaries are resolved from the project's * node_modules/.bin (walking up for monorepo hoisting), ggcoder's OWN install * (typescript-language-server + typescript ship as ggcoder dependencies, so * TS/JS diagnostics work for every user out of the box), and the user's PATH — * never auto-installed at runtime, never fetched over the network. A server * that can't be resolved silently degrades to "no diagnostics". * * Extension lists stay consistent with `core/language-detector.ts` MARKERS. */ export interface ResolvedCommand { command: string; args: string[]; /** Server-specific LSP initializationOptions (e.g. explicit tsserver path). */ initializationOptions?: unknown; } export interface LspServerSpec { id: string; /** File extensions (lowercase, with dot) this server covers. */ extensions: readonly string[]; /** Marker files that identify a project root, nearest-first walking up. */ rootMarkers: readonly string[]; /** LSP languageId for a given extension. */ languageIdFor(extension: string): string; /** Resolve the server binary for a project root, or null when unavailable. */ resolveCommand(projectRoot: string): ResolvedCommand | null; } /** * Find `name`, in priority order: * 1. /node_modules/.bin walking up (project's own version wins) * 2. ggcoder's own node_modules/.bin walking up (bundled fallback — this is * how typescript-language-server works for users who never installed it) * 3. PATH */ export declare function findExecutable(name: string, projectRoot: string): string | null; export declare const LSP_SERVER_CATALOG: readonly LspServerSpec[]; /** Server spec for a file path, or null when no server covers its extension. */ export declare function serverForFile(filePath: string, catalog?: readonly LspServerSpec[]): LspServerSpec | null; /** * Nearest directory containing one of `markers`, walking up from the file's * directory. The walk is capped at `ceiling` when the file lives under it. * Falls back to the file's own directory when no marker is found. */ export declare function findProjectRoot(filePath: string, markers: readonly string[], ceiling: string): string; //# sourceMappingURL=servers.d.ts.map