#!/bin/bash

# Monitor token usage and alert on high consumption (no jq required)
# Can be run as a cron job for proactive monitoring

ALERT_THRESHOLD=${1:-50000}  # Alert at 50k tokens
CRITICAL_THRESHOLD=${2:-100000}  # Critical at 100k tokens

echo "🔍 Token usage monitoring (Alert: ${ALERT_THRESHOLD}, Critical: ${CRITICAL_THRESHOLD})"

# Get current session data
sessions=$(openclaw sessions 2>/dev/null)

if [[ $? -ne 0 ]]; then
    echo "❌ Failed to fetch session data"
    exit 1
fi

# Extract token counts using grep and basic parsing
alert_count=0
critical_count=0
total_tokens=0

echo "$sessions" | grep "totalTokens" | while read -r line; do
    # Extract number after "totalTokens": 
    tokens=$(echo "$line" | sed 's/.*"totalTokens": *\([0-9]*\).*/\1/')
    
    if [[ "$tokens" =~ ^[0-9]+$ ]]; then
        total_tokens=$((total_tokens + tokens))
        
        if [[ $tokens -gt $CRITICAL_THRESHOLD ]]; then
            critical_count=$((critical_count + 1))
            echo "🔴 CRITICAL: Session has $tokens tokens (>${CRITICAL_THRESHOLD})"
        elif [[ $tokens -gt $ALERT_THRESHOLD ]]; then
            alert_count=$((alert_count + 1))
            echo "⚠️ ALERT: Session has $tokens tokens (>${ALERT_THRESHOLD})"
        fi
    fi
done

# Simple check using openclaw sessions output
critical_sessions=$(echo "$sessions" | grep -E '"totalTokens": *[0-9]{6,}' | wc -l)
alert_sessions=$(echo "$sessions" | grep -E '"totalTokens": *[0-9]{5,}' | wc -l)

echo ""
echo "📊 Quick Summary:"
echo "  Sessions with >100k tokens: $critical_sessions"
echo "  Sessions with >50k tokens: $alert_sessions"

if [[ $critical_sessions -gt 0 ]]; then
    echo ""
    echo "🔴 Critical sessions found - recommend immediate action!"
    exit 2
elif [[ $alert_sessions -gt 3 ]]; then
    echo ""
    echo "⚠️ Multiple high-token sessions - monitor closely"
    exit 1
else
    echo "✅ Token usage looks manageable"
    exit 0
fi