#!/usr/bin/env bash
# Se asigură doar că sandbox-ul e pornit și RĂMÂNE pornit.
# Nu lansează niciun agent — agentul îl pornești tu, manual.
#
#   agents          pornește sandbox-ul + keepalive (idempotent)
#   agents status   arată starea
#   agents stop     oprește keepalive-ul și sandbox-ul
set -euo pipefail

SANDBOX="${SANDBOX:-claude-workspace}"
PIDFILE="$HOME/.cache/agents-keepalive-$SANDBOX.pid"
mkdir -p "$(dirname "$PIDFILE")"

running() { [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; }

case "${1:-up}" in
  status)
    running && echo "keepalive: activ (pid $(cat "$PIDFILE"))" || echo "keepalive: oprit"
    sbx ls 2>/dev/null | grep -E "^(SANDBOX|$SANDBOX)" || true
    ;;
  stop)
    running && { kill "$(cat "$PIDFILE")" 2>/dev/null || true; rm -f "$PIDFILE"; echo "keepalive oprit"; }
    sbx stop "$SANDBOX" 2>&1 | tail -1
    ;;
  up)
    sbx ls >/dev/null 2>&1 || true            # repornește daemonul dacă e picat
    sbx exec "$SANDBOX" true >/dev/null
    if running; then
      echo "sandbox '$SANDBOX' pornit; keepalive deja activ (pid $(cat "$PIDFILE"))"
    else
      nohup bash -c "while true; do sbx exec $SANDBOX sleep 86400 >/dev/null 2>&1; sleep 5; done" \
        >/dev/null 2>&1 &
      echo $! > "$PIDFILE"
      echo "sandbox '$SANDBOX' pornit; keepalive activ (pid $!)"
    fi
    echo "intră cu:  sb [proiect]"
    ;;
  *) echo "utilizare: agents [up|status|stop]"; exit 1 ;;
esac
