From d17c627064631faf09e48462db7d7a097f7945e4 Mon Sep 17 00:00:00 2001 From: Siddharth Ganesan <33737564+Sg312@users.noreply.github.com> Date: Fri, 7 Nov 2025 18:41:03 -0800 Subject: [PATCH] fix(deployed-chat): fix duplication and file uploads (#1853) --- apps/sim/app/chat/hooks/use-chat-streaming.ts | 24 +++++++++++++++---- apps/sim/app/templates/[id]/template.tsx | 2 +- .../contexts/chat/chat-file-manager.ts | 19 +++++++++------ 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/apps/sim/app/chat/hooks/use-chat-streaming.ts b/apps/sim/app/chat/hooks/use-chat-streaming.ts index 6003aa727d..52cc2903ca 100644 --- a/apps/sim/app/chat/hooks/use-chat-streaming.ts +++ b/apps/sim/app/chat/hooks/use-chat-streaming.ts @@ -245,10 +245,26 @@ export function useChatStreaming() { let finalContent = accumulatedText if (formattedOutputs.length > 0) { - const combinedOutputs = formattedOutputs.join('\n\n') - finalContent = finalContent - ? `${finalContent.trim()}\n\n${combinedOutputs}` - : combinedOutputs + const trimmedStreamingContent = accumulatedText.trim() + + const uniqueOutputs = formattedOutputs.filter((output) => { + const trimmedOutput = output.trim() + if (!trimmedOutput) return false + + // Skip outputs that exactly match the streamed content to avoid duplication + if (trimmedStreamingContent && trimmedOutput === trimmedStreamingContent) { + return false + } + + return true + }) + + if (uniqueOutputs.length > 0) { + const combinedOutputs = uniqueOutputs.join('\n\n') + finalContent = finalContent + ? `${finalContent.trim()}\n\n${combinedOutputs}` + : combinedOutputs + } } if (!finalContent) { diff --git a/apps/sim/app/templates/[id]/template.tsx b/apps/sim/app/templates/[id]/template.tsx index 67117b788e..92ab790d64 100644 --- a/apps/sim/app/templates/[id]/template.tsx +++ b/apps/sim/app/templates/[id]/template.tsx @@ -835,7 +835,7 @@ export default function TemplateDetails() { {template.details?.about && (