8re.t.n1d: unify ace-tmux live control for assignment and demo flows#297
Open
8re.t.n1d: unify ace-tmux live control for assignment and demo flows#297
Conversation
Owner
Author
cf0f8bf to
c55f08d
Compare
c55f08d to
354ba87
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

📋 Summary
This PR turns
ace-tmuxinto the shared live tmux control layer used by assignment forks, demo recorders, and interactive panes. Before this branch, tmux automation was split across package-local runners and raw shell glue, interactive AI panes were brittle to target and capture, and fork launch behavior could only be chosen at the CLI. The branch consolidates those flows behind one publicace-tmuxcontract, movesace-assignandace-demoonto that surface, and adds step/config launch-mode defaults so forked subtrees can opt into tmux or headless execution without per-run flags.✏️ Changes
ace-tmuxnow ownssend,capture,wait,attach, anddetach, with shared runtime target resolution, bounded named-key handling, stable window-id pane targeting, and shell-wrapped interactive CLI detection forcodex,claude, andpi.ace-tmux listnow inspects live panes in the current window by default, widens to--all-panes,--windows, or--sessions, and moves preset discovery to top-levelace-tmux --list-presets [TYPE].ace-tmuxvalidates operator-facing pane syntax, resolves dotted window names through tmux window ids, captures visible TUI tails, delays the first submitEnter, addswait --for agentpluswait --lines, and makessend --wait outputcompare against post-send output instead of stale screen text.ace-assignremoves the privateTmuxForkRunner, launches forks through the shared control surface, keeps assignment state as the completion source of truth, and now resolves launch mode with precedence--launch-mode->fork.mode->execution.launch_mode->auto.ace-demoadds structured tmux recorder directives for asciinema-backed tapes, threads recorder env into tmux control resolution, and rejects unsupportedvhs/capturecombinations instead of silently accepting invalid YAML.ace-support-cliadds optional-value string flag parsing and suppresses misleading rich-help default text, which makes bare forms like--captureand--waitbehave and document correctly.ace-llmstubs the Z.ai endpoint in query command tests so deterministic package runs stay offline and do not depend on blocked real HTTP calls.📁 File Changes
🧪 Test Evidence
send --wait, output-baseline waits, and pane/window resolution inace-tmux.fork.mode,execution.launch_mode, and CLI precedence inace-assignwhile preserving shared-control-surface fork orchestration.ace-assignlaunches tmux-backed forks through the shared control surface after removing the private runner.tmux:recorder directives and backend-specific rejection paths inace-demo.ace-support-cli.ace-llmquery command coverage.ace-support-cli60 tests / 217 assertions,ace-tmux265 tests / 704 assertions,ace-assign559 tests / 1838 assertions,ace-demo211 tests / 858 assertions,ace-overseer144 tests / 540 assertions, andace-llm328 tests / 803 assertions; all passed with 0 failures / 0 errors.📦 Releases
send --wait/agent, and the runtimelist/--list-presetssplit.fork-run, refreshes the visible fork demo contract, and adds step/config launch-mode defaults viafork.modeandexecution.launch_mode.ace-tmuxline.🎮 Demo
Run
Expected Output
ace-tmux --list-presets windowsprints the available window preset names.ace-tmux list --windowsprints live tmux state with stable ids such as@window_idand%pane_id.ace-tmux send --wait --capturereturns the settled post-response pane tail for interactive CLI panes instead of stale scrollback; on a Codex pane it should include• pong.ace-assign fork-run --launch-mode tmuxopens or reuses the<current-window>-fsstaging window and writes fork session metadata withlaunch_mode,tmux_window, provider, model, and session details.fork.mode: tmuxor assign config setsexecution.launch_mode: tmux, the same visible fork-window behavior now works without repeating--launch-mode tmuxon every run.Artifacts
ace-tmux/docs/demo/ace-tmux-getting-started.tape.ymlace-assign/docs/demo/fork-provider.tape.ymlace-assign/docs/demo/fork-provider.recording.jsonace-assign/docs/demo/fork-provider.giface-assign/docs/demo/fork-provider.cast