#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REAL="$SCRIPT_DIR/chrome-extension-config.real"
STATUS="$SCRIPT_DIR/chrome-extension-status"

case "${1:-}" in
  -h|--help|help)
    exec "$REAL" --help
    ;;
esac

ext_id=""
browser_args=()
scan_args=("$@")
idx=0
while [[ $idx -lt ${#scan_args[@]} ]]; do
  arg="${scan_args[$idx]}"
  case "$arg" in
    --browser)
      next_idx=$((idx + 1))
      if [[ $next_idx -lt ${#scan_args[@]} ]]; then
        browser_args=(--browser "${scan_args[$next_idx]}")
      fi
      idx=$((idx + 2))
      ;;
    --enabled|--file-access|--incognito-access|--run-on-all-urls|--error-collection|--pinned-to-toolbar)
      idx=$((idx + 2))
      ;;
    --*)
      idx=$((idx + 1))
      ;;
    *)
      if [[ -z "$ext_id" ]]; then
        ext_id="$arg"
      fi
      idx=$((idx + 1))
      ;;
  esac
done

set +e
out="$($REAL "$@" 2>&1)"
code=$?
set -e

needs_fallback=0
if [[ $code -ne 0 ]]; then
  needs_fallback=1
fi
case "$out" in
  *'"_no_value_match"'*|*'"_no_object"'*|*'"_unbalanced"'*|*'"pending": true'*|*'Invalid control character'*|*'PreToolUse'*|*'failed to open Chrome'*|*'extension is disabled'*)
    needs_fallback=1
    ;;
esac

if [[ $needs_fallback -eq 0 ]]; then
  printf '%s\n' "$out"
  exit 0
fi

after='{}'
if [[ -n "$ext_id" && -x "$STATUS" ]]; then
  set +e
  after="$($STATUS "$ext_id" "${browser_args[@]}" --json 2>/dev/null)"
  status_code=$?
  set -e
  if [[ $status_code -ne 0 || -z "$after" ]]; then
    after='{}'
  fi
fi

python3 - "$code" "$ext_id" "$after" "$out" <<'PY'
import json, sys
code = int(sys.argv[1])
ext_id = sys.argv[2]
after_raw = sys.argv[3]
raw = sys.argv[4]
try:
    after = json.loads(after_raw) if after_raw else {}
except Exception:
    after = {"raw": after_raw}
print(json.dumps({
    "ok": False,
    "id": ext_id or None,
    "real_exit_code": code,
    "error": "chrome-extension-config could not apply or verify the requested change through the browser extension-manager bridge",
    "raw_result": raw,
    "after": after,
    "next_step": "The browser still blocks programmatic extension enable/reload. Use the existing main browser extension-manager UI to enable the HelperAI debugger extension, then rerun chrome-extension-status and debugger-eval.",
}, ensure_ascii=False, indent=2))
PY
exit 1
