"""proteus.cli — command dispatch. Behavior identical to the former cli.py. Subcommands: run Run one session and append its trace to a JSONL file. list-scenarios List the registered scenario names. replay Print a saved trace's turns, outcome, and metrics. compare Aggregate traces by (model, difficulty) for baseline comparison. All commands are network-free except ``run`` with a real provider spec; use ``--model fake:`` for an offline smoke. """ from __future__ import annotations import proteus.game.scenarios # noqa: F401 — side-effect: populate the scenario registry from proteus.cli.parser import build_parser def main(argv: list[str] | None = None) -> int: """CLI entry point. Returns a process exit code.""" parser = build_parser() args = parser.parse_args(argv) return args.func(args) if __name__ == "__main__": raise SystemExit(main())