#!/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