fix: preserve replies after session recovery
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
import { extractConversationMessageText } from './conversation-memory.mjs';
|
||||
import { mergeConversationSnapshot } from './chat-finish-sync.mjs';
|
||||
|
||||
export function parseStoredConversationRow(row) {
|
||||
if (!row) return null;
|
||||
@@ -215,6 +216,15 @@ export function repairConversationFromDbRows(gooseMessages, dbRows) {
|
||||
return Array.isArray(gooseMessages) ? gooseMessages : [];
|
||||
}
|
||||
if (dbBuilt.length === 0) return Array.isArray(gooseMessages) ? gooseMessages : [];
|
||||
const goose = Array.isArray(gooseMessages) ? gooseMessages : [];
|
||||
const dbIds = new Set(dbBuilt.map((message) => message?.id).filter(Boolean));
|
||||
const hasSharedAnchor = goose.some((message) => message?.id && dbIds.has(message.id));
|
||||
if (hasSharedAnchor) {
|
||||
// A recovered Goose session can contain only the last DB-backed user turn
|
||||
// plus replies created after rotation. Prefer DB content for shared history,
|
||||
// while retaining every Goose-only reply and follow-up around that anchor.
|
||||
return mergeConversationSnapshot(goose, dbBuilt);
|
||||
}
|
||||
return dbBuilt;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user