diff --git a/apps/x/packages/core/src/knowledge/sync_calendar.ts b/apps/x/packages/core/src/knowledge/sync_calendar.ts index b0345259..c6a10f8e 100644 --- a/apps/x/packages/core/src/knowledge/sync_calendar.ts +++ b/apps/x/packages/core/src/knowledge/sync_calendar.ts @@ -442,6 +442,12 @@ async function performSyncComposio() { const MAX_PAGES = 20; for (let page = 0; page < MAX_PAGES; page++) { + // Re-check connection in case user disconnected mid-sync + if (!composioAccountsRepo.isConnected('googlecalendar')) { + console.log('[Calendar] Account disconnected during sync. Stopping.'); + return; + } + const args: Record = { calendar_id: 'primary', time_min: timeMin, diff --git a/apps/x/packages/core/src/knowledge/sync_gmail.ts b/apps/x/packages/core/src/knowledge/sync_gmail.ts index 2f4cc806..599e75ac 100644 --- a/apps/x/packages/core/src/knowledge/sync_gmail.ts +++ b/apps/x/packages/core/src/knowledge/sync_gmail.ts @@ -732,6 +732,11 @@ async function performSyncComposio() { let highWaterMark: string | null = state?.last_sync ?? null; let processedCount = 0; for (const threadId of allThreadIds) { + // Re-check connection in case user disconnected mid-sync + if (!composioAccountsRepo.isConnected('gmail')) { + console.log('[Gmail] Account disconnected during sync. Stopping.'); + return; + } try { const newestInThread = await processThreadComposio(connectedAccountId, threadId, SYNC_DIR); processedCount++;