From 3d02e071611ca79b2d86bf4122de261dc68e74ae Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 25 Jun 2025 10:01:35 -0400 Subject: [PATCH] fix codex not working --- packages/opencode/src/provider/provider.ts | 44 +++++++++++++++------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index a861bd50..7e9f9fd6 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 - options: Record - } - | false - > + type CustomLoader = ( + provider: ModelsDev.Provider, + api?: string, + ) => Promise<{ + autoload: boolean + getModel?: (sdk: any, modelID: string) => Promise + options?: Record + }> type Source = "env" | "config" | "custom" | "api" const CUSTOM_LOADERS: Record = { 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, + ) } }