fix(translator): strict Anthropic content block compliance (#2225)

Filter empty text blocks from thoughtSignature-only parts, preserve
tool_calls when functionResponse and functionCall coexist in the same
content, and skip empty regular text parts before they reach Claude.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Sahrul Ramadhan Hardiansyah
2026-07-03 10:58:39 +07:00
committed by decolua
co-authored by Cursor
parent 7afaecd617
commit ce6120ce7b
2 changed files with 22 additions and 7 deletions
+3 -4
View File
@@ -9,10 +9,9 @@ const AG2O = (req) =>
translateRequest(FORMATS.ANTIGRAVITY, FORMATS.OPENAI, "m", { request: req }, true, null, null);
describe("Antigravity → OpenAI", () => {
// antigravity-to-openai.js:177-189 — content with BOTH functionResponse and functionCall/text
// returns toolResults early → drops the tool calls / text.
// KNOWN BUG
it.fails("functionResponse + functionCall in same content keeps both", () => {
// antigravity-to-openai.js — content with BOTH functionResponse and functionCall/text
// previously returned toolResults early → dropped tool calls / text (fixed in #2225)
it("functionResponse + functionCall in same content keeps both", () => {
const out = AG2O({
contents: [{
role: "model",