from typing import Dict from openenv.core.client_types import StepResult from openenv.core.env_server.types import State from openenv.core import EnvClient from models import MazeAction, MazeObservation, MazeState class MazeEnv(EnvClient[MazeAction, MazeObservation, MazeState]): """Client for the Maze Environment.""" def _step_payload(self, action: MazeAction) -> Dict: return {"direction": action.direction} def _parse_result(self, payload: Dict) -> StepResult[MazeObservation]: obs_data = payload.get("observation", {}) return StepResult( observation=MazeObservation( position=obs_data.get("position", []), grid_view=obs_data.get("grid_view", ""), valid_moves=obs_data.get("valid_moves", []), done=payload.get("done", False), reward=payload.get("reward"), ), reward=payload.get("reward"), done=payload.get("done", False), ) def _parse_state(self, payload: Dict) -> State: return State( episode_id=payload.get("episode_id"), step_count=payload.get("step_count", 0), )