import { WebSocketServer } from 'ws'; import { TabRegistry } from './tab-registry.js'; interface Message { type: string; [key: string]: any; } interface ResponseMessage extends Message { id: string; type: 'response'; success: boolean; result?: any; error?: { message: string; code: string; }; } export declare class BrowserWebSocketManager { private wss; private tabRegistry; private responseHandler?; private consoleLogHandler?; private mcpClientInfo; constructor(wss: WebSocketServer, tabRegistry: TabRegistry); setResponseHandler(handler: (response: ResponseMessage) => void): void; setConsoleLogHandler(handler: (tabId: string, logEntry: any) => void): void; setMcpClientInfo(info: { name?: string; version?: string; }): void; private setupWebSocketServer; /** * Central message router for all WebSocket messages from Chrome extensions * Handles different message types: * - 'register': New tab registration or reconnection * - 'response': Command execution results from the browser * - 'tab-info': Tab metadata updates (URL, title, dimensions, etc.) * - 'console': Browser console log entries * - 'console-clear': Console clear events * - Unknown types: Sends error response back to extension */ private routeBrowserMessage; /** * Handles tab registration when a Chrome extension connects * This function: * 1. Assigns a tab ID (either the requested one or generates a new one) * 2. Handles reconnection scenarios by terminating old connections * 3. Registers the WebSocket connection with the tab registry * 4. Sends back the assigned tab ID to the extension * 5. Triggers connect/update callbacks for notifications */ private handleTabRegistration; sendCommand(tabId: string, command: any): void; shutdown(): void; } export {}; //# sourceMappingURL=browser-websocket-manager.d.ts.map