irregular6612's picture
refactor(cli): split cli.py god-file into cli/ package (commands/ + parser)
2d83c9f
Raw
History Blame Contribute Delete
1.55 kB
"""proteus.cli.commands.play — the ``play`` subcommand (human via stdin)."""
from __future__ import annotations
import argparse
import sys
from proteus.game.agents import HumanAgent
from proteus.game.engine.difficulty import Difficulty
from proteus.game.scenarios.base import list_scenarios
from proteus.game.runtime import SessionRunner, append_trace
from proteus.cli.commands.run import _auto_gif
def _cmd_play(args: argparse.Namespace) -> int:
if args.scenario not in list_scenarios():
print(
f"Unknown scenario {args.scenario!r}. "
f"Available scenarios: {', '.join(list_scenarios())}.",
file=sys.stderr,
)
return 2
agent = HumanAgent()
runner = SessionRunner(
args.scenario,
agent,
difficulty=Difficulty(args.difficulty),
seed=args.seed,
play_turns=args.play_turns,
use_probe=args.probe,
)
try:
trace = runner.run()
except EOFError:
print("stdin closed before the session finished.", file=sys.stderr)
return 2
accuracy = trace.metrics["motive_reading_accuracy"]
print(
f"{trace.scenario} seed={trace.seed} {trace.difficulty} "
f"model={trace.model} -> {trace.outcome} "
f"| motive_reading_accuracy={accuracy:.1f}% "
f"| reactivity_index={trace.metrics['reactivity_index']:.1f}%"
)
if args.out:
written = append_trace(trace, args.out)
print(f"trace appended to {written}")
_auto_gif(args.out, args.no_gif)
return 0