diff --git a/open-sse/translator/request/openai-to-kiro.js b/open-sse/translator/request/openai-to-kiro.js index add9e88f..b16af83f 100644 --- a/open-sse/translator/request/openai-to-kiro.js +++ b/open-sse/translator/request/openai-to-kiro.js @@ -254,6 +254,20 @@ function convertMessages(messages, tools, model) { } }); + // Merge consecutive user messages (Kiro requires alternating user/assistant) + const mergedHistory = []; + for (let i = 0; i < history.length; i++) { + const current = history[i]; + if (current.userInputMessage && + mergedHistory.length > 0 && + mergedHistory[mergedHistory.length - 1].userInputMessage) { + const prev = mergedHistory[mergedHistory.length - 1]; + prev.userInputMessage.content += "\n\n" + current.userInputMessage.content; + } else { + mergedHistory.push(current); + } + } + // Inject tools into currentMessage AFTER cleanup if (firstHistoryTools && currentMessage?.userInputMessage && !currentMessage.userInputMessage.userInputMessageContext?.tools) { @@ -263,7 +277,7 @@ function convertMessages(messages, tools, model) { currentMessage.userInputMessage.userInputMessageContext.tools = firstHistoryTools; } - return { history, currentMessage }; + return { history: mergedHistory, currentMessage }; } /**