#!/usr/bin/env bash
# bindu.protocol Standalone Client CLI (bindu.cloud)
set -euo pipefail
CONFIG_FILE="${HOME}/.config/bindu/protocol.json"
DEFAULT_HUB="https://bindu.cloud"
if [ -f "${CONFIG_FILE}" ] && command -v grep >/dev/null 2>&1; then
  SAVED_HUB="$(grep -o '"hubUrl":[[:space:]]*"[^"]*"' "${CONFIG_FILE}" | cut -d'"' -f4 || true)"
  if [ -n "${SAVED_HUB}" ]; then
    DEFAULT_HUB="${SAVED_HUB}"
  fi
fi
HUB="${BINDU_HUB_URL:-${DEFAULT_HUB}}"
CURL_OPTS=(-fsSL)
CA_CERT="${BINDU_CA_CERT:-${HOME}/.config/bindu/ca.crt}"
if [ -f "$CA_CERT" ]; then CURL_OPTS+=(--cacert "$CA_CERT"); fi
CMD="${1:-widget}"

case "${CMD}" in
  widget)
    if command -v open >/dev/null 2>&1; then open "${HUB}/protocol/widget";
    elif command -v xdg-open >/dev/null 2>&1; then xdg-open "${HUB}/protocol/widget";
    else echo "Visit: ${HUB}/protocol/widget"; fi
    ;;
  config)
    curl "${CURL_OPTS[@]}" "${HUB}/protocol/config" && echo ""
    ;;
  mode)
    MODE="${2:-interactive_dev}"
    curl "${CURL_OPTS[@]}" -X POST "${HUB}/protocol/config" -H "Content-Type: application/json" -H "Origin: ${HUB}" -d "{\"presetMode\":\"${MODE}\"}" && echo ""
    ;;
  status)
    curl "${CURL_OPTS[@]}" "${HUB}/protocol/config" && echo ""
    ;;
  submit)
    PROMPT="${2:-}"
    PRESET="${3:-interactive_dev}"
    curl "${CURL_OPTS[@]}" -X POST "${HUB}/protocol/tasks/submit" -H "Content-Type: application/json" -H "Origin: ${HUB}" -d "{\"prompt\":\"${PROMPT}\",\"presetMode\":\"${PRESET}\"}" && echo ""
    ;;
  *)
    echo "Usage: bindu-protocol [widget|config|mode <preset>|status|submit <prompt>]"
    ;;
esac
