#!/usr/bin/env bash
# pc.sh — Paperclip API wrapper for agents.
#
# Usage:
#   pc.sh <method> <path> [body_json] [extra_curl_args...]
#
# Adds:
#   - Authorization: Bearer $PAPERCLIP_API_KEY
#   - X-Paperclip-Run-Id: $PAPERCLIP_RUN_ID  (audit trail; falls back to JWT claims if empty)
#   - Content-Type: application/json  (when body provided)
#   - Base URL: $PAPERCLIP_API_URL
#
# Examples:
#   ~/legal-ai/scripts/pc.sh GET   "/api/agents/me/inbox-lite"
#   ~/legal-ai/scripts/pc.sh POST  "/api/issues/$ISSUE_ID/checkout"
#   ~/legal-ai/scripts/pc.sh POST  "/api/issues/$ISSUE_ID/comments" '{"body":"שלום"}'
#   ~/legal-ai/scripts/pc.sh PATCH "/api/issues/$ISSUE_ID" '{"status":"done"}'
#   ~/legal-ai/scripts/pc.sh DELETE "/api/issues/$ISSUE_ID"
#
# Sourcing as a function (optional):
#   source ~/legal-ai/scripts/pc.sh && pc POST "/api/issues/$ISSUE_ID/checkout"

set -euo pipefail

pc() {
  local method="${1:-}"
  local path="${2:-}"
  local body="${3:-}"
  if [ $# -ge 3 ]; then shift 3; else shift "$#"; fi

  if [ -z "$method" ] || [ -z "$path" ]; then
    echo "usage: pc.sh <METHOD> <PATH> [BODY_JSON] [extra curl args...]" >&2
    return 2
  fi
  : "${PAPERCLIP_API_URL:?PAPERCLIP_API_URL not set}"
  : "${PAPERCLIP_API_KEY:?PAPERCLIP_API_KEY not set}"

  local args=(-s -X "$method"
    -H "Authorization: Bearer $PAPERCLIP_API_KEY"
    -H "X-Paperclip-Run-Id: ${PAPERCLIP_RUN_ID:-}")

  if [ -n "$body" ]; then
    args+=(-H "Content-Type: application/json" -d "$body")
  fi

  curl "${args[@]}" "$@" "${PAPERCLIP_API_URL}${path}"
}

# When invoked directly (not sourced), forward args to pc().
if [ "${BASH_SOURCE[0]}" = "${0}" ]; then
  pc "$@"
fi
