Files
timmy-config/wizards/allegro/task-monitor.sh
2026-03-31 20:02:01 +00:00

56 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# TASK MONITOR - Checks for task completion
# Runs every 10 minutes via cron
LOG_FILE=/root/wizards/allegro/logs/task-monitor.log
WORK_QUEUE=/root/wizards/allegro/WORK-QUEUE.md
ALLEGRO_WORKSPACE=/root/wizards/allegro
mkdir -p $(dirname $LOG_FILE)
echo "[$(date)] === TASK MONITOR CHECK ===" >> $LOG_FILE
# Count tasks by status (each status is on its own line)
PENDING=$(grep -c '^\*\*Status:\*\* PENDING' $WORK_QUEUE 2>/dev/null || echo 0)
IN_PROGRESS=$(grep -c 'IN_PROGRESS' $WORK_QUEUE 2>/dev/null || echo 0)
COMPLETE=$(grep -c '^\*\*Status:\*\* COMPLETE' $WORK_QUEUE 2>/dev/null || echo 0)
# Get first number only if multiple lines
PENDING=$(echo $PENDING | awk '{print $1}')
IN_PROGRESS=$(echo $IN_PROGRESS | awk '{print $1}')
COMPLETE=$(echo $COMPLETE | awk '{print $1}')
TOTAL=$((PENDING + IN_PROGRESS + COMPLETE))
echo "[$(date)] Queue status: $PENDING pending, $IN_PROGRESS active, $COMPLETE complete" >> $LOG_FILE
# Calculate completion percentage
if [ "$TOTAL" -gt 0 ] 2>/dev/null; then
PERCENT=$((COMPLETE * 100 / TOTAL))
echo "[$(date)] Overall progress: ${PERCENT}%" >> $LOG_FILE
fi
# Check for active tasks
for active_file in ${ALLEGRO_WORKSPACE}/work/*.active; do
if [ -f "$active_file" ]; then
TASK_NUM=$(basename "$active_file" .active)
echo "[$(date)] Found active task: $TASK_NUM" >> $LOG_FILE
# Check if completion file exists
if [ -f "${ALLEGRO_WORKSPACE}/completed/${TASK_NUM}.txt" ]; then
echo "[$(date)] $TASK_NUM completed!" >> $LOG_FILE
# Update work queue - mark as complete
sed -i "s/### $TASK_NUM.*\[IN_PROGRESS\]/### $TASK_NUM [COMPLETE]/" ${WORK_QUEUE}
sed -i "s/\*\*Status:\*\* IN_PROGRESS/**Status:** COMPLETE/" ${WORK_QUEUE}
# Move active file to completed
mv "$active_file" "${ALLEGRO_WORKSPACE}/completed/${TASK_NUM}.done"
echo "[$(date)] $TASK_NUM archived." >> $LOG_FILE
fi
fi
done
echo "[$(date)] === MONITOR CHECK COMPLETE ===" >> $LOG_FILE