50 lines
1.8 KiB
Text
50 lines
1.8 KiB
Text
|
|
#!/bin/bash
|
||
|
|
# SubStatus — Subagent-Status-Übersicht (W04)
|
||
|
|
#
|
||
|
|
# Zeigt alle laufenden tmux-Sessions mit Status + letztem Output.
|
||
|
|
# Markiert beendete Sessions mit Kill-Befehl.
|
||
|
|
# Kombiniert tmux ls + intercom list in einer Übersicht.
|
||
|
|
#
|
||
|
|
# Nutzung: SubStatus
|
||
|
|
|
||
|
|
echo "=== Subagent-Status $(date '+%H:%M:%S') ==="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
SESSIONS=$(tmux ls -F '#{session_name}|#{session_attached}' 2>/dev/null || echo "")
|
||
|
|
|
||
|
|
if [ -z "$SESSIONS" ]; then
|
||
|
|
echo " (keine aktiven tmux-Sessions)"
|
||
|
|
echo ""
|
||
|
|
else
|
||
|
|
echo "── tmux-Sessions ──────────────────────────────────────────"
|
||
|
|
FERTIG_SESSIONS=()
|
||
|
|
|
||
|
|
while IFS='|' read -r name attached; do
|
||
|
|
LAST=$(tmux capture-pane -t "$name" -p 2>/dev/null | grep -v '^[[:space:]]*$' | tail -1 | cut -c1-80)
|
||
|
|
ATTACH_SYMBOL=" "
|
||
|
|
[ "$attached" = "1" ] && ATTACH_SYMBOL="[W]"
|
||
|
|
|
||
|
|
if echo "$LAST" | grep -qE "Pi beendet|Fenster kann geschlossen werden"; then
|
||
|
|
echo " [FERTIG] $name"
|
||
|
|
echo " last: $LAST"
|
||
|
|
FERTIG_SESSIONS+=("$name")
|
||
|
|
else
|
||
|
|
echo " $ATTACH_SYMBOL $name"
|
||
|
|
echo " last: ${LAST:-(leer)}"
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
done <<< "$SESSIONS"
|
||
|
|
|
||
|
|
if [ ${#FERTIG_SESSIONS[@]} -gt 0 ]; then
|
||
|
|
echo "── Fertige Sessions schliessen ─────────────────────────────"
|
||
|
|
for s in "${FERTIG_SESSIONS[@]}"; do
|
||
|
|
echo " tmux kill-session -t $s"
|
||
|
|
done
|
||
|
|
echo ""
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "── intercom ────────────────────────────────────────────────"
|
||
|
|
intercom list 2>/dev/null || echo " (intercom nicht verfügbar)"
|
||
|
|
echo ""
|