From e52684d6f86c0e3b7dea7d7248dc66cabdf8822d Mon Sep 17 00:00:00 2001 From: Branko May Trinkwald Date: Mon, 22 Dec 2025 13:42:29 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix:=20eule=5Ftokens=20-=20Robus?= =?UTF-8?q?te=20Token-Log-Parsing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- crumb-mission-selector.sh | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/crumb-mission-selector.sh b/crumb-mission-selector.sh index 7630b65..88ae670 100755 --- a/crumb-mission-selector.sh +++ b/crumb-mission-selector.sh @@ -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}"