diff --git a/bun.lock b/bun.lock index 787264e4fa6..c14691910bf 100644 --- a/bun.lock +++ b/bun.lock @@ -424,6 +424,7 @@ "@tailwindcss/vite": "catalog:", "@tsconfig/node22": "catalog:", "@types/bun": "catalog:", + "@types/dompurify": "catalog:", "@types/katex": "0.16.7", "@types/luxon": "catalog:", "tailwindcss": "catalog:", @@ -503,6 +504,7 @@ "@tsconfig/bun": "1.0.9", "@tsconfig/node22": "22.0.2", "@types/bun": "1.3.4", + "@types/dompurify": "3.2.0", "@types/luxon": "3.7.1", "@types/node": "22.13.9", "@typescript/native-preview": "7.0.0-dev.20251207.1", @@ -1768,6 +1770,8 @@ "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], + "@types/dompurify": ["@types/dompurify@3.2.0", "", { "dependencies": { "dompurify": "*" } }, "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg=="], + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], diff --git a/package.json b/package.json index d134a187a7c..6310105f3cf 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@tailwindcss/vite": "4.1.11", "diff": "8.0.2", "dompurify": "3.3.1", + "@types/dompurify": "3.2.0", "ai": "5.0.119", "hono": "4.10.7", "hono-openapi": "1.1.2", diff --git a/packages/app/src/custom-elements.d.ts b/packages/app/src/custom-elements.d.ts index e4ea0d6cebd..bd6fdcad3b4 120000 --- a/packages/app/src/custom-elements.d.ts +++ b/packages/app/src/custom-elements.d.ts @@ -1 +1,2 @@ -../../ui/src/custom-elements.d.ts \ No newline at end of file +/// +export {} diff --git a/packages/enterprise/src/custom-elements.d.ts b/packages/enterprise/src/custom-elements.d.ts index e4ea0d6cebd..bd6fdcad3b4 120000 --- a/packages/enterprise/src/custom-elements.d.ts +++ b/packages/enterprise/src/custom-elements.d.ts @@ -1 +1,2 @@ -../../ui/src/custom-elements.d.ts \ No newline at end of file +/// +export {} diff --git a/packages/opencode/src/provider/models-macro.ts b/packages/opencode/src/provider/models-macro.ts deleted file mode 100644 index 6c8492a7017..00000000000 --- a/packages/opencode/src/provider/models-macro.ts +++ /dev/null @@ -1,11 +0,0 @@ -export async function data() { - const path = Bun.env.MODELS_DEV_API_JSON - if (path) { - const file = Bun.file(path) - if (await file.exists()) { - return await file.text() - } - } - 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 796dcb7c238..c1b93cd0577 100644 --- a/packages/opencode/src/provider/models.ts +++ b/packages/opencode/src/provider/models.ts @@ -2,7 +2,6 @@ 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" } import { Installation } from "../installation" import { Flag } from "../flag/flag" @@ -10,6 +9,25 @@ export namespace ModelsDev { const log = Log.create({ service: "models.dev" }) const filepath = path.join(Global.Path.cache, "models.json") + async function fetchModelsData() { + const envPath = Bun.env.MODELS_DEV_API_JSON + if (envPath) { + const file = Bun.file(envPath) + if (await file.exists()) { + return await file.json() + } + } + const res = await fetch("https://models.dev/api.json", { + headers: { + "User-Agent": Installation.USER_AGENT, + }, + }).catch(() => null) + if (res && res.ok) { + return await res.json() + } + return {} + } + export const Model = z.object({ id: z.string(), name: z.string(), @@ -80,8 +98,7 @@ export namespace ModelsDev { const file = Bun.file(filepath) const result = await file.json().catch(() => {}) if (result) return result as Record - const json = await data() - return JSON.parse(json) as Record + return (await fetchModelsData()) as Record } export async function refresh() { diff --git a/packages/ui/package.json b/packages/ui/package.json index 5b440f515d0..9decdf0a716 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,6 +29,7 @@ "@tailwindcss/vite": "catalog:", "@tsconfig/node22": "catalog:", "@types/bun": "catalog:", + "@types/dompurify": "catalog:", "@types/katex": "0.16.7", "@types/luxon": "catalog:", "tailwindcss": "catalog:",