Repository navigation
Add Antigravity as a first-class Cadence Code host - #60
Merged
Merged
Conversation
voice_start now returns as soon as the audio preflight passes and loads the speech models in a background thread; voice_status reports starting and start_error while the load runs. Hosts poll voice_status until ready instead of holding one tool call open, so a first-run model download can never outlive an MCP tool deadline. Set wait: true to keep the old blocking behavior. Claude-Session: https://claude.ai/code/session_019X5iJxJoSAXC8mysnydtH6
Antigravity installs the repository directly: a minimal root plugin.json
(the published schema allows no extra fields) plus an mcp_config.json
whose bash -c launcher locates the installed bootstrap itself. AGY 1.1.6
neither expands ${extensionPath} nor passes the documented stdio env
object, and it installs plugins under ~/.gemini/config/plugins rather
than the documented ~/.gemini/antigravity-cli/plugins, so the launcher
exports the host identity and tries every known root, failing on stderr
only. The shared skills now speak to Antigravity's /slash-command form,
verify host: antigravity, and carry a scripts/setup fallback for first
runs that outlive Antigravity's undocumented startup timeout.
Claude-Session: https://claude.ai/code/session_019X5iJxJoSAXC8mysnydtH6
./dev agy installs the checkout as a real Antigravity plugin and then launches the host with isolated development data. Unlike the other host launchers this changes user-level state, because AGY 1.1.6 ignores workspace MCP configuration; reinstalling picks up manifest, skill, and bootstrap changes, while Python sources keep running from the checkout. --no-install skips the reinstall and --fresh repeats first-run onboarding. ./dev check now also runs agy plugin validate when the Antigravity CLI is installed. Claude-Session: https://claude.ai/code/session_019X5iJxJoSAXC8mysnydtH6
The README gains an Antigravity quick start (clone plus agy plugin install), a third column in the conversation-command table, and Antigravity entries in the configuration, troubleshooting, uninstall, and development sections. AGENTS.md, CONTRIBUTING.md, PRIVACY.md, and RELEASING.md describe the new manifests, the ./dev agy workflow, the Google privacy boundary, and the release paths for the third host. The bug-report form and project metadata list Antigravity alongside Codex and Claude Code. Claude-Session: https://claude.ai/code/session_019X5iJxJoSAXC8mysnydtH6
agy plugin install copies its argument verbatim, so installing the checkout directly dragged development venvs into ~/.gemini and a stale symlink in them aborted the copy outright. ./dev agy now stages only the checkout's tracked and non-ignored files into a temporary directory and installs that, verified against the real CLI: the install launches the staged launcher and bootstrap end to end and caches all eight voice tool schemas. Claude-Session: https://claude.ai/code/session_019X5iJxJoSAXC8mysnydtH6
Codex review of the async-start change found a lifecycle gap: a voice_stop racing the background model loader could report nothing to stop while the loader finished anyway, leaving warm models and the machine-wide session lock held with no conversation. voice_stop now cancels an in-flight start synchronously and counts it as stopped; the loader aborts at its next checkpoint -- or tears down after completing -- releasing the models and the session lock either way. A start that arrives while a cancelled loader is still running clears the cancellation so the pending load serves the new conversation. Claude-Session: https://claude.ai/code/session_019X5iJxJoSAXC8mysnydtH6
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.
Problem
Cadence Code supported Codex and Claude Code only. Antigravity users had no way to load the voice tools, and the blocking
voice_startcould not have survived Antigravity's MCP deadlines on a first-run model download anyway.Approach
Five incremental commits, each keeping the suite green:
voice_startfor every host.voice_startnow returns as soon as the audio preflight passes and loads the models in a background thread; hosts pollvoice_status(starting/start_error) untilready. All three hosts share the same start flow, and no first-run download can outlive a tool deadline.wait: truekeeps the old blocking behavior.plugin.json(the published schema allows no extra fields) plusmcp_config.json. Findings from testing against the real CLI are baked into the launcher: AGY 1.1.6 neither expands${extensionPath}nor passes the declared stdioenv, and installs land in~/.gemini/config/plugins/rather than the documented~/.gemini/antigravity-cli/plugins/. Thebash -clauncher therefore exports the host identity itself and searches every known root (both install paths covered), failing on stderr only. Shared skills now speak to Antigravity's/slash-commandform, verifyhost: antigravity, and carry ascripts/setupfirst-run fallback../dev agycheckout launcher, mirroring./dev claude/./dev codex. AGY ignores workspace MCP configuration, so this one installs the checkout as a real plugin (with--no-installand--fresh), and./dev checknow also runsagy plugin validate.agy plugin installcopies its argument verbatim (development venvs included, and a stale symlink aborted the copy), so./dev agystages only tracked and non-ignored files and installs that.Verification
python -m unittest discover -s tests), including new runtime tests for background start, contract tests for both Antigravity manifests, launcher-program tests that execute the realbash -cprogram against fake plugin trees, and./dev agyCLI tests.scripts/validate_plugin.py,claude plugin validate --strict, anduv lock --checkall pass.agy plugin validatepasses (4 skills, 4 commands, 1 MCP server); a stagedagy plugin installsucceeded, launched the launcher and bootstrap end to end, and cached all eight voice tool schemas including the new asyncvoice_start; the install location confirmed~/.gemini/config/plugins/cadence-code; uninstall verified and all test state removed afterwards.commands/directory to skills, so the four workflow names appear from both sources; validation accepts this, but a live session should confirm the canonical skills win.https://claude.ai/code/session_019X5iJxJoSAXC8mysnydtH6