diff --git a/docs/antigravity.md b/docs/antigravity.md index 225cd31f4..ff5095b12 100644 --- a/docs/antigravity.md +++ b/docs/antigravity.md @@ -75,3 +75,28 @@ agents: - **No streaming**: `agy -p` returns the full response at once; the adapter sends it as a single `agent_message_chunk` notification. - **Cancel is a no-op**: `agy -p` runs to completion; `session/cancel` acknowledges but cannot interrupt. + +## Model Selection + +The Discord `/models` dropdown is supported. `agy-acp` returns model +`configOptions` when a session is created or loaded. It fetches the available +models from `agy models` and caches a successful result. If the live fetch fails, +the adapter uses the cache and then falls back to this static list when no cache +is available: + +- Gemini 3.5 Flash (Medium) +- Gemini 3.5 Flash (High) +- Gemini 3.5 Flash (Low) +- Gemini 3.1 Pro (Low) +- Gemini 3.1 Pro (High) + +When a user selects a model with `/models`, OpenAB sends +`session/set_config_option`. `agy-acp` stores the selected model for that session +and adds `--model ` to subsequent `agy` invocations. + +To select a default model for every new session, set `default_config_options`: + +```toml +[pool] +default_config_options = { model = "Gemini 3.5 Flash (Medium)" } +``` diff --git a/docs/devin.md b/docs/devin.md index 899ba40db..6e688c167 100644 --- a/docs/devin.md +++ b/docs/devin.md @@ -105,7 +105,9 @@ default_config_options = { model = "swe-1-6" } Available model values include: `adaptive`, `swe-1-6`, `swe-1-6-fast`, `claude-opus-4-8-medium`, `glm-5-2`, `gpt-5-5-medium`, `kimi-k2-7`, and many more. The full list is reported by the -agent at session creation and visible via the Discord `/model` slash command. +agent as ACP `configOptions` at session creation, making it available in the Discord `/models` +dropdown once a session is active. This behavior is based on ACP client evidence; a live OpenAB +session capture is still pending. > **Note:** The `--model` flag and `DEVIN_MODEL` env var are **ignored** in ACP mode. > Use `default_config_options` instead. diff --git a/docs/gemini.md b/docs/gemini.md index 511b6b007..a6d297faa 100644 --- a/docs/gemini.md +++ b/docs/gemini.md @@ -2,6 +2,13 @@ Gemini CLI supports ACP natively via the `--acp` flag — no adapter needed. +> **Migration notice:** Since June 18, 2026, Gemini CLI no longer serves Google AI +> Pro, Google AI Ultra, or free-tier individual accounts. Google recommends +> migrating those users to Antigravity CLI. Enterprise users with Gemini Code +> Assist licenses and API-key authentication remain supported. See Google's +> [transition announcement](https://github.com/google-gemini/gemini-cli/discussions/27274) +> and [June 18 update](https://github.com/google-gemini/gemini-cli/discussions/28017). + ## Docker Image ```bash @@ -58,7 +65,12 @@ env = { GEMINI_API_KEY = "${GEMINI_API_KEY}" } ## Authentication -Gemini supports Google OAuth or an API key: +Gemini CLI authentication depends on the account type: -- **API key**: Set `GEMINI_API_KEY` environment variable -- **OAuth**: Run Google OAuth flow inside the pod +- **API key**: Set the `GEMINI_API_KEY` environment variable. +- **Enterprise or Google Cloud OAuth**: Run the Google OAuth flow inside the pod + using an organizational account with supported Gemini Code Assist or Google + Cloud access. +- **Individual OAuth**: Google AI Pro, Google AI Ultra, and free-tier individual + accounts are no longer served by Gemini CLI. Migrate these users to + Antigravity CLI. diff --git a/docs/slack.md b/docs/slack.md index a18a17ee6..fcf84727c 100644 --- a/docs/slack.md +++ b/docs/slack.md @@ -114,15 +114,19 @@ The bot will reply in a thread. After that, just type in the thread — no @ment openab supports `/models`, `/agents`, and `/cancel` on **Discord**, but **not on Slack**. If you previously configured these commands in your Slack app's **Slash Commands** page, you can safely delete them — the Slack adapter ignores both `slash_commands` and `interactive` envelope types. -The root cause is a combination of three Slack-specific platform constraints, none of which is fixable from openab's side: +The root cause is a combination of two Slack-specific platform constraints, neither of which is fixable from openab's side: 1. **Slack blocks third-party slash commands inside threads.** Invoking `/models` from a thread's reply composer returns the Slack error `"/models is not supported in threads. Sorry!"`. This is enforced by the Slack client itself, not by any app setting — enabling Interactivity, Socket Mode, or reinstalling the app does not bypass it. Slack's built-in commands (`/remind`, `/shrug`, etc.) get special treatment that custom apps cannot. 2. **Channel-level slash command payloads have no thread context.** If the user types `/models` in the channel's main composer instead of a thread, Slack delivers the command but the payload carries no `thread_ts`. Since openab keys each ACP session by thread (`slack:` or `slack:`), the command cannot be routed to the right session. Sessions are never keyed by `channel_id` alone, so there's no workaround on the adapter side. -3. **Most ACP agents don't expose a model-switch surface.** Even when routing succeeded, `/models` reads the session's `configOptions` from the ACP `initialize` response. Only `kiro-cli` emits these in the expected format (via its `models`/`modes` fallback). `claude-code`, `codex`, `gemini`, `cursor-agent`, and `opencode` do not, so the menu would be empty for those backends — the user would see `"⚠️ No model options available"` with no recourse. +Backend model-selection support also varies; see the current +[slash-command compatibility table](slash-commands.md#models-and-agents). This +does not change Slack support: the two routing constraints above prevent the +menu from reaching the correct session even when a backend emits model +`configOptions`. -On Discord, none of these apply: slash commands work in thread-channels, the channel ID *is* the thread key, and users typically stay within a single agent per deployment anyway. +On Discord, neither constraint applies: slash commands work in thread-channels, the channel ID *is* the thread key, and users typically stay within a single agent per deployment anyway. ### If you need to switch models or agents with a Slack deployment diff --git a/docs/slash-commands.md b/docs/slash-commands.md index 9638a9792..637af45ae 100644 --- a/docs/slash-commands.md +++ b/docs/slash-commands.md @@ -40,7 +40,10 @@ When the user picks an option, OpenAB sends `session/set_config_option` to the A | kiro-cli | ✅ Returns available models via `models` fallback | ✅ Returns modes (`kiro_default`, `kiro_planner`) via `modes` fallback | | claude-code | ❌ No `configOptions` emitted | ❌ | | codex | ❌ | ❌ | -| gemini | ❌ | ❌ | +| gemini | ❌ No `configOptions` emitted; see [Gemini CLI account migration guidance](gemini.md) | ❌ | +| antigravity | ✅ Returns available models via `configOptions`; `agy-acp` fetches them from `agy models`, with cache and static fallback | ❌ | +| opencode | ✅ Emits model `configOptions` at session creation in OpenCode 1.17.9 (source-confirmed; live OpenAB session capture pending) | ❌ | +| devin | ✅ Emits model `configOptions` at session creation (ACP client evidence; live OpenAB session capture pending) | ❌ | | cursor-agent | ❌ (tracking: #493) | ❌ | | copilot | ❌ (tracking: #496) | ❌ |