40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""兄弟技能 CLI 调用模板。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from util.logging_config import subprocess_env_with_trace
|
|
from util.runtime_paths import get_skills_root
|
|
|
|
|
|
def _call_json_script(script_path: str, args: List[str]) -> Optional[Dict[str, Any]]:
|
|
proc = subprocess.run(
|
|
[sys.executable, script_path, *args],
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
errors="replace",
|
|
env=subprocess_env_with_trace(),
|
|
)
|
|
raw = (proc.stdout or "").strip()
|
|
if not raw or raw.startswith("ERROR"):
|
|
return None
|
|
try:
|
|
data = json.loads(raw)
|
|
except json.JSONDecodeError:
|
|
return None
|
|
return data if isinstance(data, dict) else None
|
|
|
|
|
|
def get_account_manager_main_path() -> str:
|
|
return os.path.join(get_skills_root(), "account-manager", "scripts", "main.py")
|
|
|
|
|
|
def get_content_manager_main_path() -> str:
|
|
return os.path.join(get_skills_root(), "content-manager", "scripts", "main.py")
|