"""完整编译流水线的唯一命令行入口。""" from __future__ import annotations import argparse import sys from scripts.provider_router import parse_model_reference from .pipeline import run_pipeline def _model_reference(value: str) -> str: try: return parse_model_reference(value).value except ValueError as exc: raise argparse.ArgumentTypeError(str(exc)) from exc def _parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( prog="python -m scripts.compile_pipeline", description="Run static compilation, Fast optimization, and Deep iteration for one SkillsBench task.", ) parser.add_argument("--harness", required=True, choices=("opencode", "claude-code", "claude")) parser.add_argument( "--model", required=True, type=_model_reference, help="Target model used by BenchFlow, in provider/model format.", ) parser.add_argument( "--external-model", required=True, type=_model_reference, help="Model used for static planning, Fast analysis, and Deep analysis.", ) parser.add_argument( "--task", required=True, help="SkillsBench task name or a path below data/skills-bench/tasks.", ) parser.add_argument( "--run-dir", help="Run directory below results/compile-pipeline; reuse it to resume an interrupted run.", ) return parser def main(argv: list[str] | None = None) -> int: args = _parser().parse_args(argv) try: final_skill = run_pipeline( harness=args.harness, model=args.model, external_model=args.external_model, task=args.task, run_dir=args.run_dir, ) except (OSError, RuntimeError, ValueError) as exc: print(f"error: {exc}", file=sys.stderr) return 2 print(final_skill) return 0 raise SystemExit(main())