${marker} initial content
| Name | Status |
|---|---|
| Verification row | Ready |
Current content
' } + const checkpoint = { + ...beginListingCheckpoint({ + fingerprint: 'a'.repeat(64), + generationId: 'prior', + startedAt: new Date(0), + }), + listingFailures: { + count: 1, + samples: [ + { + scope: 'unavailable@example.com', + operation: 'gmail.threads.list', + status: 400, + reasons: ['failedPrecondition'], + }, + ], + }, + } + const { pass, result } = await runPass({ checkpoint, access: 'admin' }) + expect(pass.complete).toBe(true) + expect(pass.checkpoint.listingFailures).toEqual(checkpoint.listingFailures) + expect(pass.holdNotice).toContain('unlisted documents were kept') + expect(result.docsDeleted).toBe(0) + expect(mocks.hardDelete).not.toHaveBeenCalled() + expect(dbChainMockFns.set.mock.calls.some(([value]) => value.deletedAt != null)).toBe(false) + }) + it('persists unresolved permissions independently of successful content processing', async () => { sourceBody = { value: 'Current content
' } mocks.onPage.mockResolvedValue({ permissionsIncomplete: true }) diff --git a/apps/sim/lib/knowledge/connectors/sync-content-pass.ts b/apps/sim/lib/knowledge/connectors/sync-content-pass.ts index 7ef42e94c5e..6fc86b716fb 100644 --- a/apps/sim/lib/knowledge/connectors/sync-content-pass.ts +++ b/apps/sim/lib/knowledge/connectors/sync-content-pass.ts @@ -224,7 +224,7 @@ async function reconcileCompletedListing( checkpoint: ListingCheckpoint, withLease: