Capture resolved backend and profile resources
This commit is contained in:
71
internal/configuration/resources.go
Normal file
71
internal/configuration/resources.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package configuration
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"go.maximumdirect.net/promptkit/internal/backend"
|
||||
"go.maximumdirect.net/promptkit/internal/domain"
|
||||
"go.maximumdirect.net/promptkit/internal/profile"
|
||||
)
|
||||
|
||||
// ProfileResource is the resolved profile before execution completion.
|
||||
// Its fields borrow immutable configuration captured by the adapter.
|
||||
type ProfileResource struct {
|
||||
ID string
|
||||
Backend, Endpoint, Model *string
|
||||
Temperature, TopP *float64
|
||||
MaxTokens, TimeoutSeconds *int
|
||||
ServiceTier, ReasoningEffort *string
|
||||
APIKeyEnv *string
|
||||
APIKeyRequired *bool
|
||||
ExtraParams map[string]any
|
||||
}
|
||||
|
||||
// BackendResource is the resolved backend and its configured diagnostics.
|
||||
// Its fields borrow immutable configuration captured by the adapter.
|
||||
type BackendResource struct {
|
||||
ID, Endpoint string
|
||||
APIKeyEnv *string
|
||||
ConcurrencyLimit, QueueCapacity *int
|
||||
ExtraParams map[string]any
|
||||
SmokeTests *domain.BackendSmokeTestConfig
|
||||
}
|
||||
|
||||
func (state *loaded) InspectProfile(ctx context.Context, id string) (*ProfileResource, error) {
|
||||
if err := ctx.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if state == nil {
|
||||
return nil, fmt.Errorf("%w: %q", profile.ErrProfileNotFound, id)
|
||||
}
|
||||
config, ok := state.profileRecords[id]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("%w: %q", profile.ErrProfileNotFound, id)
|
||||
}
|
||||
return &ProfileResource{
|
||||
ID: id, Backend: config.Backend, Endpoint: config.Endpoint, Model: config.Model,
|
||||
Temperature: config.Temperature, TopP: config.TopP, MaxTokens: config.MaxTokens,
|
||||
TimeoutSeconds: config.TimeoutSeconds, ServiceTier: config.ServiceTier,
|
||||
ReasoningEffort: config.ReasoningEffort, APIKeyEnv: config.APIKeyEnv,
|
||||
APIKeyRequired: config.APIKeyRequired, ExtraParams: config.ExtraParams,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (state *loaded) InspectBackend(ctx context.Context, id string) (*BackendResource, error) {
|
||||
if err := ctx.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if state == nil {
|
||||
return nil, fmt.Errorf("%w: %q", backend.ErrBackendNotFound, id)
|
||||
}
|
||||
config, ok := state.backendRecords[id]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("%w: %q", backend.ErrBackendNotFound, id)
|
||||
}
|
||||
return &BackendResource{
|
||||
ID: id, Endpoint: valueOrZero(config.Endpoint), APIKeyEnv: config.APIKeyEnv,
|
||||
ConcurrencyLimit: config.ConcurrencyLimit, QueueCapacity: config.QueueCapacity,
|
||||
ExtraParams: config.ExtraParams, SmokeTests: captureBackend(id, config).SmokeTests,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user