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 }