diff --git a/internal/runtime/executor/antigravity_executor.go b/internal/runtime/executor/antigravity_executor.go index 73914750..9fc4e722 100644 --- a/internal/runtime/executor/antigravity_executor.go +++ b/internal/runtime/executor/antigravity_executor.go @@ -724,7 +724,7 @@ func geminiToAntigravity(modelName string, payload []byte, projectID string) []b template, _ = sjson.Delete(template, "request.safetySettings") template, _ = sjson.Set(template, "request.toolConfig.functionCallingConfig.mode", "VALIDATED") - template, _ = sjson.Delete(template, "request.generationConfig.maxOutputTokens") + if !strings.HasPrefix(modelName, "gemini-3-") { if thinkingLevel := gjson.Get(template, "request.generationConfig.thinkingConfig.thinkingLevel"); thinkingLevel.Exists() { template, _ = sjson.Delete(template, "request.generationConfig.thinkingConfig.thinkingLevel") @@ -732,7 +732,7 @@ func geminiToAntigravity(modelName string, payload []byte, projectID string) []b } } - if strings.HasPrefix(modelName, "claude-sonnet-") { + if strings.Contains(modelName, "claude") { gjson.Get(template, "request.tools").ForEach(func(key, tool gjson.Result) bool { tool.Get("functionDeclarations").ForEach(func(funKey, funcDecl gjson.Result) bool { if funcDecl.Get("parametersJsonSchema").Exists() { @@ -744,6 +744,8 @@ func geminiToAntigravity(modelName string, payload []byte, projectID string) []b }) return true }) + } else { + template, _ = sjson.Delete(template, "request.generationConfig.maxOutputTokens") } return []byte(template) diff --git a/internal/translator/antigravity/claude/antigravity_claude_request.go b/internal/translator/antigravity/claude/antigravity_claude_request.go index 9857ffc2..dfc4d893 100644 --- a/internal/translator/antigravity/claude/antigravity_claude_request.go +++ b/internal/translator/antigravity/claude/antigravity_claude_request.go @@ -181,6 +181,9 @@ func ConvertClaudeRequestToAntigravity(modelName string, inputRawJSON []byte, _ if v := gjson.GetBytes(rawJSON, "top_k"); v.Exists() && v.Type == gjson.Number { out, _ = sjson.Set(out, "request.generationConfig.topK", v.Num) } + if v := gjson.GetBytes(rawJSON, "max_tokens"); v.Exists() && v.Type == gjson.Number { + out, _ = sjson.Set(out, "request.generationConfig.maxOutputTokens", v.Num) + } outBytes := []byte(out) outBytes = common.AttachDefaultSafetySettings(outBytes, "request.safetySettings")