# Maintainer: David Heinemeier Hansson <david@hey.com>

# Hermes pins every one of its ~120 dependencies with == and declares
# Requires-Python >=3.11,<3.14, so it can neither be built against Arch's
# Python nor share the python-* packages, and Arch's next Python bump would
# break any venv this package built. So the package ships a wrapper rather than
# the application: mise gives Hermes a private, supported environment on first
# run and keeps it current, the arrangement omarchy-mise-install already makes
# for the other coding agents. pkgver therefore tracks the wrapper, not Hermes.

pkgname=hermes-agent
pkgver=1.0.0
pkgrel=1
pkgdesc='The self-improving AI agent that grows with you'
arch=('any')
url='https://github.com/NousResearch/hermes-agent'
license=('MIT')

depends=(
  'hicolor-icon-theme'
  'mise'
  'uv'                  # mise's pipx backend refuses to run without uv or pipx
  'xdg-terminal-exec'
)

optdepends=(
  'chromium: browser automation tools'
  'ffmpeg: text-to-speech voice messages'
  'git: version control integration'
  'nodejs: browser-use CLI and MCP servers'
  'ripgrep: faster file search'
)

makedepends=('imagemagick')
options=('!debug')

source=('hermes.sh'
        'hermes.desktop'
        'hermes.png')
sha256sums=('bed3664912e9e818c623fb77cc0111ec3a376da400bd329032a1949b9bd9991f'
            'fc738787ccf156aee9f701252a298d47bc6828ea53ea4b53d0e31d27d6209c7b'
            'd60d164e24fdcf6532133b8ea43c77a201e4b9e9dbc396187b58d51d8590ef52')

build() {
  # Upstream ships one 1024x1024 master. Menus and the dock ask for the small
  # sizes, and letting them downscale a 1024px portrait themselves is what
  # makes it a smudge at 48px.
  local size
  for size in 512 256 128 64 48; do
    magick "$srcdir/hermes.png" -resize "${size}x${size}" "$srcdir/hermes-${size}.png"
  done
}

package() {
  install -Dm755 "$srcdir/hermes.sh" "$pkgdir/usr/bin/hermes"

  # Hermes' other two entry points. The wrapper dispatches on the name it was
  # invoked under, so these are symlinks rather than copies.
  ln -s hermes "$pkgdir/usr/bin/hermes-agent"
  ln -s hermes "$pkgdir/usr/bin/hermes-acp"

  install -Dm644 "$srcdir/hermes.desktop" \
    "$pkgdir/usr/share/applications/hermes.desktop"

  install -Dm644 "$srcdir/hermes.png" \
    "$pkgdir/usr/share/icons/hicolor/1024x1024/apps/hermes.png"

  local size
  for size in 512 256 128 64 48; do
    install -Dm644 "$srcdir/hermes-${size}.png" \
      "$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/hermes.png"
  done
}
