MCPcopy Create free account
hub / github.com/Noumena-Network/code / appendEntry

Method appendEntry

src/utils/sessionStorage.ts:1210–1347  ·  view source on GitHub ↗
(entry: Entry, sessionId: UUID = getSessionId() as UUID)

Source from the content-addressed store, hash-verified

1208 }
1209
1210 async appendEntry(entry: Entry, sessionId: UUID = getSessionId() as UUID) {
1211 if (this.shouldSkipPersistence()) {
1212 return
1213 }
1214
1215 const currentSessionId = getSessionId() as UUID
1216 const isCurrentSession = sessionId === currentSessionId
1217
1218 let sessionFile: string
1219 if (isCurrentSession) {
1220 // Buffer until materializeSessionFile runs (first user/assistant message).
1221 if (this.sessionFile === null) {
1222 this.pendingEntries.push(entry)
1223 return
1224 }
1225 sessionFile = this.sessionFile
1226 } else {
1227 const existing = await this.getExistingSessionFile(sessionId)
1228 if (!existing) {
1229 logError(
1230 new Error(
1231 `appendEntry: session file not found for other session ${sessionId}`,
1232 ),
1233 )
1234 return
1235 }
1236 sessionFile = existing
1237 }
1238
1239 // Only load current session messages if needed
1240 if (entry.type === 'summary') {
1241 // Summaries can always be appended
1242 void this.enqueueWrite(sessionFile, entry)
1243 } else if (entry.type === 'custom-title') {
1244 // Custom titles can always be appended
1245 void this.enqueueWrite(sessionFile, entry)
1246 } else if (entry.type === 'ai-title') {
1247 // AI titles can always be appended
1248 void this.enqueueWrite(sessionFile, entry)
1249 } else if (entry.type === 'last-prompt') {
1250 void this.enqueueWrite(sessionFile, entry)
1251 } else if (entry.type === 'task-summary') {
1252 void this.enqueueWrite(sessionFile, entry)
1253 } else if (entry.type === 'tag') {
1254 // Tags can always be appended
1255 void this.enqueueWrite(sessionFile, entry)
1256 } else if (entry.type === 'agent-name') {
1257 // Agent names can always be appended
1258 void this.enqueueWrite(sessionFile, entry)
1259 } else if (entry.type === 'agent-color') {
1260 // Agent colors can always be appended
1261 void this.enqueueWrite(sessionFile, entry)
1262 } else if (entry.type === 'agent-setting') {
1263 // Agent settings can always be appended
1264 void this.enqueueWrite(sessionFile, entry)
1265 } else if (entry.type === 'pr-link') {
1266 // PR links can always be appended
1267 void this.enqueueWrite(sessionFile, entry)

Calls 12

shouldSkipPersistenceMethod · 0.95
enqueueWriteMethod · 0.95
persistToRemoteMethod · 0.95
getSessionIdFunction · 0.85
getAgentTranscriptPathFunction · 0.85
getSessionMessagesFunction · 0.85
asAgentIdFunction · 0.85
isTranscriptMessageFunction · 0.85
logErrorFunction · 0.70
hasMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected