zot/packages/provider/labels.go
patriceckhart fa7d8d8be5 refactor: split source into packages/{provider,core,tui,agent}
Single Go module, four top-level packages under packages/. Import
paths become github.com/patriceckhart/zot/packages/<name>; downstream
consumers can depend on individual packages without pulling the rest.

Layout:
  packages/provider/     LLM clients + catalog
  packages/provider/auth/ credential store + OAuth + login server
  packages/core/         agent loop, sessions, cost
  packages/tui/          terminal toolkit + chat view
  packages/agent/        CLI wiring, system prompt
    extensions/ extproto/ modes/ tools/ skills/ swarm/
    sdk/  (was pkg/zotcore, package renamed zotcore -> sdk)
    ext/  (was pkg/zotext, package renamed zotext -> ext)

internal/ and pkg/ removed. The internal/assets logo moved into
packages/provider/auth/assets.

Public Go SDK identifiers renamed:
  pkg/zotcore (package zotcore) -> packages/agent/sdk (package sdk)
  pkg/zotext  (package zotext)  -> packages/agent/ext (package ext)

This breaks Go-based extensions and embedders; the JSON wire protocol
for extensions and RPC is unchanged, so non-Go extensions, already-
built extension binaries, and zot rpc consumers are unaffected.

Docs, examples, and the built-in write-zot-extension skill updated
for the new paths and identifiers. Shadow-bug fixes in code samples
(ext := ext.New -> e := ext.New).
2026-05-27 09:07:15 +02:00

89 lines
2 KiB
Go

package provider
import "strings"
// ProviderLabel returns the user-facing label for a provider id.
func ProviderLabel(id string) string {
switch id {
case "anthropic":
return "Anthropic (Claude Pro/Max)"
case "openai":
return "OpenAI"
case "openai-codex":
return "OpenAI Codex (ChatGPT Plus/Pro)"
case "openai-responses":
return "OpenAI Responses"
case "kimi":
return "Kimi Code"
case "deepseek":
return "DeepSeek"
case "google":
return "Google (Gemini API key)"
case "github-copilot":
return "GitHub Copilot"
case "moonshotai":
return "Moonshot AI"
case "moonshotai-cn":
return "Moonshot AI CN"
case "groq":
return "Groq"
case "xai":
return "xAI"
case "cerebras":
return "Cerebras"
case "together":
return "Together AI"
case "huggingface":
return "Hugging Face"
case "openrouter":
return "OpenRouter"
case "mistral":
return "Mistral"
case "zai":
return "Z.AI"
case "xiaomi":
return "Xiaomi"
case "xiaomi-token-plan-ams":
return "Xiaomi Token Plan AMS"
case "xiaomi-token-plan-cn":
return "Xiaomi Token Plan CN"
case "xiaomi-token-plan-sgp":
return "Xiaomi Token Plan SGP"
case "minimax":
return "MiniMax"
case "minimax-cn":
return "MiniMax CN"
case "fireworks":
return "Fireworks"
case "vercel-ai-gateway":
return "Vercel AI Gateway"
case "opencode":
return "OpenCode"
case "opencode-go":
return "OpenCode Go"
case "amazon-bedrock":
return "Amazon Bedrock"
case "google-vertex":
return "Google Vertex AI"
case "azure-openai-responses":
return "Azure OpenAI"
case "cloudflare-workers-ai":
return "Cloudflare Workers AI"
case "cloudflare-ai-gateway":
return "Cloudflare AI Gateway"
case "ollama":
return "Ollama"
}
return titleProviderID(id)
}
func titleProviderID(id string) string {
parts := strings.FieldsFunc(id, func(r rune) bool { return r == '-' || r == '_' })
for i, p := range parts {
if p == "" {
continue
}
parts[i] = strings.ToUpper(p[:1]) + p[1:]
}
return strings.Join(parts, " ")
}