Spaces:
Running
Running
File size: 2,313 Bytes
883cccb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | from __future__ import annotations
from typing import Any, Literal, Optional
from pydantic import BaseModel, Field, field_validator
from openenv.core.env_server.types import Action, Observation, State
class OrigamiFold(BaseModel):
"""Single fold action payload for step-level execution."""
from_point: list[float] = Field(..., description="Fold line start [x, y]")
to_point: list[float] = Field(..., description="Fold line end [x, y]")
assignment: Literal["M", "V"] = Field(..., description="Mountain or valley")
instruction: str = Field(default="", description="Optional natural language instruction")
@field_validator("from_point", "to_point")
@classmethod
def _validate_point(cls, point: list[float]) -> list[float]:
if len(point) != 2:
raise ValueError("Point must contain exactly 2 coordinates")
return [float(point[0]), float(point[1])]
class OrigamiAction(Action):
"""
OpenEnv action for Optigami.
Modes:
- single: execute one fold (pass `fold` or JSON `completion` for a single-fold object)
- sequence: execute a full <folds>[...]</folds> completion in one step
"""
mode: Literal["single", "sequence"] = Field(default="single")
fold: Optional[OrigamiFold] = Field(default=None)
completion: Optional[str] = Field(default=None)
target_name: Optional[str] = Field(
default=None,
description="Optional target override; reset to this target before stepping",
)
class OrigamiObservation(Observation):
"""OpenEnv observation payload returned by Optigami."""
prompt: str = Field(default="")
target_name: Optional[str] = Field(default=None)
step: int = Field(default=0)
paper_state: dict[str, Any] = Field(default_factory=dict)
info: dict[str, Any] = Field(default_factory=dict)
reward_components: dict[str, float | int | str] = Field(default_factory=dict)
error: Optional[str] = Field(default=None)
class OrigamiState(State):
"""OpenEnv state payload for Optigami."""
mode: str = Field(default="step")
target_name: Optional[str] = Field(default=None)
paper: dict[str, Any] = Field(default_factory=dict)
last_reward: dict[str, Any] = Field(default_factory=dict)
available_targets: list[str] = Field(default_factory=list)
|