#!/bin/bash
# aria-brain-health.sh
# Brain-Repo Health-Check fuer SessionStart-Hook.
# Output: kompakte Zusammenfassung (Files, Folders, Last-Sync, Schema-Drift).
# Aufgerufen aus session-start.sh (V5 Sprint 1+).

set -u

BRAIN="${ARIA_BRAIN_DIR:-/root/aria/brain}"

if [ ! -d "$BRAIN" ]; then
    echo "[brain-health] FEHLT: $BRAIN existiert nicht"
    exit 0
fi

cd "$BRAIN" || { echo "[brain-health] cd $BRAIN failed"; exit 0; }

# 1. Identity-Files (Pflicht-Lektüre)
declare -a IDENTITY=(SOUL.md IDENTITY.md USER.md TOOLS.md CORRECTIONS.md SELF-IMPROVEMENT.md HEARTBEAT.md HOOKS.md CLAUDE.md HANDOFF.md)
MISSING=()
for f in "${IDENTITY[@]}"; do
    [ -f "$f" ] || MISSING+=("$f")
done

# 2. Folder-Counts
TOTAL_MD=$(find . -name '*.md' -not -path './.git/*' 2>/dev/null | wc -l)
DAILY_MD=$(find 06-Daily -name '*.md' 2>/dev/null | wc -l)
WISSEN_MD=$(find 02-Wissen -name '*.md' 2>/dev/null | wc -l)
INBOX_MD=$(find 00-Inbox -name '*.md' 2>/dev/null | wc -l)

# 3. Git-Sync-Status
LAST_COMMIT=$(git log -1 --format='%h %s' 2>/dev/null | head -c 80)
UNCOMMITTED=$(git status --porcelain 2>/dev/null | wc -l)
LAST_SYNC_AGE=$(git log -1 --format='%cr' 2>/dev/null)

# 4. Drift-Marker
DRIFT=()
[ ${#MISSING[@]} -gt 0 ] && DRIFT+=("identity_missing=${#MISSING[@]}")
[ "$UNCOMMITTED" -gt 20 ] && DRIFT+=("uncommitted=${UNCOMMITTED}")

# 5. Output (kompakt)
echo "=== BRAIN-GRAPH-HEALTH ==="
echo "Files total: $TOTAL_MD MD (Daily: $DAILY_MD, Wissen: $WISSEN_MD, Inbox: $INBOX_MD)"
echo "Identity-Files: $((${#IDENTITY[@]} - ${#MISSING[@]}))/${#IDENTITY[@]} OK"
[ ${#MISSING[@]} -gt 0 ] && echo "  fehlt: ${MISSING[*]}"
echo "Last commit: $LAST_COMMIT"
echo "Last sync: $LAST_SYNC_AGE | uncommitted: $UNCOMMITTED"
if [ ${#DRIFT[@]} -eq 0 ]; then
    echo "Drift: 0 (clean)"
else
    echo "Drift: ${DRIFT[*]}"
fi
echo "==========================="
