cache-env / env /client.py
Parv Pareek
done
e75c8ce
"""Typed WebSocket client for CacheInvalidationEnvironment."""
from __future__ import annotations
from typing import Any, Dict
from openenv.core.client_types import StepResult
from openenv.core.env_client import EnvClient
from env.models import CacheAction, CacheObservation, CacheState
class CacheInvalidationEnvClient(EnvClient[CacheAction, CacheObservation, CacheState]):
def _step_payload(self, action: CacheAction | Dict[str, Any]) -> Dict[str, Any]:
if isinstance(action, CacheAction):
return action.model_dump()
return CacheAction.model_validate(action).model_dump()
def _parse_result(self, payload: Dict[str, Any]) -> StepResult[CacheObservation]:
obs_inner = payload.get("observation", {})
return StepResult(
observation=CacheObservation.model_validate(
{**obs_inner, "reward": payload.get("reward"), "done": payload.get("done", False)}
),
reward=payload.get("reward"),
done=payload.get("done", False),
)
def _parse_state(self, payload: Dict[str, Any]) -> CacheState:
return CacheState.model_validate(payload)