| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/bin/bash
- # Cleanup stale agent sessions older than 24 hours
- set -e
- SESSIONS_DIR=".tmp/sessions"
- STALE_HOURS=24
- # Check if sessions directory exists
- if [ ! -d "$SESSIONS_DIR" ]; then
- echo "No sessions directory found at $SESSIONS_DIR"
- exit 0
- fi
- echo "Checking for stale sessions (older than ${STALE_HOURS} hours)..."
- # Find all session directories
- session_count=0
- stale_count=0
- for session_dir in "$SESSIONS_DIR"/*; do
- if [ ! -d "$session_dir" ]; then
- continue
- fi
-
- session_count=$((session_count + 1))
- session_id=$(basename "$session_dir")
- manifest="$session_dir/.manifest.json"
-
- # Check if manifest exists
- if [ ! -f "$manifest" ]; then
- echo "⚠️ Session $session_id has no manifest - removing"
- rm -rf "$session_dir"
- stale_count=$((stale_count + 1))
- continue
- fi
-
- # Get last activity timestamp
- last_activity=$(jq -r '.last_activity // .created_at' "$manifest" 2>/dev/null || echo "")
-
- if [ -z "$last_activity" ]; then
- echo "⚠️ Session $session_id has invalid manifest - removing"
- rm -rf "$session_dir"
- stale_count=$((stale_count + 1))
- continue
- fi
-
- # Calculate age in hours
- last_activity_epoch=$(date -j -f "%Y-%m-%dT%H:%M:%SZ" "$last_activity" "+%s" 2>/dev/null || echo "0")
- current_epoch=$(date "+%s")
- age_hours=$(( (current_epoch - last_activity_epoch) / 3600 ))
-
- if [ "$age_hours" -gt "$STALE_HOURS" ]; then
- echo "🗑️ Removing stale session $session_id (${age_hours}h old)"
- rm -rf "$session_dir"
- stale_count=$((stale_count + 1))
- else
- echo "✅ Session $session_id is active (${age_hours}h old)"
- fi
- done
- echo ""
- echo "Summary:"
- echo " Total sessions: $session_count"
- echo " Stale sessions removed: $stale_count"
- echo " Active sessions: $((session_count - stale_count))"
- # Remove sessions directory if empty
- if [ -d "$SESSIONS_DIR" ] && [ -z "$(ls -A "$SESSIONS_DIR")" ]; then
- echo ""
- echo "Sessions directory is empty - removing"
- rmdir "$SESSIONS_DIR"
- fi
- echo ""
- echo "✨ Cleanup complete!"
|