Documentation
¶
Index ¶
- func InferOAuthProvider(providerName, endpoint string) string
- func IsAnthropicType(providerType string) bool
- func IsOpenAICompatibleType(providerType string) bool
- func IsOpenAIResponsesType(providerType string) bool
- func ProtocolLabel(providerType string) string
- func RuntimeModelSpec(p Provider) string
- type Config
- type Provider
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InferOAuthProvider ¶ added in v1.3.2
InferOAuthProvider restores the public OAuth provider name for configs written before oauthProvider was persisted. The oauth:// endpoint is an internal backend marker, so ordinary HTTP providers are never inferred.
func IsAnthropicType ¶ added in v1.2.7
func IsOpenAICompatibleType ¶ added in v1.2.4
func IsOpenAIResponsesType ¶ added in v1.2.4
func ProtocolLabel ¶ added in v1.2.4
ProtocolLabel returns a short, human-friendly protocol name for display purposes (e.g. in the `set` TUI, `ccl ls`, and `ccl doctor` output). It intentionally does NOT change the underlying stored provider.Type value, which remains a stable, machine-readable string ("anthropic", "openai", "openai_responses", ...) relied on throughout the codebase for dispatch logic (proxy, launcher, doctor, ...).
OpenAI exposes two distinct generation protocols behind the same "openai" umbrella:
- Chat Completions — the old standard, broadest compatibility: labeled "openai(chat)".
- Responses — the newer agent protocol: labeled "openai(responses)".
func RuntimeModelSpec ¶ added in v1.3.4
RuntimeModelSpec returns every model ID that Claude Code may send for this provider. Embedded runtimes use the list to register model routes and aliases.
Types ¶
type Provider ¶
type Provider struct {
Name string `yaml:"name" mapstructure:"name"`
Type string `yaml:"type" mapstructure:"type"`
Endpoint string `yaml:"endpoint" mapstructure:"endpoint"`
APIKey string `yaml:"apikey" mapstructure:"apikey"`
// Model is ccl's local model pool. In OpenAI-compatible proxy mode it is
// also used to serve /v1/models from the local proxy; direct Anthropic
// providers must expose their own /v1/models to Claude Code.
Model string `yaml:"model" mapstructure:"model"`
Env map[string]string `yaml:"env,omitempty" mapstructure:"env,omitempty"`
// AnthropicAuth controls how Claude Code authenticates direct Anthropic-compatible providers.
// Empty and "x-api-key" use ANTHROPIC_API_KEY; "bearer" uses ANTHROPIC_AUTH_TOKEN.
AnthropicAuth string `yaml:"anthropicAuth,omitempty" mapstructure:"anthropicAuth,omitempty"`
// OAuthProvider selects an embedded CLIProxyAPI OAuth backend. Supported
// values are chatgpt and gemini. The legacy codex value remains readable.
OAuthProvider string `yaml:"oauthProvider,omitempty" mapstructure:"oauthProvider,omitempty"`
// Custom model configuration (Claude Code native features)
CustomModelID string `yaml:"customModelId,omitempty" mapstructure:"customModelId,omitempty"` // ANTHROPIC_CUSTOM_MODEL_OPTION
OpusModel string `yaml:"opusModel,omitempty" mapstructure:"opusModel,omitempty"` // ANTHROPIC_DEFAULT_OPUS_MODEL
SonnetModel string `yaml:"sonnetModel,omitempty" mapstructure:"sonnetModel,omitempty"` // ANTHROPIC_DEFAULT_SONNET_MODEL
HaikuModel string `yaml:"haikuModel,omitempty" mapstructure:"haikuModel,omitempty"` // ANTHROPIC_DEFAULT_HAIKU_MODEL
SubagentModel string `yaml:"subagentModel,omitempty" mapstructure:"subagentModel,omitempty"` // CLAUDE_CODE_SUBAGENT_MODEL
ModelOverrides map[string]string `yaml:"modelOverrides,omitempty" mapstructure:"modelOverrides,omitempty"` // modelOverrides in settings.json
EffortLevel string `yaml:"effortLevel,omitempty" mapstructure:"effortLevel,omitempty"` // CLAUDE_CODE_EFFORT_LEVEL; empty means Default/follow Claude
}