- • xterm.js renders VT100/ANSI output
- • FitAddon resizes canvas to container
- • Keystrokes sent via POST /api/terminal-input
- • Output arrives via SSE /api/terminal-stream
- • Session registry as in-memory Map
- • Spawns pty-helper.py via child_process
- • EventEmitter relays stdout to SSE listeners
- • Idle reap timer (5 min default) cleans up
- • Uses os.openpty() for real TTY master/slave
- • Avoids node-pty native addon requirement
- • Handles TIOCSWINSZ for terminal resize
- • Copied to dist/ at build time