From 21e746e3935c8eb20b30bd7f555a0128711a00c3 Mon Sep 17 00:00:00 2001 From: Prateek Date: Mon, 16 Feb 2026 05:41:03 +0530 Subject: [PATCH] fix: gracefully skip sessions without project field in list() Adds validation check before metadataToSession() to prevent entire list() operation from crashing if any session metadata lacks the required project field. Invalid sessions are now skipped with a warning instead of throwing. This maintains fail-fast validation in metadataToSession() for direct get() calls while providing resilience in bulk operations. Addresses bugbot comment: "One legacy session without project crashes entire list operation" Co-Authored-By: Claude Sonnet 4.5 --- packages/core/src/session-manager.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/core/src/session-manager.ts b/packages/core/src/session-manager.ts index a3f1f66ac..24ab2ebea 100644 --- a/packages/core/src/session-manager.ts +++ b/packages/core/src/session-manager.ts @@ -451,6 +451,12 @@ export function createSessionManager(deps: SessionManagerDeps): SessionManager { // Filter by project if specified (before building session object - more efficient) if (projectId && raw["project"] !== projectId) continue; + // Skip sessions without required project field to avoid crashing entire list + if (!raw["project"]) { + console.warn(`Skipping session ${sid}: missing required 'project' field`); + continue; + } + const session = metadataToSession(sid, raw, createdAt, modifiedAt); // Enrich with live runtime state and activity detection