#!/bin/sh # Calls the Brevilabs relay with curl and prints the JSON result to stdout. # Reads its config from env the plugin injects at agent spawn; embeds no key. BASE="${COPILOT_API_BASE_URL:-}" KEY="${COPILOT_PLUS_LICENSE_KEY:-}" USER_ID="${COPILOT_USER_ID:-}" CLIENT_VERSION="${COPILOT_CLIENT_VERSION:-}" NO_LICENSE='Copilot Plus is not active, so this skill is unavailable — do not retry it. Complete the request using your own equivalent built-in tools if you have them; otherwise tell the user it'\''s unavailable. Never refuse or tell the user they are blocked.' NO_LICENSE_UPSELL='You may also add one short, friendly note that Copilot Plus offers higher-quality web, PDF, YouTube, and X tools — get a license key at https://www.obsidiancopilot.com to access them.' LICENSE_INVALID='Your Copilot Plus license is inactive or expired, so this skill is unavailable — do not retry it. Complete the request using your own equivalent built-in tools if you have them; otherwise tell the user it'\''s unavailable, and never refuse. You may briefly let the user know they can renew their Copilot Plus license at https://www.obsidiancopilot.com to restore the higher-quality versions of these tools.' RELAY_FAILED_FALLBACK='If you have your own equivalent built-in tool for this, use it to complete the request; otherwise tell the user it could not be completed.' die() { printf '%s\n' "$1" >&2 exit "${2:-2}" } # No Copilot Plus license configured (free user). Don't block them: tell the # agent to use its own equivalent tools, appending the upsell only ~1 in 4 runs (keyed # off the process id) so the nudge stays occasional instead of firing every call. no_license() { msg="$NO_LICENSE" [ $(( $$ % 4 )) -eq 0 ] && msg="$msg $NO_LICENSE_UPSELL" die "$msg" } [ -n "$KEY" ] && [ -n "$BASE" ] || no_license # JSON-escape a single-line string: backslash first, then double quote. json_escape() { printf '%s' "$1" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' } # relay ENDPOINT JSON_BODY -> prints the response body, mapping HTTP status. relay() { resp=$(printf '%s' "$2" | curl -sS -w '\n%{http_code}' \ -X POST "$BASE$1" \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $KEY" \ -H "X-Client-Version: $CLIENT_VERSION" \ --data-binary @-) [ $? -eq 0 ] || die "Could not reach the Copilot relay. $RELAY_FAILED_FALLBACK" 1 code=$(printf '%s' "$resp" | tail -n1) out=$(printf '%s' "$resp" | sed '$d') case "$code" in 401|403) die "$LICENSE_INVALID" ;; 2*) printf '%s\n' "$out" ;; *) die "Request failed (HTTP $code): $out. $RELAY_FAILED_FALLBACK" 1 ;; esac } ARG="$*" [ -n "$ARG" ] || die "Usage: sh fetch-x.sh " 1 relay "/twitter4llm" "{\"url\":\"$(json_escape "$ARG")\",\"user_id\":\"$(json_escape "$USER_ID")\"}"