HyperBrickCaseOps / client.py
modelbuilderhq's picture
Upload folder using huggingface_hub
4f129c9 verified
"""HTTP client for interacting with a deployed SupportDesk environment."""
from __future__ import annotations
from models import SupportDeskAction, SupportDeskObservation, SupportDeskState
from openenv_compat import EnvClient, StepResult
def _validate(model_cls, payload):
if hasattr(model_cls, "model_validate"):
return model_cls.model_validate(payload)
return model_cls(**payload) # pragma: no cover - pydantic v1 fallback
class SupportDeskEnv(EnvClient[SupportDeskAction, SupportDeskObservation, SupportDeskState]):
"""Typed client for a locally running or deployed OpenEnv server."""
def _step_payload(self, action: SupportDeskAction) -> dict:
"""Convert a typed action into the JSON payload expected by the server."""
if hasattr(action, "model_dump"):
return action.model_dump()
return action.dict()
def _parse_state(self, payload) -> SupportDeskState:
return _validate(SupportDeskState, payload)
def _parse_reset(self, payload) -> SupportDeskObservation:
return _validate(SupportDeskObservation, payload)
def _parse_result(self, payload) -> StepResult[SupportDeskObservation]:
observation = _validate(SupportDeskObservation, payload["observation"])
# OpenEnv StepResult only accepts observation/reward/done in this runtime.
return StepResult(
observation=observation,
reward=payload["reward"],
done=payload["done"],
)