Files
yao-meta-skill/scripts/yao_cli_output_commands.py
T
YAO 31ce04c655 Split meta skill CLI and review gates
Merge the beta-ready Yao Meta Skill architecture, report, evidence gate, and release-boundary updates.\n\nRelease boundary: beta/public testing is allowed; formal world-class, fully reviewed, or superiority claims remain blocked until the pending evidence gates are accepted.
2026-06-17 18:43:02 +08:00

135 lines
5.0 KiB
Python

"""Output evaluation and human-review command handlers for the Yao CLI."""
import argparse
import json
from yao_cli_config import provider_output_runner_command
from yao_cli_runtime import run_script
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by yao.py to keep output evaluation and review handlers outside the thin CLI orchestrator."
def emit_result(result: dict) -> int:
print(json.dumps(result["payload"] if result["payload"] is not None else result, ensure_ascii=False, indent=2))
return 0 if result["ok"] else 2
def command_output_eval(args: argparse.Namespace) -> int:
cmd = []
if args.cases:
cmd.extend(["--cases", args.cases])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.blind_pack_json:
cmd.extend(["--blind-pack-json", args.blind_pack_json])
if args.blind_pack_md:
cmd.extend(["--blind-pack-md", args.blind_pack_md])
if args.blind_answer_key_json:
cmd.extend(["--blind-answer-key-json", args.blind_answer_key_json])
return emit_result(run_script("run_output_eval.py", cmd))
def command_output_execution(args: argparse.Namespace) -> int:
cmd = []
if args.cases:
cmd.extend(["--cases", args.cases])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.runner_command and args.provider_runner:
payload = {
"schema_version": "1.0",
"ok": False,
"failures": ["Use either --runner-command or --provider-runner, not both."],
}
print(json.dumps(payload, ensure_ascii=False, indent=2))
return 2
if args.provider_runner:
cmd.extend(
[
"--runner-command",
provider_output_runner_command(
args.provider_runner,
model=args.provider_model,
base_url=args.provider_base_url,
api_format=args.provider_api_format,
thinking=args.provider_thinking,
temperature=args.provider_temperature,
api_key_env=args.api_key_env,
allow_insecure_localhost=args.allow_insecure_localhost,
allow_custom_base_url=args.allow_custom_base_url,
),
]
)
elif args.runner_command:
cmd.extend(["--runner-command", args.runner_command])
if args.timeout_seconds is not None:
cmd.extend(["--timeout-seconds", str(args.timeout_seconds)])
return emit_result(run_script("run_output_execution.py", cmd))
def command_output_review_kit(args: argparse.Namespace) -> int:
cmd = []
if args.blind_pack_json:
cmd.extend(["--blind-pack-json", args.blind_pack_json])
if args.blind_pack_md:
cmd.extend(["--blind-pack-md", args.blind_pack_md])
if args.decisions:
cmd.extend(["--decisions", args.decisions])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.output_html:
cmd.extend(["--output-html", args.output_html])
if args.write_template:
cmd.append("--write-template")
return emit_result(run_script("prepare_output_review_kit.py", cmd))
def command_output_review(args: argparse.Namespace) -> int:
cmd = []
if args.blind_pack:
cmd.extend(["--blind-pack", args.blind_pack])
if args.answer_key:
cmd.extend(["--answer-key", args.answer_key])
if args.decisions:
cmd.extend(["--decisions", args.decisions])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.write_template:
cmd.append("--write-template")
return emit_result(run_script("adjudicate_output_review.py", cmd))
def command_output_review_import(args: argparse.Namespace) -> int:
cmd = ["--input", args.input]
if args.format:
cmd.extend(["--format", args.format])
if args.blind_pack:
cmd.extend(["--blind-pack", args.blind_pack])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.reviewer:
cmd.extend(["--reviewer", args.reviewer])
if args.reviewed_at:
cmd.extend(["--reviewed-at", args.reviewed_at])
if args.blind_review_attested:
cmd.append("--blind-review-attested")
if args.run_adjudication:
cmd.append("--run-adjudication")
if args.answer_key:
cmd.extend(["--answer-key", args.answer_key])
if args.adjudication_json:
cmd.extend(["--adjudication-json", args.adjudication_json])
if args.adjudication_md:
cmd.extend(["--adjudication-md", args.adjudication_md])
return emit_result(run_script("import_output_review_decisions.py", cmd))