from typing import Any, Literal from pydantic import BaseModel, Field class SlideSpec(BaseModel): layout: Literal["title", "section", "bullets", "chart_and_insight", "image_reference"] = "bullets" title: str subtitle: str | None = None bullets: list[str] = Field(default_factory=list) chart_ref: str | None = None image_ref: str | None = None insights: list[str] = Field(default_factory=list) notes: str | None = None class PresentationSpec(BaseModel): title: str theme: dict[str, Any] slides: list[SlideSpec] provenance: list[dict[str, Any]] = Field(default_factory=list)