feat: recognize Mistral Vibe as a CLI agent (#9607)#9667
feat: recognize Mistral Vibe as a CLI agent (#9607)#9667zachbai merged 4 commits intowarpdotdev:masterfrom
Conversation
Adds `CLIAgent::Vibe` so running `vibe` (or `vibe-acp`) in a Warp pane is detected on par with the other agents we already recognize. The change is purely additive and follows the existing `CLIAgent` pattern: - `command_prefix` -> "vibe" - `display_name` -> "Mistral Vibe" - `brand_color` -> Mistral orange (#FA520F) - `supported_skill_providers` -> [SkillProvider::Agents] - Telemetry: matching `CLIAgentType::Vibe` variant. `icon()` returns `None` for now: shipping an `Icon::MistralLogo` requires an officially licensed SVG that I don't have rights to bundle. The brand-color tile still renders, and a follow-up PR can add the icon variant + asset once the Warp team / Mistral provide one. Tested by extending `test_detect_known_agents` to cover `vibe`, which also exercises `to_serialized_name` round-tripping via the existing `test_serialized_name_round_trips_known_agents` (it iterates every variant via `enum_iterator::all`).
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and posted feedback on this pull request. Comment I'm re-reviewing this pull request in response to a review request. I reviewed this pull request and requested human review from: @zachbai. Comment I reviewed this pull request and requested human review from: @zachbai. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
Adds Mistral Vibe as a recognized CLI agent with telemetry mapping, display metadata, brand color, supported skill provider, and test coverage for the vibe command.
Concerns
vibe-acpis described as supported by the PR, but detection still does an exact first-token comparison againstcommand_prefix(), so onlyvibeis recognized.
Verdict
Found: 0 critical, 1 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
| CLIAgent::Auggie => "auggie", | ||
| CLIAgent::CursorCli => "agent", | ||
| CLIAgent::Goose => "goose", | ||
| CLIAgent::Vibe => "vibe", |
There was a problem hiding this comment.
detect compares the first token exactly to command_prefix(), so vibe-acp remains undetected despite the PR scope; add a secondary match and a regression test.
oz-for-oss flagged that the PR description claims `vibe-acp` is recognized but `detect()` exact-matches `command_prefix()`, so the ACP-mode binary slipped through. Mirror the existing `aifx agent run claude` special-case: extend the `find` predicate so `CLIAgent::Vibe` also matches when the resolved first word is `vibe-acp`. Adds a regression test that exercises both the bare command and an arguments-included variant, plus a negative case so we don't accidentally match `vibe-anything`.
|
Pushed 05af229 addressing the IMPORTANT finding:
Mirrored the existing /oz-review |
There was a problem hiding this comment.
Overview
Adds Mistral Vibe as a known CLI agent, including command detection for vibe and vibe-acp, display metadata, skill-provider support, telemetry mapping, and focused unit coverage.
Concerns
- No blocking correctness or security concerns found in the changed diff.
Verdict
Found: 0 critical, 0 important, 0 suggestions
Approve
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
There was a problem hiding this comment.
Overview
This PR adds Mistral Vibe as a recognized CLI agent, including telemetry mapping, display metadata, brand color, skill-provider support, and detection tests for both vibe and vibe-acp.
Concerns
- No blocking correctness or security concerns found in the changed lines.
Verdict
Found: 0 critical, 0 important, 0 suggestions
Approve
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
zachbai
left a comment
There was a problem hiding this comment.
nice, thanks for the change
|
@bholmesdev fyi that support for mistral vibe coming soon |
After this PR was opened on 2026-04-30, master added three new exhaustive match sites on CLIAgent that were not yet aware of the Vibe variant: - app/src/terminal/cli_agent_sessions/listener/mod.rs (no listener arm) - app/src/terminal/cli_agent_sessions/plugin_manager/mod.rs (no plugin manager arm) - app/src/terminal/view/use_agent_footer/mod.rs (Inline rich-input strategy arm) This caused error[E0004] non-exhaustive patterns failures across all CI platforms (Formatting + Clippy, Verify compilation, tests). Adding Vibe to the same arm as Goose in each site — Vibe is recognition-only at this stage and matches Goose's "no special integration yet" treatment. Resolves the CI red status without expanding scope; the original PR remains a recognition-only change as approved by zachbai.
Resolves the merge conflict with master after warpdotdev#9667 (Mistral Vibe agent recognition) merged. Combines both surfaces: - The Vibe arm now also resolves through path_basename_token and shebang_script_basename, so `/usr/local/bin/vibe-acp` and `node /opt/vibe-acp` both detect as Vibe. Also addresses oz-for-oss review on PR warpdotdev#10022: > This treats the first non-flag token as a script even when the > preceding runtime flag consumes an argument, so invocations like > `node -e codex`, `node --require codex`, or `python -c claude` can > false-positive as agents. Adds VALUE_TAKING_RUNTIME_FLAGS, a list of flags that consume the following token as their value: - Node: -e, --eval, -p, --print, -r, --require, -C, --conditions - Python: -c, -m, -X, -W - Deno (subset): -A, --allow-read, --allow-write, --allow-net - Bun (subset): -d, --define shebang_script_basename now consumes the value alongside the flag, so `node -e codex` no longer false-positives as Codex. The `--key=value` form remains a single whitespace token and is handled by the existing `starts_with('-')` flag check. New regression tests in cli_agent_tests.rs: - `node -e codex` → None - `node --eval codex` → None - `node --require claude /home/user/app.js` → None - `python -c claude` → None - `python -m gemini` → None - `node --require some-mod /usr/local/bin/codex` → Codex (legitimate agent script after value-taking flag is consumed) - `node --inspect=127.0.0.1:9229 /usr/local/bin/codex` → Codex (--key=value form preserves correct script detection)
…tdev#9667) ## Description Resolves warpdotdev#9607. Adds `CLIAgent::Vibe` so running `vibe` (or `vibe-acp`) in a Warp pane is detected as a known CLI agent on par with Claude Code, Codex, Gemini CLI, OpenCode, etc. Mistral Vibe is the open-source ACP-compatible CLI shipped alongside Devstral 2. The change is purely additive and follows the existing `CLIAgent` pattern in `app/src/terminal/cli_agent.rs`: | Property | Value | |---|---| | `command_prefix` | `"vibe"` | | `display_name` | `"Mistral Vibe"` | | `brand_color` | Mistral orange `#FA520F` (new `MISTRAL_ORANGE` constant) | | `brand_icon_color` | white (default arm) | | `supported_skill_providers` | `&[SkillProvider::Agents]` | | `icon` | `None` — see below | Telemetry: `CLIAgentType::Vibe` added in lockstep so `From<CLIAgent> for CLIAgentType` stays exhaustive. ### Why `icon()` returns `None` Shipping `Icon::MistralLogo` requires an officially licensed SVG that I don't have rights to bundle. The brand-color tile still renders, and the agent is fully detected. A follow-up PR can wire the `Icon::MistralLogo` variant + asset once the Warp team / Mistral provide one — the issue author explicitly suggested this draft-PR approach. ## Linked Issue - [x] The linked issue is labeled `ready-to-spec` or `ready-to-implement`. (warpdotdev#9607 is `ready-to-implement`.) Resolves warpdotdev#9607. ## Testing Extended the existing `test_detect_known_agents` table-driven test to cover `vibe` -> `CLIAgent::Vibe`. The pre-existing `test_serialized_name_round_trips_known_agents` exercises every variant via `enum_iterator::all`, so it now also covers Vibe's serde round-trip without code changes. Local builds blocked on missing Xcode `metal` compiler in this environment; CI's MacOS / Linux / Windows lanes will validate `cargo build`, `cargo clippy --workspace --all-targets --all-features --tests -- -D warnings`, and `cargo nextest run`. ## Agent Mode - [ ] Warp Agent Mode - This PR was created via Warp's AI Agent Mode <!-- CHANGELOG-IMPROVEMENT: Recognize Mistral Vibe (`vibe` / `vibe-acp`) as a known CLI agent in the terminal, with brand-colored toolbar tile. Thanks @lonexreb! --> CHANGELOG-IMPROVEMENT: Recognize Mistral Vibe (`vibe` / `vibe-acp`) as a known CLI agent in the terminal, with brand-colored toolbar tile. Thanks @lonexreb!
Description
Resolves #9607. Adds
CLIAgent::Vibeso runningvibe(orvibe-acp) in a Warp pane is detected as a known CLI agent on par with Claude Code, Codex, Gemini CLI, OpenCode, etc. Mistral Vibe is the open-source ACP-compatible CLI shipped alongside Devstral 2.The change is purely additive and follows the existing
CLIAgentpattern inapp/src/terminal/cli_agent.rs:command_prefix"vibe"display_name"Mistral Vibe"brand_color#FA520F(newMISTRAL_ORANGEconstant)brand_icon_colorsupported_skill_providers&[SkillProvider::Agents]iconNone— see belowTelemetry:
CLIAgentType::Vibeadded in lockstep soFrom<CLIAgent> for CLIAgentTypestays exhaustive.Why
icon()returnsNoneShipping
Icon::MistralLogorequires an officially licensed SVG that I don't have rights to bundle. The brand-color tile still renders, and the agent is fully detected. A follow-up PR can wire theIcon::MistralLogovariant + asset once the Warp team / Mistral provide one — the issue author explicitly suggested this draft-PR approach.Linked Issue
ready-to-specorready-to-implement. (Add Mistral Vibe to recognized CLI agents #9607 isready-to-implement.)Resolves #9607.
Testing
Extended the existing
test_detect_known_agentstable-driven test to covervibe->CLIAgent::Vibe. The pre-existingtest_serialized_name_round_trips_known_agentsexercises every variant viaenum_iterator::all, so it now also covers Vibe's serde round-trip without code changes.Local builds blocked on missing Xcode
metalcompiler in this environment; CI's MacOS / Linux / Windows lanes will validatecargo build,cargo clippy --workspace --all-targets --all-features --tests -- -D warnings, andcargo nextest run.Agent Mode
CHANGELOG-IMPROVEMENT: Recognize Mistral Vibe (
vibe/vibe-acp) as a known CLI agent in the terminal, with brand-colored toolbar tile. Thanks @lonexreb!