import argparse import subprocess import sys def run_command(cmd: list[str]) -> None: print("Running:", " ".join(cmd)) result = subprocess.run(cmd, check=False) if result.returncode != 0: raise RuntimeError(f"Command failed with exit code {result.returncode}: {' '.join(cmd)}") def main(): parser = argparse.ArgumentParser(description="Run end-to-end local pipeline") parser.add_argument("--base-url", default="http://localhost:8000") parser.add_argument("--episodes", type=int, default=60) parser.add_argument("--eval-episodes", type=int, default=20) args = parser.parse_args() py = sys.executable run_command([py, "scripts/smoke_test.py", "--base-url", args.base_url]) run_command( [ py, "training/run_training.py", "--base-url", args.base_url, "--episodes", str(args.episodes), "--eval-episodes", str(args.eval_episodes), ] ) run_command([py, "benchmarks/run_baselines.py", "--base-url", args.base_url, "--episodes", "30"]) run_command([py, "scripts/plot_metrics.py", "--input", "artifacts/training_rollout.json"]) print("Pipeline complete. Artifacts are under artifacts/ and artifacts/plots/.") if __name__ == "__main__": main()