from typing import Any, Literal from pydantic import BaseModel, Field class VisualReference(BaseModel): phrase: str asset_id: str view: str | None = None confidence: float = 1.0 class VisualOperation(BaseModel): id: str op: Literal[ "get_view", "get_ocr_regions", "ground_object", "extract_object_palette", "extract_global_palette", "extract_chart", "query_chart", "crop_region", "enlarge_region", "rerun_ocr", "create_presentation", "create_table", "answer_from_evidence", ] asset_id: str | None = None view: str | None = None parameters: dict[str, Any] = Field(default_factory=dict) class VisualPlan(BaseModel): intent: str references: list[VisualReference] = Field(default_factory=list) operations: list[VisualOperation] = Field(default_factory=list)