Files
chorus/internal/seed/defaults.go
T

49 lines
1.1 KiB
Go

package seed
import (
_ "embed"
"encoding/json"
"fmt"
)
//go:embed defaults.json
var defaultsJSON []byte
type Prompt struct {
Key string `json:"key"`
Kind string `json:"kind"`
APIType string `json:"api_type"`
Name string `json:"name"`
Version uint `json:"version"`
Template string `json:"template"`
}
type Provider struct {
Slug string `json:"slug"`
Name string `json:"name"`
}
type Model struct {
Name string `json:"name"`
ModelID string `json:"model_id"`
APIType string `json:"api_type"`
Kind string `json:"kind"`
}
type Defaults struct {
Prompts []Prompt `json:"prompts"`
Provider Provider `json:"provider"`
Models []Model `json:"models"`
}
func LoadDefaults() (Defaults, error) {
var defaults Defaults
if err := json.Unmarshal(defaultsJSON, &defaults); err != nil {
return Defaults{}, fmt.Errorf("decode embedded seed data: %w", err)
}
if len(defaults.Prompts) != 2 || len(defaults.Models) != 2 || defaults.Provider.Slug == "" {
return Defaults{}, fmt.Errorf("embedded seed data is incomplete")
}
return defaults, nil
}