Spaces:
Runtime error
Runtime error
| """Typed client for strategy environment.""" | |
| from __future__ import annotations | |
| from typing import Any, Dict | |
| from openenv.core.client_types import StepResult | |
| from openenv.core.env_client import EnvClient | |
| from .models import StrategyAction, StrategyObservation, StrategyState | |
| class StrategyEnv(EnvClient[StrategyAction, StrategyObservation, StrategyState]): | |
| def _step_payload(self, action: StrategyAction) -> Dict[str, Any]: | |
| return action.model_dump(exclude_none=True) | |
| def _parse_result(self, payload: Dict[str, Any]) -> StepResult: | |
| obs_data = payload.get("observation", {}) or {} | |
| obs = StrategyObservation( | |
| done=bool(payload.get("done", obs_data.get("done", False))), | |
| reward=payload.get("reward", obs_data.get("reward")), | |
| task_id=str(obs_data.get("task_id", "")), | |
| difficulty=str(obs_data.get("difficulty", "easy")), | |
| objective=str(obs_data.get("objective", "")), | |
| turn=int(obs_data.get("turn", 0)), | |
| max_turns=int(obs_data.get("max_turns", 12)), | |
| active_rule=str(obs_data.get("active_rule", "expansion")), | |
| rule_hint=str(obs_data.get("rule_hint", "")), | |
| own_resources=int(obs_data.get("own_resources", 0)), | |
| own_defense=int(obs_data.get("own_defense", 0)), | |
| own_intel=int(obs_data.get("own_intel", 0)), | |
| visible_opponent_resources=int(obs_data.get("visible_opponent_resources", 0)), | |
| visible_opponent_defense=int(obs_data.get("visible_opponent_defense", 0)), | |
| last_public_event=str(obs_data.get("last_public_event", "")), | |
| last_agent_action=str(obs_data.get("last_agent_action", "none")), | |
| last_opponent_action=str(obs_data.get("last_opponent_action", "none")), | |
| recent_rule_history=list(obs_data.get("recent_rule_history", [])), | |
| allowed_actions=list(obs_data.get("allowed_actions", [])), | |
| ) | |
| return StepResult( | |
| observation=obs, | |
| reward=payload.get("reward", obs.reward), | |
| done=bool(payload.get("done", obs.done)), | |
| info=payload.get("info", {}), | |
| ) | |
| def _parse_state(self, payload: Dict[str, Any]) -> StrategyState: | |
| return StrategyState( | |
| episode_id=payload.get("episode_id"), | |
| step_count=int(payload.get("step_count", 0)), | |
| task_id=str(payload.get("task_id", "")), | |
| difficulty=str(payload.get("difficulty", "easy")), | |
| objective=str(payload.get("objective", "")), | |
| turn=int(payload.get("turn", 0)), | |
| max_turns=int(payload.get("max_turns", 12)), | |
| active_rule=str(payload.get("active_rule", "expansion")), | |
| own_resources=int(payload.get("own_resources", 0)), | |
| own_defense=int(payload.get("own_defense", 0)), | |
| own_intel=int(payload.get("own_intel", 0)), | |
| visible_opponent_resources=int(payload.get("visible_opponent_resources", 0)), | |
| visible_opponent_defense=int(payload.get("visible_opponent_defense", 0)), | |
| cumulative_reward=float(payload.get("cumulative_reward", 0.0)), | |
| done=bool(payload.get("done", False)), | |
| history=list(payload.get("history", [])), | |
| ) | |