feat(cli-agent): support 7 more CLI agents headless - #145
Merged
Conversation
Seven new headless print-mode presets. omp is a pi fork reusing PiStreamJson for the live reasoning feed; windsurf maps to the renamed devin binary. The gemini preset shadows the provider name in aic use; the Google API stays reachable via the google alias.
Add omp, gemini, cursor, windsurf, copilot, trae, and qwen to the CLI-agent tables and features list in both README mirrors; clarify streamed vs print-mode decoders.
Update AGENTS.md and ADR 0010 to list omp, gemini, cursor, windsurf, copilot, trae, and qwen presets, and note which stream reasoning vs run plain print mode.
Self-contained page under docs/articles covering domain vocabulary, the five-domain layout, Run flow, plan validation, Batch staging, LLM backends, fallback grouping, resolve flow, rendering, ADR lineage, tests, and config/distribution.
CaicoLeung
added a commit
that referenced
this pull request
Aug 18, 2026
Fixes review findings on PR #145. ADR 0010 still said "Three presets" and "any other CLI (Opencode, Copilot, OhMyPi) is covered by custom command/args" — both false since those CLIs became presets. The least-permission section claimed every preset pins explicit flags; only claude/codex/pi do. Record the real two-tier stance: flag-pinned where the CLI needs it, headless-print-mode default denial for the rest (no TTY to answer approval prompts; cursor untrusted). Reword omp's decoder as reuse of pi's (it is a pi fork), drop "four presets" from the setup menu comment, count presets instead of enumerating where the list only invited rot, and update the architecture article's preset lists.
ADR 0010 now reflects that presets are data in one registry (omp reuses pi's decoder, zero new code) and the text-only guarantee rests on headless print mode, not per-CLI flag pinning. Sync READMEs, architecture article, and rustdoc/test comments.
CaicoLeung
force-pushed
the
feat/cli-agent-presets
branch
from
August 18, 2026 05:37
9d0f64c to
183ef65
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
aic could only drive 4 CLI agents headless (claude, codex, pi, opencode); anyone paying for another agent still had to provision an API key. This PR adds 7 more: oh-my-pi (
omp), Gemini, Cursor, Windsurf, GitHub Copilot, Trae, and Qwen Code. All are single-shot print-mode presets that reuse the agent's own auth, so no API key is needed.ompomp--mode json {prompt}geminigemini-p {prompt}geminiprovider name inaic use; Google API stays reachable viaaic use googlecursorcursor-agent-p {prompt}--trust→ runs untrusted, writes disabledwindsurfdevin-p {prompt}devincopilotcopilot-p {prompt}traetraecli-p {prompt}qwenqwen-p {prompt}Design decisions
--yolo/approval flag, and none pins tool permissions: cursor runs untrusted, trae and copilot gate non-read tools behind approval prompts headless mode cannot answer. This holds the "never agentic, no tool use" contract (ADR 0010) without per-CLI permission flags.ompreusesEncoding::PiStreamJson. It is a pi fork emitting the samemessage_update/assistantMessageEventNDJSON, so it gets the live reasoning feed with zero new decoder code.windsurfmaps todevin. Windsurf was renamed Devin Desktop (Cognition);docs.windsurf.com/windsurf/clinow redirects to the Devin CLI docs. The preset keeps the familiar name and targets the current binary.geminiwins over thegeminiprovider inaic use(presets always win, same asclaude/anthropic); the Google API remains reachable via itsgooglealias.The same commit range also adds a standalone architecture deep-dive article (
docs/articles/aic-architecture.html) and doc updates (README EN/zh-CN, AGENTS.md, ADR 0010) reflecting the 11-preset list.Tests
new_presets_are_headless_print_modepins command, args, encoding, and timeout for all 7 presets; the full suite (420 tests), fmt, and clippy-D warningsare green.