#!/bin/bash
# Start Claude Code behind the gate (KOHEN "Claude Code behind the gate").
# The courtyard key is read from the keys file at launch and never written anywhere else.
#
# Fallback (2026-10-15): before launching, probe the gate. If bikoret.ch or
# the pod is down, say so and start DIRECT to Anthropic instead
# (claude-direct), unless BIKORET_STRICT=1 — then refuse, so a session that
# must be examined is never silently unexamined.
GATE="https://bikoret.ch/gate/anthropic"
code=$(curl -sS -m 6 -o /dev/null -w '%{http_code}' -X POST "$GATE/v1/messages" \
       -H 'content-type: application/json' -d '{}' 2>/dev/null)
case "$code" in
  401|400|422) ;;   # the gate answered: it is up (it refuses an unkeyed/empty request)
  *)
    echo "bikoret gate not answering (HTTP ${code:-000}) — see: curl -s https://bikoret.ch/kodesh/health" >&2
    if [ "${BIKORET_STRICT:-0}" = "1" ]; then
      echo "BIKORET_STRICT=1: refusing to start unexamined" >&2; exit 1
    fi
    echo "starting DIRECT to Anthropic (claude-direct); re-run claude-bikoret when the gate is back" >&2
    exec "$HOME/.local/bin/claude-direct" "$@"
    ;;
esac
KEY=$(awk '$1=="courtyard"{print $2}' "$HOME/.config/shorashim/api_keys")
[ -n "$KEY" ] || { echo "no courtyard key in ~/.config/shorashim/api_keys" >&2; exit 1; }
export ANTHROPIC_BASE_URL="$GATE"
export ANTHROPIC_CUSTOM_HEADERS="X-Bikoret-Key: $KEY"
exec claude "$@"
