|
|
@@ -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()
|