Add projects
This commit is contained in:
parent
2d3a9ad623
commit
8b607dd700
1802 changed files with 503346 additions and 2 deletions
82
backend/internal/config/sdk_config.go
Normal file
82
backend/internal/config/sdk_config.go
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
// Package config provides configuration management for the CLI Proxy API server.
|
||||
// It handles loading and parsing YAML configuration files, and provides structured
|
||||
// access to application settings including server port, authentication directory,
|
||||
// debug settings, proxy configuration, and API keys.
|
||||
package config
|
||||
|
||||
// SDKConfig represents the application's configuration, loaded from a YAML file.
|
||||
type SDKConfig struct {
|
||||
// ProxyURL is the URL of an optional proxy server to use for outbound requests.
|
||||
ProxyURL string `yaml:"proxy-url" json:"proxy-url"`
|
||||
|
||||
// DisableImageGeneration controls whether the built-in image_generation tool is injected/allowed.
|
||||
//
|
||||
// Supported values:
|
||||
// - false (default): image_generation is enabled everywhere (normal behavior).
|
||||
// - true: image_generation is disabled everywhere. The server stops injecting it, removes it from request payloads,
|
||||
// and returns 404 for /v1/images/generations and /v1/images/edits.
|
||||
// - "chat": disable image_generation injection for all non-images endpoints (e.g. /v1/responses, /v1/chat/completions),
|
||||
// while keeping /v1/images/generations and /v1/images/edits enabled and preserving image_generation there.
|
||||
// - "passthrough": do not modify the tool list on non-images endpoints — keep image_generation if the client
|
||||
// sent it and do not inject it otherwise; on /v1/images/generations and /v1/images/edits behave like "chat".
|
||||
DisableImageGeneration DisableImageGenerationMode `yaml:"disable-image-generation" json:"disable-image-generation"`
|
||||
|
||||
// GPTImage2BaseModel sets the base (mainline) model used by the legacy hosted
|
||||
// image_generation tool path when a Codex image request is not proxied directly
|
||||
// through the Image API.
|
||||
//
|
||||
// The value must start with "gpt-" (case-insensitive). If empty or invalid, the
|
||||
// default base model ("gpt-5.4-mini") is used.
|
||||
GPTImage2BaseModel string `yaml:"gpt-image-2-base-model,omitempty" json:"gpt-image-2-base-model,omitempty"`
|
||||
|
||||
// VideoResultAuthCacheTTL controls how long video IDs stay pinned to the credential
|
||||
// that created them. Accepts duration strings like "30m" or "3h".
|
||||
// Empty or invalid values use the default 3h.
|
||||
VideoResultAuthCacheTTL string `yaml:"video-result-auth-cache-ttl,omitempty" json:"video-result-auth-cache-ttl,omitempty"`
|
||||
|
||||
// ForceModelPrefix requires explicit model prefixes (e.g., "teamA/gemini-3-pro-preview")
|
||||
// to target prefixed credentials. When false, unprefixed model requests may use prefixed
|
||||
// credentials as well.
|
||||
ForceModelPrefix bool `yaml:"force-model-prefix" json:"force-model-prefix"`
|
||||
|
||||
// RequestLog enables or disables detailed request logging functionality.
|
||||
RequestLog bool `yaml:"request-log" json:"request-log"`
|
||||
|
||||
// CodexOptimizeMultiAgentV2 mirrors the provider-wide runtime setting for API handlers.
|
||||
CodexOptimizeMultiAgentV2 bool `yaml:"-" json:"-"`
|
||||
|
||||
// ClaudeCode configures Claude Code compatibility behavior.
|
||||
ClaudeCode ClaudeCodeConfig `yaml:"claude-code" json:"claude-code"`
|
||||
|
||||
// APIKeys is a list of keys for authenticating clients to this proxy server.
|
||||
APIKeys []string `yaml:"api-keys" json:"api-keys"`
|
||||
|
||||
// PassthroughHeaders controls whether upstream response headers are forwarded to downstream clients.
|
||||
// Default is false (disabled).
|
||||
PassthroughHeaders bool `yaml:"passthrough-headers" json:"passthrough-headers"`
|
||||
|
||||
// Streaming configures server-side streaming behavior (keep-alives and safe bootstrap retries).
|
||||
Streaming StreamingConfig `yaml:"streaming" json:"streaming"`
|
||||
|
||||
// NonStreamKeepAliveInterval controls how often blank lines are emitted for non-streaming responses.
|
||||
// <= 0 disables keep-alives. Value is in seconds.
|
||||
NonStreamKeepAliveInterval int `yaml:"nonstream-keepalive-interval,omitempty" json:"nonstream-keepalive-interval,omitempty"`
|
||||
}
|
||||
|
||||
// ClaudeCodeConfig configures Claude Code compatibility behavior.
|
||||
type ClaudeCodeConfig struct {
|
||||
// DisableCloakingModelList disables model ID cloaking in Anthropic model list responses.
|
||||
DisableCloakingModelList bool `yaml:"disable-cloaking-model-list" json:"disable-cloaking-model-list"`
|
||||
}
|
||||
|
||||
// StreamingConfig holds server streaming behavior configuration.
|
||||
type StreamingConfig struct {
|
||||
// KeepAliveSeconds controls how often the server emits SSE heartbeats (": keep-alive\n\n").
|
||||
// <= 0 disables keep-alives. Default is 0.
|
||||
KeepAliveSeconds int `yaml:"keepalive-seconds,omitempty" json:"keepalive-seconds,omitempty"`
|
||||
|
||||
// BootstrapRetries controls how many times the server may retry a streaming request before any bytes are sent,
|
||||
// to allow auth rotation / transient recovery.
|
||||
// <= 0 disables bootstrap retries. Default is 0.
|
||||
BootstrapRetries int `yaml:"bootstrap-retries,omitempty" json:"bootstrap-retries,omitempty"`
|
||||
}
|
||||
Loading…
Reference in a new issue