Spaces:
Sleeping
Sleeping
| """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"], | |
| ) | |