WalkXR-AI / schemas / small_moment_scenario.py
small_moment_scenario.py
Raw
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.)")