From 5abf7102c034eec3779077dad70f45febc88f022 Mon Sep 17 00:00:00 2001 From: Anurag Saxena Date: Thu, 26 Mar 2026 23:51:02 -0400 Subject: [PATCH] fix: inject placeholder message when Responses API input[] is empty (closes #389) (#419) --- open-sse/translator/helpers/responsesApiHelper.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/open-sse/translator/helpers/responsesApiHelper.js b/open-sse/translator/helpers/responsesApiHelper.js index 8254042..87295bb 100644 --- a/open-sse/translator/helpers/responsesApiHelper.js +++ b/open-sse/translator/helpers/responsesApiHelper.js @@ -1,6 +1,8 @@ /** * Normalize Responses API input to array format. * Accepts string or array, returns array of message items. + * An empty array is treated like an empty string — providers require at least one user + * message, so we inject a placeholder rather than forwarding an empty messages[]. * @param {string|Array} input - raw input from Responses API body * @returns {Array|null} normalized array or null if invalid */ @@ -9,7 +11,13 @@ export function normalizeResponsesInput(input) { const text = input.trim() === "" ? "..." : input; return [{ type: "message", role: "user", content: [{ type: "input_text", text }] }]; } - if (Array.isArray(input)) return input; + if (Array.isArray(input)) { + // Empty input[] would produce messages:[] which all providers reject (#389) + if (input.length === 0) { + return [{ type: "message", role: "user", content: [{ type: "input_text", text: "..." }] }]; + } + return input; + } return null; }