Skip reverted messages from display caches

This commit is contained in:
Shantur Rathore
2025-11-30 10:43:10 +00:00
parent ddd8ce341a
commit f0ed98222a

View File

@@ -192,8 +192,17 @@ export default function MessageStreamV2(props: MessageStreamV2Props) {
const showUsagePreference = () => preferences().showUsageMetrics ?? true const showUsagePreference = () => preferences().showUsageMetrics ?? true
const store = createMemo(() => messageStoreBus.getOrCreate(props.instanceId)) const store = createMemo(() => messageStoreBus.getOrCreate(props.instanceId))
const messageIds = createMemo(() => store().getSessionMessageIds(props.sessionId)) const messageIds = createMemo(() => store().getSessionMessageIds(props.sessionId))
const visibleMessageIds = createMemo(() => {
const ids = messageIds()
const revert = store().getSessionRevert(props.sessionId)
if (!revert?.messageID) {
return ids
}
const stopIndex = ids.indexOf(revert.messageID)
return stopIndex === -1 ? ids : ids.slice(0, stopIndex)
})
const messageRecords = createMemo(() => const messageRecords = createMemo(() =>
messageIds() visibleMessageIds()
.map((id) => store().getMessage(id)) .map((id) => store().getMessage(id))
.filter((record): record is MessageRecord => Boolean(record)), .filter((record): record is MessageRecord => Boolean(record)),
) )
@@ -250,15 +259,17 @@ export default function MessageStreamV2(props: MessageStreamV2Props) {
const messageIndexMap = createMemo(() => { const messageIndexMap = createMemo(() => {
const map = new Map<string, number>() const map = new Map<string, number>()
const records = messageRecords() const ids = visibleMessageIds()
records.forEach((record, index) => map.set(record.id, index)) ids.forEach((id, index) => map.set(id, index))
return map return map
}) })
const lastAssistantIndex = createMemo(() => { const lastAssistantIndex = createMemo(() => {
const records = messageRecords() const ids = visibleMessageIds()
for (let index = records.length - 1; index >= 0; index--) { const resolvedStore = store()
if (records[index].role === "assistant") { for (let index = ids.length - 1; index >= 0; index--) {
const record = resolvedStore.getMessage(ids[index])
if (record?.role === "assistant") {
return index return index
} }
} }