v1.79.0 ·
One window instead of three
The problem
Bare aidlc opens a one-shot menu: pick a command, it runs, the program exits. Working with
AIDLC still takes three terminals — one for aidlc commands, one for the agent, one for
aidlc autopilot status --watch.
How it could be solved
Three choices, each about keeping one window honest without rebuilding the tools it sits on.
The first was how a command runs inside the console. It runs in the same process, through the same parser the plain command line uses, so its options, defaults and prompts behave exactly as they do anywhere else. Its output is copied as it prints, so the agent can read what just happened without anyone pasting it across. Starting a separate program for each command would have lost either that copy or the inline prompts.
The second was how to talk to the agent. Each message starts one short run of the agent's own command line tool, picking up the previous conversation by its id. A single long-lived process would have spawned less, but it would tie the console to the least stable part of each tool, and one of the two supported agents has no such mode at all. The message goes in on standard input, never as an argument, so nothing typed can be mistaken for an option.
The third was what the agent may do. When it asks for a tool it is not allowed, the console asks the person, and a yes allows that exact command for the rest of the session and nothing wider. No flag that skips permission checks is ever passed. The autopilot view follows the same restraint: it prints a line when an item changes instead of redrawing a frame every few seconds, so the conversation above it stays readable.
How AIDLC solves it
Bare aidlc and aidlc menu open a console that stays open, instead of the one-shot menu.
/commandruns anyaidlccommand in-process, asking inline for missing arguments;/setuprunsautopilot setup;/helplists everything; Tab completes.!commandruns a shell line in the project directory.- Plain words go to the user's own Claude Code or Codex, one resumed process per turn, message on stdin. Output of
/and!commands since the last turn is handed to the agent. Tools Claude Code refused are asked about inline./agentswitches,/newstarts over, Ctrl-C stops a turn, the running cost is shown. - The opening summary shows autopilot, stalled instances, the roadmap and the agent, plus a newer version when one exists.
- Autopilot changes print above the prompt; Ctrl-T or
/watchhides them; Tab on an empty prompt focuses the section (approve, read artifact, log, open worktree, forget). - Leaving never stops autopilot and says how to come back.
Minor, not patch: a new capability. No command, flag or exit code is removed. aidlc menu keeps its name and now opens the console. Off a terminal, bare aidlc and aidlc menu behave exactly as before.
Not shipped: the two-column Cockpit layout. Captured as .aidlc/roadmap/inbox/20261010-console-cockpit-layout.md.
Changes
packages/cli/src/console/— new:route.ts,harness.ts,standing.ts,autopilot-view.ts,session.ts,terminal.ts,index.ts.packages/cli/src/cli.ts,packages/cli/src/commands/menu.ts— open the console.packages/cli/src/menu/index.ts—openMenuretired; fallbacks andcommandFormkept.packages/cli/src/commands/status.ts—stalledInstancesexport.- Tests:
packages/cli/test/console-units.test.ts,packages/cli/test/console-session.test.ts(new),packages/cli/test/cli-menu.test.ts(updated). - Docs:
README.md,packages/cli/README.md(regenerated),packages/content/docs/lifecycle.md,packages/website/src/data/cli-reference.json(regenerated). - Spec: four ADDED requirements under the new
consolecapability, folded at completion (aidlc spec fold aidlc-console --dry-runis clean).
Docs topic page: this repository has no docs/index.yaml; the topic text that described the menu (packages/content/docs/lifecycle.md) was updated.