# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. """ Rlve Gym Environment HTTP Client. This module provides the client for connecting to a Rlve Gym Environment server over HTTP. """ from typing import Dict from openenv_core.client_types import StepResult from openenv_core.http_env_client import HTTPEnvClient from .models import RlveGymState, RlveGymAction, RlveGymObservation class RlveGymEnv(HTTPEnvClient[RlveGymAction, RlveGymObservation]): """ HTTP client for the Rlve Gym Environment. This client connects to a RlveGymEnvironment HTTP server and provides methods to interact with it: reset(), step(), and state access. """ def _step_payload(self, action: RlveGymAction) -> Dict: """ Convert RlveGymAction to JSON payload for step request. Args: action: RlveGymAction instance Returns: Dictionary representation suitable for JSON encoding """ return { "output": action.output, } def _parse_result(self, payload: Dict) -> StepResult[RlveGymObservation]: """ Parse server response into StepResult[RlveGymObservation]. Args: payload: JSON response from server Returns: StepResult with RlveGymObservation """ obs = RlveGymObservation(**payload["observation"]) return StepResult( observation=obs, reward=payload.get("reward"), done=payload.get("done", False), ) def _parse_state(self, payload: Dict) -> RlveGymState: return RlveGymState(**payload)