from pydantic import BaseModel, Field from typing import List, Optional from datetime import datetime class MoodArc(BaseModel): start: str = Field(..., description="Starting emotional state (e.g., 'awkward')") end: str = Field(..., description="Ending emotional state (e.g., 'curious')") class SmallMomentScenario(BaseModel): id: str = Field(..., description="Unique identifier for the scenario") title: str = Field(..., description="Short human-readable name for the scenario") created_at: datetime = Field(default_factory=datetime.utcnow) learning_goal: str = Field(..., description="What the agent is intended to learn from this scenario") setting: str = Field(..., description="Scene or physical/social context for the interaction") mood_arc: MoodArc = Field(..., description="Emotional trajectory of the interaction") social_trigger: str = Field(..., description="Event or moment that kicks off the interaction") npc_persona_id: str = Field(..., description="Reference ID for the NPC's persona") tags: Optional[List[str]] = Field(default_factory=list, description="Optional tags for classification or retrieval") notes: Optional[str] = Field(None, description="Optional design notes or metadata") dialogue_paths: Optional[List[str]] = Field(default_factory=list, description="Possible dialogue trajectory IDs") complexity: Optional[str] = Field("simple", description="Optional difficulty level (simple, complex, branching, etc.)")