Files
yao-meta-skill/scripts/yao_cli_runtime.py
T
2026-06-14 02:05:31 +08:00

46 lines
1.1 KiB
Python

"""Shared runtime helpers for the Yao CLI."""
import json
import subprocess
import sys
from pathlib import Path
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by yao.py and command modules for shared subprocess execution and JSON payload parsing."
ROOT = Path(__file__).resolve().parent.parent
SCRIPTS = ROOT / "scripts"
def script_path(name: str) -> str:
return str(SCRIPTS / name)
def load_json_maybe(text: str) -> dict | None:
text = text.strip()
if not text:
return None
try:
return json.loads(text)
except json.JSONDecodeError:
return None
def run_script(name: str, args: list[str], cwd: Path | None = None) -> dict:
proc = subprocess.run(
[sys.executable, script_path(name), *args],
cwd=cwd or ROOT,
capture_output=True,
text=True,
)
payload = load_json_maybe(proc.stdout)
return {
"command": f"{name} {' '.join(args)}".strip(),
"returncode": proc.returncode,
"ok": proc.returncode == 0,
"stdout": proc.stdout,
"stderr": proc.stderr,
"payload": payload,
}