From 0615f5328e592d4ccb2c9e5387ec88398a0ff18d Mon Sep 17 00:00:00 2001 From: can1357 Date: Mon, 16 Feb 2026 09:59:07 +0100 Subject: [PATCH] fix(coding-agent/cli): fixed GitHub API rate limiting by using npm registry for release info - Changed release info fetching from GitHub API to npm registry to avoid unauthenticated rate limiting. - Constructed deterministic GitHub release download URLs instead of relying on API response. --- packages/coding-agent/src/cli/update-cli.ts | 23 +++++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/coding-agent/src/cli/update-cli.ts b/packages/coding-agent/src/cli/update-cli.ts index bf8c96438..81cf47ffb 100644 --- a/packages/coding-agent/src/cli/update-cli.ts +++ b/packages/coding-agent/src/cli/update-cli.ts @@ -59,23 +59,28 @@ function hasBun(): boolean { } /** - * Get the latest release info from GitHub. + * Get the latest release info from the npm registry. + * Uses npm instead of GitHub API to avoid unauthenticated rate limiting. */ async function getLatestRelease(): Promise { - const response = await fetch(`https://api.github.com/repos/${REPO}/releases/latest`); + const response = await fetch(`https://registry.npmjs.org/${PACKAGE}/latest`); if (!response.ok) { throw new Error(`Failed to fetch release info: ${response.statusText}`); } - const data = (await response.json()) as { - tag_name: string; - assets: Array<{ name: string; browser_download_url: string }>; - }; + const data = (await response.json()) as { version: string }; + const version = data.version; + const tag = `v${version}`; + // Construct deterministic GitHub release download URLs for the current platform + const makeAsset = (name: string) => ({ + name, + url: `https://github.com/${REPO}/releases/download/${tag}/${name}`, + }); return { - tag: data.tag_name, - version: data.tag_name.replace(/^v/, ""), - assets: data.assets.map(a => ({ name: a.name, url: a.browser_download_url })), + tag, + version, + assets: [makeAsset(getBinaryName()), makeAsset(getNativeAddonName())], }; }