mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-06 03:00:16 -04:00
fix(deployed-chat): fix duplication and file uploads (#1853)
This commit is contained in:
committed by
GitHub
parent
c8ea08e130
commit
d17c627064
@@ -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) {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user