Skip to content

feat(terminal): add concurrent Local terminal foundation (ALL-141) - #352

Draft
allisoneer wants to merge 4 commits into
devfrom
codex/all-141-browser-terminal
Draft

allisoneer wants to merge 4 commits into
devfrom
codex/all-141-browser-terminal

Conversation

@allisoneer

@allisoneer allisoneer commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

Model PTYs expose textual keys and shared preview cursors. This change adds a separate session-owned Local shell whose byte I/O, resize and sanitized replay support concurrent human and agent activity in the same workspace.

Launch uses the existing prepared authorization and selected backend, captures the environment outside the agent mutex, and rechecks configuration under lifecycle resource leases. Output is masked against its immutable credential snapshot before retention. Human input stays outside the model registry and uses a bounded pump; unconfirmed delivery is never silently resent. Human PTY collection releases the parent slave after spawn so Linux EOF can settle the collector.

Eight versioned HTTP operations expose create/list/status, observer attach/read/detach, literal input and resize through the existing typed client and admission middleware. Explicit termination retains its existing route. Finite POST reads carry independent decimal-string byte cursors and acknowledgements only after renderer processing; each observer retains one immutable pending frame. Gaps require an explicit reset, quotas and idle expiry bound observers, and disconnect does not kill the shell. The SDK supplies cancellation fencing, lost-ACK handling and bounded input receipts. Graceful shutdown explicitly settles owned terminals before persistence drains, including retained observer/service clones.

Draft: ALL-141 remains incomplete. Qualified renderer integration, terminal UI, browser fidelity/accessibility and full production-pane acceptance remain pending. Exact-pinned @xterm/xterm@6.0.0 (MIT, core and CSS only) awaits Allison's dependency/license approval. No renderer dependency has been adopted.

Work map:

  • ALL-139 gates local qualification and acceptance.
  • This is the shared ALL-141 base targeting dev.
  • ALL-142, ALL-143, and ALL-144 remain separate planned sibling successors. Remote and managed work are independent; successor branches are not created yet.
  • ALL-140's canonical PR #335 remains outside implementation scope.

Validation at the protocol checkpoint:

  • Core: 1,549 passed, 9 ignored. Server serialized suite: 253 library tests passed, 3 ignored; 26 binary and 4 integration tests passed.
  • Web: 569 tests passed across 87 files, including 53 terminal SDK tests. Package smoke passed.
  • Full make test-e2e passed: 68 production-embedded journeys, including two terminal protocol journeys using the built SDK and real PTY/agent: shared files, terminal closure during an active agent, independent cancellation, stale-revision rejection, detach/reattach and honest process loss after restart. Their byte sink is a test adapter; these are not browser-renderer fidelity evidence.
  • Focused observation/HTTP/shutdown, permission, terminal and streaming-redaction regressions passed.
  • make test-durability, generated API contract, web lint/typecheck/format/build, production Rust clippy and source-size checks passed. Post-commit make test-assets passed without output drift. API and all generated web/client/presentation outputs are committed together.
  • Static managed-image contract passed. Actual SSH/Podman/hosted acceptance remains unverified without designated disposable infrastructure.

Final workspace gates, qualified renderer/pane E2E, one bounded independent final review, exact-head green CI and terminal-successful automated review remain acceptance work. No merge, deployment or publication is authorized.

@allisoneer allisoneer changed the title codex/all 141 browser terminal feat(terminal): add concurrent Local terminal foundation (ALL-141) Oct 9, 2026
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.

1 participant