26 lines
1.0 KiB
Bash
26 lines
1.0 KiB
Bash
#!/usr/bin/env bash
|
|||
|
|
# Usage: watch-check.sh
|
||
|
|
# Shows whether the agents-council watch hook is stuck: running hook
|
||
|
|
# processes, holders of the kept queue history, and the age of the stored
|
||
|
|
# resource stage. Exit 1 when the stored stage is older than STALE_SECONDS.
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
# council.py ROOT: every agent must agree on this directory
|
||
|
|
STATE="${AGENTS_COUNCIL_ROOT:-/tmp/agents-council}/watch.json"
|
||
|
|
KEPT="${HOME}/.local/state/agents-council/queue-history.jsonl"
|
||
|
|
STALE_SECONDS=600
|
||
|
|
|
||
|
|
printf 'watch hooks running: %s\n' "$(pgrep -fc 'watch.py watch' || true)"
|
||
|
|
if command -v lsof &>/dev/null; then
|
||
|
|
printf 'holders of %s:\n' "${KEPT}"
|
||
|
|
lsof "${KEPT}" 2>/dev/null || printf ' none\n'
|
||
|
|
else
|
||
|
|
printf 'lsof not installed; holders of %s unknown\n' "${KEPT}"
|
||
|
|
fi
|
||
|
|
python3 -c '
|
||
|
|
import json, sys, time
|
||
|
|
state = json.load(open(sys.argv[1]))
|
||
|
|
stage, free, age = state["stage"], state["free"], round(time.time() - state["checked"])
|
||
|
|
print(f"stored stage {stage}, {free:.1f} GB free, {age} s old")
|
||
|
|
sys.exit(1 if age > int(sys.argv[2]) else 0)
|
||
|
|
' "${STATE}" "${STALE_SECONDS}"
|