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

root="${AGENTTEAM_RETIRED_DESKTOP_EXTENSION_GUARD_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -P)}"

failures=()
for retired_path in \
  "desktop/internal/api/extension" \
  "desktop/internal/extensionruntimeenv" \
  "desktop/internal/token/extension_token.go" \
  "desktop/internal/token/extension_token_test.go" \
  "desktop/internal/cmd/extension.go" \
  "desktop/internal/cmd/extension_test.go"; do
  if [[ -e "${root}/${retired_path}" ]]; then
    failures+=("${retired_path}: retired Desktop Extension implementation must not exist")
  fi
done

desktop_code=()
for path in \
  "${root}/desktop/cmd" \
  "${root}/desktop/internal" \
  "${root}/desktop/integration"; do
  [[ -e "${path}" ]] && desktop_code+=("${path}")
done

if (( ${#desktop_code[@]} > 0 )); then
  retired_symbols="$(
    rg -n \
      -e '\bExtensionConfig\b' \
      -e '\bprocessExtension\b' \
      -e '\bExtensionLeaseID\b' \
      -e '\bExtensionToken(Request|Info)?\b' \
      -e '\bGenerateExtensionToken\b' \
      -e '\bValidateExtensionToken\b' \
      -e '\bRevokeExtensionToken\b' \
      -e '\bRuntimeLeaseStore\b' \
      -e '\bRuntimeLeaseConfig\b' \
      -e 'desktop/internal/api/extension' \
      -e '/api/internal/ext(?:/|")' \
      -e '\bagentteam extension\b' \
      -e '\bpr-watch\b' \
      --glob '*.go' \
      --glob '*.sh' \
      --glob '!**/internal/execruntimeenv/**' \
      "${desktop_code[@]}" 2>/dev/null || true
  )"
  if [[ -n "${retired_symbols}" ]]; then
    failures+=("retired Desktop Extension or PR-watch entry point remains:
${retired_symbols}")
  fi
fi

if [[ -d "${root}/desktop" ]]; then
  extension_env_uses="$(
    rg -n 'AGENTTEAM_EXTENSION_' \
      --glob '*.go' \
      --glob '!*_test.go' \
      --glob '!**/internal/execruntimeenv/**' \
      "${root}/desktop" 2>/dev/null || true
  )"
  if [[ -n "${extension_env_uses}" ]]; then
    failures+=("retired Extension environment variable used outside the scrub boundary:
${extension_env_uses}")
  fi
fi

if (( ${#failures[@]} > 0 )); then
  printf 'Retired Desktop Extension absence guard failed:\n' >&2
  printf -- '- %s\n' "${failures[@]}" >&2
  exit 1
fi

echo "Retired Desktop Extension absence guard passed."
