from typing import Literal from pydantic import BaseModel, Field class Ticket(BaseModel): id: str summary: str severity: Literal["low", "medium", "high"] embedding: list[float] | None = None status: Literal["open", "in_progress", "resolved"] = "open" max_attempts: int = Field(default=4, ge=1) attempts_used: int = Field(default=0, ge=0) class Agent(BaseModel): id: str = "agent-1" role: str = "support_agent" class SystemState(BaseModel): episode_id: str step_count: int = 0 done: bool = False score: float = 0.0 ticket: Ticket agent: Agent = Field(default_factory=Agent)