fix(deployed-chat): fix duplication and file uploads (#1853)

This commit is contained in:
Siddharth Ganesan
2025-11-07 18:41:03 -08:00
committed by GitHub
parent c8ea08e130
commit d17c627064
3 changed files with 33 additions and 12 deletions

View File

@@ -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) {

View File

@@ -835,7 +835,7 @@ export default function TemplateDetails() {
{template.details?.about && (
<div className='mt-8'>
<h3 className='mb-3 font-semibold text-lg'>About this Workflow</h3>
<div className='prose prose-sm max-w-none dark:prose-invert'>
<div className='prose prose-sm dark:prose-invert max-w-none'>
<ReactMarkdown>{template.details.about}</ReactMarkdown>
</div>
</div>

View File

@@ -5,7 +5,8 @@ import type { UserFile } from '@/executor/types'
const logger = createLogger('ChatFileManager')
export interface ChatFile {
dataUrl?: string // Base64-encoded file data (data:mime;base64,...)
data?: string // Legacy field - base64-encoded file data (data:mime;base64,...) or raw base64
dataUrl?: string // Preferred field - base64-encoded file data (data:mime;base64,...)
url?: string // Direct URL to existing file
name: string // Original filename
type: string // MIME type
@@ -46,12 +47,16 @@ export async function processChatFiles(
}
)
const transformedFiles = files.map((file) => ({
type: file.dataUrl ? ('file' as const) : ('url' as const),
data: file.dataUrl || file.url || '',
name: file.name,
mime: file.type,
}))
const transformedFiles = files.map((file) => {
const inlineData = file.dataUrl || file.data
return {
type: inlineData ? ('file' as const) : ('url' as const),
data: inlineData || file.url || '',
name: file.name,
mime: file.type,
}
})
const userFiles = await processExecutionFiles(
transformedFiles,