























@@ -264,7 +264,7 @@ function messageDisplaySignature(message: unknown): string | null {
264264}
265265}
266266267-function preserveOptimisticTailMessages(
267+export function preserveOptimisticTailMessages(
268268historyMessages: unknown[],
269269previousMessages: unknown[],
270270): unknown[] {
@@ -279,29 +279,37 @@ function preserveOptimisticTailMessages(
279279 ? previousMessages
280280 : historyMessages;
281281}
282-const historySignatures = new Set(
283-historyMessages
284-.map((message) => messageDisplaySignature(message))
285-.filter((signature): signature is string => Boolean(signature)),
286-);
282+const historySignatureIndexes = new Map<string, number>();
283+historyMessages.forEach((message, index) => {
284+const signature = messageDisplaySignature(message);
285+if (signature) {
286+historySignatureIndexes.set(signature, index);
287+}
288+});
287289let sharedPreviousIndex = -1;
290+let sharedHistoryIndex = -1;
288291for (let index = previousMessages.length - 1; index >= 0; index--) {
289292const signature = messageDisplaySignature(previousMessages[index]);
290-if (signature && historySignatures.has(signature)) {
293+const historyIndex = signature ? historySignatureIndexes.get(signature) : undefined;
294+if (typeof historyIndex === "number") {
291295sharedPreviousIndex = index;
296+sharedHistoryIndex = historyIndex;
292297break;
293298}
294299}
295300if (sharedPreviousIndex < 0) {
296301return historyMessages;
297302}
303+if (sharedHistoryIndex < historyMessages.length - 1) {
304+return historyMessages;
305+}
298306const optimisticTail: unknown[] = [];
299307for (const message of previousMessages.slice(sharedPreviousIndex + 1)) {
300308if (!isLocallyOptimisticHistoryMessage(message) || shouldHideHistoryMessage(message)) {
301309return historyMessages;
302310}
303311const signature = messageDisplaySignature(message);
304-if (!signature || historySignatures.has(signature)) {
312+if (!signature || historySignatureIndexes.has(signature)) {
305313return historyMessages;
306314}
307315optimisticTail.push(message);
@@ -544,6 +552,9 @@ export async function sendChatMessage(
544552if (!msg && !hasAttachments) {
545553return null;
546554}
555+if (state.chatSending) {
556+return state.chatRunId;
557+}
547558548559const now = Date.now();
549560此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。