/** * useTerminalWebSocket Hook. * * Manages WebSocket lifecycle for interactive terminal connections. * Handles connect, disconnect, auto-reconnect with exponential backoff, * and message send/receive for terminal I/O. * * @module components/devenv/terminal/hooks/useTerminalWebSocket */ /** * Connection status for terminal WebSocket. */ export type TTerminalWsStatus = 'disconnected' | 'connecting' | 'connected' | 'error'; /** * Options for useTerminalWebSocket hook. */ export interface IUseTerminalWebSocketOptions { /** WebSocket URL (ws:// or wss://) */ wsUrl: string; /** Enable auto-reconnect on disconnect (default: true) */ autoReconnect?: boolean; /** Maximum reconnect attempts (default: 3) */ maxReconnectAttempts?: number; /** Base delay for exponential backoff in ms (default: 500) */ baseReconnectDelay?: number; /** Callback when connection opens */ onConnect?: () => void; /** Callback when connection closes */ onDisconnect?: () => void; /** Callback when output data is received */ onOutput?: (data: string) => void; /** Callback when an error message is received */ onError?: (error: string) => void; /** Callback when any server message is received */ onMessage?: (message: ITerminalWsServerMessage) => void; } /** * Return value from useTerminalWebSocket hook. */ export interface IUseTerminalWebSocketReturn { /** Current connection status */ status: TTerminalWsStatus; /** Send raw input data to server */ sendInput: (data: string) => void; /** Send resize event to server */ sendResize: (cols: number, rows: number) => void; /** Send attach to session */ sendAttach: (sessionId: string) => void; /** Send create session request */ sendCreate: (options?: { name?: string; workspaceId?: string; cwd?: string; }) => void; /** Send kill session request */ sendKill: (sessionId: string) => void; /** Send detach from current session */ sendDetach: () => void; /** Manually reconnect */ reconnect: () => void; /** Manually disconnect */ disconnect: () => void; } /** * Server → Client message types. */ export interface ITerminalWsServerMessage { type: 'welcome' | 'attached' | 'detached' | 'created' | 'output' | 'error' | 'sessions' | 'killed' | 'resized'; sessionId?: string; session?: string; data?: string; error?: string; sessions?: Array<{ id: string; name: string; isActive: boolean; }>; } /** * useTerminalWebSocket - WebSocket hook for interactive terminal connections. * * Manages the full WebSocket lifecycle including connection establishment, * reconnection with exponential backoff, and typed message send/receive. * * @param options - Hook configuration options * @returns Connection status and message send functions * * @example * ```tsx * const { status, sendInput, sendResize, sendAttach } = useTerminalWebSocket({ * wsUrl: 'ws://localhost:3100/terminal/session-1', * onOutput: (data) => terminal.write(data), * onConnect: () => console.log('Connected'), * }); * * // Send user input * terminal.onData((data) => sendInput(data)); * * // Send resize * terminal.onResize(({ cols, rows }) => sendResize(cols, rows)); * ``` */ export declare function useTerminalWebSocket(options: IUseTerminalWebSocketOptions): IUseTerminalWebSocketReturn; //# sourceMappingURL=useTerminalWebSocket.d.ts.map