summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-23 14:50:19 -0400
committerDax Raad <[email protected]>2025-06-23 14:50:19 -0400
commitbc34f08333440c61f7c5dc1cd6e8221c41e80680 (patch)
tree4d8ac14c653f47e652e1c7ec03b2325dd02faf0d
parentb7ee16aabd1502add8ce7e2187c2619a00a88b89 (diff)
downloadopencode-bc34f08333440c61f7c5dc1cd6e8221c41e80680.tar.gz
opencode-bc34f08333440c61f7c5dc1cd6e8221c41e80680.zip
bundle models.dev at build time and ignore refresh errors
-rw-r--r--packages/opencode/src/provider/models-macro.ts4
-rw-r--r--packages/opencode/src/provider/models.ts12
2 files changed, 10 insertions, 6 deletions
diff --git a/packages/opencode/src/provider/models-macro.ts b/packages/opencode/src/provider/models-macro.ts
new file mode 100644
index 000000000..91a0348e8
--- /dev/null
+++ b/packages/opencode/src/provider/models-macro.ts
@@ -0,0 +1,4 @@
+export async function data() {
+ const json = await fetch("https://models.dev/api.json").then((x) => x.text())
+ return json
+}
diff --git a/packages/opencode/src/provider/models.ts b/packages/opencode/src/provider/models.ts
index cfb668071..ab2a6c947 100644
--- a/packages/opencode/src/provider/models.ts
+++ b/packages/opencode/src/provider/models.ts
@@ -2,6 +2,7 @@ import { Global } from "../global"
import { Log } from "../util/log"
import path from "path"
import { z } from "zod"
+import { data } from "./models-macro" with { type: "macro" }
export namespace ModelsDev {
const log = Log.create({ service: "models.dev" })
@@ -54,16 +55,15 @@ export namespace ModelsDev {
refresh()
return result as Record<string, Provider>
}
- await refresh()
- return get()
+ refresh()
+ const json = await data()
+ return JSON.parse(json)
}
async function refresh() {
const file = Bun.file(filepath)
log.info("refreshing")
- const result = await fetch("https://models.dev/api.json")
- if (!result.ok)
- throw new Error(`Failed to fetch models.dev: ${result.statusText}`)
- await Bun.write(file, result)
+ const result = await fetch("https://models.dev/api.json").catch(() => {})
+ if (result && result.ok) await Bun.write(file, result)
}
}