Spaces:
Runtime error
Runtime error
| """Interactive human agent for manual play and debugging. | |
| Prints observations to stdout and reads commands from stdin. | |
| """ | |
| from __future__ import annotations | |
| import sys | |
| from typing import Any, Literal | |
| from open_range.agents.observation import format_observation | |
| class HumanAgent: | |
| """Interactive agent that prompts a human for commands. | |
| Satisfies the :class:`RangeAgent` protocol. | |
| """ | |
| def __init__(self, prompt: str = "Enter command > ") -> None: | |
| self.prompt = prompt | |
| self.role: str = "red" | |
| def reset(self, briefing: str, role: Literal["red", "blue"]) -> None: | |
| """Display role and briefing to the human player.""" | |
| self.role = role | |
| print(f"\n{'=' * 60}", file=sys.stderr) | |
| print(f"Role: {role.upper()}", file=sys.stderr) | |
| print(f"{'=' * 60}", file=sys.stderr) | |
| print(f"Briefing:\n{briefing}", file=sys.stderr) | |
| print(f"{'=' * 60}\n", file=sys.stderr) | |
| def act(self, observation: Any) -> str: | |
| """Print the observation and read a command from stdin.""" | |
| print( | |
| f"\n[{self.role.upper()}] Observation:\n{format_observation(observation)}\n", | |
| file=sys.stderr, | |
| ) | |
| try: | |
| return input(self.prompt).strip() | |
| except (EOFError, KeyboardInterrupt): | |
| return "echo quit" | |