From eeb836d62a16a4acb1f166a65a51fa3f36e42b2f Mon Sep 17 00:00:00 2001 From: ivan_yakimkin Date: Fri, 8 May 2026 11:05:26 +0300 Subject: [PATCH] fix(antigravity): don't inject default maxOutputTokens when client omits max_tokens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Real Antigravity client does not send maxOutputTokens when the user hasn't specified it — the Cloud Code server decides the output limit. OmniRoute was incorrectly injecting a capped default from model specs, which caused thinking models to return empty content with low limits. --- open-sse/translator/request/openai-to-gemini.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/open-sse/translator/request/openai-to-gemini.ts b/open-sse/translator/request/openai-to-gemini.ts index e79f0653fb..2f362ddb73 100644 --- a/open-sse/translator/request/openai-to-gemini.ts +++ b/open-sse/translator/request/openai-to-gemini.ts @@ -567,7 +567,17 @@ export function openaiToAntigravityRequest(model, body, stream, credentials = nu } const geminiCLI = openaiToGeminiCLIRequest(model, body, stream); - return wrapInCloudCodeEnvelope(model, geminiCLI, credentials, true); + const envelope = wrapInCloudCodeEnvelope(model, geminiCLI, credentials, true); + + // Match real Antigravity client: don't send maxOutputTokens when the user + // hasn't explicitly specified max_tokens / max_completion_tokens. + // The Cloud Code server decides the output limit on its own. + const clientRequestedMaxTokens = body.max_tokens ?? body.max_completion_tokens; + if (clientRequestedMaxTokens === undefined && envelope.request?.generationConfig) { + delete envelope.request.generationConfig.maxOutputTokens; + } + + return envelope; } // Register