summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-06-30 19:07:51 -0400
committerDax Raad <[email protected]>2025-06-30 19:07:51 -0400
commitfea56d8de6385d707c688c432d64f107a6d3e4ac (patch)
tree5968c2fc33cc41f0c14c346652eca88feb487fd5
parent3d71be2b4503c1b5cab445504e5fae9c56e1b1a1 (diff)
downloadopencode-fea56d8de6385d707c688c432d64f107a6d3e4ac.tar.gz
opencode-fea56d8de6385d707c688c432d64f107a6d3e4ac.zip
fix loading api key from env for openai compatible providers
-rw-r--r--packages/opencode/src/cli/cmd/debug.ts3
-rw-r--r--packages/opencode/src/provider/provider.ts12
2 files changed, 11 insertions, 4 deletions
diff --git a/packages/opencode/src/cli/cmd/debug.ts b/packages/opencode/src/cli/cmd/debug.ts
index 0924467e4..23d080e18 100644
--- a/packages/opencode/src/cli/cmd/debug.ts
+++ b/packages/opencode/src/cli/cmd/debug.ts
@@ -1,6 +1,7 @@
import { App } from "../../app/app"
import { Ripgrep } from "../../file/ripgrep"
import { LSP } from "../../lsp"
+import { Log } from "../../util/log"
import { bootstrap } from "../bootstrap"
import { cmd } from "./cmd"
@@ -49,7 +50,7 @@ const SymbolsCommand = cmd({
async handler(args) {
await bootstrap({ cwd: process.cwd() }, async () => {
await LSP.touchFile("./src/index.ts", true)
- await new Promise((resolve) => setTimeout(resolve, 3000))
+ using _ = Log.Default.time("symbols")
const results = await LSP.workspaceSymbol(args.query)
console.log(JSON.stringify(results, null, 2))
})
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index c034a9ce3..3374e3b2b 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -246,6 +246,7 @@ export namespace Provider {
npm: provider.npm ?? existing?.npm,
name: provider.name ?? existing?.name ?? providerID,
env: provider.env ?? existing?.env ?? [],
+ api: provider.api ?? existing?.api,
models: existing?.models ?? {},
}
@@ -288,9 +289,14 @@ export namespace Provider {
// load env
for (const [providerID, provider] of Object.entries(database)) {
if (disabled.has(providerID)) continue
- if (provider.env.some((item) => process.env[item])) {
- mergeProvider(providerID, {}, "env")
- }
+ const apiKey = provider.env.map((item) => process.env[item]).at(0)
+ if (!apiKey) continue
+ mergeProvider(
+ providerID,
+ // only include apiKey if there's only one potential option
+ provider.env.length === 1 ? { apiKey } : {},
+ "env",
+ )
}
// load apikeys