─── Section: PROVIDERS ──────────────────────────────────────── showConfigProviders dumps every provider-specific env var + sensitive keys (presence only, never the value) and StackSpot runtime overrides.
()
| 473 | // showConfigProviders dumps every provider-specific env var + sensitive |
| 474 | // keys (presence only, never the value) and StackSpot runtime overrides. |
| 475 | func (cli *ChatCLI) showConfigProviders() { |
| 476 | sectionHeader("🔌", "cfg.section.providers.title", ColorPurple) |
| 477 | p := uiPrefix(ColorPurple) |
| 478 | |
| 479 | // Current |
| 480 | kv(p, i18n.T("cfg.kv.active_provider"), cli.Provider) |
| 481 | kv(p, i18n.T("cfg.kv.active_model"), cli.Model) |
| 482 | kv(p, i18n.T("cfg.kv.effective_max_tokens"), fmt.Sprintf("%d", cli.getMaxTokensForCurrentLLM())) |
| 483 | |
| 484 | // Available (nil-safe — manager may not be wired during early boot/tests) |
| 485 | if cli.manager != nil { |
| 486 | if providers := cli.manager.GetAvailableProviders(); len(providers) > 0 { |
| 487 | fmt.Println(p) |
| 488 | for i, name := range providers { |
| 489 | kv(p, i18n.T("cfg.kv.available_n", i+1), name) |
| 490 | } |
| 491 | } |
| 492 | } |
| 493 | |
| 494 | fmt.Println(p) |
| 495 | subheader(p, "cfg.sub.prov.openai") |
| 496 | kv(p, "OPENAI_API_KEY", presence(os.Getenv("OPENAI_API_KEY"))) |
| 497 | kv(p, "OPENAI_MODEL", envOr("OPENAI_MODEL")) |
| 498 | kv(p, "OPENAI_ASSISTANT_MODEL", envOr("OPENAI_ASSISTANT_MODEL")) |
| 499 | kv(p, "OPENAI_USE_RESPONSES", envOr("OPENAI_USE_RESPONSES")) |
| 500 | kv(p, "OPENAI_MAX_TOKENS", envOr("OPENAI_MAX_TOKENS")) |
| 501 | |
| 502 | fmt.Println(p) |
| 503 | subheader(p, "cfg.sub.prov.anthropic") |
| 504 | kv(p, "ANTHROPIC_API_KEY", presence(os.Getenv("ANTHROPIC_API_KEY"))) |
| 505 | kv(p, "ANTHROPIC_MODEL", envOr("ANTHROPIC_MODEL")) |
| 506 | kv(p, "ANTHROPIC_BASE_URL", envOr("ANTHROPIC_BASE_URL")) |
| 507 | kv(p, "ANTHROPIC_API_VERSION", envOr("ANTHROPIC_API_VERSION")) |
| 508 | kv(p, "ANTHROPIC_MAX_TOKENS", envOr("ANTHROPIC_MAX_TOKENS")) |
| 509 | |
| 510 | fmt.Println(p) |
| 511 | subheader(p, "cfg.sub.prov.googleai") |
| 512 | kv(p, "GOOGLEAI_API_KEY", presence(os.Getenv("GOOGLEAI_API_KEY"))) |
| 513 | kv(p, "GOOGLEAI_MODEL", envOr("GOOGLEAI_MODEL")) |
| 514 | kv(p, "GOOGLEAI_MAX_TOKENS", envOr("GOOGLEAI_MAX_TOKENS")) |
| 515 | |
| 516 | fmt.Println(p) |
| 517 | subheader(p, "cfg.sub.prov.xai") |
| 518 | kv(p, "XAI_API_KEY", presence(os.Getenv("XAI_API_KEY"))) |
| 519 | kv(p, "XAI_MODEL", envOr("XAI_MODEL")) |
| 520 | kv(p, "XAI_MAX_TOKENS", envOr("XAI_MAX_TOKENS")) |
| 521 | |
| 522 | fmt.Println(p) |
| 523 | subheader(p, "cfg.sub.prov.ollama") |
| 524 | kv(p, "OLLAMA_MODEL", envOr("OLLAMA_MODEL")) |
| 525 | kv(p, "OLLAMA_BASE_URL", envOr("OLLAMA_BASE_URL")) |
| 526 | kv(p, "OLLAMA_MAX_TOKENS", envOr("OLLAMA_MAX_TOKENS")) |
| 527 | |
| 528 | fmt.Println(p) |
| 529 | subheader(p, "cfg.sub.prov.bedrock") |
| 530 | kv(p, "BEDROCK_REGION", envOr("BEDROCK_REGION")) |
| 531 | kv(p, "AWS_REGION", envOr("AWS_REGION")) |
| 532 | kv(p, "AWS_PROFILE", envOr("AWS_PROFILE")) |