From 5fe2c81cf96af9e775a1f67b55b463ffee7ecdd5 Mon Sep 17 00:00:00 2001 From: Anurag Saxena Date: Fri, 3 Apr 2026 21:51:00 -0400 Subject: [PATCH] fix: skip function_call items with empty/missing name to prevent Codex 400 error (closes #444) (#487) --- open-sse/translator/helpers/responsesApiHelper.js | 2 ++ open-sse/translator/request/openai-responses.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/open-sse/translator/helpers/responsesApiHelper.js b/open-sse/translator/helpers/responsesApiHelper.js index 87295bb6..8bb87b8b 100644 --- a/open-sse/translator/helpers/responsesApiHelper.js +++ b/open-sse/translator/helpers/responsesApiHelper.js @@ -87,6 +87,8 @@ export function convertResponsesApiFormat(body) { tool_calls: [] }; } + // Skip items with empty/missing name — upstream APIs reject nameless tool calls (#444) + if (!item.name || typeof item.name !== "string" || item.name.trim() === "") continue; currentAssistantMsg.tool_calls.push({ id: item.call_id, type: "function", diff --git a/open-sse/translator/request/openai-responses.js b/open-sse/translator/request/openai-responses.js index 636da6cc..6bfb0856 100644 --- a/open-sse/translator/request/openai-responses.js +++ b/open-sse/translator/request/openai-responses.js @@ -75,6 +75,8 @@ export function openaiResponsesToOpenAIRequest(model, body, stream, credentials) tool_calls: [] }; } + // Skip items with empty/missing name — Codex/OpenAI reject nameless tool calls (#444) + if (!item.name || typeof item.name !== "string" || item.name.trim() === "") continue; currentAssistantMsg.tool_calls.push({ id: item.call_id, type: "function",