@nanocollective/nanocoder
Version:
A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter
78 lines • 2.35 kB
TypeScript
/**
* LSP Client implementation
* Manages connections to language servers via JSON-RPC over stdio
*/
import { EventEmitter } from 'events';
import { CodeAction, CompletionItem, Diagnostic, FormattingOptions, InitializeResult, Position, ServerCapabilities, TextEdit } from './protocol.js';
export interface LSPServerConfig {
name: string;
command: string;
args?: string[];
env?: Record<string, string>;
languages: string[];
rootUri?: string;
}
export declare class LSPClient extends EventEmitter {
private config;
private process;
private buffer;
private requestId;
private pendingRequests;
private initialized;
private serverCapabilities;
private openDocuments;
constructor(config: LSPServerConfig);
/**
* Start the language server process and initialize
*/
start(): Promise<InitializeResult>;
/**
* Stop the language server
*/
stop(): Promise<void>;
/**
* Check if the server is running and initialized
*/
isReady(): boolean;
/**
* Get server capabilities
*/
getCapabilities(): ServerCapabilities | null;
/**
* Open a text document
*/
openDocument(uri: string, languageId: string, text: string): void;
/**
* Update a text document
*/
updateDocument(uri: string, text: string): void;
/**
* Close a text document
*/
closeDocument(uri: string): void;
/**
* Get completions at a position
*/
getCompletions(uri: string, position: Position): Promise<CompletionItem[]>;
/**
* Get code actions (quick fixes, refactorings)
*/
getCodeActions(uri: string, diagnostics: Diagnostic[], startLine: number, startChar: number, endLine: number, endChar: number): Promise<CodeAction[]>;
/**
* Format a document
*/
formatDocument(uri: string, options?: Partial<FormattingOptions>): Promise<TextEdit[]>;
/**
* Request diagnostics for a document (pull model)
* Note: Most LSPs use push model via publishDiagnostics notification
*/
getDiagnostics(uri: string): Promise<Diagnostic[]>;
private initialize;
private sendRequest;
private sendNotification;
private send;
private handleData;
private handleMessage;
private handleNotification;
}
//# sourceMappingURL=lsp-client.d.ts.map