mirror of
https://github.com/NoeFabris/opencode-antigravity-auth.git
synced 2026-05-13 15:46:05 +00:00
chore: checkpoint local changes
This commit is contained in:
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -44,9 +44,6 @@ body:
|
||||
- antigravity-gemini-3-pro
|
||||
- antigravity-gemini-3-flash
|
||||
- antigravity-claude-sonnet-4-6
|
||||
- antigravity-claude-sonnet-4-6
|
||||
- antigravity-claude-opus-4-6-thinking
|
||||
- antigravity-claude-opus-4-6-thinking
|
||||
- antigravity-claude-opus-4-6-thinking
|
||||
- gemini-2.5-flash
|
||||
- gemini-2.5-pro
|
||||
|
||||
26
README.md
26
README.md
@@ -120,9 +120,6 @@ opencode run "Hello" --model=google/antigravity-claude-opus-4-6-thinking --varia
|
||||
| `antigravity-gemini-3-pro` | low, high | Gemini 3 Pro with thinking |
|
||||
| `antigravity-gemini-3-flash` | minimal, low, medium, high | Gemini 3 Flash with thinking |
|
||||
| `antigravity-claude-sonnet-4-6` | — | Claude Sonnet 4.6 |
|
||||
| `antigravity-claude-sonnet-4-6` | — | Claude Sonnet 4.6 |
|
||||
| `antigravity-claude-opus-4-6-thinking` | low, max | Claude Sonnet with extended thinking |
|
||||
| `antigravity-claude-opus-4-6-thinking` | low, max | Claude Opus 4.6 with extended thinking |
|
||||
| `antigravity-claude-opus-4-6-thinking` | low, max | Claude Opus 4.6 with extended thinking |
|
||||
|
||||
**Gemini CLI quota** (separate from Antigravity; used when `cli_first` is true or as fallback):
|
||||
@@ -185,29 +182,6 @@ Add this to your `~/.config/opencode/opencode.json`:
|
||||
"limit": { "context": 200000, "output": 64000 },
|
||||
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
|
||||
},
|
||||
"antigravity-claude-sonnet-4-6": {
|
||||
"name": "Claude Sonnet 4.6 (Antigravity)",
|
||||
"limit": { "context": 200000, "output": 64000 },
|
||||
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
|
||||
},
|
||||
"antigravity-claude-opus-4-6-thinking": {
|
||||
"name": "Claude Sonnet 4.6 Thinking (Antigravity)",
|
||||
"limit": { "context": 200000, "output": 64000 },
|
||||
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
|
||||
"variants": {
|
||||
"low": { "thinkingConfig": { "thinkingBudget": 8192 } },
|
||||
"max": { "thinkingConfig": { "thinkingBudget": 32768 } }
|
||||
}
|
||||
},
|
||||
"antigravity-claude-opus-4-6-thinking": {
|
||||
"name": "Claude Opus 4.6 Thinking (Antigravity)",
|
||||
"limit": { "context": 200000, "output": 64000 },
|
||||
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
|
||||
"variants": {
|
||||
"low": { "thinkingConfig": { "thinkingBudget": 8192 } },
|
||||
"max": { "thinkingConfig": { "thinkingBudget": 32768 } }
|
||||
}
|
||||
},
|
||||
"antigravity-claude-opus-4-6-thinking": {
|
||||
"name": "Claude Opus 4.6 Thinking (Antigravity)",
|
||||
"limit": { "context": 200000, "output": 64000 },
|
||||
|
||||
@@ -79,10 +79,7 @@ Accept: text/event-stream
|
||||
| Model Name | Model ID | Type | Status |
|
||||
|------------|----------|------|--------|
|
||||
| Claude Sonnet 4.6 | `claude-sonnet-4-6` | Anthropic | ✅ Verified |
|
||||
| Claude Sonnet 4.6 | `claude-sonnet-4-6` | Anthropic | ✅ Verified |
|
||||
| Claude Sonnet 4.6 Thinking | `claude-opus-4-6-thinking` | Anthropic | ✅ Verified |
|
||||
| Claude Opus 4.6 Thinking | `claude-opus-4-6-thinking` | Anthropic | ✅ Verified |
|
||||
| Claude Opus 4.6 Thinking | `claude-opus-4-6-thinking` | Anthropic | ⏳ Pending |
|
||||
| Gemini 3 Pro High | `gemini-3-pro-high` | Google | ✅ Verified |
|
||||
| Gemini 3 Pro Low | `gemini-3-pro-low` | Google | ✅ Verified |
|
||||
| GPT-OSS 120B Medium | `gpt-oss-120b-medium` | Other | ✅ Verified |
|
||||
|
||||
@@ -21,7 +21,7 @@ Define variants in your model configuration:
|
||||
```json
|
||||
{
|
||||
"antigravity-claude-opus-4-6-thinking": {
|
||||
"name": "Claude Sonnet 4.6 Thinking",
|
||||
"name": "Claude Opus 4.6 Thinking",
|
||||
"limit": { "context": 200000, "output": 64000 },
|
||||
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
|
||||
"variants": {
|
||||
@@ -109,7 +109,7 @@ Claude models use token-based thinking budgets:
|
||||
```json
|
||||
{
|
||||
"antigravity-claude-opus-4-6-thinking": {
|
||||
"name": "Claude Sonnet 4.6 Thinking (Antigravity)",
|
||||
"name": "Claude Opus 4.6 Thinking (Antigravity)",
|
||||
"limit": { "context": 200000, "output": 64000 },
|
||||
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
|
||||
"variants": {
|
||||
|
||||
@@ -24,7 +24,6 @@ export {
|
||||
resolveModelForHeaderStyle,
|
||||
getModelFamily,
|
||||
MODEL_ALIASES,
|
||||
MODEL_FALLBACKS,
|
||||
THINKING_TIER_BUDGETS,
|
||||
GEMINI_3_THINKING_LEVELS,
|
||||
} from "./model-resolver";
|
||||
|
||||
@@ -113,22 +113,6 @@ describe("resolveModelWithTier", () => {
|
||||
expect(result.isThinkingModel).toBe(true);
|
||||
expect(result.quotaPreference).toBe("antigravity");
|
||||
});
|
||||
|
||||
it("deprecated claude-sonnet-4-5-thinking falls back to claude-opus-4-6-thinking", () => {
|
||||
const result = resolveModelWithTier("antigravity-claude-sonnet-4-5-thinking");
|
||||
expect(result.actualModel).toBe("claude-opus-4-6-thinking");
|
||||
expect(result.thinkingBudget).toBe(32768);
|
||||
expect(result.isThinkingModel).toBe(true);
|
||||
expect(result.quotaPreference).toBe("antigravity");
|
||||
});
|
||||
|
||||
it("deprecated claude-opus-4-5-thinking falls back to claude-opus-4-6-thinking", () => {
|
||||
const result = resolveModelWithTier("antigravity-claude-opus-4-5-thinking");
|
||||
expect(result.actualModel).toBe("claude-opus-4-6-thinking");
|
||||
expect(result.thinkingBudget).toBe(32768);
|
||||
expect(result.isThinkingModel).toBe(true);
|
||||
expect(result.quotaPreference).toBe("antigravity");
|
||||
});
|
||||
});
|
||||
|
||||
describe("Claude Sonnet 4.6 (non-thinking)", () => {
|
||||
@@ -306,41 +290,4 @@ describe("Issue #103: resolveModelForHeaderStyle", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("deprecated model fallbacks", () => {
|
||||
it("falls back claude-sonnet-4-5 to claude-sonnet-4-6", () => {
|
||||
const result = resolveModelWithTier("claude-sonnet-4-5");
|
||||
expect(result.actualModel).toBe("claude-sonnet-4-6");
|
||||
expect(result.isThinkingModel).toBeFalsy();
|
||||
});
|
||||
|
||||
it("falls back claude-sonnet-4-5-thinking to claude-opus-4-6-thinking", () => {
|
||||
const result = resolveModelWithTier("claude-sonnet-4-5-thinking");
|
||||
expect(result.actualModel).toBe("claude-opus-4-6-thinking");
|
||||
expect(result.isThinkingModel).toBe(true);
|
||||
});
|
||||
|
||||
it("falls back claude-opus-4-5-thinking to claude-opus-4-6-thinking", () => {
|
||||
const result = resolveModelWithTier("claude-opus-4-5-thinking");
|
||||
expect(result.actualModel).toBe("claude-opus-4-6-thinking");
|
||||
expect(result.isThinkingModel).toBe(true);
|
||||
});
|
||||
|
||||
it("falls back claude-sonnet-4-5-thinking with tier to claude-opus-4-6-thinking", () => {
|
||||
const result = resolveModelWithTier("claude-sonnet-4-5-thinking-low");
|
||||
expect(result.actualModel).toBe("claude-opus-4-6-thinking");
|
||||
expect(result.tier).toBe("low");
|
||||
expect(result.isThinkingModel).toBe(true);
|
||||
});
|
||||
|
||||
it("falls back gemini-claude-sonnet-4-5 alias to claude-sonnet-4-6", () => {
|
||||
const result = resolveModelWithTier("gemini-claude-sonnet-4-5");
|
||||
expect(result.actualModel).toBe("claude-sonnet-4-6");
|
||||
expect(result.isThinkingModel).toBeFalsy();
|
||||
});
|
||||
|
||||
it("falls back gemini-claude-opus-4-5-thinking-low alias to claude-opus-4-6-thinking", () => {
|
||||
const result = resolveModelWithTier("gemini-claude-opus-4-5-thinking-low");
|
||||
expect(result.actualModel).toBe("claude-opus-4-6-thinking");
|
||||
expect(result.isThinkingModel).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
*/
|
||||
|
||||
import type { ResolvedModel, ThinkingTier, GoogleSearchConfig } from "./types";
|
||||
import { logToast } from "../debug.ts";
|
||||
|
||||
export interface ModelResolverOptions {
|
||||
cli_first?: boolean;
|
||||
@@ -53,50 +52,11 @@ export const MODEL_ALIASES: Record<string, string> = {
|
||||
"gemini-claude-opus-4-6-thinking-high": "claude-opus-4-6-thinking",
|
||||
"gemini-claude-sonnet-4-6": "claude-sonnet-4-6",
|
||||
|
||||
// Deprecated Claude 4.5 aliases → forwarded to 4.6 equivalents
|
||||
"gemini-claude-sonnet-4-5": "claude-sonnet-4-6",
|
||||
"gemini-claude-sonnet-4-5-thinking-low": "claude-opus-4-6-thinking",
|
||||
"gemini-claude-sonnet-4-5-thinking-medium": "claude-opus-4-6-thinking",
|
||||
"gemini-claude-sonnet-4-5-thinking-high": "claude-opus-4-6-thinking",
|
||||
"gemini-claude-opus-4-5-thinking-low": "claude-opus-4-6-thinking",
|
||||
"gemini-claude-opus-4-5-thinking-medium": "claude-opus-4-6-thinking",
|
||||
"gemini-claude-opus-4-5-thinking-high": "claude-opus-4-6-thinking",
|
||||
|
||||
// Image generation models - only gemini-3-pro-image is available via Antigravity API
|
||||
// Note: gemini-2.5-flash-image (Nano Banana) is NOT supported by Antigravity - only Google AI API
|
||||
// Reference: Antigravity-Manager/src-tauri/src/proxy/common/model_mapping.rs
|
||||
};
|
||||
|
||||
/**
|
||||
* Model fallbacks when primary model is unavailable.
|
||||
* NOTE: Image models should NOT fall back to non-image models!
|
||||
*/
|
||||
export const MODEL_FALLBACKS: Record<string, string> = {
|
||||
// Deprecated Claude 4.5 bare-name fallbacks → 4.6 equivalents
|
||||
"claude-sonnet-4-5": "claude-sonnet-4-6",
|
||||
"claude-sonnet-4-5-thinking": "claude-opus-4-6-thinking",
|
||||
"claude-opus-4-5-thinking": "claude-opus-4-6-thinking",
|
||||
};
|
||||
|
||||
/**
|
||||
* Deprecated model names that trigger a user-facing deprecation warning.
|
||||
* Includes both MODEL_ALIASES keys and MODEL_FALLBACKS keys for 4.5 models.
|
||||
*/
|
||||
const DEPRECATED_MODELS = new Set([
|
||||
// Bare-name fallbacks
|
||||
"claude-sonnet-4-5",
|
||||
"claude-sonnet-4-5-thinking",
|
||||
"claude-opus-4-5-thinking",
|
||||
// Gemini-prefixed aliases
|
||||
"gemini-claude-sonnet-4-5",
|
||||
"gemini-claude-sonnet-4-5-thinking-low",
|
||||
"gemini-claude-sonnet-4-5-thinking-medium",
|
||||
"gemini-claude-sonnet-4-5-thinking-high",
|
||||
"gemini-claude-opus-4-5-thinking-low",
|
||||
"gemini-claude-opus-4-5-thinking-medium",
|
||||
"gemini-claude-opus-4-5-thinking-high",
|
||||
]);
|
||||
|
||||
const TIER_REGEX = /-(minimal|low|medium|high)$/;
|
||||
const QUOTA_PREFIX_REGEX = /^antigravity-/i;
|
||||
|
||||
@@ -223,16 +183,7 @@ export function resolveModelWithTier(requestedModel: string, options: ModelResol
|
||||
? antigravityModel
|
||||
: MODEL_ALIASES[modelWithoutQuota] || MODEL_ALIASES[baseName] || baseName;
|
||||
|
||||
const resolvedModel = MODEL_FALLBACKS[actualModel] || actualModel;
|
||||
|
||||
// Emit deprecation warning for deprecated model names (4.5 → 4.6 redirects)
|
||||
if (DEPRECATED_MODELS.has(modelWithoutQuota) || DEPRECATED_MODELS.has(baseName)) {
|
||||
logToast(
|
||||
`Model "${requestedModel}" is deprecated. Using "${resolvedModel}" instead. ` +
|
||||
`Please update your configuration to use "${resolvedModel}" directly.`,
|
||||
"warning"
|
||||
)
|
||||
}
|
||||
const resolvedModel = actualModel;
|
||||
|
||||
const isThinking = isThinkingCapableModel(resolvedModel);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user