Ctrl K
ComunidadGuías…

scripts/butler-extension-verify.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash
# Extension Verify (L1): manifest secrets + golden MCP calls.
#
# Usage:
#   bash scripts/butler-extension-verify.sh              # all manifests
#   bash scripts/butler-extension-verify.sh github-readonly
#   bash scripts/butler-extension-verify.sh ext-4 --no-golden
#
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
export PYTHONPATH="$ROOT"

# shellcheck source=scripts/lib/butler-source-env.sh
source "$ROOT/scripts/lib/butler-source-env.sh"
butler_source_env "$ROOT/.env" 2>/dev/null || true

EXT_ID=""
NO_GOLDEN=0
for arg in "$@"; do
  case "$arg" in
    --no-golden) NO_GOLDEN=1 ;;
    *)
      if [[ -z "$EXT_ID" ]]; then
        EXT_ID="$arg"
      fi
      ;;
  esac
done

RUN_GOLDEN=1
if [[ "$NO_GOLDEN" -eq 1 ]]; then
  RUN_GOLDEN=0
fi

python3 - "$EXT_ID" "$RUN_GOLDEN" <<'PY'
import sys
from butler.mcp.extension_verify import (
    verify_all_extensions,
    verify_extension,
    write_verify_cache,
)

ext_id = str(sys.argv[1] or "").strip()
run_golden = sys.argv[2] == "1"

if ext_id:
    report = verify_extension(ext_id, run_golden=run_golden)
    write_verify_cache({report.ext_id: report})
    reports = {report.ext_id: report}
else:
    reports = verify_all_extensions(run_golden=run_golden)

fail = 0
for rid, report in sorted(reports.items()):
    mark = "ok" if report.ok else "FAIL"
    print(f"[{mark}] {rid} @ {report.at}")
    for err in report.errors:
        print(f"  error: {err}")
    for warn in report.warnings:
        print(f"  warn: {warn}")
    for case in report.cases:
        cmark = "ok" if case.ok else ("skip" if case.skipped else "fail")
        print(f"  case {case.tool}: {cmark} — {case.detail}")
    if not report.ok:
        fail += 1

if fail:
    sys.exit(1)
PY