from pydantic import BaseModel, Field
from typing import Optional, Literal
class BasicEmotionalState(BaseModel):
emotion: Literal[
"neutral", "curious", "awkward", "angry", "happy",
"sad", "confused", "afraid", "ashamed", "hopeful"
] = Field(..., description="Categorical emotion label")
intensity: float = Field(..., ge=0.0, le=1.0, description="Strength of emotion from 0.0 to 1.0")
class CircumplexEmotionalState(BaseModel):
valence: float = Field(..., ge=-1.0, le=1.0, description="Pleasure axis")
arousal: float = Field(..., ge=-1.0, le=1.0, description="Activation axis")
emotion: Optional[str] = Field(None, description="Derived emotion label (optional)")