From 6a7a6022d4c2a7b4a50a5b847762b43a2e19a38c Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Tue, 10 Mar 2026 23:31:31 -0300 Subject: [PATCH] fix(chat): strip empty name fields from messages/input before upstream (#291) OpenAI-compatible providers (OpenAI, Codex) reject name:'' with 400 errors: - 'Unknown parameter: input[1].name' - 'Invalid tools[0].name: empty string' Some clients (e.g. PocketPaw) forward assistant turns with name:'' in the OpenAI Responses API input[] and chat completions messages[]. Fix: filter out name:'' from messages[] and input[] before translateRequest. Non-empty non-null name values are preserved per OpenAI spec. --- open-sse/handlers/chatCore.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/open-sse/handlers/chatCore.ts b/open-sse/handlers/chatCore.ts index 2e0305b166..f0175a0b3d 100644 --- a/open-sse/handlers/chatCore.ts +++ b/open-sse/handlers/chatCore.ts @@ -158,6 +158,28 @@ export async function handleChatCore({ translatedBody = { ...translatedBody, _disableToolPrefix: true }; } + // ── #291: Strip empty name fields from messages/input items ── + // Upstream providers (OpenAI, Codex) reject name:"" with 400 errors. + // Clients like PocketPaw may forward empty name fields from assistant turns. + if (Array.isArray(body.messages)) { + body.messages = body.messages.map((msg: Record) => { + if (msg.name === "") { + const { name: _n, ...rest } = msg; + return rest; + } + return msg; + }); + } + if (Array.isArray(body.input)) { + body.input = body.input.map((item: Record) => { + if (item.name === "") { + const { name: _n, ...rest } = item; + return rest; + } + return item; + }); + } + translatedBody = translateRequest( sourceFormat, targetFormat,