diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 14f6ec09..5283da6a 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 options?: Record @@ -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: {},