Browse Source

support disabling providers from automatically being added

Dax Raad 8 months ago
parent
commit
674c9a5220

+ 1 - 0
packages/opencode/src/global/config.ts

@@ -9,6 +9,7 @@ export namespace GlobalConfig {
     autoshare: z.boolean().optional(),
     autoshare: z.boolean().optional(),
     provider: z.string().optional(),
     provider: z.string().optional(),
     model: z.string().optional(),
     model: z.string().optional(),
+    disabled_providers: z.array(z.string()).optional(),
   })
   })
   export type Info = z.infer<typeof Info>
   export type Info = z.infer<typeof Info>
 
 

+ 6 - 0
packages/opencode/src/provider/provider.ts

@@ -169,8 +169,12 @@ export namespace Provider {
       database[providerID] = parsed
       database[providerID] = parsed
     }
     }
 
 
+    const disabled = await GlobalConfig.get().then(
+      (cfg) => new Set(cfg.disabled_providers ?? []),
+    )
     // load env
     // load env
     for (const [providerID, provider] of Object.entries(database)) {
     for (const [providerID, provider] of Object.entries(database)) {
+      if (disabled.has(providerID)) continue
       if (provider.env.some((item) => process.env[item])) {
       if (provider.env.some((item) => process.env[item])) {
         mergeProvider(providerID, {}, "env")
         mergeProvider(providerID, {}, "env")
       }
       }
@@ -178,6 +182,7 @@ export namespace Provider {
 
 
     // load apikeys
     // load apikeys
     for (const [providerID, provider] of Object.entries(await Auth.all())) {
     for (const [providerID, provider] of Object.entries(await Auth.all())) {
+      if (disabled.has(providerID)) continue
       if (provider.type === "api") {
       if (provider.type === "api") {
         mergeProvider(providerID, { apiKey: provider.key }, "api")
         mergeProvider(providerID, { apiKey: provider.key }, "api")
       }
       }
@@ -185,6 +190,7 @@ export namespace Provider {
 
 
     // load custom
     // load custom
     for (const [providerID, fn] of Object.entries(CUSTOM_LOADERS)) {
     for (const [providerID, fn] of Object.entries(CUSTOM_LOADERS)) {
+      if (disabled.has(providerID)) continue
       const result = await fn(database[providerID])
       const result = await fn(database[providerID])
       if (result) mergeProvider(providerID, result, "custom")
       if (result) mergeProvider(providerID, result, "custom")
     }
     }