config

package
v0.4.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Version = "dev"

Version is set at build time via -ldflags

Functions

func EnsureExists

func EnsureExists() (bool, error)

EnsureExists is a package-level convenience that calls (*Loader).EnsureExists with the default loader.

func GetConfigPath

func GetConfigPath() string

GetConfigPath returns the path to the config file

func Save

func Save(cfg *Config) error

Save writes the config to disk (package-level convenience function)

func SetDefaultProvider added in v0.4.0

func SetDefaultProvider(name string) error

SetDefaultProvider updates only the cli.defaultProvider field in the config file on disk. It uses yaml.Node to preserve comments and env-var templates.

func StoreInContext added in v0.3.2

func StoreInContext(ctx context.Context, cfg *Config) context.Context

StoreInContext returns a new context with the config stored.

Types

type CLIConfig

type CLIConfig struct {
	DefaultProvider string `json:"defaultProvider,omitempty" yaml:"defaultProvider,omitempty"`
}

CLIConfig contains CLI-specific configuration

type Config

type Config struct {
	Providers    map[string]Provider `json:"providers" yaml:"providers"`
	Router       RouterConfig        `json:"router,omitempty" yaml:"router,omitempty"`
	CLI          CLIConfig           `json:"cli,omitempty" yaml:"cli,omitempty"`
	Optimization OptimizationConfig  `json:"optimization,omitempty" yaml:"optimization,omitempty"`
}

Config is the main configuration for CCL

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns the default configuration with optimization settings. Providers are loaded from the YAML template via EnsureExists or Load.

func FromContext added in v0.3.2

func FromContext(ctx context.Context) *Config

FromContext extracts the config from a context. Returns nil if not present.

func Init

func Init() (*Config, error)

Init initializes config directory and loads or creates config

func Load

func Load() (*Config, error)

Load reads and parses the config file (package-level convenience function)

type Loader

type Loader struct {
	// contains filtered or unexported fields
}

Loader handles configuration loading with injectable paths

func NewLoader

func NewLoader() *Loader

NewLoader creates a Loader with default paths

func NewLoaderWithPaths

func NewLoaderWithPaths(homeDir, configFile string) *Loader

NewLoaderWithPaths creates a Loader with custom paths (for testing)

func (*Loader) ConfigPath

func (l *Loader) ConfigPath() string

ConfigPath returns the path to the config file for this loader

func (*Loader) EnsureExists

func (l *Loader) EnsureExists() (bool, error)

EnsureExists creates the config directory and writes the default config file if one doesn't already exist. Returns true if a new file was created.

func (*Loader) Init

func (l *Loader) Init() (*Config, error)

Init initializes config directory and loads or creates config. Uses EnsureExists to create defaults if needed, then loads the config.

func (*Loader) Load

func (l *Loader) Load() (*Config, error)

Load reads and parses the config file

func (*Loader) Save

func (l *Loader) Save(cfg *Config) error

Save writes the config to disk

type OptimizationConfig

type OptimizationConfig struct {
	DisableNonessentialTraffic bool `json:"disableNonessentialTraffic,omitempty" yaml:"disableNonessentialTraffic,omitempty"`
	DisableAutoupdater         bool `json:"disableAutoupdater,omitempty" yaml:"disableAutoupdater,omitempty"`
	DisableTelemetry           bool `json:"disableTelemetry,omitempty" yaml:"disableTelemetry,omitempty"`
	DisableErrorReporting      bool `json:"disableErrorReporting,omitempty" yaml:"disableErrorReporting,omitempty"`
	DisableCostWarnings        bool `json:"disableCostWarnings,omitempty" yaml:"disableCostWarnings,omitempty"`
	APITimeoutMs               int  `json:"apiTimeoutMs,omitempty" yaml:"apiTimeoutMs,omitempty"`
	MaxOutputTokens            int  `json:"maxOutputTokens,omitempty" yaml:"maxOutputTokens,omitempty"`
	NodeMaxOldSpaceSize        int  `json:"nodeMaxOldSpaceSize,omitempty" yaml:"nodeMaxOldSpaceSize,omitempty"`
}

