summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-25 10:01:35 -0400
committerJay V <[email protected]>2025-06-26 17:21:53 -0400
commit3d02e071611ca79b2d86bf4122de261dc68e74ae (patch)
treeb21775246b27070e84317b1a3cc00cda7a6e452a
parent4dbc6a43a684d41fd15694fe1035bb455fbcba6f (diff)
downloadopencode-3d02e071611ca79b2d86bf4122de261dc68e74ae.tar.gz
opencode-3d02e071611ca79b2d86bf4122de261dc68e74ae.zip
fix codex not working
-rw-r--r--packages/opencode/src/provider/provider.ts44
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,
+ )
}
}