Skip to main content

pty-architecture

PTY-based multi-session architecture for Code Quest. Covers three-layer design, node-pty spawn config, and worktree isolation. Use when implementing or modifying session management, PTY spawning, or terminal integration.

Jump to install

Source facts

Repository
recca0120/code-quest
Last source activity
March 28, 2026 at 13:24
Detected SKILL.md language
English
Stars
11
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
pty-architecture
description
PTY-based multi-session architecture for Code Quest. Covers three-layer design, node-pty spawn config, and worktree isolation. Use when implementing or modifying session management, PTY spawning, or terminal integration.
# PTY Architecture ## Three-Layer Design ``` React UI (xterm.js) ←→ Socket.IO ←→ Battle Server (node-pty) ←→ Claude CLI ``` - **UI Layer**: xterm.js renders terminal output, Socket.IO for real-time events - **Server Layer**: BattleBridge manages PTY sessions, OutputParser converts stream-json to events - **CLI Layer**: Each session = independent PTY process running Claude CLI ## Key Design Decisions ### Why node-pty over child_process.spawn? | Feature | node-pty | child_process | |---------|----------|---------------| | ANSI colors | Full support | Claude disables colors | | Terminal resize | `pty.resize()` | Not supported | | Session isolation | Simple per-process | Complex | ### PTY Spawn Config ```typescript spawn(command, args, { name: 'xterm-256color', cols: 120, rows: 30, cwd: workingDir, env: { ...process.env, TERM: 'xterm-256color', FORCE_COLOR: '1', COLORTERM: 'truecolor' } }); ``` ### Circular Buffer (10KB) Output buffer capped at 10KB, sliced to last 5KB on overflow. Prevents memory leaks in long sessions while keeping recent output for late-joining viewers. ### Graceful Shutdown SIGTERM → wait 5s → SIGKILL. Allows CLI to save state before forced termination. ### Worktree Isolation Worktree battles use isolated `cwd` paths (e.g., `/worktrees/feature-branch`), preventing concurrent sessions from conflicting on the same working directory. ## Troubleshooting - **`posix_spawnp failed`**: `chmod +x node_modules/node-pty/build/Release/spawn-helper` - **No ANSI colors**: Ensure `TERM=xterm-256color` and `FORCE_COLOR=1` in env - **Zombie process**: Use SIGTERM→SIGKILL pattern with 5s timeout
View on GitHub