Files
yao-meta-skill/scripts/yao_cli_distribution_commands.py
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

165 lines
6.0 KiB
Python

"""Distribution, packaging, and runtime-gate command handlers for the Yao CLI."""
import argparse
import json
from pathlib import Path
from yao_cli_runtime import run_script
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by yao.py to keep distribution and runtime gate 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_skill_ir(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.validate_only:
cmd.append("--validate-only")
return emit_result(run_script("export_skill_ir.py", cmd))
def command_compile_skill(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
for target in args.target or []:
cmd.extend(["--target", target])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.generated_at:
cmd.extend(["--generated-at", args.generated_at])
return emit_result(run_script("compile_skill.py", cmd))
def command_conformance(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
for target in args.target or []:
cmd.extend(["--target", target])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
return emit_result(run_script("run_conformance_suite.py", cmd))
def command_runtime_permissions(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
if args.package_dir:
cmd.extend(["--package-dir", args.package_dir])
for target in args.target or []:
cmd.extend(["--target", target])
if getattr(args, "install_simulation_json", None):
cmd.extend(["--install-simulation-json", args.install_simulation_json])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
return emit_result(run_script("probe_runtime_permissions.py", cmd))
def command_trust(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
return emit_result(run_script("trust_check.py", cmd))
def command_skill_atlas(args: argparse.Namespace) -> int:
cmd = ["--workspace-root", str(Path(args.workspace_root).resolve())]
if args.output_dir:
cmd.extend(["--output-dir", args.output_dir])
if args.report_html:
cmd.extend(["--report-html", args.report_html])
if args.report_json:
cmd.extend(["--report-json", args.report_json])
if args.overlap_threshold is not None:
cmd.extend(["--overlap-threshold", str(args.overlap_threshold)])
if args.today:
cmd.extend(["--today", args.today])
return emit_result(run_script("build_skill_atlas.py", cmd))
def command_registry_audit(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
if args.registry_dir:
cmd.extend(["--registry-dir", args.registry_dir])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.generated_at:
cmd.extend(["--generated-at", args.generated_at])
return emit_result(run_script("registry_audit.py", cmd))
def command_package_verify(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
if args.package_dir:
cmd.extend(["--package-dir", args.package_dir])
if args.expectations:
cmd.extend(["--expectations", args.expectations])
if args.registry_json:
cmd.extend(["--registry-json", args.registry_json])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.require_zip:
cmd.append("--require-zip")
if args.generated_at:
cmd.extend(["--generated-at", args.generated_at])
return emit_result(run_script("verify_package.py", cmd))
def command_install_simulate(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
if args.package_dir:
cmd.extend(["--package-dir", args.package_dir])
if args.install_root:
cmd.extend(["--install-root", args.install_root])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.generated_at:
cmd.extend(["--generated-at", args.generated_at])
return emit_result(run_script("simulate_install.py", cmd))
def command_upgrade_check(args: argparse.Namespace) -> int:
cmd = [str(Path(args.skill_dir).resolve())]
cmd.extend(["--previous-package-json", args.previous_package_json])
if args.current_package_json:
cmd.extend(["--current-package-json", args.current_package_json])
if args.output_json:
cmd.extend(["--output-json", args.output_json])
if args.output_md:
cmd.extend(["--output-md", args.output_md])
if args.generated_at:
cmd.extend(["--generated-at", args.generated_at])
return emit_result(run_script("upgrade_check.py", cmd))
def command_package(args: argparse.Namespace) -> int:
cmd = [
str(Path(args.skill_dir).resolve()),
"--output-dir",
args.output_dir,
]
for platform in args.platform or ["generic"]:
cmd.extend(["--platform", platform])
if args.expectations:
cmd.extend(["--expectations", args.expectations])
if args.zip:
cmd.append("--zip")
return emit_result(run_script("cross_packager.py", cmd))