Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 63 additions & 4 deletions src/cli/config-manager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,24 +170,32 @@ describe("fetchNpmDistTags", () => {
})

describe("config-manager ANTIGRAVITY_PROVIDER_CONFIG", () => {
test("Gemini models include full spec (limit + modalities)", () => {
test("All models include full spec (limit + modalities)", () => {
const google = (ANTIGRAVITY_PROVIDER_CONFIG as any).google
expect(google).toBeTruthy()

const models = google.models as Record<string, any>
expect(models).toBeTruthy()

// #given all models in the config
const required = [
"antigravity-gemini-3-pro-high",
"antigravity-gemini-3-pro-low",
"antigravity-gemini-3-pro",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Generated agent model still uses removed variant id antigravity-gemini-3-pro-high, which no longer exists in provider config

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/cli/config-manager.test.ts, line 182:

<comment>Generated agent model still uses removed variant id `antigravity-gemini-3-pro-high`, which no longer exists in provider config</comment>

<file context>
@@ -170,24 +170,32 @@ describe("fetchNpmDistTags", () => {
     const required = [
-      "antigravity-gemini-3-pro-high",
-      "antigravity-gemini-3-pro-low",
+      "antigravity-gemini-3-pro",
       "antigravity-gemini-3-flash",
+      "antigravity-claude-sonnet-4-5",
</file context>

"antigravity-gemini-3-flash",
"antigravity-claude-sonnet-4-5",
"antigravity-claude-sonnet-4-5-thinking",
"antigravity-claude-opus-4-5-thinking",
"gemini-2.5-flash",
"gemini-2.5-pro",
"gemini-3-flash-preview",
"gemini-3-pro-preview",
]

// #when checking each model
for (const key of required) {
const model = models[key]
// #then each model should have required properties
expect(model).toBeTruthy()
expect(typeof model.name).toBe("string")
expect(model.name.includes("(Antigravity)")).toBe(true)

expect(model.limit).toBeTruthy()
expect(typeof model.limit.context).toBe("number")
Expand All @@ -198,6 +206,57 @@ describe("config-manager ANTIGRAVITY_PROVIDER_CONFIG", () => {
expect(Array.isArray(model.modalities.output)).toBe(true)
}
})

test("Antigravity models have (Antigravity) in name", () => {
const models = (ANTIGRAVITY_PROVIDER_CONFIG as any).google.models as Record<string, any>

const antigravityModels = [
"antigravity-gemini-3-pro",
"antigravity-gemini-3-flash",
"antigravity-claude-sonnet-4-5",
"antigravity-claude-sonnet-4-5-thinking",
"antigravity-claude-opus-4-5-thinking",
]

for (const key of antigravityModels) {
expect(models[key].name.includes("(Antigravity)")).toBe(true)
}
})

test("Gemini CLI models have (Gemini CLI) in name", () => {
const models = (ANTIGRAVITY_PROVIDER_CONFIG as any).google.models as Record<string, any>

const geminiCliModels = [
"gemini-2.5-flash",
"gemini-2.5-pro",
"gemini-3-flash-preview",
"gemini-3-pro-preview",
]

for (const key of geminiCliModels) {
expect(models[key].name.includes("(Gemini CLI)")).toBe(true)
}
})

test("Thinking models have variants with thinkingConfig or thinkingLevel", () => {
const models = (ANTIGRAVITY_PROVIDER_CONFIG as any).google.models as Record<string, any>

// #given models with variants
const modelsWithVariants = [
"antigravity-gemini-3-pro",
"antigravity-gemini-3-flash",
"antigravity-claude-sonnet-4-5-thinking",
"antigravity-claude-opus-4-5-thinking",
]

// #when checking variants
for (const key of modelsWithVariants) {
const model = models[key]
// #then variants should exist
expect(model.variants).toBeTruthy()
expect(Object.keys(model.variants).length).toBeGreaterThan(0)
}
Comment on lines +257 to +258
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Test does not verify variants contain required thinkingConfig/thinkingLevel despite test intent

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/cli/config-manager.test.ts, line 257:

<comment>Test does not verify variants contain required thinkingConfig/thinkingLevel despite test intent</comment>

<file context>
@@ -198,6 +206,57 @@ describe("config-manager ANTIGRAVITY_PROVIDER_CONFIG", () => {
+      const model = models[key]
+      // #then variants should exist
+      expect(model.variants).toBeTruthy()
+      expect(Object.keys(model.variants).length).toBeGreaterThan(0)
+    }
+  })
</file context>
Suggested change
expect(Object.keys(model.variants).length).toBeGreaterThan(0)
}
const variantEntries = Object.values(model.variants)
expect(variantEntries.length).toBeGreaterThan(0)
for (const variant of variantEntries) {
expect(variant.thinkingLevel || variant.thinkingConfig).toBeTruthy()
}

})
})

describe("generateOmoConfig - GitHub Copilot fallback", () => {
Expand Down
90 changes: 66 additions & 24 deletions src/cli/config-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -578,31 +578,73 @@ export async function runBunInstallWithDetails(): Promise<BunInstallResult> {
* @see https://github.com/NoeFabris/opencode-antigravity-auth#migration-guide-v127
*/
export const ANTIGRAVITY_PROVIDER_CONFIG = {
google: {
name: "Google",
models: {
"antigravity-gemini-3-pro-high": {
name: "Gemini 3 Pro High (Antigravity)",
thinking: true,
attachment: true,
limit: { context: 1048576, output: 65535 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] },
},
"antigravity-gemini-3-pro-low": {
name: "Gemini 3 Pro Low (Antigravity)",
thinking: true,
attachment: true,
limit: { context: 1048576, output: 65535 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] },
},
"antigravity-gemini-3-flash": {
name: "Gemini 3 Flash (Antigravity)",
attachment: true,
limit: { context: 1048576, output: 65536 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] },
},
google: {
models: {
"antigravity-gemini-3-pro": {
name: "Gemini 3 Pro (Antigravity)",
limit: { context: 1048576, output: 65535 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] },
variants: {
low: { thinkingLevel: "low" },
high: { thinkingLevel: "high" }
}
},
"antigravity-gemini-3-flash": {
name: "Gemini 3 Flash (Antigravity)",
limit: { context: 1048576, output: 65536 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] },
variants: {
minimal: { thinkingLevel: "minimal" },
low: { thinkingLevel: "low" },
medium: { thinkingLevel: "medium" },
high: { thinkingLevel: "high" }
}
},
"antigravity-claude-sonnet-4-5": {
name: "Claude Sonnet 4.5 (Antigravity)",
limit: { context: 200000, output: 64000 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] }
},
"antigravity-claude-sonnet-4-5-thinking": {
name: "Claude Sonnet 4.5 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-5-thinking": {
name: "Claude Opus 4.5 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 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] }
},
"gemini-2.5-pro": {
name: "Gemini 2.5 Pro (Gemini CLI)",
limit: { context: 1048576, output: 65536 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] }
},
"gemini-3-flash-preview": {
name: "Gemini 3 Flash Preview (Gemini CLI)",
limit: { context: 1048576, output: 65536 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] }
},
"gemini-3-pro-preview": {
name: "Gemini 3 Pro Preview (Gemini CLI)",
limit: { context: 1048576, output: 65535 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] }
}
}
},
},
}


Expand Down
Loading