#!/usr/bin/env bash
# Find the most recent pending chat_session for the test mitra and accept it via
# the backend API. Used by Maestro flows that drive the customer side and need a
# mitra to "accept" without running a second app.
#
# Reads from .maestro/config.yaml env (BACKEND_URL, TEST_MITRA_ID, TEST_MITRA_JWT).
# Maestro injects these as shell env vars before running this script.

set -euo pipefail

: "${BACKEND_URL:?BACKEND_URL must be set in .maestro/config.yaml}"
: "${TEST_MITRA_ID:?TEST_MITRA_ID must be set in .maestro/config.yaml}"
: "${TEST_MITRA_JWT:?TEST_MITRA_JWT must be set in .maestro/config.yaml}"

# Poll for a pending request (blast may take 1-2 seconds to arrive)
for i in 1 2 3 4 5; do
  pending=$(curl -fsSL "$BACKEND_URL/api/mitra/chat-requests/pending" \
    -H "Authorization: Bearer $TEST_MITRA_JWT" 2>/dev/null || echo '{"data":[]}')
  session_id=$(echo "$pending" | jq -r '.data[0].session_id // empty')
  if [ -n "$session_id" ]; then
    break
  fi
  sleep 1
done

if [ -z "${session_id:-}" ]; then
  echo "ERROR: no pending chat request found for mitra $TEST_MITRA_ID after 5s" >&2
  exit 1
fi

echo "Accepting session $session_id as mitra $TEST_MITRA_ID..."
curl -fsSL -X POST "$BACKEND_URL/api/mitra/chat-requests/$session_id/accept" \
  -H "Authorization: Bearer $TEST_MITRA_JWT" \
  -H "Content-Type: application/json" \
  -d '{}'
echo "OK"
