#!/usr/bin/env bash
# browserbase-auth.sh — Create a Browserbase session with persistent context for manual login.
# After logging in via the Live View URL, the auth state persists across future sessions.
#
# Usage: bash scripts/browserbase-auth.sh [url-to-login]
# Example: bash scripts/browserbase-auth.sh https://accounts.google.com

set -euo pipefail

: "${BROWSERBASE_API_KEY:?Set BROWSERBASE_API_KEY}"
: "${BROWSERBASE_PROJECT_ID:?Set BROWSERBASE_PROJECT_ID}"
: "${BROWSERBASE_CONTEXT_ID:?Set BROWSERBASE_CONTEXT_ID}"

LOGIN_URL="${1:-https://accounts.google.com}"

echo "Creating authenticated session with context ${BROWSERBASE_CONTEXT_ID}..."

SESSION=$(curl -s -X POST "https://api.browserbase.com/v1/sessions" \
  -H "x-bb-api-key: ${BROWSERBASE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "{
    \"projectId\": \"${BROWSERBASE_PROJECT_ID}\",
    \"browserSettings\": {
      \"context\": {
        \"id\": \"${BROWSERBASE_CONTEXT_ID}\",
        \"persist\": true
      }
    },
    \"proxies\": true
  }")

SESSION_ID=$(echo "$SESSION" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
echo "Session ID: ${SESSION_ID}"

LIVE_URL="https://www.browserbase.com/sessions/${SESSION_ID}/live-view"
echo ""
echo "Open this URL to log in manually:"
echo "  ${LIVE_URL}"
echo ""
echo "After logging in, close the browser tab. The auth state will persist"
echo "in context ${BROWSERBASE_CONTEXT_ID} for all future sessions."
echo ""
echo "Press Enter when done..."

if command -v open &>/dev/null; then
  open "${LIVE_URL}"
fi

read -r
echo "Done. Context ${BROWSERBASE_CONTEXT_ID} now has your auth cookies."
