This document tracks the active repair effort for real model execution on the current macOS development machine.
node-ptyfails immediately under the active Node 24 runtime, including for trivial commands such as/bin/echo.claudeandgeminido not behave reliably when launched fromspawn(..., stdio: pipe)in this environment.codexdoes work on the existing direct pipe path.- Unit and integration tests currently pass without covering these real transport failures.
- Keep PTY execution only when a real PTY health probe passes.
- Use a TTY-backed captured execution path for
claudeandgemini. - Keep
codexon the current direct pipe path. - Fail fast for
claudeandgeminiwhen neither PTY nor a controlling TTY is available. - Do not add new CLI flags or config keys in this phase.
- Create
CLAUDE.mdas the repo-local runtime operations guide. - Replace the previous architecture-heavy
plan.mdwith this live recovery plan. - Record the validation commands required after any transport change.
- Add a cached PTY health probe.
- Route
claudeandgeminithrough a TTY-backed captured transport that:- inherits the current terminal
- redirects engine output to a temporary file
- tails the file incrementally
- parses structured output instead of trusting raw preamble noise
- Keep
codexon the existing pipe-based transport. - Update PTY fallback so it uses the repaired engine transport instead of the
currently hanging pipe path for
claudeandgemini.
The following commands must complete successfully without hanging:
npm run build
npm test
node dist/index.js "Reply with exactly the single word OK" -e codex -r codex --auto --threshold 9
node dist/index.js "Reply with exactly the single word OK" -e claude -r codex --auto --threshold 9
node dist/index.js "Reply with exactly the single word OK" -e gemini -r codex --auto --threshold 9Expected results:
codexstill worksclaudeworks without relying onnode-ptygeminiworks without relying onnode-ptyclaudeandgeminifail quickly with an actionable error when no controlling TTY is available
These items are intentionally out of scope for this batch:
- manual mode improvements
- orchestrator placeholder cleanup
- broader docs/help polish beyond runtime compatibility
- deeper daemon and multi-agent follow-up work