mirror of
https://github.com/Permissionless-Software-Foundation/psf-memo.git
synced 2026-09-21 16:52:01 -07:00
37 lines
1.7 KiB
Bash
37 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|||
|
|
# sf-queue — estado de las colas de handoff de todos los roles del swarm.
|
||
|
|
# Uso: sf-queue [directorio-del-proyecto] (por defecto: directorio actual)
|
||
|
|
# Muestra: new (pendientes) · proc (en proceso, incluye batches) · done (completados)
|
||
|
|
# outbox (por enviar) · sent (enviados) + nombres de tarea.
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
ROOT="${1:-$(pwd)}"
|
||
|
|
cd "$ROOT"
|
||
|
|
TSV=".swarmforge/roles.tsv"
|
||
|
|
[ -f "$TSV" ] || { echo "No hay swarm en $ROOT (falta $TSV)" >&2; exit 1; }
|
||
|
|
|
||
|
|
count() { # count <globs...> → nº de ficheros .handoff (también dentro de batch_*/)
|
||
|
|
local n=0 f
|
||
|
|
for f in "$@"; do [ -f "$f" ] && n=$((n+1)); done
|
||
|
|
echo "$n"
|
||
|
|
}
|
||
|
|
|
||
|
|
while IFS=$'\t' read -r role wtname wtpath session display agent mode; do
|
||
|
|
H="$wtpath/.swarmforge/handoffs"
|
||
|
|
[ -d "$H" ] || continue
|
||
|
|
new=$(count "$H"/inbox/new/*.handoff)
|
||
|
|
proc=$(count "$H"/inbox/in_process/*.handoff "$H"/inbox/in_process/batch_*/*.handoff)
|
||
|
|
donec=$(count "$H"/inbox/completed/*.handoff "$H"/inbox/completed/batch_*/*.handoff)
|
||
|
|
out=$(count "$H"/outbox/*.handoff)
|
||
|
|
sent=$(count "$H"/sent/*.handoff)
|
||
|
|
printf "== %-10s new=%-2s proc=%-2s done=%-2s outbox=%-2s sent=%-2s\n" \
|
||
|
|
"$role" "$new" "$proc" "$donec" "$out" "$sent"
|
||
|
|
for f in "$H"/inbox/new/*.handoff; do [ -f "$f" ] && echo " [pendiente] $(sed -n 's/^task: //p' "$f")"; done
|
||
|
|
for f in "$H"/inbox/in_process/*.handoff; do [ -f "$f" ] && echo " [en proceso] $(sed -n 's/^task: //p' "$f")"; done
|
||
|
|
for d in "$H"/inbox/in_process/batch_*; do
|
||
|
|
[ -d "$d" ] && for f in "$d"/*.handoff; do [ -f "$f" ] && echo " [batch] $(sed -n 's/^task: //p' "$f")"; done
|
||
|
|
done
|
||
|
|
for f in "$H"/outbox/*.handoff; do [ -f "$f" ] && echo " [outbox] $(sed -n 's/^task: //p' "$f")"; done
|
||
|
|
done < "$TSV"
|
||
|
|
exit 0
|