#!/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"