| 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) | |