package contract import ( "context" "net/http" ) const ( ModelSourcePlatform = "platform" ModelSourceCustom = "custom" ) // PlatformAIConfig is a runtime-only OpenAI-compatible model configuration. // Credentials and the signed HTTP client are supplied by the host and are // never persisted in Agent Desk tables or returned by dashboard APIs. type PlatformAIConfig struct { BaseURL string APIKey string ChatEnabled bool ChatModel string VisionEnabled bool VisionModel string EmbeddingEnabled bool ModelName string EmbeddingModel string EmbeddingDimension int MaxOutputTokens int TimeoutMS int MaxRetryCount int HTTPClient *http.Client } type PlatformAIStatus struct { Enabled bool `json:"enabled"` Balance float64 `json:"balance"` Currency string `json:"currency"` DefaultProvider string `json:"default_provider"` DefaultModel string `json:"default_model"` ChatEnabled bool `json:"chat_enabled"` ChatProvider string `json:"chat_provider"` ChatModel string `json:"chat_model"` VisionEnabled bool `json:"vision_enabled"` VisionModel string `json:"vision_model"` EmbeddingEnabled bool `json:"embedding_enabled"` EmbeddingModel string `json:"embedding_model"` EmbeddingDimension int `json:"embedding_dimension"` RechargeURL string `json:"recharge_url"` } // PlatformAIProvider lets the host resolve the current model source on every // request, so changing the system setting takes effect without restarting. type PlatformAIProvider interface { ModelSource(context.Context) (string, error) Config(context.Context) (*PlatformAIConfig, error) Status(context.Context) (*PlatformAIStatus, error) }