"""Data models for the ADHD Task Initiation Coaching Environment.""" from pydantic import Field from typing import List, Dict, Any from openenv.core.env_server.types import Action, Observation class ADHDAction(Action): """Action: Tool calls + coaching response to evaluate. Models submit tool_calls (which tools they'd invoke) and a message (the coaching response text) for scoring. """ tool_calls: List[str] = Field( default_factory=list, description="Tools called by the model (e.g., ['adhd_task_initiation_coach'])", ) message: str = Field( default="", description="The coaching response text", ) class ADHDObservation(Observation): """Observation: ADHD scenario + user state. Returned from reset() with the scenario and state. Returned from step() with the scored reward and scoring details. Note: done, reward, metadata are inherited from Observation base class. Note: OpenEnv's serialize_observation excludes 'metadata' from HTTP responses, so we use a custom 'scoring' field for scoring details. """ scenario: str = Field( default="", description="The task initiation scenario (user utterance)", ) state: Dict[str, Any] = Field( default_factory=dict, description="User state tracking (sitting time, energy, etc.)", ) scoring: Dict[str, Any] = Field( default_factory=dict, description="Scoring breakdown and explanation (visible in HTTP responses)", )