Просмотр исходного кода

fix loading api key from env for openai compatible providers

Dax Raad 7 месяцев назад
Родитель
Сommit
fea56d8de6

+ 2 - 1
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))
     })

+ 9 - 3
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