from typing import Any, List, Literal, NewType, TypedDict, Union from .type_utils import register_type Text = NewType("Text", str) Number = NewType("Number", Union[float, int]) class Turn(TypedDict): role: Literal["system", "user", "agent"] content: Text Dialog = NewType("Dialog", List[Turn]) class Image(TypedDict): image: Any format: str Video = NewType("Video", List[Image]) class Audio(TypedDict): audio: Any class Table(TypedDict): header: List[str] rows: List[List[Any]] register_type(Text) register_type(Number) register_type(Turn) register_type(Dialog) register_type(Table) register_type(Audio) register_type(Image) register_type(Video)