package store import "context" // SurfaceRegistryStore — CRUD for the surface_registry table. // Core surfaces are seeded at startup. Extension surfaces are managed via admin API. type SurfaceRegistryStore interface { // Seed upserts a core surface (called at startup by page engine). Seed(ctx context.Context, id, title, source string, manifest map[string]any) error // List returns all registered surfaces, ordered by title. List(ctx context.Context) ([]SurfaceRegistration, error) // Get returns a single surface by ID. Get(ctx context.Context, id string) (*SurfaceRegistration, error) // SetEnabled toggles a surface's enabled state. SetEnabled(ctx context.Context, id string, enabled bool) error // Delete removes an extension surface. Core surfaces cannot be deleted. Delete(ctx context.Context, id string) error // ListEnabled returns IDs of all enabled surfaces. ListEnabled(ctx context.Context) ([]string, error) } // SurfaceRegistration is a row from surface_registry. type SurfaceRegistration struct { ID string `json:"id" db:"id"` Title string `json:"title" db:"title"` Manifest map[string]any `json:"manifest" db:"manifest"` Enabled bool `json:"enabled" db:"enabled"` Source string `json:"source" db:"source"` InstalledAt string `json:"installed_at" db:"installed_at"` UpdatedAt string `json:"updated_at" db:"updated_at"` }