diff options
| author | Dax Raad <[email protected]> | 2025-06-25 10:01:35 -0400 |
|---|---|---|
| committer | Jay V <[email protected]> | 2025-06-26 17:21:53 -0400 |
| commit | 3d02e071611ca79b2d86bf4122de261dc68e74ae (patch) | |
| tree | b21775246b27070e84317b1a3cc00cda7a6e452a | |
| parent | 4dbc6a43a684d41fd15694fe1035bb455fbcba6f (diff) | |
| download | opencode-3d02e071611ca79b2d86bf4122de261dc68e74ae.tar.gz opencode-3d02e071611ca79b2d86bf4122de261dc68e74ae.zip | |
fix codex not working
| -rw-r--r-- | packages/opencode/src/provider/provider.ts | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index a861bd50f..7e9f9fd63 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -28,20 +28,21 @@ import { TaskTool } from "../tool/task" export namespace Provider { const log = Log.create({ service: "provider" }) - type CustomLoader = (provider: ModelsDev.Provider) => Promise< - | { - getModel?: (sdk: any, modelID: string) => Promise<any> - options: Record<string, any> - } - | false - > + type CustomLoader = ( + provider: ModelsDev.Provider, + api?: string, + ) => Promise<{ + autoload: boolean + getModel?: (sdk: any, modelID: string) => Promise<any> + options?: Record<string, any> + }> type Source = "env" | "config" | "custom" | "api" const CUSTOM_LOADERS: Record<string, CustomLoader> = { async anthropic(provider) { const access = await AuthAnthropic.access() - if (!access) return false + if (!access) return { autoload: false } for (const model of Object.values(provider.models)) { model.cost = { input: 0, @@ -49,6 +50,7 @@ export namespace Provider { } } return { + autoload: true, options: { apiKey: "", async fetch(input: any, init: any) { @@ -69,9 +71,9 @@ export namespace Provider { }, "github-copilot": async (provider) => { const copilot = await AuthCopilot() - if (!copilot) return false + if (!copilot) return { autoload: false } let info = await Auth.get("github-copilot") - if (!info || info.type !== "oauth") return false + if (!info || info.type !== "oauth") return { autoload: false } if (provider && provider.models) { for (const model of Object.values(provider.models)) { @@ -83,6 +85,7 @@ export namespace Provider { } return { + autoload: true, options: { apiKey: "", async fetch(input: any, init: any) { @@ -113,9 +116,18 @@ export namespace Provider { }, } }, + openai: async () => { + return { + autoload: false, + async getModel(sdk: any, modelID: string) { + return sdk.responses(modelID) + }, + options: {}, + } + }, "amazon-bedrock": async () => { if (!process.env["AWS_PROFILE"] && !process.env["AWS_ACCESS_KEY_ID"]) - return false + return { autoload: false } const region = process.env["AWS_REGION"] ?? "us-east-1" @@ -123,6 +135,7 @@ export namespace Provider { await BunProc.install("@aws-sdk/credential-providers") ) return { + autoload: true, options: { region, credentialProvider: fromNodeProviderChain(), @@ -248,8 +261,13 @@ export namespace Provider { for (const [providerID, fn] of Object.entries(CUSTOM_LOADERS)) { if (disabled.has(providerID)) continue const result = await fn(database[providerID]) - if (result) { - mergeProvider(providerID, result.options, "custom", result.getModel) + if (result && (result.autoload || providers[providerID])) { + mergeProvider( + providerID, + result.options ?? {}, + "custom", + result.getModel, + ) } } |
