From 5ff66f2d77e12716248a79eeb71903ba678a9048 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Fri, 12 Dec 2025 02:12:32 -0500 Subject: [PATCH] fix: Refine response message handling in useStepHandler - Updated logic to determine the appropriate response message based on the last message's origin, ensuring correct message replacement or appending based on user interaction. This change enhances the accuracy of message updates in the chat flow. --- client/src/hooks/SSE/useStepHandler.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/client/src/hooks/SSE/useStepHandler.ts b/client/src/hooks/SSE/useStepHandler.ts index f2c91820df..b061a43b36 100644 --- a/client/src/hooks/SSE/useStepHandler.ts +++ b/client/src/hooks/SSE/useStepHandler.ts @@ -232,7 +232,12 @@ export default function useStepHandler({ let response = messageMap.current.get(responseMessageId); if (!response) { - const responseMessage = messages[messages.length - 1] as TMessage; + // Find the actual response message - check if last message is a response, otherwise use initialResponse + const lastMessage = messages[messages.length - 1] as TMessage; + const responseMessage = + lastMessage && !lastMessage.isCreatedByUser + ? lastMessage + : (submission?.initialResponse as TMessage); // Preserve existing content from DB (partial response) and prepend initialContent if provided const existingContent = responseMessage?.content ?? []; @@ -248,7 +253,10 @@ export default function useStepHandler({ }; messageMap.current.set(responseMessageId, response); - setMessages([...messages.slice(0, -1), response]); + // If last message was user message, append response; otherwise replace last + const baseMessages = + lastMessage && !lastMessage.isCreatedByUser ? messages.slice(0, -1) : messages; + setMessages([...baseMessages, response]); } // Store tool call IDs if present