summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-09-21 04:43:25 -0400
committerDax Raad <[email protected]>2025-09-21 04:43:32 -0400
commit079095d7a943e5f95ce6c5651c2d5797e8ab881b (patch)
treed3e5f52b6dd89f0ade81039e0ab7f9be527acbc1
parent28e1d67ea4e807563f264a57b0b07f9c03905e6f (diff)
downloadopencode-079095d7a943e5f95ce6c5651c2d5797e8ab881b.tar.gz
opencode-079095d7a943e5f95ce6c5651c2d5797e8ab881b.zip
core: filter models without keys in opencode provider
-rw-r--r--packages/opencode/src/provider/provider.ts18
1 files changed, 14 insertions, 4 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index 14f6ec09a..5283da6a3 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -16,10 +16,7 @@ import { Flag } from "../flag/flag"
export namespace Provider {
const log = Log.create({ service: "provider" })
- type CustomLoader = (
- provider: ModelsDev.Provider,
- api?: string,
- ) => Promise<{
+ type CustomLoader = (provider: ModelsDev.Provider) => Promise<{
autoload: boolean
getModel?: (sdk: any, modelID: string) => Promise<any>
options?: Record<string, any>
@@ -40,6 +37,19 @@ export namespace Provider {
}
},
async opencode(input) {
+ const hasKey = await (async () => {
+ if (input.env.some((item) => process.env[item])) return true
+ if (await Auth.get(input.id)) return true
+ return false
+ })()
+
+ if (!hasKey) {
+ for (const [key, value] of Object.entries(input.models)) {
+ if (value.cost.input === 0) continue
+ delete input.models[key]
+ }
+ }
+
return {
autoload: Object.keys(input.models).length > 0,
options: {},