import type { WorkspaceBoundary } from "../safety/boundary.js"; import { type LspClient } from "./client.js"; import { LspServerManager } from "./manager.js"; /** * Shared runtime context for the LSP tools. Owns the server manager and * enforces workspace-boundary enforcement on every path input. Lives for the * duration of an agent session; `dispose()` shuts down all servers (no leaks). */ export interface LspRuntimeOptions { workspaceRoot: string; boundary: WorkspaceBoundary; startupTimeoutMs?: number; initializeTimeoutMs?: number; requestTimeoutMs?: number; } export declare class LspRuntime { readonly workspaceRoot: string; readonly boundary: WorkspaceBoundary; readonly manager: LspServerManager; constructor(opts: LspRuntimeOptions); /** Resolve a workspace-relative path through the boundary. Throws on escape. */ resolveFilePath(file: string, langIdOverride?: string | null): Promise<{ absPath: string; relPath: string; languageId: string; uri: string; }>; /** * Get a managed server for a language and sync the given document. Returns * `{ client, server }` or `{ unavailableReason }`. */ serverForFile(file: string, languageIdOverride?: string | null): Promise<{ client?: LspClient; serverId?: string; absPath?: string; uri?: string; languageId?: string; unavailableReason?: string; }>; shutdown(): Promise; } //# sourceMappingURL=runtime.d.ts.map