MCPcopy Index your code
hub / github.com/Opencode-DCP/opencode-dynamic-context-pruning / assignMessageRefs

Function assignMessageRefs

lib/message-ids.ts:119–153  ·  view source on GitHub ↗
(state: SessionState, messages: WithParts[])

Source from the content-addressed store, hash-verified

117}
118
119export function assignMessageRefs(state: SessionState, messages: WithParts[]): number {
120 let assigned = 0
121 let skippedSubAgentPrompt = false
122
123 for (const message of messages) {
124 if (isIgnoredUserMessage(message)) {
125 continue
126 }
127
128 if (state.isSubAgent && !skippedSubAgentPrompt && message.info.role === "user") {
129 skippedSubAgentPrompt = true
130 continue
131 }
132
133 const rawMessageId = message.info.id
134 if (typeof rawMessageId !== "string" || rawMessageId.length === 0) {
135 continue
136 }
137
138 const existingRef = state.messageIds.byRawId.get(rawMessageId)
139 if (existingRef) {
140 if (state.messageIds.byRef.get(existingRef) !== rawMessageId) {
141 state.messageIds.byRef.set(existingRef, rawMessageId)
142 }
143 continue
144 }
145
146 const ref = allocateNextMessageRef(state)
147 state.messageIds.byRawId.set(rawMessageId, ref)
148 state.messageIds.byRef.set(ref, rawMessageId)
149 assigned++
150 }
151
152 return assigned
153}
154
155function allocateNextMessageRef(state: SessionState): string {
156 let candidate = Number.isInteger(state.messageIds.nextRef)

Callers 4

prepareSessionFunction · 0.90

Calls 2

isIgnoredUserMessageFunction · 0.90
allocateNextMessageRefFunction · 0.85

Tested by

no test coverage detected