#!/bin/bash

# omarchy:summary=Remove the Hermes desktop app along with the Hermes runtime it installed.
# omarchy:requires-sudo=true

set -e

omarchy-pkg-drop hermes-desktop

# The app installs a Hermes of its own under ~/.hermes -- the checkout and venv,
# its own uv, its own node -- and puts its commands on PATH. None of it is any
# use once the app is gone. Not ~/.config/Hermes, which holds the gateway
# connections and their encrypted tokens, the active profile and the update
# settings. Not the rest of ~/.hermes either:
# the chats, memories and the skills Hermes wrote for itself are the user's,
# they are small, and finding them still there after a reinstall is the better
# surprise.
rm -rf \
  "$HOME/.hermes/hermes-agent" \
  "$HOME/.hermes/bootstrap-cache" \
  "$HOME/.hermes/bin" \
  "$HOME/.hermes/node"

# Only the wrappers pointing into ~/.hermes. The app writes these at its own
# path stage, so a machine where it was installed but never launched still has
# whatever was there before, and that is not ours to delete.
for command in hermes hermes-agent hermes-acp; do
  wrapper="$HOME/.local/bin/$command"

  if [[ -f $wrapper ]] && grep -q "$HOME/.hermes" "$wrapper"; then
    rm -f "$wrapper"
  fi
done

# When Hermes brought its own Node it symlinked these next to its own commands,
# and they point at what we just deleted. Only the links into ~/.hermes: a
# system Node, or someone else's, lives somewhere else entirely.
for command in node npm npx; do
  link="$HOME/.local/bin/$command"

  if [[ -L $link && $(readlink "$link") == "$HOME/.hermes"/* ]]; then
    rm -f "$link"
  fi
done

echo ""
echo "Hermes Desktop has been removed."
echo "Your chats, memories, and skills are still in ~/.hermes,"
echo "and your connections and settings in ~/.config/Hermes."
