/** * PTY-IPC Bridge - Wires IPC layer to PTY layer * * This bridge handles the connection between the IPC infrastructure layer * and the PTY business logic layer: * - Listens to an IPC server for connection events * - Creates IPCPTYTransport instances for new CLI connections * - Registers transports with PTYSessionManager * - Routes PTY namespace messages to transports * * NOTE: Unlike the original, this does NOT depend on Electron. * The IPC server interface is abstracted. */ import { EventEmitter } from 'events'; import { IPCPTYTransport, type IMessageBus, type IPCPTYTransportOptions } from './ipc-transport.js'; import type { PTYSessionManager, ITerminalStoreSync } from '#core'; /** * Connection ready event from the IPC server */ export interface ConnectionReadyEvent { id: string; version?: string; pid?: number; } /** * Bus message format */ export interface BusMessage { from?: string; namespace: string; type: string; payload: unknown; } /** * Abstract IPC server interface. Consumers implement this for their * IPC mechanism (Unix Domain Socket, Named Pipe, WebSocket, etc.) */ export interface IIPCServer extends EventEmitter { getMessageBus(): IMessageBus | null; /** Register a handler for a message namespace. Returns unsubscribe function. */ registerEndpoint?(namespace: string, handler: (connectionId: string, message: { namespace: string; type: string; payload: unknown; }) => void): () => void; } export interface PTYIPCBridgeEvents { transportCreated: (connectionId: string, transport: IPCPTYTransport) => void; transportRemoved: (connectionId: string, reason: string) => void; } export interface PTYIPCBridgeOptions { /** Applied to every transport this bridge creates. See IPCPTYTransportOptions. */ transport?: IPCPTYTransportOptions; } export interface IPTYIPCBridge extends EventEmitter { initialize(ipcServer: IIPCServer): void; isInitialized(): boolean; getTransportCount(): number; getTransport(connectionId: string): IPCPTYTransport | null; getTransports(): Map; setTerminalStoreSync(storeSync: ITerminalStoreSync): void; dispose(): void; on(event: K, listener: PTYIPCBridgeEvents[K]): this; emit(event: K, ...args: Parameters): boolean; } export declare class PTYIPCBridgeImpl extends EventEmitter implements IPTYIPCBridge { private ipcServer; private ipcTransports; private sessionManager; private unsubscribePty; private initialized; private terminalStoreSync; private cliTerminalMap; private connectionReadyHandler; private clientDisconnectedHandler; private options?; constructor(sessionManager: PTYSessionManager, options?: PTYIPCBridgeOptions); setTerminalStoreSync(storeSync: ITerminalStoreSync): void; initialize(ipcServer: IIPCServer): void; isInitialized(): boolean; dispose(): void; getTransportCount(): number; getTransport(connectionId: string): IPCPTYTransport | null; getTransports(): Map; private handleConnectionReady; private handleClientDisconnected; } export declare function createPTYIPCBridge(sessionManager: PTYSessionManager, options?: PTYIPCBridgeOptions): IPTYIPCBridge; //# sourceMappingURL=ipc-bridge.d.ts.map