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
4 changes: 2 additions & 2 deletions src/providers/antigravity-models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ export function isAntigravitySuffixModelId(modelId: string): boolean {
*
* Precedence (evaluated in order):
* 1. Suffix wire ID or compat alias → resolve via `resolveAntigravityWireModelId`, no thinkingConfig.
* 2. Mapped Gemini base with effort → return mapped wire ID + thinkingLevel.
* 2. Mapped Gemini base with effort → return mapped wire ID, no thinkingConfig.
* 3. Mapped Gemini base without effort → return default-effort wire ID, no thinkingConfig.
* 4. Claude Opus with effort → return identity + thinkingLevel (no suffix variants exist).
* 5. All other IDs → return `resolveAntigravityWireModelId(modelId)`, no thinkingConfig.
Expand All @@ -155,7 +155,7 @@ export function resolveAntigravityEffortWireModel(
const effortMap = ANTIGRAVITY_EFFORT_WIRE_MAP[modelId];
if (effortMap) {
if (effort && effort in effortMap) {
return { wireModelId: effortMap[effort]!, thinkingLevel: effort };
return { wireModelId: effortMap[effort]! };
}
const defaultEffort = ANTIGRAVITY_DEFAULT_EFFORT[modelId]!;
return { wireModelId: effortMap[defaultEffort]! };
Expand Down
22 changes: 11 additions & 11 deletions tests/google-antigravity-wire.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,20 +161,20 @@ describe("antigravity CCA envelope", () => {
expect(env.request.toolConfig?.functionCallingConfig?.mode).toBeUndefined();
});

// ── Effort routing: base model + effort → wire model ID + thinkingConfig ──
// ── Gemini effort routing: the wire-model suffix is the complete effort signal ──

test("gemini-3.6-flash with effort=high routes to gemini-3.6-flash-high + thinkingConfig", async () => {
test("gemini-3.6-flash with effort=high routes to suffix without thinkingConfig", async () => {
const req = await createGoogleAdapter(effortProvider).buildRequest(parsedWithEffort("gemini-3.6-flash", "high"));
const env = JSON.parse(req.body);
expect(env.model).toBe("gemini-3.6-flash-high");
expect(env.request.generationConfig?.thinkingConfig?.thinkingLevel).toBe("high");
expect(env.request.generationConfig?.thinkingConfig).toBeUndefined();
});

test("gemini-3.6-flash with effort=low routes to gemini-3.6-flash-low + thinkingConfig", async () => {
test("gemini-3.6-flash with effort=low routes to suffix without thinkingConfig", async () => {
const req = await createGoogleAdapter(effortProvider).buildRequest(parsedWithEffort("gemini-3.6-flash", "low"));
const env = JSON.parse(req.body);
expect(env.model).toBe("gemini-3.6-flash-low");
expect(env.request.generationConfig?.thinkingConfig?.thinkingLevel).toBe("low");
expect(env.request.generationConfig?.thinkingConfig).toBeUndefined();
});

test("gemini-3.6-flash with no effort defaults to medium wire ID, no thinkingConfig", async () => {
Expand All @@ -188,21 +188,21 @@ describe("antigravity CCA envelope", () => {
const req = await createGoogleAdapter(effortProvider).buildRequest(parsedWithEffort("gemini-3.6-flash", "max"));
const env = JSON.parse(req.body);
expect(env.model).toBe("gemini-3.6-flash-high");
expect(env.request.generationConfig?.thinkingConfig?.thinkingLevel).toBe("high");
expect(env.request.generationConfig?.thinkingConfig).toBeUndefined();
});

test("gemini-3.1-pro with effort=low routes to gemini-3.1-pro-low + thinkingConfig", async () => {
test("gemini-3.1-pro with effort=low routes to suffix without thinkingConfig", async () => {
const req = await createGoogleAdapter(effortProvider).buildRequest(parsedWithEffort("gemini-3.1-pro", "low"));
const env = JSON.parse(req.body);
expect(env.model).toBe("gemini-3.1-pro-low");
expect(env.request.generationConfig?.thinkingConfig?.thinkingLevel).toBe("low");
expect(env.request.generationConfig?.thinkingConfig).toBeUndefined();
});

test("gemini-3.1-pro with effort=high routes to gemini-pro-agent + thinkingConfig", async () => {
test("gemini-3.1-pro with effort=high routes to suffix without thinkingConfig", async () => {
const req = await createGoogleAdapter(effortProvider).buildRequest(parsedWithEffort("gemini-3.1-pro", "high"));
const env = JSON.parse(req.body);
expect(env.model).toBe("gemini-pro-agent");
expect(env.request.generationConfig?.thinkingConfig?.thinkingLevel).toBe("high");
expect(env.request.generationConfig?.thinkingConfig).toBeUndefined();
});

test("gemini-3.1-pro with no effort defaults to gemini-pro-agent (high)", async () => {
Expand All @@ -216,7 +216,7 @@ describe("antigravity CCA envelope", () => {
const req = await createGoogleAdapter(effortProvider).buildRequest(parsedWithEffort("gemini-3.1-pro", "medium"));
const env = JSON.parse(req.body);
expect(env.model).toBe("gemini-3.1-pro-low");
expect(env.request.generationConfig?.thinkingConfig?.thinkingLevel).toBe("low");
expect(env.request.generationConfig?.thinkingConfig).toBeUndefined();
});

// ── Suffix-ID precedence: suffix IS the effort, no thinkingConfig ──
Expand Down
Loading