fix(session): reconcile restore after rebase
This commit is contained in:
@@ -474,7 +474,10 @@ function adoptStoredEvents(events: SessionEvent[], id: SessionId): SessionEvent[
|
|||||||
assertSupportedEvents(events, id)
|
assertSupportedEvents(events, id)
|
||||||
const messageIds = new Map<number, PersistedMessageId>()
|
const messageIds = new Map<number, PersistedMessageId>()
|
||||||
for (const [index, event] of events.entries()) {
|
for (const [index, event] of events.entries()) {
|
||||||
const adopted = adoptSessionEvent(migrateLegacyMessageEvent(event, id, messageIds))
|
const migratedStart = migrateLegacyTurnStartEvent(event, id)
|
||||||
|
const migratedTurn = migrateLegacyTurnEndEvent(migratedStart, id)
|
||||||
|
const migratedSteering = migrateLegacySteeringEvent(migratedTurn, id)
|
||||||
|
const adopted = adoptSessionEvent(migrateLegacyMessageEvent(migratedSteering, id, messageIds))
|
||||||
events[index] = adopted
|
events[index] = adopted
|
||||||
const messageId = eventMessageId(adopted)
|
const messageId = eventMessageId(adopted)
|
||||||
if (messageId !== undefined) messageIds.set(adopted.seq, messageId)
|
if (messageId !== undefined) messageIds.set(adopted.seq, messageId)
|
||||||
@@ -731,7 +734,7 @@ export class PersistenceCoordinator<TornMarker = unknown> {
|
|||||||
this.assertStoredId(id, suffix.meta)
|
this.assertStoredId(id, suffix.meta)
|
||||||
this.assertVersion(suffix.meta)
|
this.assertVersion(suffix.meta)
|
||||||
if (suffix.events.some(needsLegacyPrefix)) {
|
if (suffix.events.some(needsLegacyPrefix)) {
|
||||||
const whole = await this.inspectCore(id, signal)
|
const whole = await this.readStoredPrefix(id, signal)
|
||||||
return { meta: whole.meta, events: whole.events.filter(event => event.seq >= fromSeq) }
|
return { meta: whole.meta, events: whole.events.filter(event => event.seq >= fromSeq) }
|
||||||
}
|
}
|
||||||
return { meta: structuredClone(suffix.meta), events: snapshotStoredEvents(suffix.events, id) }
|
return { meta: structuredClone(suffix.meta), events: snapshotStoredEvents(suffix.events, id) }
|
||||||
|
|||||||
@@ -414,7 +414,7 @@ describe('PersistenceCoordinator session preparations', () => {
|
|||||||
type: 'turn/start',
|
type: 'turn/start',
|
||||||
seq: 0,
|
seq: 0,
|
||||||
time: 1,
|
time: 1,
|
||||||
data: { turn: 1, trigger: { kind: 'message', source: { kind: 'user' } } },
|
data: { turn: 1 },
|
||||||
}],
|
}],
|
||||||
})
|
})
|
||||||
let coordinator!: PersistenceCoordinator<never>
|
let coordinator!: PersistenceCoordinator<never>
|
||||||
@@ -524,7 +524,7 @@ describe('PersistenceCoordinator session preparations', () => {
|
|||||||
type: 'turn/start',
|
type: 'turn/start',
|
||||||
seq: oneTurnLog().length,
|
seq: oneTurnLog().length,
|
||||||
time: 7,
|
time: 7,
|
||||||
data: { turn: 2, trigger: { kind: 'message', source: { kind: 'user' } } },
|
data: { turn: 2 },
|
||||||
}])).rejects.toThrow(/persisted preparation is reserved/)
|
}])).rejects.toThrow(/persisted preparation is reserved/)
|
||||||
} finally {
|
} finally {
|
||||||
preparation?.[Symbol.dispose]()
|
preparation?.[Symbol.dispose]()
|
||||||
|
|||||||
Reference in New Issue
Block a user