diff --git a/packages/opencode/src/installation/index.ts b/packages/opencode/src/installation/index.ts index 7ac2980c4..755236551 100644 --- a/packages/opencode/src/installation/index.ts +++ b/packages/opencode/src/installation/index.ts @@ -4,6 +4,7 @@ import z from "zod" import { NamedError } from "@opencode-ai/util/error" import { Bus } from "../bus" import { Log } from "../util/log" +import { iife } from "@/util/iife" declare global { const OPENCODE_VERSION: string @@ -163,9 +164,14 @@ export namespace Installation { export const USER_AGENT = `opencode/${CHANNEL}/${VERSION}` export async function latest() { + const registry = await iife(async () => { + const r = (await $`npm config get registry`.throws(false).text()).trim() + const reg = r || "https://registry.npmjs.org" + return reg.endsWith("/") ? reg.slice(0, -1) : reg + }) const [major] = VERSION.split(".").map((x) => Number(x)) const channel = CHANNEL === "latest" ? `latest-${major}` : CHANNEL - return fetch(`https://registry.npmjs.org/opencode-ai/${channel}`) + return fetch(`${registry}/opencode-ai/${channel}`) .then((res) => { if (!res.ok) throw new Error(res.statusText) return res.json()