#!/usr/bin/env bash
# ============================================================
#  Agente Pessoal — Instalador self-service
#  Rode ISTO na SUA VPS (Ubuntu) como root:
#     bash install.sh
#  Ele instala a base, pergunta o cérebro, configura o Telegram
#  e cria seu agente + 12 subagentes. Você faz tudo sozinho.
# ============================================================
set -uo pipefail
DIR="$(cd "$(dirname "$0")" && pwd)"
WS="$HOME/.openclaw"

echo "============================================================"
echo "  AGENTE PESSOAL — instalação"
echo "============================================================"

# 1) Base
echo; echo ">> Passo 1/6: instalando a base (OpenClaw, Node, systemd)..."
bash "$DIR/scripts/setup.sh"
export NVM_DIR="$HOME/.nvm"; . "$NVM_DIR/nvm.sh" 2>/dev/null || true

# 2) Seus dados
# Se você rodou a checagem de prontidão antes, ela já guardou tudo:
# aqui é só apertar Enter pra confirmar.
PRONT="$HOME/prontidao.env"
if [ -f "$PRONT" ]; then
  # shellcheck disable=SC1090
  . "$PRONT" 2>/dev/null || true
  echo; echo ">> Achei os dados da sua checagem de prontidão."
  echo "   O que estiver entre [colchetes] é o que você já informou: Enter confirma."
fi
echo; read -rp ">> Seu nome (como o agente vai te chamar) [${NOME:-}]: " R
NOME="${R:-${NOME:-você}}"
read -rp ">> Nome do agente principal (ex: Nova, Aria) [${AGENT_NAME:-}]: " R
AGENT_NAME="${R:-${AGENT_NAME:-Assistente}}"

# 3) Cérebro
echo; echo ">> Passo 2/6: escolha o cérebro:"
echo "   1) GLM  (mais fácil — só uma API key da Z.ai)"
echo "   2) Codex (ChatGPT Plus: login pelo navegador, sem API key)"
read -rp ">> Opção [1/2]: " BRAIN
if [ "$BRAIN" = "2" ]; then
  MODEL="openai/gpt-5.5"
  echo
  echo "   >> CODEX: o comando abaixo mostra uma URL de login. Faça assim:"
  echo "      1. Abra a URL no navegador do SEU computador, logado no ChatGPT Plus, e autorize."
  echo "      2. O navegador vai tentar abrir 'localhost:1455' e dar erro. É NORMAL."
  echo "      3. Copie a URL INTEIRA da barra de endereço (ela contém '?code=')"
  echo "         e cole aqui no terminal quando o comando pedir."
  openclaw models auth login || true
else
  MODEL="zai/glm-5.2"
  echo "   >> GLM: vou pedir sua API key da Z.ai (ela NÃO aparece na tela)."
  openclaw models auth login --provider zai --method api-key || \
    { read -rsp "   Cole a API key Z.ai: " ZK; echo; echo "ZAI_API_KEY=$ZK" >> "$WS/.env"; }
fi
openclaw models set "$MODEL" 2>/dev/null || true

# 4) Telegram
echo; echo ">> Passo 3/6: Telegram"
echo "   Crie um bot no @BotFather (/newbot) e pegue seu ID no @userinfobot."
read -rp "   Token do bot${BOT_USERNAME:+ [@$BOT_USERNAME já validado, Enter confirma]}: " R
TGTOKEN="${R:-${TELEGRAM_BOT_TOKEN:-}}"
read -rp "   Seu user_id (número) [${TELEGRAM_USER_ID:-}]: " R
TGID="${R:-${TELEGRAM_USER_ID:-}}"
if [ -z "$TGTOKEN" ] || [ -z "$TGID" ]; then
  echo "   ⚠️ Token ou user_id vazio. Pegue no @BotFather / @userinfobot e rode de novo."
  exit 1
fi
# grava token no .env e configura o canal no openclaw.json
sed -i '/^TELEGRAM_BOT_TOKEN=/d' "$WS/.env" 2>/dev/null || true
echo "TELEGRAM_BOT_TOKEN=$TGTOKEN" >> "$WS/.env"
python3 - "$TGID" <<'PY'
import json,os,sys
tgid=sys.argv[1]
p=os.path.expanduser("~/.openclaw/openclaw.json"); d=json.load(open(p))
ch=d.setdefault("channels",{}).setdefault("telegram",{})
ch["enabled"]=True
ch["botToken"]={"source":"env","provider":"local","id":"TELEGRAM_BOT_TOKEN"}
ch["dmPolicy"]="allowlist"; ch["groupPolicy"]="allowlist"
ch["allowFrom"]=[tgid]
d.setdefault("commands",{})["ownerAllowFrom"]=[f"telegram:{tgid}"]
sec=d.setdefault("secrets",{}).setdefault("providers",{}).setdefault("local",{})
sec["source"]="env"; al=set(sec.get("allowlist",[])); al.update(["TELEGRAM_BOT_TOKEN","GATEWAY_AUTH_TOKEN"]); sec["allowlist"]=sorted(al)
json.dump(d,open(p,"w"),ensure_ascii=False,indent=2)
print("   Telegram configurado.")
PY

# 5) Agentes + personas
echo; echo ">> Passo 4/6: criando agente principal + 12 subagentes..."
MODEL="$MODEL" bash "$DIR/scripts/build-agents.sh"
echo; echo ">> Passo 5/6: aplicando personas..."
NOME="$NOME" AGENT_NAME="$AGENT_NAME" python3 "$DIR/scripts/apply-personas.py"

# 6) Subir
echo; echo ">> Passo 6/6: subindo o serviço..."
systemctl restart openclaw-gateway.service
sleep 12
systemctl is-active openclaw-gateway.service && echo "   Gateway ATIVO." || echo "   ⚠️ Verifique: journalctl -u openclaw-gateway -n 50"

# Religador: instalado pelo setup.sh, dormia enquanto o .env não tinha o token.
# Agora que o token está lá, confirme que o vigia está armado.
echo; echo ">> Religador (vigia que religa o agente sozinho):"
if [ "$(systemctl is-active agente-religador.timer 2>/dev/null)" = "active" ]; then
  echo "   ARMADO — checagem a cada 5 min | log: /var/log/agente-religador.log"
else
  echo "   ⚠️ Não está ativo. Rode: bash $DIR/scripts/setup-religador.sh"
fi

echo
echo "============================================================"
echo "  PRONTO! Abra seu bot no Telegram e mande 'oi'."
echo "  Agentes:  openclaw agents list"
echo "============================================================"
