#!/usr/bin/env bash
# Leaga OpenCode de pe orice masina la modelul care ruleaza pe PC2.
#   curl -fsSL http://10.11.90.169:8088/setup.sh | bash
set -euo pipefail

SRV="${QWEN_SRV:-http://10.11.90.169:1929}"
PROV="qwen36u"
MODEL="qwen36-uncensored"
CFG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/opencode"
CFG="$CFG_DIR/opencode.json"

say() { printf "  %s\n" "$*"; }

echo "== Legare OpenCode la Qwen3.6-35B de pe PC2 =="

# 1. serverul raspunde?
say "verific serverul $SRV ..."
if ! curl -fsS -m 10 "$SRV/health" >/dev/null 2>&1; then
  echo "EROARE: $SRV nu raspunde." >&2
  echo "Verifica VPN-ul, sau pe PC2: sudo systemctl status qwen36-uncensored" >&2
  exit 1
fi
say "serverul raspunde."

# 2. OpenCode instalat?
if command -v opencode >/dev/null 2>&1; then
  say "OpenCode: deja instalat ($(command -v opencode))"
else
  say "OpenCode lipseste, il instalez ..."
  curl -fsSL https://opencode.ai/install | bash
  export PATH="$HOME/.opencode/bin:$HOME/.local/bin:$PATH"
  command -v opencode >/dev/null 2>&1 || { echo "EROARE: instalarea a esuat." >&2; exit 1; }
fi

# 3. configuratia -- se pastreaza ce exista deja, se adauga doar furnizorul nostru
mkdir -p "$CFG_DIR"
[ -f "$CFG" ] && cp "$CFG" "$CFG.bak-$(date +%Y%m%d-%H%M%S)" && say "copie de rezerva a configuratiei vechi"

PY=$(command -v python3 || command -v python) || { echo "EROARE: lipseste python3." >&2; exit 1; }
SRV="$SRV" PROV="$PROV" MODEL="$MODEL" CFG="$CFG" "$PY" <<"PYEOF"
import json, os, pathlib
cfg = pathlib.Path(os.environ["CFG"])
prov, model, srv = os.environ["PROV"], os.environ["MODEL"], os.environ["SRV"]
c = {}
if cfg.exists():
    try: c = json.loads(cfg.read_text())
    except Exception: c = {}
c.setdefault("$schema", "https://opencode.ai/config.json")
c.setdefault("provider", {})[prov] = {
    "npm": "@ai-sdk/openai-compatible",
    "name": "Qwen3.6-35B uncensored Q8 + MTP (PC2)",
    "options": {"baseURL": srv + "/v1"},
    "models": {model: {
        "name": "Qwen3.6-35B-A3B uncensored Q8_0, MTP, 256k",
        "tool_call": True,
        "limit": {"context": 262144, "output": 32768},
    }},
}
# Cheia lipsa inseamna "toti furnizorii activi". Daca o adaugam cu un singur
# nume, dezactivam tacut ce avea utilizatorul deja. Deci o atingem doar daca exista.
if "enabled_providers" in c:
    c["enabled_providers"] = sorted(set(c["enabled_providers"]) | {prov})
c["model"] = f"{prov}/{model}"
c.setdefault("permission", {"bash": "allow", "edit": "allow", "read": "allow"})
cfg.write_text(json.dumps(c, indent=2) + "\n")
print("  configuratie scrisa:", cfg)
print("  model implicit    :", c["model"])
PYEOF

echo
echo "Gata. Porneste cu:  opencode"
echo "Daca nu e gasit, adauga in PATH:  export PATH=\"\$HOME/.opencode/bin:\$PATH\""