OptimizationConfig defines Claude Code optimization and performance settings

type Provider

type Provider struct {
	APIKey         string            `json:"apiKey,omitempty" yaml:"apiKey,omitempty"`
	AuthToken      string            `json:"authToken,omitempty" yaml:"authToken,omitempty"`
	OAuthToken     string            `json:"oauthToken,omitempty" yaml:"oauthToken,omitempty"`
	BaseURL        string            `json:"baseUrl,omitempty" yaml:"baseUrl,omitempty"`
	Model          string            `json:"model,omitempty" yaml:"model,omitempty"`
	SmallFastModel string            `json:"smallFastModel,omitempty" yaml:"smallFastModel,omitempty"`
	Transformer    TransformerConfig `json:"transformer,omitempty" yaml:"transformer,omitempty"`
}

Provider defines an LLM provider configuration

func GetProvider added in v0.3.2

func GetProvider(cfg *Config, name string) (Provider, bool)

GetProvider retrieves a provider configuration by name from the config.

func (Provider) AuthCredential added in v0.4.2

func (p Provider) AuthCredential() string

AuthCredential returns the preferred auth token for the Anthropic-compatible endpoint: AuthToken takes precedence over APIKey. OAuth is handled separately.

func (Provider) HasAuth added in v0.3.2

func (p Provider) HasAuth() bool

HasAuth reports whether the provider has any authentication credential configured.

type ResponseFormat

type ResponseFormat struct {
	Type       string         `json:"type" yaml:"type"`
	JSONSchema map[string]any `json:"jsonSchema,omitempty" yaml:"jsonSchema,omitempty"`
}

ResponseFormat defines structured output configuration

type RouterConfig

type RouterConfig struct {
	Default              string `json:"default,omitempty" yaml:"default,omitempty"`
	Background           string `json:"background,omitempty" yaml:"background,omitempty"`
	LongContext          string `json:"longContext,omitempty" yaml:"longContext,omitempty"`
	Think                string `json:"think,omitempty" yaml:"think,omitempty"`
	WebSearch            string `json:"webSearch,omitempty" yaml:"webSearch,omitempty"`
	LongContextThreshold int    `json:"longContextThreshold,omitempty" yaml:"longContextThreshold,omitempty"`
}

RouterConfig defines model routing configuration

type TransformRule

type TransformRule struct {
	ModelPattern   string `json:"modelPattern,omitempty" yaml:"modelPattern,omitempty"`
	MessagePattern string `json:"messagePattern,omitempty" yaml:"messagePattern,omitempty"`
	TokenRange     struct {
		Min int `json:"min,omitempty" yaml:"min,omitempty"`
		Max int `json:"max,omitempty" yaml:"max,omitempty"`
	} `json:"tokenRange,omitempty" yaml:"tokenRange,omitempty"`

	SetModel       string            `json:"setModel,omitempty" yaml:"setModel,omitempty"`
	SetMaxTokens   int               `json:"setMaxTokens,omitempty" yaml:"setMaxTokens,omitempty"`
	SetTemperature float64           `json:"setTemperature,omitempty" yaml:"setTemperature,omitempty"`
	AddHeaders     map[string]string `json:"addHeaders,omitempty" yaml:"addHeaders,omitempty"`
	ModifyBody     map[string]any    `json:"modifyBody,omitempty" yaml:"modifyBody,omitempty"`

	ResponseFormat *ResponseFormat `json:"responseFormat,omitempty" yaml:"responseFormat,omitempty"`
}

TransformRule defines a conditional transformation rule

type TransformerConfig

type TransformerConfig struct {
	Use   []string        `json:"use,omitempty" yaml:"use,omitempty"`
	Rules []TransformRule `json:"rules,omitempty" yaml:"rules,omitempty"`
}

TransformerConfig defines request/response transformation settings

func (TransformerConfig) HasRules added in v0.4.0

func (t TransformerConfig) HasRules() bool

HasRules reports whether the transformer has any rules configured.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL