Scan all known providers in credential fallback (adopts #16)
- commit
- eef2714dea49985409b37fe734df88f578fad066
- author
- patriceckhart · · 2026-06-08 13:22 UTC
- parent
- 323df7f
- signature
- unsigned
1 file · +9 -6
M packages/agent/build.go +9 -6
| @@ -317,12 +317,15 @@ func Resolve(args Args, requireCred bool) (Resolved, error) { | |||
| 317 | 317 | // never shows a "not logged in" banner. | |
| 318 | 318 | userPickedProvider := args.Provider != "" | |
| 319 | 319 | if credErr != nil && !userPickedProvider && provName != "ollama" { | |
| 320 | - | // amazon-bedrock is included so an env-only bedrock setup | |
| 321 | - | // (AWS_BEARER_TOKEN_BEDROCK / AWS_PROFILE / IAM keys) is still | |
| 322 | - | // discovered when no config.json pins the provider, e.g. after | |
| 323 | - | // pointing ZOT_HOME at a fresh home dir. | |
| 324 | - | for _, other := range []string{"anthropic", "openai", "openai-codex", "kimi", "deepseek", "google", "amazon-bedrock"} { | |
| 325 | - | if other == provName { | |
| 320 | + | // Scan every known provider (not a hardcoded subset) so any | |
| 321 | + | // env-based credential is discovered, e.g. an env-only | |
| 322 | + | // amazon-bedrock setup (AWS_BEARER_TOKEN_BEDROCK / AWS_PROFILE / | |
| 323 | + | // IAM keys) when no config.json pins the provider, such as after | |
| 324 | + | // pointing ZOT_HOME at a fresh home dir. Iteration order of | |
| 325 | + | // knownProviders defines fallback priority. ollama is skipped: | |
| 326 | + | // it has no credential and would always "match". | |
| 327 | + | for _, other := range knownProviders { | |
| 328 | + | if other == provName || other == "ollama" { | |
| 326 | 329 | continue | |
| 327 | 330 | } | |
| 328 | 331 | if c, m, a, err := ResolveCredentialFull(other, args.APIKey); err == nil { | |
| @@ -317,12 +317,15 @@ func Resolve(args Args, requireCred bool) (Resolved, error) { | |||||
| 317 | // never shows a "not logged in" banner. | 317 | // never shows a "not logged in" banner. | ||
| 318 | userPickedProvider := args.Provider != "" | 318 | userPickedProvider := args.Provider != "" | ||
| 319 | if credErr != nil && !userPickedProvider && provName != "ollama" { | 319 | if credErr != nil && !userPickedProvider && provName != "ollama" { | ||
| 320 | - | // amazon-bedrock is included so an env-only bedrock setup | 320 | + | // Scan every known provider (not a hardcoded subset) so any |
| 321 | - | // (AWS_BEARER_TOKEN_BEDROCK / AWS_PROFILE / IAM keys) is still | 321 | + | // env-based credential is discovered, e.g. an env-only |
| 322 | - | // discovered when no config.json pins the provider, e.g. after | 322 | + | // amazon-bedrock setup (AWS_BEARER_TOKEN_BEDROCK / AWS_PROFILE / |
| 323 | - | // pointing ZOT_HOME at a fresh home dir. | 323 | + | // IAM keys) when no config.json pins the provider, such as after |
| 324 | - | for _, other := range []string{"anthropic", "openai", "openai-codex", "kimi", "deepseek", "google", "amazon-bedrock"} { | 324 | + | // pointing ZOT_HOME at a fresh home dir. Iteration order of |
| 325 | - | if other == provName { | 325 | + | // knownProviders defines fallback priority. ollama is skipped: |
| 326 | + | // it has no credential and would always "match". | |||
| 327 | + | for _, other := range knownProviders { | |||
| 328 | + | if other == provName || other == "ollama" { | |||
| 326 | continue | 329 | continue | ||
| 327 | } | 330 | } | ||
| 328 | if c, m, a, err := ResolveCredentialFull(other, args.APIKey); err == nil { | 331 | if c, m, a, err := ResolveCredentialFull(other, args.APIKey); err == nil { | ||