#!/usr/bin/env python3
# Arm or disarm the gate in Claude Code's settings.json (the `env` block is
# applied to EVERY launcher — desktop, background jobs, the plain `claude`).
#
#   bikoret-settings on      put ANTHROPIC_BASE_URL + ANTHROPIC_CUSTOM_HEADERS in
#   bikoret-settings off     remove them (the fallback when the gate is down)
#   bikoret-settings status  say which
#
# `on` writes the courtyard key into a config file, so the transmitter runs it:
# the builder is not allowed to write a credential there. `off` writes none.
import json, os, sys
p = os.path.expanduser("~/.claude/settings.json")
KEYS = ("ANTHROPIC_BASE_URL", "ANTHROPIC_CUSTOM_HEADERS")
mode = sys.argv[1] if len(sys.argv) > 1 else "status"
d = json.load(open(p))
env = d.get("env", {})
if mode == "on":
    k = [l.split()[1] for l in open(os.path.expanduser("~/.config/shorashim/api_keys")) if l.startswith("courtyard")][0]
    env.update({"ANTHROPIC_BASE_URL": "https://bikoret.ch/gate/anthropic",
                "ANTHROPIC_CUSTOM_HEADERS": "X-Bikoret-Key: " + k})
    d["env"] = env
elif mode == "off":
    for key in KEYS:
        env.pop(key, None)
    if env: d["env"] = env
    else: d.pop("env", None)
elif mode != "status":
    sys.exit("usage: bikoret-settings on|off|status")
if mode in ("on", "off"):
    json.dump(d, open(p, "w"), indent=2)
    os.chmod(p, 0o600)
armed = all(k in d.get("env", {}) for k in KEYS)
print("gate in settings.json:", "ARMED (every launcher goes through bikoret.ch)" if armed else "off (direct to Anthropic)")
