|
|
@@ -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: {},
|