#!/usr/bin/env bash
set -euo pipefail

SOURCE="${BASH_SOURCE[0]}"
while [ -L "$SOURCE" ]; do
  DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
PACKAGE_DIR="$(cd "$(dirname "$SOURCE")/.." && pwd)"
SCRIPTS_DIR="$PACKAGE_DIR/scripts"

. "$SCRIPTS_DIR/style.sh"

command="${1:-help}"
shift 2>/dev/null || true

case "$command" in
    install)    bash "$SCRIPTS_DIR/install.sh" "$PACKAGE_DIR" "$@" ;;
    update)     bash "$SCRIPTS_DIR/update.sh" "$PACKAGE_DIR" "$@" ;;
    uninstall)  bash "$SCRIPTS_DIR/uninstall.sh" "$@" ;;
    search)     bash "$SCRIPTS_DIR/search.sh" "$@" ;;
    health)     bash "$SCRIPTS_DIR/health.sh" "$@" ;;
    doctor)     bash "$SCRIPTS_DIR/doctor.sh" "$PACKAGE_DIR" "$@" ;;
    logs)       bash "$SCRIPTS_DIR/logs.sh" "$@" ;;
    config)     bash "$SCRIPTS_DIR/config.sh" "$@" ;;
    updates)    bash "$SCRIPTS_DIR/updates.sh" "$@" ;;
    statusline) "$SCRIPTS_DIR/statusline-em.sh" "$@" ;;
    guard)      bash "$SCRIPTS_DIR/guard.sh" "$@" ;;
    overview)   bash "$SCRIPTS_DIR/overview.sh" "$@" ;;
    graph)      bash "$SCRIPTS_DIR/memories.sh" graph "$@" ;;
    session|sessions)
                bash "$SCRIPTS_DIR/session.sh" "$@" ;;
    memories)   bash "$SCRIPTS_DIR/memories.sh" "$@" ;;
    tasks)      bash "$SCRIPTS_DIR/tasks.sh" "$@" ;;
    orchestrate) bash "$SCRIPTS_DIR/orchestrate.sh" "$@" ;;
    curate)     bash "$SCRIPTS_DIR/curate.sh" "$@" ;;
    feature)    bash "$SCRIPTS_DIR/feature.sh" "$@" ;;
    grok-bootstrap) bash "$SCRIPTS_DIR/grok-bootstrap.sh" "$@" ;;
    test)       bash "$SCRIPTS_DIR/test.sh" "$@" ;;
    compaction) bash "$SCRIPTS_DIR/compaction.sh" "$@" ;;
    prune)      bash "$SCRIPTS_DIR/prune.sh" "$@" ;;
    scan)       bash "$SCRIPTS_DIR/scan.sh" "$@" ;;
    index)      bash "$SCRIPTS_DIR/index.sh" "$@" ;;
    help|--help|-h)
                bash "$SCRIPTS_DIR/help.sh" ;;
    version|--version|-v|-V)
                version=$(jq -r .version "$PACKAGE_DIR/package.json" 2>/dev/null || echo "unknown")
                echo -e "  ${BOLD}Eagle Mem${RESET} v${version}"
                ;;
    *)
                eagle_err "Unknown command: $command"
                echo ""
                bash "$SCRIPTS_DIR/help.sh"
                exit 1
                ;;
esac
