(entry: Entry, sessionId: UUID = getSessionId() as UUID)
| 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) |
no test coverage detected