Skip to content

Commit 6c1c13c

Browse files
committed
Fix duplicated message on edit old message
1 parent 94eff3f commit 6c1c13c

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

apps/sim/stores/panel/copilot/store.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2436,9 +2436,10 @@ export const useCopilotStore = create<CopilotStore>()(
24362436

24372437
// If already sending a message, queue this one instead
24382438
if (isSendingMessage) {
2439-
get().addToQueue(message, { fileAttachments, contexts })
2439+
get().addToQueue(message, { fileAttachments, contexts, messageId })
24402440
logger.info('[Copilot] Message queued (already sending)', {
24412441
queueLength: get().messageQueue.length + 1,
2442+
originalMessageId: messageId,
24422443
})
24432444
return
24442445
}
@@ -3164,8 +3165,12 @@ export const useCopilotStore = create<CopilotStore>()(
31643165
// Process next message in queue if any
31653166
const nextInQueue = get().messageQueue[0]
31663167
if (nextInQueue) {
3168+
// Use originalMessageId if available (from edit/resend), otherwise use queue entry id
3169+
const messageIdToUse = nextInQueue.originalMessageId || nextInQueue.id
31673170
logger.info('[Queue] Processing next queued message', {
31683171
id: nextInQueue.id,
3172+
originalMessageId: nextInQueue.originalMessageId,
3173+
messageIdToUse,
31693174
queueLength: get().messageQueue.length,
31703175
})
31713176
// Remove from queue and send
@@ -3176,7 +3181,7 @@ export const useCopilotStore = create<CopilotStore>()(
31763181
stream: true,
31773182
fileAttachments: nextInQueue.fileAttachments,
31783183
contexts: nextInQueue.contexts,
3179-
messageId: nextInQueue.id,
3184+
messageId: messageIdToUse,
31803185
})
31813186
}, 100)
31823187
}
@@ -3618,10 +3623,12 @@ export const useCopilotStore = create<CopilotStore>()(
36183623
fileAttachments: options?.fileAttachments,
36193624
contexts: options?.contexts,
36203625
queuedAt: Date.now(),
3626+
originalMessageId: options?.messageId,
36213627
}
36223628
set({ messageQueue: [...get().messageQueue, queuedMessage] })
36233629
logger.info('[Queue] Message added to queue', {
36243630
id: queuedMessage.id,
3631+
originalMessageId: options?.messageId,
36253632
queueLength: get().messageQueue.length,
36263633
})
36273634
},
@@ -3662,12 +3669,15 @@ export const useCopilotStore = create<CopilotStore>()(
36623669
await new Promise((resolve) => setTimeout(resolve, 50))
36633670
}
36643671

3672+
// Use originalMessageId if available (from edit/resend), otherwise use queue entry id
3673+
const messageIdToUse = message.originalMessageId || message.id
3674+
36653675
// Send the message
36663676
await get().sendMessage(message.content, {
36673677
stream: true,
36683678
fileAttachments: message.fileAttachments,
36693679
contexts: message.contexts,
3670-
messageId: message.id,
3680+
messageId: messageIdToUse,
36713681
})
36723682
},
36733683

apps/sim/stores/panel/copilot/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ export interface QueuedMessage {
7070
fileAttachments?: MessageFileAttachment[]
7171
contexts?: ChatContext[]
7272
queuedAt: number
73+
/** Original messageId to use when processing (for edit/resend flows) */
74+
originalMessageId?: string
7375
}
7476

7577
// Contexts attached to a user message
@@ -249,6 +251,8 @@ export interface CopilotActions {
249251
options?: {
250252
fileAttachments?: MessageFileAttachment[]
251253
contexts?: ChatContext[]
254+
/** Original messageId to preserve (for edit/resend flows) */
255+
messageId?: string
252256
}
253257
) => void
254258
removeFromQueue: (id: string) => void

0 commit comments

Comments
 (0)