b93fe58523
test / unit (pull_request) Successful in 47s
test / integration (pull_request) Successful in 16s
test / coverage (pull_request) Successful in 1m4s
lint / lint (push) Successful in 2m0s
test / unit (push) Successful in 48s
test / integration (push) Successful in 18s
test / coverage (push) Successful in 57s
Update Quality Badges / update-badges (push) Successful in 57s
`--headless` is a non-interactive launch path for `cli.py start`: agent, bottles, label, and color come from flags + manifest defaults with no TUI selectors and no y/N preflight (auto-confirmed via a new `assume_yes` param threaded into the shared `_launch_bottle` core). - `--bottle` (repeatable) defaults to the agent's own `bottle:`; `--label` defaults to the agent name and auto-uniquifies on slug collision; `--color` defaults to none. - `--prompt TEXT` is required in headless mode and is delivered to the agent via a new `headless_prompt(prompt)` method on `AgentProvider`, implemented for claude (`-p`), codex (positional), and pi (`-p`). - The agent still execs on inherited stdio/PTY, so whatever allocates the PTY drives the live session; only the launch chrome is headless. - `--headless --dry-run` previews the resolved plan without launching. Adds unit coverage in tests/unit/test_cli_start_headless.py and headless_prompt tests for each provider. Also stubs headless_prompt on the in-test AgentProvider subclasses so the unit suite collects cleanly. Closes #315. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WL77TgFxKbs3cidGMG9dz7