diff --git a/llm/provider.go b/llm/provider.go index 70c84a7..7e1cd75 100644 --- a/llm/provider.go +++ b/llm/provider.go @@ -168,6 +168,14 @@ type Model struct { Capabilities []string `json:"capabilities,omitempty"` Source string `json:"source,omitempty"` LiveMetadata json.RawMessage `json:"live_metadata,omitempty"` + + // SupportsThinkingToggle indicates this model's provider wire protocol + // honors the ThinkingEnabled toggle. Populated by the engine catalog. + SupportsThinkingToggle bool `json:"supports_thinking_toggle,omitempty"` + // DefaultThinkingEnabled is the provider-default thinking state for this + // model when no explicit user preference is set. nil means no provider + // default (fall through to global settings). + DefaultThinkingEnabled *bool `json:"default_thinking_enabled,omitempty"` } // ModelClass is a provider-neutral relative model cost/capability band. @@ -272,22 +280,31 @@ type GatewayInspector interface { RoutingPreview(ctx context.Context, modelID string) (string, error) } +// GatewayRegionOption describes one selectable region for a regional gateway. +type GatewayRegionOption struct { + Value string `json:"value"` + DisplayName string `json:"display_name"` + Endpoint string `json:"endpoint,omitempty"` +} + // Gateway is a provider/gateway descriptor. type Gateway struct { - ID string `json:"id"` - DisplayName string `json:"display_name"` - DeploymentID string `json:"deployment_id,omitempty"` - CredentialEnv string `json:"credential_env"` - RequiresKey bool `json:"requires_key"` - SortOrder int `json:"sort_order"` - ChatPreference int `json:"chat_preference"` - SupportsLiveDiscovery bool `json:"supports_live_discovery"` - CredentialConfigured bool `json:"credential_configured"` - DeploymentConfigured bool `json:"deployment_configured"` - ModelCount int `json:"model_count"` - RegionLabel string `json:"region_label,omitempty"` - RegionRequired bool `json:"region_required"` - Active bool `json:"active"` + ID string `json:"id"` + DisplayName string `json:"display_name"` + DeploymentID string `json:"deployment_id,omitempty"` + CredentialEnv string `json:"credential_env"` + RequiresKey bool `json:"requires_key"` + SortOrder int `json:"sort_order"` + ChatPreference int `json:"chat_preference"` + SupportsLiveDiscovery bool `json:"supports_live_discovery"` + CredentialConfigured bool `json:"credential_configured"` + DeploymentConfigured bool `json:"deployment_configured"` + ModelCount int `json:"model_count"` + RegionLabel string `json:"region_label,omitempty"` + RegionRequired bool `json:"region_required"` + RegionOptions []GatewayRegionOption `json:"region_options,omitempty"` + DNSHost string `json:"dns_host,omitempty"` + Active bool `json:"active"` } // DeploymentSummary summarizes deployment routing for a model (host-facing).