51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
package engine
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"gitea.maximumdirect.net/eric/promptkit/internal/backend"
|
|
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
|
|
"gitea.maximumdirect.net/eric/promptkit/internal/profile"
|
|
)
|
|
|
|
func maintainedProfileDefinitions() []domain.ExecutionProfile {
|
|
return []domain.ExecutionProfile{
|
|
{
|
|
ID: "promptkit-openrouter-standard",
|
|
BaseProfileID: "gemini-flash-latest",
|
|
},
|
|
{
|
|
ID: "promptkit-openrouter-auto",
|
|
BackendID: backend.OpenRouterID,
|
|
Model: "openrouter/auto",
|
|
},
|
|
}
|
|
}
|
|
|
|
func newMaintainedProfileRepository(catalogProfiles profile.Repository, maintainedBackends []domain.Backend) (profile.Repository, error) {
|
|
definitions := maintainedProfileDefinitions()
|
|
owned, err := profile.NewMemoryRepository(definitions)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("create Promptkit-maintained profiles: %w", err)
|
|
}
|
|
|
|
combined := profile.NewOverlayRepository(owned, catalogProfiles)
|
|
resolved := profile.NewResolvingRepository(combined)
|
|
registry, err := backend.NewRegistry(maintainedBackends, nil)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("construct maintained backend registry: %w", err)
|
|
}
|
|
for _, definition := range definitions {
|
|
effective, err := resolved.GetProfile(context.Background(), definition.ID)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("resolve Promptkit-maintained profile %q: %w", definition.ID, err)
|
|
}
|
|
if _, err := registry.GetBackend(effective.BackendID); err != nil {
|
|
return nil, fmt.Errorf("Promptkit-maintained profile %q selects unavailable backend %q: %w", definition.ID, effective.BackendID, err)
|
|
}
|
|
}
|
|
|
|
return combined, nil
|
|
}
|