/** * Wterm JSON Transport. * * IPtyTransport implementation that bridges the MKS JSON WebSocket terminal * protocol to wterm's raw byte WebSocket expectations. * * The MKS server speaks JSON: * Client → Server: { type: "create"|"input"|"resize"|"detach"|"kill", ... } * Server → Client: { type: "output"|"created"|"attached"|... , data: "raw bytes" } * * wterm's WebSocketTransport expects raw bytes on the wire and sends raw bytes. * This transport unwraps the JSON envelope so wterm only sees raw I/O. * * @example * ```tsx * const transport = new WtermJsonTransport('bash'); * transport.connect({ * url: 'ws://localhost:3100/terminal', * cols: 120, * rows: 40, * callbacks: { * onConnect: () => setConnected(true), * onData: (data) => terminalRef.current?.write(data), * onDisconnect: () => setConnected(false), * } * }); * * // User input → wterm → transport.sendInput(raw) → MKS server * // MKS output → transport.onData(raw) → wterm.write(raw) * * transport.resize(80, 24); * transport.disconnect(); * ``` * * @module components/devenv/terminal/wterm/WtermJsonTransport */ import type { IPtyTransport, IPtyTransportConnectOptions } from '../Terminal.types'; /** * IPtyTransport that speaks the MKS JSON WebSocket protocol. * * Translates between: * - MKS JSON messages (create, input, resize, etc.) * - wterm's expectation of raw byte I/O * * wterm sends raw input → we JSON-wrap it → MKS server * MKS server sends JSON { output } → we extract data → wterm.write(data) */ export declare class WtermJsonTransport implements IPtyTransport { private ws; private callbacks; private sessionId; private sessionName; private connected; /** Buffered resize sent before session creation. */ private pendingResize; constructor(sessionName?: string); /** * Connect to MKS terminal server and create a session. */ connect(options: IPtyTransportConnectOptions): void; /** * Send raw input to the PTY. * wterm calls this with raw bytes — we JSON-wrap them. */ sendInput(data: string): boolean; /** * Resize the PTY. * We send \x1b[RESIZE:cols;rows] escape sequence so wterm can parse it. */ resize(cols: number, rows: number): boolean; /** * Detach from session (session stays alive on server for reattach). */ disconnect(): void; /** * Kill the session on the server. */ destroy(): void; isConnected(): boolean; private send; private handleMessage; } //# sourceMappingURL=WtermJsonTransport.d.ts.map