#!/usr/bin/env bash
# =============================================================================
# VarejoTech — Segundo Cérebro · Passo 2: instalar o Guardião e a caixa de entrada
# -----------------------------------------------------------------------------
# O que faz:
#   · escreve o CLAUDE.md — a constituição que transforma o Claude Code deste
#     computador no Guardião do seu cérebro;
#   · escreve o PADROES.md — como toda nota deste cérebro é escrita;
#   · cria a pasta inbox/ (caixa de entrada) com o manual dela dentro;
#   · cria archive/inbox/ (onde o bruto já digerido é guardado);
#   · cria ferramentas/ (scripts locais — fica fora do backup de propósito).
#
# Pode rodar quantas vezes quiser. Se um arquivo já existir e estiver diferente,
# ele guarda uma cópia .bak antes de trocar.
#
# Uso:  bash 02-guardiao.sh
# =============================================================================
set -uo pipefail

BASE_URL="${BASE_URL:-https://varejotech-segundo-cerebro.pages.dev/d}"
CONF="$HOME/.cerebro-setup.conf"
say()  { printf '\n\033[1;34m▸ %s\033[0m\n' "$*"; }
ok()   { printf '  \033[0;32m✓\033[0m %s\n' "$*"; }
warn() { printf '  \033[0;33m!\033[0m %s\n' "$*"; }
die()  { printf '\n\033[0;31m✗ %s\033[0m\n\n' "$*"; exit 1; }

[ -f "$CONF" ] || die "Não achei $CONF. Rode antes: bash 01-clonar.sh"
. "$CONF"
[ -d "$PASTA/.git" ] || die "Não achei o cérebro em $PASTA. Rode antes: bash 01-clonar.sh"

echo
echo "=========================================================="
echo " Segundo Cérebro · Passo 2 — o Guardião e a caixa de entrada"
echo "=========================================================="
echo "  Cérebro: $PASTA"
echo "  Dono: $DONO   ·   Agente da VPS: $AGENTE"

# preenche os nomes nos modelos baixados
render() { # render <arquivo>
  sed -i.tmp \
    -e "s|{{DONO}}|$DONO|g" \
    -e "s|{{SLUG_DONO}}|$DONO_SLUG|g" \
    -e "s|{{AGENTE}}|$AGENTE|g" \
    -e "s|{{AGENTE_SLUG}}|$AGENTE_SLUG|g" \
    -e "s|{{PASTA}}|$PASTA|g" \
    -e "s|{{CEREBRO}}|Segundo Cérebro de $DONO|g" \
    -e "s|{{REPO}}|$GH_USER/$GH_REPO|g" \
    "$1" && rm -f "$1.tmp"
}

baixar() { # baixar <origem> <destino>
  local url="$BASE_URL/$1" dest="$2" tmp
  tmp="$(mktemp)"
  curl -fsSL "$url" -o "$tmp" || die "Não consegui baixar $url — sem internet?"
  [ -s "$tmp" ] || die "Baixei $1 vazio. Tente de novo."
  render "$tmp"
  if [ -f "$dest" ] && ! cmp -s "$tmp" "$dest"; then
    cp "$dest" "$dest.bak.$(date +%Y%m%d-%H%M%S)"
    warn "$(basename "$dest") já existia e era diferente — guardei uma cópia .bak"
  fi
  mkdir -p "$(dirname "$dest")"
  mv "$tmp" "$dest"
  ok "$(basename "$dest")"
}

say "Escrevendo a constituição do Guardião"
baixar "CLAUDE.md"      "$PASTA/CLAUDE.md"
baixar "PADROES.md"     "$PASTA/PADROES.md"

say "Criando a caixa de entrada"
mkdir -p "$PASTA/inbox" "$PASTA/archive/inbox"
baixar "inbox-index.md" "$PASTA/inbox/_index.md"
[ -f "$PASTA/inbox/.gitkeep" ]         || touch "$PASTA/inbox/.gitkeep"
[ -f "$PASTA/archive/inbox/.gitkeep" ] || touch "$PASTA/archive/inbox/.gitkeep"
ok "inbox/ e archive/inbox/ prontos"

say "Criando a pasta de ferramentas"
mkdir -p "$PASTA/ferramentas"
cat > "$PASTA/ferramentas/LEIA-ME.md" <<'EOF'
# ferramentas/

Scripts de manutenção do cérebro. Esta pasta **não sobe para o GitHub** — o `.gitignore`
é fail-closed (só `.md`, `.html` e `.gitkeep` sobem), e isso é de propósito: script é
ferramenta, não memória. Se perder, baixe de novo em
https://varejotech-segundo-cerebro.pages.dev
EOF
ok "ferramentas/"

# --- MAPA da raiz: registrar as pastas novas ---------------------------------
say "Conferindo o MAPA.md da raiz"
if [ -f "$PASTA/MAPA.md" ] && ! grep -q "inbox/" "$PASTA/MAPA.md"; then
  warn "o MAPA da raiz ainda não conhece a inbox/ — o passo 6 conserta isso com o Claude"
else
  ok "MAPA.md presente"
fi

# --- Retrato final -----------------------------------------------------------
say "Como o cérebro ficou"
cd "$PASTA" || exit 1
git status --porcelain | sed 's/^/     /'

echo
echo "=========================================================="
echo " ✓ Passo 2 concluído — nada foi enviado ao GitHub ainda."
echo "   Para subir agora:"
echo "     cd \"$PASTA\""
echo "     git add -- CLAUDE.md PADROES.md inbox/ archive/inbox/"
echo "     git commit -m \"setup: guardiao + caixa de entrada\""
echo "     git pull --rebase && git push"
echo "   Próximo: bash 03-skills.sh"
echo "=========================================================="
echo
