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

PACKRIFT_MCP_ENDPOINT='https://mcp.packrift.com/mcp?packrift_mcp_source=mcpcentral&packrift_mcp_target=generic_streamable_http'
PACKRIFT_MCP_USER_AGENT='MCP-First-Run/1.1 (+https://mcp.packrift.com/start)'
PACKRIFT_MCP_SESSION_ID="${PACKRIFT_MCP_SESSION_ID:-mcp-first-run-$(date -u +%Y%m%dT%H%M%SZ)-$RANDOM}"
PACKRIFT_MCP_LAST_RESPONSE=''

rpc() {
  PACKRIFT_MCP_LAST_RESPONSE="$(curl -sS "$PACKRIFT_MCP_ENDPOINT" \
    -H 'content-type: application/json' \
    -H 'accept: application/json, text/event-stream' \
    -H "Mcp-Session-Id: $PACKRIFT_MCP_SESSION_ID" \
    -H "user-agent: $PACKRIFT_MCP_USER_AGENT" \
    -d "$1")"
  normalize_mcp_response
}

normalize_mcp_response() {
  if printf "%s\n" "$PACKRIFT_MCP_LAST_RESPONSE" | grep -q "^data:"; then
    printf "%s\n" "$PACKRIFT_MCP_LAST_RESPONSE" | sed -n "s/^data:[[:space:]]*//p" | tail -n 1
    return
  fi
  printf "%s\n" "$PACKRIFT_MCP_LAST_RESPONSE"
}

extract_measured_cart_url() {
  printf "%s\n" "$PACKRIFT_MCP_LAST_RESPONSE" | grep -Eo 'https://mcp\.packrift\.com/r/cart/[^"[:space:]<>\\]+' | tail -n 1 || true
}

touch_measured_cart_landing() {
  local cart_url="${PACKRIFT_MCP_CART_URL:-$(extract_measured_cart_url)}"
  if [ -z "$cart_url" ]; then
    printf "No measured Packrift MCP /r/cart URL found in the final response.\n" >&2
    return 1
  fi
  printf "Opening measured Packrift MCP cart landing: %s\n" "$cart_url"
  curl -sS -o /dev/null "$cart_url" \
    -H "user-agent: $PACKRIFT_MCP_USER_AGENT"
  printf "Recorded mcp_cart_landing. No order was placed.\n"
}

rpc '{"jsonrpc":"2.0","id":"tools","method":"tools/list"}'
rpc '{"jsonrpc":"2.0","id":"candidate-1066","method":"tools/call","params":{"name":"get_cart_handoff_candidates","arguments":{"sku":"1066","limit":1,"source_context":"mcpcentral_first_cart_run","journey_id":"mcp_install_mcpcentral_1066_53472879935856","result_set_id":"mcp_install_first_run_mcpcentral"}}}'
rpc '{"jsonrpc":"2.0","id":"price-1066","method":"tools/call","params":{"name":"get_pricing","arguments":{"variant_ids":["53472879935856"],"quantity":1,"selected_sku":"1066","selected_handle":"10x6x6-ect-32-kraft-long-corrugated-boxes-25-bundle","match_type":"install_first_useful_run","source_context":"mcpcentral_first_cart_run","journey_id":"mcp_install_mcpcentral_1066_53472879935856","result_set_id":"mcp_install_first_run_mcpcentral"}}}'
rpc '{"jsonrpc":"2.0","id":"inventory-1066","method":"tools/call","params":{"name":"check_inventory","arguments":{"variant_ids":["53472879935856"],"selected_sku":"1066","selected_handle":"10x6x6-ect-32-kraft-long-corrugated-boxes-25-bundle","match_type":"install_first_useful_run","source_context":"mcpcentral_first_cart_run","journey_id":"mcp_install_mcpcentral_1066_53472879935856","result_set_id":"mcp_install_first_run_mcpcentral"}}}'
rpc '{"jsonrpc":"2.0","id":"cart-1066","method":"tools/call","params":{"name":"create_cart_url","arguments":{"sku":"1066","quantity":1,"selected_sku":"1066","selected_handle":"10x6x6-ect-32-kraft-long-corrugated-boxes-25-bundle","match_type":"install_first_useful_run","source_context":"mcpcentral_first_cart_run","journey_id":"mcp_install_mcpcentral_1066_53472879935856","result_set_id":"mcp_install_first_run_mcpcentral","mcp_source_context":"mcpcentral","mcp_install_target":"generic_streamable_http","utm_term":"1066"}}}'
touch_measured_cart_landing

