import json from typing import Any, Dict, Optional from openenv.core.env_client import EnvClient from openenv.core.client_types import StepResult from models import Action, Observation, State class DevOpsIncidentEnv(EnvClient[Action, Observation, State]): """Client for DevOps Incident Response OpenEnv.""" def __init__( self, base_url: str = "https://arijit-07-devops-incident-response.hf.space", connect_timeout_s: float = 10.0, message_timeout_s: float = 60.0, max_message_size_mb: float = 100.0, provider: Optional[Any] = None, mode: Optional[str] = None, ): super().__init__( base_url=base_url, connect_timeout_s=connect_timeout_s, message_timeout_s=message_timeout_s, max_message_size_mb=max_message_size_mb, provider=provider, mode=mode, ) def _step_payload(self, action: Action) -> Dict[str, Any]: """Convert Action to server payload.""" return action.model_dump() def _parse_result(self, payload: Dict[str, Any]) -> StepResult[Observation]: """Convert server response to StepResult[Observation].""" return StepResult( observation=Observation(**payload.get("observation", {})), reward=payload.get("reward"), done=payload.get("done", False), ) def _parse_state(self, payload: Dict[str, Any]) -> State: """Convert server state to State model.""" return State(**payload)