Merge branch 'main' into dev

This commit is contained in:
Noe
2026-02-06 23:48:30 +00:00
9 changed files with 75 additions and 6 deletions

View File

@@ -14,6 +14,10 @@ body:
**Please write a descriptive title above** (e.g., "Auth fails with invalid_grant after token refresh")
> 🌐 **ENGLISH ONLY**
>
> Issues must be written in English. Issues in other languages will be closed immediately.
Check the following resources first:
- **[📋 Troubleshooting Guide](https://github.com/NoeFabris/opencode-antigravity-auth/blob/main/docs/TROUBLESHOOTING.md)** - common issues and solutions
- [Existing issues](https://github.com/NoeFabris/opencode-antigravity-auth/issues?q=is%3Aissue) - your issue may already be reported
@@ -30,7 +34,6 @@ body:
- label: I have read the [📋 Troubleshooting Guide](https://github.com/NoeFabris/opencode-antigravity-auth/blob/main/docs/TROUBLESHOOTING.md)
required: true
- label: I have read the [README](https://github.com/NoeFabris/opencode-antigravity-auth#readme) installation instructions
required: true
- type: dropdown
id: model
@@ -43,6 +46,7 @@ body:
- antigravity-claude-sonnet-4-5
- antigravity-claude-sonnet-4-5-thinking
- antigravity-claude-opus-4-5-thinking
- antigravity-claude-opus-4-6-thinking
- gemini-2.5-flash
- gemini-2.5-pro
- gemini-3-flash-preview
@@ -171,6 +175,18 @@ body:
validations:
required: true
- type: textarea
id: mcp-servers
attributes:
label: MCP servers installed
description: List any MCP (Model Context Protocol) servers you have configured. This helps us identify potential interactions or conflicts.
placeholder: |
Example:
- chrome-devtools
- figma
validations:
required: false
- type: textarea
id: logs
attributes:

View File

@@ -9,6 +9,10 @@ body:
**Please write a descriptive title above** (e.g., "Add support for custom retry strategies")
> 🌐 **ENGLISH ONLY**
>
> Issues must be written in English. Issues in other languages will be closed immediately.
Check if this feature has already been requested:
- [Existing feature requests](https://github.com/NoeFabris/opencode-antigravity-auth/issues?q=is%3Aissue+label%3Aenhancement)
- [Discussions](https://github.com/NoeFabris/opencode-antigravity-auth/discussions)

View File

@@ -107,12 +107,29 @@ jobs:
try {
parsed = JSON.parse(rawOutput.trim());
} catch (e) {
// Try to extract JSON from code blocks first, then raw JSON
// Try to extract JSON from code blocks first
const codeBlockMatch = rawOutput.match(/```(?:json)?\s*([\s\S]*?)\s*```/);
// Use greedy match to capture full nested JSON object
const rawJsonMatch = rawOutput.match(/\{[\s\S]*\}/);
const jsonStr = codeBlockMatch?.[1] || rawJsonMatch?.[0];
// Find the LAST JSON object containing triage fields (avoid matching code snippets)
// Match JSON objects that contain "type_label" to ensure we get the triage output
const triageJsonMatch = rawOutput.match(/\{"type_label"[\s\S]*?\}(?=\s*$|\s*```|\s*\n\n)/);
// Fallback: find all potential JSON objects and try parsing from the end
let jsonStr = codeBlockMatch?.[1] || triageJsonMatch?.[0];
if (!jsonStr) {
// Last resort: find all { } pairs and try parsing from the last one
const allMatches = [...rawOutput.matchAll(/\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/g)];
for (let i = allMatches.length - 1; i >= 0; i--) {
try {
const candidate = JSON.parse(allMatches[i][0]);
if (candidate.type_label && candidate.area_label) {
jsonStr = allMatches[i][0];
break;
}
} catch {}
}
}
if (jsonStr) {
try {

View File

@@ -121,7 +121,8 @@ opencode run "Hello" --model=google/antigravity-claude-sonnet-4-5-thinking --var
| `antigravity-gemini-3-flash` | minimal, low, medium, high | Gemini 3 Flash with thinking |
| `antigravity-claude-sonnet-4-5` | — | Claude Sonnet 4.5 |
| `antigravity-claude-sonnet-4-5-thinking` | low, max | Claude Sonnet with extended thinking |
| `antigravity-claude-opus-4-5-thinking` | low, max | Claude Opus with extended thinking |
| `antigravity-claude-opus-4-5-thinking` | low, max | Claude Opus 4.5 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):
@@ -201,6 +202,15 @@ Add this to your `~/.config/opencode/opencode.json`:
"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 } }
}
},
"gemini-2.5-flash": {
"name": "Gemini 2.5 Flash (Gemini CLI)",
"limit": { "context": 1048576, "output": 65536 },

View File

@@ -81,6 +81,7 @@ Accept: text/event-stream
| Claude Sonnet 4.5 | `claude-sonnet-4-5` | Anthropic | ✅ Verified |
| Claude Sonnet 4.5 Thinking | `claude-sonnet-4-5-thinking` | Anthropic | ✅ Verified |
| Claude Opus 4.5 Thinking | `claude-opus-4-5-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 |

View File

@@ -26,6 +26,9 @@ const MODELS: ModelTest[] = [
{ model: "google/antigravity-claude-opus-4-5-thinking-low", category: "antigravity-claude" },
{ model: "google/antigravity-claude-opus-4-5-thinking-medium", category: "antigravity-claude" },
{ model: "google/antigravity-claude-opus-4-5-thinking-high", category: "antigravity-claude" },
{ model: "google/antigravity-claude-opus-4-6-thinking-low", category: "antigravity-claude" },
{ model: "google/antigravity-claude-opus-4-6-thinking-medium", category: "antigravity-claude" },
{ model: "google/antigravity-claude-opus-4-6-thinking-high", category: "antigravity-claude" },
];
const TEST_PROMPT = "Reply with exactly one word: WORKING";

View File

@@ -16,6 +16,7 @@ describe("OPENCODE_MODEL_DEFINITIONS", () => {
expect(modelNames).toEqual([
"antigravity-claude-opus-4-5-thinking",
"antigravity-claude-opus-4-6-thinking",
"antigravity-claude-sonnet-4-5",
"antigravity-claude-sonnet-4-5-thinking",
"antigravity-gemini-3-flash",
@@ -51,5 +52,10 @@ describe("OPENCODE_MODEL_DEFINITIONS", () => {
low: { thinkingConfig: { thinkingBudget: 8192 } },
max: { thinkingConfig: { thinkingBudget: 32768 } },
});
expect(getModel("antigravity-claude-opus-4-6-thinking").variants).toEqual({
low: { thinkingConfig: { thinkingBudget: 8192 } },
max: { thinkingConfig: { thinkingBudget: 32768 } },
});
});
});

View File

@@ -81,6 +81,15 @@ export const OPENCODE_MODEL_DEFINITIONS: OpencodeModelDefinitions = {
max: { thinkingConfig: { thinkingBudget: 32768 } },
},
},
"antigravity-claude-opus-4-6-thinking": {
name: "Claude Opus 4.6 Thinking (Antigravity)",
limit: { context: 200000, output: 64000 },
modalities: DEFAULT_MODALITIES,
variants: {
low: { thinkingConfig: { thinkingBudget: 8192 } },
max: { thinkingConfig: { thinkingBudget: 32768 } },
},
},
"gemini-2.5-flash": {
name: "Gemini 2.5 Flash (Gemini CLI)",
limit: { context: 1048576, output: 65536 },

View File

@@ -54,6 +54,9 @@ export const MODEL_ALIASES: Record<string, string> = {
"gemini-claude-opus-4-5-thinking-low": "claude-opus-4-5-thinking",
"gemini-claude-opus-4-5-thinking-medium": "claude-opus-4-5-thinking",
"gemini-claude-opus-4-5-thinking-high": "claude-opus-4-5-thinking",
"gemini-claude-opus-4-6-thinking-low": "claude-opus-4-6-thinking",
"gemini-claude-opus-4-6-thinking-medium": "claude-opus-4-6-thinking",
"gemini-claude-opus-4-6-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