64 lines
2.0 KiB
Go
64 lines
2.0 KiB
Go
// Package register composes the production D&D module family.
|
|
package register
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"gitea.maximumdirect.net/eric/notarius/internal/framework/llm"
|
|
"gitea.maximumdirect.net/eric/notarius/internal/framework/pipeline"
|
|
)
|
|
|
|
type registration struct {
|
|
name string
|
|
register func() error
|
|
}
|
|
|
|
// Register adds all production D&D modules, validators, policy, and assets.
|
|
func Register(registries pipeline.Registries, assets *llm.AssetRegistry) error {
|
|
if err := validateRegistries(registries, assets); err != nil {
|
|
return err
|
|
}
|
|
if err := registerModules(registries); err != nil {
|
|
return err
|
|
}
|
|
if err := registerValidators(registries); err != nil {
|
|
return err
|
|
}
|
|
if err := registerPromptAssets(assets); err != nil {
|
|
return err
|
|
}
|
|
return registerDefaultChains(registries.ValidatorChains)
|
|
}
|
|
|
|
func runRegistrations(registrations []registration) error {
|
|
for _, registration := range registrations {
|
|
if err := registration.register(); err != nil {
|
|
return fmt.Errorf("register dnd %s: %w", registration.name, err)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func validateRegistries(registries pipeline.Registries, assets *llm.AssetRegistry) error {
|
|
switch {
|
|
case registries.Chunkers == nil:
|
|
return fmt.Errorf("dnd registrar: chunker registry must not be nil")
|
|
case registries.ArtifactCodecs == nil:
|
|
return fmt.Errorf("dnd registrar: artifact codec registry must not be nil")
|
|
case registries.Extractors == nil:
|
|
return fmt.Errorf("dnd registrar: extractor registry must not be nil")
|
|
case registries.Mergers == nil:
|
|
return fmt.Errorf("dnd registrar: merger registry must not be nil")
|
|
case registries.Normalizers == nil:
|
|
return fmt.Errorf("dnd registrar: normalizer registry must not be nil")
|
|
case registries.Validators == nil:
|
|
return fmt.Errorf("dnd registrar: validator registry must not be nil")
|
|
case registries.ValidatorChains == nil:
|
|
return fmt.Errorf("dnd registrar: validator chain registry must not be nil")
|
|
case assets == nil:
|
|
return fmt.Errorf("dnd registrar: asset registry must not be nil")
|
|
default:
|
|
return nil
|
|
}
|
|
}
|