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",