fix(worker): gracefully process orphaned pending messages after session termination

This commit is contained in:
jayvenn21
2026-02-04 15:40:10 -05:00
committed by Alex Newman
parent 1a1297c12a
commit f24bba21e9
3 changed files with 125 additions and 3 deletions
@@ -204,6 +204,23 @@ export class PendingMessageStore {
return result.changes;
}
/**
* Mark all pending and processing messages for a session as failed (abandoned).
* Used when SDK session is terminated and no fallback agent is available:
* prevents the session from appearing in getSessionsWithPendingMessages forever.
* @returns Number of messages marked failed
*/
markAllSessionMessagesAbandoned(sessionDbId: number): number {
const now = Date.now();
const stmt = this.db.prepare(`
UPDATE pending_messages
SET status = 'failed', failed_at_epoch = ?
WHERE session_db_id = ? AND status IN ('pending', 'processing')
`);
const result = stmt.run(now, sessionDbId);
return result.changes;
}
/**
* Abort a specific message (delete from queue)
*/