From fea56d8de6385d707c688c432d64f107a6d3e4ac Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 30 Jun 2025 19:07:51 -0400 Subject: [PATCH] fix loading api key from env for openai compatible providers --- packages/opencode/src/cli/cmd/debug.ts | 3 ++- packages/opencode/src/provider/provider.ts | 12 +++++++++--- 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 0924467e..23d080e1 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 c034a9ce..3374e3b2 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