diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 37b11b1..231656d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -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: diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 5cdd6ba..4a62f4e 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -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) diff --git a/.github/workflows/issue-triage.yml b/.github/workflows/issue-triage.yml index c95f9d5..50ca741 100644 --- a/.github/workflows/issue-triage.yml +++ b/.github/workflows/issue-triage.yml @@ -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 { diff --git a/README.md b/README.md index fcc5248..f383d0f 100644 --- a/README.md +++ b/README.md @@ -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 }, diff --git a/docs/ANTIGRAVITY_API_SPEC.md b/docs/ANTIGRAVITY_API_SPEC.md index ab7b124..8ae40db 100644 --- a/docs/ANTIGRAVITY_API_SPEC.md +++ b/docs/ANTIGRAVITY_API_SPEC.md @@ -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 | diff --git a/script/test-models.ts b/script/test-models.ts index c787ffd..19af2f0 100644 --- a/script/test-models.ts +++ b/script/test-models.ts @@ -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"; diff --git a/src/plugin/config/models.test.ts b/src/plugin/config/models.test.ts index 1dcb472..01c96bb 100644 --- a/src/plugin/config/models.test.ts +++ b/src/plugin/config/models.test.ts @@ -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 } }, + }); }); }); diff --git a/src/plugin/config/models.ts b/src/plugin/config/models.ts index 81f4c2a..c34e098 100644 --- a/src/plugin/config/models.ts +++ b/src/plugin/config/models.ts @@ -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 }, diff --git a/src/plugin/transform/model-resolver.ts b/src/plugin/transform/model-resolver.ts index 43dab09..c389663 100644 --- a/src/plugin/transform/model-resolver.ts +++ b/src/plugin/transform/model-resolver.ts @@ -54,6 +54,9 @@ export const MODEL_ALIASES: Record = { "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