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

Function remember

packages/app/src/context/server-session.ts:186–229  ·  view source on GitHub ↗
(session: Session)

Source from the content-addressed store, hash-verified

184 })
185
186 const remember = (session: Session) => {
187 setData("info", session.id, reconcile(session))
188 infoSeen.delete(session.id)
189 infoSeen.add(session.id)
190 if (infoSeen.size > sessionInfoLimit) {
191 const preserve = new Set([
192 ...pinned.keys(),
193 ...requests.keys(),
194 ...inflight.keys(),
195 ...inflightDiff.keys(),
196 ...inflightTodo.keys(),
197 ...messageLoads.keys(),
198 ...optimistic.keys(),
199 ...Object.entries(data.permission)
200 .filter(([, items]) => items.length > 0)
201 .map(([sessionID]) => sessionID),
202 ...Object.entries(data.question)
203 .filter(([, items]) => items.length > 0)
204 .map(([sessionID]) => sessionID),
205 ...Object.entries(data.session_status)
206 .filter(([, status]) => status.type !== "idle")
207 .map(([sessionID]) => sessionID),
208 ])
209 for (const sessionID of preserve) {
210 let current = data.info[sessionID]
211 while (current) {
212 preserve.add(current.id)
213 current = current.parentID ? data.info[current.parentID] : undefined
214 }
215 }
216 const stale: string[] = []
217 for (const sessionID of infoSeen) {
218 if (infoSeen.size - stale.length <= sessionInfoLimit) break
219 if (!preserve.has(sessionID)) stale.push(sessionID)
220 }
221 stale.forEach((sessionID) => infoSeen.delete(sessionID))
222 stale.forEach((sessionID) => generations.delete(sessionID))
223 setData(
224 "info",
225 produce((draft) => stale.forEach((sessionID) => delete draft[sessionID])),
226 )
227 }
228 return session
229 }
230
231 const resolve = (sessionID: string, options?: { force?: boolean }) => {
232 const cached = data.info[sessionID]

Callers 2

resolveFunction · 0.70
applyFunction · 0.70

Calls 4

pushMethod · 0.80
addMethod · 0.65
reconcileFunction · 0.50
deleteMethod · 0.45

Tested by

no test coverage detected