62 lines
1.6 KiB
Go
62 lines
1.6 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"`
|
|
Capability string `json:"capability"`
|
|
Name string `json:"name"`
|
|
Version uint `json:"version"`
|
|
Template string `json:"template"`
|
|
DefaultRoleRule string `json:"default_role_rule"`
|
|
}
|
|
|
|
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"`
|
|
Capability string `json:"capability"`
|
|
}
|
|
|
|
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")
|
|
}
|
|
for _, prompt := range defaults.Prompts {
|
|
if prompt.Key == "" || prompt.Capability == "" {
|
|
return Defaults{}, fmt.Errorf("embedded seed prompt data is incomplete")
|
|
}
|
|
}
|
|
for _, model := range defaults.Models {
|
|
if model.ModelID == "" || model.Capability == "" {
|
|
return Defaults{}, fmt.Errorf("embedded seed model data is incomplete")
|
|
}
|
|
}
|
|
return defaults, nil
|
|
}
|