* feat(terminal): add resumable websocket transport Unify terminal input and stream traffic on `/api/terminal/ws` with a v2 control-frame protocol and advertised transport capabilities. Buffer recent PTY output on the server so rebinding clients can replay missed chunks after reconnects or startup races, while keeping SSE as a fallback stream path. Update the web terminal client and store to negotiate the new transport, track tab lifecycle, and avoid reopening exited sessions when restoring tabs. * fix(terminal): retry rehydrated websocket reconnects * fix(terminal): keep reconnect retries silent * fix(terminal): wire ws stream output and replay in runtime * fix(web): enable ws proxy for /api in dev --------- Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
export {
|
|
TERMINAL_WS_PATH,
|
|
TERMINAL_WS_CONTROL_TAG_JSON,
|
|
TERMINAL_WS_MAX_PAYLOAD_BYTES,
|
|
isTerminalWsPathname,
|
|
parseRequestPathname,
|
|
normalizeTerminalWsMessageToBuffer,
|
|
normalizeTerminalWsMessageToText,
|
|
readTerminalWsControlFrame,
|
|
createTerminalWsControlFrame,
|
|
pruneRebindTimestamps,
|
|
isRebindRateLimited,
|
|
} from './terminal-ws-protocol.js';
|
|
|
|
export {
|
|
TERMINAL_WS_PATH as TERMINAL_INPUT_WS_PATH,
|
|
TERMINAL_WS_CONTROL_TAG_JSON as TERMINAL_INPUT_WS_CONTROL_TAG_JSON,
|
|
TERMINAL_WS_MAX_PAYLOAD_BYTES as TERMINAL_INPUT_WS_MAX_PAYLOAD_BYTES,
|
|
normalizeTerminalWsMessageToBuffer as normalizeTerminalInputWsMessageToBuffer,
|
|
normalizeTerminalWsMessageToText as normalizeTerminalInputWsMessageToText,
|
|
readTerminalWsControlFrame as readTerminalInputWsControlFrame,
|
|
createTerminalWsControlFrame as createTerminalInputWsControlFrame,
|
|
} from './terminal-ws-protocol.js';
|
|
|
|
export {
|
|
TERMINAL_OUTPUT_REPLAY_MAX_BYTES,
|
|
createTerminalOutputReplayBuffer,
|
|
appendTerminalOutputReplayChunk,
|
|
listTerminalOutputReplayChunksSince,
|
|
getLatestTerminalOutputReplayChunkId,
|
|
} from './output-replay-buffer.js';
|