Skip to content

feat: capture interactive agent TUI sessions#44

Merged
konard merged 8 commits into
mainfrom
issue-841-722d23014d4b
Jul 24, 2026
Merged

feat: capture interactive agent TUI sessions#44
konard merged 8 commits into
mainfrom
issue-841-722d23014d4b

Conversation

@konard

@konard konard commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add shell-free interactive launch builders for Claude, Codex, OpenCode, Agent, Gemini, and Qwen, including each client's native model, resume, and safety options
  • capture real PTY sessions through the released Command Stream terminal API with text/key/resize interactions and transcript, frame, asciicast, static SVG, and animated SVG artifacts
  • normalize visible user/assistant messages and tool calls without dropping legitimate repeated states
  • provide matching JavaScript and Rust APIs, documentation, tests, and release notes
  • consume the released command-stream 0.15.0 npm package and 0.13.1 crate rather than local or Git dependencies

Reproduction

Before this change Agent Commander could drive the six clients only through non-interactive JSON/pipe paths. It had no PTY, terminal resizing, frame capture, unrolled transcript, or recording artifacts, so the OpenCode repaint failure in formal-ai#819 was unobservable.

The new fake-agent fixture reproduces an interactive client that:

  1. waits for typed prompt input,
  2. reports a control-key event,
  3. observes a real terminal resize,
  4. renders duplicate semantic states and multiple settled frames,
  5. emits a stop marker.

The tests fail against the old implementation because the TUI API and all generated artifacts are absent.

Verification

JavaScript (published command-stream@0.15.0):

  • npm test — 234 passed
  • bun test — 234 passed
  • deno test --allow-read --allow-run --allow-env --allow-net test/ — 230 passed, 4 PTY-process cases intentionally ignored by Deno
  • npm run check
  • npm pack --dry-runsrc/tui.mjs included

Rust (published command-stream = 0.13.1):

  • cargo fmt --all -- --check
  • cargo clippy --all-targets --all-features
  • cargo test --all-features --verbose
  • cargo test --doc --verbose
  • cargo package --list --allow-dirty
  • node ../scripts/rust/check-file-size.mjs

Closes #43.

@konard
konard merged commit 468776d into main Jul 24, 2026
50 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TUI capture for every supported agent: run on command-stream, PTY mode, unrolled transcripts, and recording artifacts

1 participant