#!/usr/bin/env bash
# wm-kill: Kill running wm-port agent sessions.
#
# Usage:
#   wm-kill <task-id>    # kill session for a specific task
#   wm-kill --all        # kill all wm-port sessions

set -euo pipefail

MOUNT="${OLLIE:-$HOME/mnt/ollie}"
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
TOOLS="$ROOT/tools/wm-port"

source "$TOOLS/task-map.sh"

die() { printf 'wm-kill: %s\n' "$*" >&2; exit 1; }

if [ "${1:-}" = "--all" ]; then
    killed=0
    while IFS=$'\t' read -r sid state cwd backend model; do
        [[ "$sid" == wm-port-* ]] || continue
        echo "kill" > "$MOUNT/s/$sid/ctl" 2>/dev/null && {
            printf 'Killed %s\n' "$sid"
            (( ++killed ))
        }
    done < <(cat "$MOUNT/s/idx" 2>/dev/null)
    [ "$killed" -eq 0 ] && echo "No active wm-port sessions."
    exit 0
fi

[ $# -lt 1 ] && die "usage: wm-kill <task-id> | --all"

tid="$1"
sid="wm-port-${tid}"

if [ -d "$MOUNT/s/$sid" ]; then
    echo "kill" > "$MOUNT/s/$sid/ctl" 2>/dev/null
    printf '\033[1;31mKilled session %s\033[0m\n' "$sid"
else
    echo "No active session for task $tid"
fi
