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

ROOT_DIR="${VOICE_AGENT_ROOT:-$HOME/repos/exult-agent/tools/voice-agent}"
ADMIN_ENV_FILE="${RINGCENTRAL_ADMIN_ENV_FILE:-$HOME/.config/ringcentral-admin-mcp.env}"
TOKEN_FILE="${MCP_BEARER_TOKEN_FILE:-$HOME/.config/mcp-bearer-token}"
APPROVAL_FILE="${RC_APPROVAL_TEXT_FILE:-}"
PROVISION_TIMEOUT_SECONDS="${RC_PROVISION_TIMEOUT_SECONDS:-120}"

if [ "${I_UNDERSTAND_THIS_WRITES_RINGCENTRAL:-}" != "1" ]; then
  echo "Refusing: set I_UNDERSTAND_THIS_WRITES_RINGCENTRAL=1 after fresh Gautam approval." >&2
  exit 1
fi

if [ -z "$APPROVAL_FILE" ] || [ ! -f "$APPROVAL_FILE" ]; then
  echo "Refusing: RC_APPROVAL_TEXT_FILE must point to the exact approved text file." >&2
  exit 1
fi

if [ ! -f "$TOKEN_FILE" ]; then
  echo "Refusing: MCP bearer token file missing: $TOKEN_FILE" >&2
  exit 1
fi

if [ ! -f "$ADMIN_ENV_FILE" ]; then
  echo "Refusing: ringcentral-admin env file missing: $ADMIN_ENV_FILE" >&2
  exit 1
fi

set_admin_writes() {
  local value="$1"
  local tmp
  tmp="$(mktemp)"
  awk -v value="$value" '
    BEGIN { seen=0 }
    /^EXULT_RC_ALLOW_WRITES=/ { print "EXULT_RC_ALLOW_WRITES=" value; seen=1; next }
    { print }
    END { if (!seen) print "EXULT_RC_ALLOW_WRITES=" value }
  ' "$ADMIN_ENV_FILE" > "$tmp"
  mv "$tmp" "$ADMIN_ENV_FILE"
  chmod 600 "$ADMIN_ENV_FILE"
  systemctl --user restart ringcentral-admin-mcp.service
}

close_window() {
  set +e
  set_admin_writes 0
  echo "RingCentral write window closed."
}
trap close_window EXIT

echo "Opening RingCentral write window for approved AI scheduling extension creation."
set_admin_writes 1

cd "$ROOT_DIR"
MCP_BEARER_TOKEN="$(tr -d '\n' < "$TOKEN_FILE")" \
  RC_APPROVAL_TEXT_FILE="$APPROVAL_FILE" \
  RC_PROVISION_EXECUTE=1 \
  timeout "$PROVISION_TIMEOUT_SECONDS" bun run provision:plan
