|
|
@@ -7,6 +7,7 @@ import { Log } from "../util/log"
|
|
|
|
|
|
declare global {
|
|
|
const OPENCODE_VERSION: string
|
|
|
+ const OPENCODE_CHANNEL: string
|
|
|
}
|
|
|
|
|
|
export namespace Installation {
|
|
|
@@ -40,7 +41,7 @@ export namespace Installation {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- export function isSnapshot() {
|
|
|
+ export function isPreview() {
|
|
|
return VERSION.startsWith("0.0.0")
|
|
|
}
|
|
|
|
|
|
@@ -137,17 +138,15 @@ export namespace Installation {
|
|
|
}
|
|
|
|
|
|
export const VERSION = typeof OPENCODE_VERSION === "string" ? OPENCODE_VERSION : "dev"
|
|
|
- export const USER_AGENT = `opencode/${VERSION}`
|
|
|
+ export const CHANNEL = typeof OPENCODE_CHANNEL === "string" ? OPENCODE_CHANNEL : "dev"
|
|
|
+ export const USER_AGENT = `opencode/${CHANNEL}/${VERSION}`
|
|
|
|
|
|
export async function latest() {
|
|
|
- return fetch("https://api.github.com/repos/sst/opencode/releases/latest")
|
|
|
- .then((res) => res.json())
|
|
|
- .then((data) => {
|
|
|
- if (typeof data.tag_name !== "string") {
|
|
|
- log.error("GitHub API error", data)
|
|
|
- throw new Error("failed to fetch latest version")
|
|
|
- }
|
|
|
- return data.tag_name.slice(1) as string
|
|
|
+ return fetch(`https://registry.npmjs.org/opencode-ai/${CHANNEL}`)
|
|
|
+ .then((res) => {
|
|
|
+ if (!res.ok) throw new Error(res.statusText)
|
|
|
+ return res.json()
|
|
|
})
|
|
|
+ .then((data: any) => data.version)
|
|
|
}
|
|
|
}
|