CoolFace
Apppublic

manzz05/kitchenflow-v2

sourceHugging Facemitupdated 5mo agoView on Hugging Face
1likes
models.py66 linesDownload Raw Back to root
1"""2KitchenFlow-v2: Models3Extends v1 models exactly — same field names, same types.4v2 additions are clearly marked so validators don't break.5"""6 7from typing import Any, Dict, List, Optional8from pydantic import Field9 10try:11    from openenv.core.env_server.interfaces import Action, Observation12except ImportError:13    try:14        from openenv.core.env_server import Action, Observation15    except ImportError:16        from pydantic import BaseModel17        class Action(BaseModel):18            metadata: Dict[str, Any] = Field(default_factory=dict)19        class Observation(BaseModel):20            done: bool = False21            reward: float = 0.022            metadata: Dict[str, Any] = Field(default_factory=dict)23 24 25class KitchenAction(Action):26    """27    dispatch_decisions maps order_id to action int:28        0 = wait29        1 = summon_driver30        2 = request_coordinator_priority  (v2)31        3 = requery_gps                   (v2 chaos recovery)32    """33    dispatch_decisions: Dict[str, int] = Field(34        default_factory=dict,35        description="Map of order_id to action int. 0=wait, 1=summon_driver, 2=request_priority, 3=requery_gps",36    )37 38 39class KitchenObservation(Observation):40    """41    Full episode observation.42    All v1 fields preserved exactly.43    v2 fields added at bottom.44    """45    # v1 fields (preserved exactly)46    task_id:               str   = ""47    task_description:      str   = ""48    difficulty:            str   = ""49    time_min:              int   = 050    max_time_min:          int   = 3051    traffic_index:         float = 1.052    orders:                List[Dict[str, Any]] = Field(default_factory=list)53    orders_delivered:      int   = 054    orders_failed:         int   = 055    total_temp_penalty:    float = 0.056    total_waste_penalty:   float = 0.057    last_action_feedback:  str   = ""58    score:                 float = 0.059    attempts:              int   = 060    max_attempts:          int   = 3061    # v2 additions62    chaos_log:             List[str] = Field(default_factory=list)63    coordinator_signals:   Dict[str, str] = Field(default_factory=dict)64    curriculum_level:      int   = 165    chaos_level:           int   = 066