diff --git a/packages/build-infra/lib/github-releases.mjs b/packages/build-infra/lib/github-releases.mjs index 964024e74..ce1458482 100644 --- a/packages/build-infra/lib/github-releases.mjs +++ b/packages/build-infra/lib/github-releases.mjs @@ -12,11 +12,11 @@ import { pRetry } from '@socketsecurity/lib/promises' const logger = getDefaultLogger() -// Cache GitHub API responses for 1 hour to avoid rate limiting. +// Cache GitHub API responses for 4 hours to reduce API calls and avoid rate limiting. const cache = createTtlCache({ memoize: true, prefix: 'github-releases', - ttl: 60 * 60 * 1000, // 1 hour. + ttl: 4 * 60 * 60 * 1000, // 4 hours. }) /** @@ -155,8 +155,8 @@ export async function getLatestRelease( return null }, { - backoffFactor: 1, - baseDelayMs: 5_000, + backoffFactor: 2, + baseDelayMs: 3_000, onRetry: (attempt, error) => { if (!quiet) { logger.info( @@ -231,8 +231,8 @@ export async function getReleaseAssetUrl( return asset.browser_download_url }, { - backoffFactor: 1, - baseDelayMs: 5_000, + backoffFactor: 2, + baseDelayMs: 3_000, onRetry: (attempt, error) => { if (!quiet) { logger.info(` Retry attempt ${attempt + 1}/3 for asset URL...`) diff --git a/packages/cli/package.json b/packages/cli/package.json index c6333a572..ba46ce8a8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@socketsecurity/cli", - "version": "0.0.0-copied-from-packages-socket", + "version": "0.0.0", "description": "CLI for Socket.dev", "private": true, "license": "MIT", diff --git a/packages/cli/scripts/download-assets.mjs b/packages/cli/scripts/download-assets.mjs index d9fa65f99..5e512f95b 100644 --- a/packages/cli/scripts/download-assets.mjs +++ b/packages/cli/scripts/download-assets.mjs @@ -231,6 +231,14 @@ async function downloadAssets(assetNames, parallel = true) { * Main entry point. */ async function main() { + // Skip downloads entirely when SKIP_ASSET_DOWNLOAD is set. + // Useful for repeated local builds where assets are already cached, + // or when GitHub API rate limits are exhausted. + if (process.env.SKIP_ASSET_DOWNLOAD) { + logger.info('Skipping asset downloads (SKIP_ASSET_DOWNLOAD is set)') + return + } + const args = process.argv.slice(2) const parallel = !args.includes('--no-parallel') const assetArgs = args.filter(arg => !arg.startsWith('--'))