🐛 Fix: eule_tokens - Robuste Token-Log-Parsing

Problem:
- eule_tokens produzierte jq-Fehler:
  "Cannot index array with string 'zeit'"
  "Cannot index array with string 'usage'"
- Gleiche Ursache wie bei check_token_budget
- Token-Logs haben [] als erste Zeile
- usage kann String oder Objekt sein

Lösung:
- Skip [] und leere Zeilen mit continue
- jq mit Fallback: '.zeit // "unknown"'
- Unterstütze beide usage-Formate:
  * String: usage | fromjson | .total_tokens
  * Objekt: usage.total_tokens
- Validiere Zahlen vor Addition

Test:
 Keine jq-Fehler mehr
 Token werden korrekt summiert
 Funktioniert mit allen Log-Formaten

Jetzt können Kinder ihre Token-Nutzung ohne Fehler sehen! 🌲

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Branko May Trinkwald
2025-12-22 13:42:29 +01:00
parent 223fc5f37d
commit e52684d6f8

View File

@@ -570,11 +570,21 @@ function eule_tokens() {
echo -e "\${CYAN}📊 Token-Verbrauch:\${NC}"
echo ""
TOTAL=0
# Filter leere Arrays und parse JSON robuster
while IFS= read -r line; do
zeit=\$(echo "\$line" | jq -r '.zeit')
tokens=\$(echo "\$line" | jq -r '.usage.total_tokens')
TOTAL=\$((TOTAL + tokens))
echo " \$zeit: \$tokens Tokens"
# Skip leere Zeilen und [] Arrays
if [[ -z "\$line" ]] || [[ "\$line" == "[]" ]]; then
continue
fi
zeit=\$(echo "\$line" | jq -r '.zeit // "unknown"' 2>/dev/null)
# Unterstütze usage als String oder Objekt
tokens=\$(echo "\$line" | jq -r 'if .usage | type == "string" then .usage | fromjson | .total_tokens // 0 else .usage.total_tokens // 0 end' 2>/dev/null)
if [[ "\$tokens" =~ ^[0-9]+\$ ]]; then
TOTAL=\$((TOTAL + tokens))
echo " \$zeit: \$tokens Tokens"
fi
done < "\$LOGDIR/token_log.json"
echo ""
echo -e "\${GREEN}Gesamt: \$TOTAL Tokens\${NC}"