(providerName: string, sourcePath: string, cached: CachedFile)
| 1908 | } |
| 1909 | |
| 1910 | function cachedFileNeedsProviderReparse(providerName: string, sourcePath: string, cached: CachedFile): boolean { |
| 1911 | // Antigravity data comes from the live server, not from the conversation file. |
| 1912 | // A 0-turn cache entry may just mean the server was unavailable last run. |
| 1913 | if (providerName === 'antigravity') return shouldReparseAntigravitySource(sourcePath, cached.turns.length) |
| 1914 | |
| 1915 | // Devin transcript usage is enriched from sessions.db. The cache fingerprint |
| 1916 | // only tracks the transcript JSON, so reparse to pick up DB-side project, |
| 1917 | // title, model, and timestamp changes. |
| 1918 | if (providerName === 'devin') return true |
| 1919 | |
| 1920 | if (providerName !== 'gemini') return false |
| 1921 | |
| 1922 | return cached.turns.some(turn => |
| 1923 | turn.calls.some(call => call.deduplicationKey === `gemini:${turn.sessionId}`), |
| 1924 | ) |
| 1925 | } |
| 1926 | |
| 1927 | const warnedProviderReadFailures = new Set<string>() |
| 1928 |
no test coverage detected