- sbt: sesiuni tmux (sbx1..3) care intră în sandbox și lansează agentul (claude/opencode/orice binar); tmux rulează pe host, panes prin sbx exec - statusline.sh + bootstrap-statusline.sh pe /home/workspace/.agent (virtiofs persistent), reinstalat la fiecare intrare fiindcă /home/agent din sandbox e overlay efemer - fix printf "--" -> printf -- "--" (eroare de usage când API-ul de cote nu răspunde) - copii versionate ale scripturilor agents/sb + documentație README Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
40 lines
1.4 KiB
Bash
Executable File
40 lines
1.4 KiB
Bash
Executable File
#!/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
|