Dashboard › cli › Distillation
5d42e004-0fff-447f-8cd4-712e49e048bf["lore_tm_v1_Oor4EkWrUmiPpf34-iQuezEGlqa9BOryA-oo-k8vxiQ","lore_tm_v1_UdLHgLncwouEfrV7wod3RM_DriInkjqKSO3bO4rj45Q","lore_tm_v1_NrYAh6Ygul5gR6EtMUGlJHFCoGvqTKzBUfaMjWCCnxE","lore_tm_v1_gqcwro6_VsaFO5s3HL6FqZLV6nz7dIa4xZVDkl4_0Cw"]
packages/cli/src/lib/version-check.ts now imports UpgradeSource from ./binary.js and replaces fetchLatestFromGitHub / fetchLatestNightlyVersion with source-returning fetchLatestFromGitHubWithSource / fetchLatestNightlyVersionWithSource.maybePrefetchPatches(channel, latestVersion, signal, source) now requires an UpgradeSource; it passes source to prefetchNightlyPatches(latestVersion, signal, source) or prefetchStablePatches(latestVersion, signal, source).{ version: latestVersion, source } from source-aware discovery, persists latestVersion via setVersionCheckInfo(latestVersion), and uses the same selected source when prefetching delta patches.checkForUpdateInBackgroundImpl() never throws: errors are caught and reported to Sentry. Initial database-access failures use Sentry.captureException(error); non-AbortError asynchronous failures are recorded on the detached span as version_check.error and version_check.error_type, while expected process-exit aborts are not reported."Delta patch pre-fetch failed (best-effort)" and "Patch cache cleanup failed (best-effort)"./.resolveUpgradeSource(...) returns the successful probe response to its caller so the caller never repeats the successful probe request.packages/cli/src/lib/upgrade.ts, packages/cli/src/lib/ghcr.ts, packages/cli/src/lib/delta-upgrade.ts, packages/cli/src/lib/binary.ts, packages/cli/src/lib/release-notes.ts, and packages/cli/src/lib/custom-ca.ts; notable APIs include fetchWithUpgradeError, customFetch, and getGitHubHeaders().packages/cli/src/lib/ghcr.ts manually handles GHCR blob redirects: the authenticated request uses redirect: "manual", accepts direct HTTP 200 or redirect statuses 301/302/307/308, requires a Location header for redirects, and follows the signed Azure Blob Storage URL without forwarding the Authorization header because forwarding it can produce HTTP 404.${GHCR_REGISTRY}/v2/${source.ghcrRepo}/tags/list?n=${TAGS_PAGE_SIZE}.