#!/usr/bin/env bash
###############################################################################
# dllm — LLM launcher via dmenu
#
# Maintainer:   Kris Yotam <krisyotam@pm.me>
# License:      MIT
# Created:      2026-02-18
###############################################################################

TERM_CMD="st"

# Top-level menu
tier1=$(printf '%s\n' \
    "  Cloud" \
    "  Local" \
| dmenu -i -l 2 -p "  LLM")

[ -z "$tier1" ] && exit 0

case "$tier1" in
    *Cloud*)
        choice=$(printf '%s\n' \
            "  Claude Code" \
            "󰊭  Gemini" \
        | dmenu -i -l 2 -p "  Cloud")

        [ -z "$choice" ] && exit 0

        case "$choice" in
            *Claude*) setsid -f $TERM_CMD -e claude &>/dev/null ;;
            *Gemini*) setsid -f $TERM_CMD -e gemini &>/dev/null ;;
        esac
        ;;
    *Local*)
        # Pull installed models from ollama
        models=$(ollama list 2>/dev/null | tail -n +2 | awk '{print $1}')

        if [ -z "$models" ]; then
            notify-send "dllm" "No local models installed. Run: ollama pull <model>"
            exit 1
        fi

        # Prefix each model with nerd font icon
        menu=$(echo "$models" | while read -r m; do echo "  $m"; done)

        choice=$(echo "$menu" | dmenu -i -l 20 -p "  Local")

        [ -z "$choice" ] && exit 0

        # Strip icon prefix to get model name
        model=$(echo "$choice" | sed 's/^.  //')

        setsid -f $TERM_CMD -e ollama run "$model" &>/dev/null
        ;;
esac
