Load backend smoke-test metadata
This commit is contained in:
66
backends.go
66
backends.go
@@ -17,8 +17,9 @@ const BackendLocal = "local"
|
||||
// BackendConfig is a presence-aware convenience value for a keyed backend
|
||||
// definition. Nil pointer fields are omitted, while non-nil pointers preserve
|
||||
// explicit zero or blank values. A nil ExtraParams map is omitted; a non-nil
|
||||
// empty map supplies an empty mapping. Use raw ConfigKit Mapping inputs for
|
||||
// explicit null. BackendConfig has no stable JSON representation.
|
||||
// empty map supplies an empty mapping. A nil SmokeTests pointer is omitted; a
|
||||
// non-nil pointer supplies a smoke_tests mapping. Use raw ConfigKit Mapping
|
||||
// inputs for explicit null. BackendConfig has no stable JSON representation.
|
||||
type BackendConfig struct {
|
||||
// Endpoint is the required absolute HTTP(S) base URL after all layers merge.
|
||||
Endpoint *string
|
||||
@@ -31,6 +32,43 @@ type BackendConfig struct {
|
||||
QueueCapacity *int
|
||||
// ExtraParams supplies JSON-compatible provider request defaults.
|
||||
ExtraParams map[string]any
|
||||
// SmokeTests supplies optional diagnostic defaults and HTTP probe settings.
|
||||
SmokeTests *BackendSmokeTestConfig
|
||||
}
|
||||
|
||||
// BackendSmokeTestConfig contains optional diagnostic settings associated with
|
||||
// a backend. Nil nested fields are omitted by BackendSource.
|
||||
type BackendSmokeTestConfig struct {
|
||||
// DefaultProfile is the exact profile ID selected as the backend's
|
||||
// diagnostic inference default. A supplied value must not be blank; the ID
|
||||
// is resolved only when that default is selected.
|
||||
DefaultProfile *string
|
||||
// Reachability optionally selects a full HTTP destination for reachability
|
||||
// diagnostics. A nil endpoint uses the effective backend endpoint.
|
||||
Reachability *ReachabilityProbeConfig
|
||||
// Authentication optionally declares a named authentication diagnostic.
|
||||
// A supplied object requires Kind.
|
||||
Authentication *AuthenticationProbeConfig
|
||||
}
|
||||
|
||||
// ReachabilityProbeConfig configures an optional reachability destination.
|
||||
type ReachabilityProbeConfig struct {
|
||||
// Endpoint is an absolute HTTP(S) URL, including any desired path or query.
|
||||
// Nil selects the effective backend endpoint; an explicit blank value is
|
||||
// invalid.
|
||||
Endpoint *string
|
||||
}
|
||||
|
||||
// AuthenticationProbeConfig configures an optional named authentication
|
||||
// diagnostic.
|
||||
type AuthenticationProbeConfig struct {
|
||||
// Kind selects the authentication adapter. Supported values are "none" and
|
||||
// "openrouter_key"; surrounding whitespace and case are normalized.
|
||||
Kind *string
|
||||
// Endpoint is an absolute HTTP(S) URL, including any desired path or query.
|
||||
// Nil selects the adapter's backend-relative destination; an explicit blank
|
||||
// value is invalid.
|
||||
Endpoint *string
|
||||
}
|
||||
|
||||
// BackendSource creates a labeled ConfigKit mapping from keyed backend values.
|
||||
@@ -57,6 +95,30 @@ func BackendSource(label string, backends map[string]BackendConfig) configkit.So
|
||||
if config.ExtraParams != nil {
|
||||
fields["extra_params"] = providerMapForMapping(config.ExtraParams)
|
||||
}
|
||||
if config.SmokeTests != nil {
|
||||
smokeTests := make(map[string]any)
|
||||
if config.SmokeTests.DefaultProfile != nil {
|
||||
smokeTests["default_profile"] = *config.SmokeTests.DefaultProfile
|
||||
}
|
||||
if config.SmokeTests.Reachability != nil {
|
||||
reachability := make(map[string]any)
|
||||
if config.SmokeTests.Reachability.Endpoint != nil {
|
||||
reachability["endpoint"] = *config.SmokeTests.Reachability.Endpoint
|
||||
}
|
||||
smokeTests["reachability"] = reachability
|
||||
}
|
||||
if config.SmokeTests.Authentication != nil {
|
||||
authentication := make(map[string]any)
|
||||
if config.SmokeTests.Authentication.Kind != nil {
|
||||
authentication["kind"] = *config.SmokeTests.Authentication.Kind
|
||||
}
|
||||
if config.SmokeTests.Authentication.Endpoint != nil {
|
||||
authentication["endpoint"] = *config.SmokeTests.Authentication.Endpoint
|
||||
}
|
||||
smokeTests["authentication"] = authentication
|
||||
}
|
||||
fields["smoke_tests"] = smokeTests
|
||||
}
|
||||
definitions[id] = fields
|
||||
}
|
||||
return configkit.Mapping(label, map[string]any{"backends": definitions})
|
||||
|
||||
Reference in New Issue
Block a user