From 72c7ef7647d812d8bc7b470def5c957fe0555164 Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Thu, 27 Nov 2025 16:18:49 +0800 Subject: [PATCH] **fix(translator): handle non-JSON output parsing for OpenAI function responses** - Updated `antigravity_openai_request.go` to process non-JSON outputs gracefully by verifying and distinguishing between JSON and plain string formats. - Ensured proper assignment of parsed or raw response to `functionResponse`. --- .../chat-completions/antigravity_openai_request.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/translator/antigravity/openai/chat-completions/antigravity_openai_request.go b/internal/translator/antigravity/openai/chat-completions/antigravity_openai_request.go index fd8e0071..2c1671f5 100644 --- a/internal/translator/antigravity/openai/chat-completions/antigravity_openai_request.go +++ b/internal/translator/antigravity/openai/chat-completions/antigravity_openai_request.go @@ -271,7 +271,15 @@ func ConvertOpenAIRequestToAntigravity(modelName string, inputRawJSON []byte, _ if resp == "" { resp = "{}" } - toolNode, _ = sjson.SetBytes(toolNode, "parts."+itoa(pp)+".functionResponse.response.result", []byte(resp)) + // Handle non-JSON output gracefully (matches dev branch approach) + if resp != "null" { + parsed := gjson.Parse(resp) + if parsed.Type == gjson.JSON { + toolNode, _ = sjson.SetRawBytes(toolNode, "parts."+itoa(pp)+".functionResponse.response.result", []byte(parsed.Raw)) + } else { + toolNode, _ = sjson.SetBytes(toolNode, "parts."+itoa(pp)+".functionResponse.response.result", resp) + } + } pp++ } }