// SuPi-specific server configuration types — not part of the LSP specification. // These are our own types for server discovery, configuration, and status tracking. export interface ServerConfig { command: string; args?: string[]; fileTypes: string[]; /** Files that identify the project root. An empty list uses the session root. */ rootMarkers: string[]; enabled?: boolean; /** Environment values added when the server process starts. */ env?: Record; initializationOptions?: unknown; /** Maximum time to wait for a single $/progress cycle, in ms. Default: 10_000. */ readinessTimeoutMs?: number; } /** LSP configuration keyed by language name (e.g. `typescript`, `python`). */ export interface LspConfig { servers: Record; } export interface DetectedProjectServer { name: string; root: string; fileTypes: string[]; } export interface ProjectServerInfo extends DetectedProjectServer { status: "running" | "error" | "unavailable"; supportedActions: string[]; openFiles: string[]; /** Whether the LSP server is currently not indexing and ready to serve queries. */ ready: boolean; } /** A language whose source files are present but the server binary is missing. */ export interface MissingServer { /** Language name (e.g. "python", "rust"). */ name: string; /** Server command that was not found on PATH. */ command: string; /** File extensions found in the project (subset of server.fileTypes). */ foundExtensions: string[]; }