MCPcopy Create free account
hub / github.com/anomalyco/opencode / applyMessagePage

Function applyMessagePage

packages/app/src/context/server-session.ts:528–560  ·  view source on GitHub ↗
(
    sessionID: string,
    page: MessagePage,
    load: MessageLoadState | undefined,
    preserveUnfetched: boolean | ((message: Message) => boolean),
    cleanupOrphans: boolean,
  )

Source from the content-addressed store, hash-verified

526 }
527
528 const applyMessagePage = (
529 sessionID: string,
530 page: MessagePage,
531 load: MessageLoadState | undefined,
532 preserveUnfetched: boolean | ((message: Message) => boolean),
533 cleanupOrphans: boolean,
534 ) => {
535 const merged = mergeOptimisticPage(page, [...(optimistic.get(sessionID)?.values() ?? [])])
536 merged.observed.forEach((item) => {
537 if (!load?.clearedMessageParts.has(item.messageID)) confirmOptimistic(sessionID, item.messageID, item.parts)
538 })
539 const touchedMessages = new Set([...(load?.touchedMessages ?? []), ...(removedMessages.get(sessionID) ?? [])])
540 const messages = reconcileFetched(merged.session, data.message[sessionID] ?? [], {
541 touched: touchedMessages,
542 retained: load?.retainedMessages,
543 preserveUnfetched,
544 })
545 batch(() => {
546 const messageIDs = replaceMessages(sessionID, messages)
547 replaceParts(sessionID, merged.part, messageIDs, load)
548 const orphans = orphanParts.get(sessionID)
549 if (cleanupOrphans && page.complete && orphans) {
550 for (const messageID of orphans) {
551 if (!messageIDs.has(messageID)) setData(produce((draft) => deleteMessageParts(draft, messageID)))
552 }
553 orphanParts.delete(sessionID)
554 }
555 setMeta("limit", sessionID, messages.length)
556 setMeta("cursor", sessionID, merged.cursor)
557 setMeta("complete", sessionID, merged.complete)
558 setMeta("at", sessionID, Date.now())
559 })
560 }
561
562 const loadMessages = async (sessionID: string, limit: number, before?: string, mode?: "replace" | "prepend") => {
563 if (meta.loading[sessionID]) return

Callers 1

loadMessagesFunction · 0.85

Calls 10

confirmOptimisticFunction · 0.85
reconcileFetchedFunction · 0.85
batchFunction · 0.85
replaceMessagesFunction · 0.85
replacePartsFunction · 0.85
deleteMessagePartsFunction · 0.85
mergeOptimisticPageFunction · 0.70
getMethod · 0.65
valuesMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected