| from typing import List, Optional, Dict, Any |
|
|
| from openenv.core.env_server.types import Action, Observation, State |
| from pydantic import Field |
|
|
|
|
| class WordGameAction(Action): |
| """Player guesses a single letter.""" |
| guess: str = Field(..., description="A single letter guessed by the player") |
|
|
|
|
| class WordGameObservation(Observation): |
| """What the player sees after each guess.""" |
| masked_word: str = Field(default="", description="Word with unguessed letters masked, e.g. 'p_th_n'") |
| guessed_letters: List[str] = Field(default_factory=list, description="All letters tried") |
| attempts_remaining: int = Field(default=6, description="Number of wrong guesses remaining") |
| message: str = Field(default="", description="Feedback text") |
|
|
|
|
| class WordGameState(State): |
| """Episode metadata.""" |
| target_word: str = Field(default="", description="The word to be guessed") |
| max_attempts: int = Field(default=6, description="Maximum wrong guesses allowed") |
|
|