| |
| |
| |
| |
| |
|
|
| """ |
| Data models for the TextArena Environment. |
| |
| This module defines the action, observation, and state models for interacting |
| with TextArena game environments (e.g., Wordle-v0). |
| """ |
|
|
| from __future__ import annotations |
|
|
| from pydantic import BaseModel, Field |
| from typing import Any, Dict, List, Optional |
|
|
|
|
| from openenv.core.env_server.types import Action, Observation, State |
|
|
|
|
| class TextArenaMessage(BaseModel): |
| """Single message observed by a player.""" |
|
|
| sender_id: int |
| content: str |
| category: str |
|
|
|
|
| class TextArenaAction(Action): |
| """Action issued by the agent for TextArena games.""" |
|
|
| message: str |
|
|
|
|
| class TextArenaObservation(Observation): |
| """Observation returned from any TextArena game.""" |
|
|
| prompt: str |
| messages: List[TextArenaMessage] = Field(default_factory=list) |
| current_player_id: int = 0 |
| legal_players: List[int] = Field(default_factory=list) |
| info: Dict[str, Any] = Field(default_factory=dict) |
|
|
|
|
| class TextArenaState(State): |
| """Structured state snapshot for the server.""" |
|
|
| episode_id: Optional[str] = None |
| step_count: int = 0 |
| env_id: str |
| num_players: int |
| max_turns: Optional[int] = None |
| turn: int = 0 |
| last_reward: float = 0.0 |
| last_info: Dict[str, Any] = Field(default_factory=dict) |
| raw_state: Dict[str, Any] = Field(default_factory=dict) |
|
|