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.

Ir para a instalação

Informações da origem

Repositório
recca0120/code-quest
Última atividade na origem
28 de março de 2026 às 13:24
Idioma detectado do SKILL.md
inglês
Estrelas
11
Forks
2

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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
Ver no GitHub