fix: resolve broken forked sessions with compactions due to missing parent-child message references (#6445)

pull/7502/head
ryanwyler 2026-01-09 10:42:55 -07:00 committed by GitHub
parent 7c2907cbb4
commit a5edf3a311
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 1 deletions

View File

@ -151,12 +151,19 @@ export namespace Session {
directory: Instance.directory,
})
const msgs = await messages({ sessionID: input.sessionID })
const idMap = new Map<string, string>()
for (const msg of msgs) {
if (input.messageID && msg.info.id >= input.messageID) break
const newID = Identifier.ascending("message")
idMap.set(msg.info.id, newID)
const parentID = msg.info.role === "assistant" && msg.info.parentID ? idMap.get(msg.info.parentID) : undefined
const cloned = await updateMessage({
...msg.info,
sessionID: session.id,
id: Identifier.ascending("message"),
id: newID,
...(parentID && { parentID }),
})
for (const part of msg.parts) {