#!/bin/sh
# BrainOfBrains install.sh — v0.1 phase-1 (scan CLI + periodic scan only).
# Specialist brains are provisioned by email follow-up. If anything
# here fails, email johnhavenbradley@gmail.com — every install gets a
# human check-in for the first week.
set -eu

printf '\n'
printf 'BrainOfBrains install · v0.1 · phase-1\n'
printf '────────────────────────────────────────\n\n'

# 1. Pre-flight: Node ≥18 + npm
if ! command -v node >/dev/null 2>&1; then
  printf '✗ Node is not installed. Install Node 18+ from https://nodejs.org and re-run.\n' >&2
  exit 1
fi
NODE_MAJOR=$(node --version | sed 's/v//' | cut -d. -f1)
if [ "$NODE_MAJOR" -lt 18 ]; then
  printf '✗ Node %s is too old. Need Node 18+ — upgrade at https://nodejs.org\n' "$NODE_MAJOR" >&2
  exit 1
fi
if ! command -v npm >/dev/null 2>&1; then
  printf '✗ npm is not installed. Re-install Node to get npm.\n' >&2
  exit 1
fi
printf '✓ Node %s · npm %s\n' "$(node --version)" "$(npm --version)"

# 2. Install scan CLI globally
printf '\n→ Installing brainofbrains scan CLI (global npm)...\n'
if ! npm install -g brainofbrains@latest >/dev/null 2>&1; then
  printf '⚠ Global install failed (permissions?). Falling back to npx-only usage.\n'
  printf '  You can still run: npx brainofbrains scan .\n'
fi

# 3. Config dir + baseline
CONFIG_DIR="$HOME/.brainofbrains"
mkdir -p "$CONFIG_DIR"
TS=$(date -u +%Y-%m-%dT%H:%M:%SZ)
cat > "$CONFIG_DIR/config.json" <<EOF
{
  "installed_at": "$TS",
  "version": "0.1.0",
  "phase": "phase-1-scan-only",
  "scan_dir": "$PWD",
  "next_step": "manual_specialist_brain_email_followup"
}
EOF
printf '✓ Config: %s/config.json\n' "$CONFIG_DIR"

# 4. First scan (informational — do not fail install if scan errors)
printf '\n→ Running first scan in %s...\n' "$PWD"
npx brainofbrains@latest scan . || printf '  (First scan had warnings — fine at this stage.)\n'

# 5. Periodic scan (macOS launchd)
if [ "$(uname)" = "Darwin" ]; then
  PLIST="$HOME/Library/LaunchAgents/ai.brainofbrains.scan.plist"
  SCAN_DIR="$PWD"
  cat > "$PLIST" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ai.brainofbrains.scan</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/sh</string>
    <string>-c</string>
    <string>cd $SCAN_DIR \&\& /usr/bin/env npx brainofbrains@latest scan . \>\> $CONFIG_DIR/scan.log 2\>\&1</string>
  </array>
  <key>StartInterval</key>
  <integer>1800</integer>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>
EOF
  launchctl unload "$PLIST" 2>/dev/null || true
  launchctl load "$PLIST"
  printf '✓ Periodic scan scheduled every 30 min (launchd: ai.brainofbrains.scan)\n'
else
  printf '⚠ Not macOS — add a cron job: */30 * * * * cd %s && npx brainofbrains scan .\n' "$PWD"
fi

# 6. Summary
printf '\n'
printf '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'
printf '✓ Phase 1 installed: scan CLI + periodic scan\n'
printf '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n'
printf 'LIVE NOW\n'
printf '  • Scan CLI       : npx brainofbrains scan .\n'
printf '  • Auto-scan      : every 30 min (macOS launchd)\n'
printf '  • Config         : %s/config.json\n' "$CONFIG_DIR"
printf '  • Scan log       : %s/scan.log\n\n' "$CONFIG_DIR"
printf 'COMING BY EMAIL (within 24 h)\n'
printf '  • Your two specialist brains (LocalLeverage + 1 custom)\n'
printf '  • Always-on tick loop with honest self-correction\n'
printf '  • Push warners on breach\n'
printf '  • Monthly savings receipt generator\n\n'
printf 'Questions: johnhavenbradley@gmail.com\n\n'
