Feature: 🌲 CrumbCrew Command Central! 🎉
ALLE WALDWÄCHTER VEREINT! New Main Menu Option: 9) 🌲 CrumbCrew - Alle Waldwächter 10) 👋 Beenden (moved from 9) CrumbCrew Shell Features: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🌲🌲🌲 CrumbCrew Command Central 🌲🌲🌲 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Die Waldwächter (All Characters): - 🦉 mayaeule - Die weise Eule (Philosophie) - 🐙 deepbit - Der poetische Oktopus (Bash) - 🐞 bugsy - Der Debugging-Clown - ✂️ schnippsi - Der Shell-Helfer - 🤖 tobi - Der Daten-Experte (JSON) Crew Commands: - crew_status - Status aller Waldwächter - crew_tokens - Token-Verbrauch ALLER Charaktere - crew_memory - Erinnerungen aller Charaktere - help/status/tokens/memory - Shortcuts Interactive Shell: (🌲 CrumbCrew) $ mayaeule "Was ist das Leben?" (🌲 CrumbCrew) $ deepbit "Erkläre Pipes" (🌲 CrumbCrew) $ bugsy "Debug diesen Fehler" (🌲 CrumbCrew) $ crew_tokens # Gesamt-Token über ALLE (🌲 CrumbCrew) $ exit Philosophy: Seit Monaten gedacht - jetzt angedockt! Schneller und hochwertiger als vorgestellt. Kleiner Krümel auf der Brücke schmunzelt! 🌲❤️ WUHUUUU! 🚀✨
This commit is contained in:
@@ -589,6 +589,224 @@ EOF
|
||||
rm -f "${EULE_RC}"
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# CRUMBCREW COMMAND CENTRAL (Alle Waldwächter)
|
||||
# ============================================================
|
||||
|
||||
function crumbcrew_doktor() {
|
||||
echo -e "${GREEN}--- 🌲 CrumbCrew Command Central ---${NC}"
|
||||
echo -e "${CYAN}Alle Waldwächter versammeln sich!${NC}"
|
||||
echo ""
|
||||
|
||||
if [[ "$AI_AVAILABLE" == "false" ]] || [[ -z "$OPENROUTER_API_KEY" ]]; then
|
||||
echo -e "${YELLOW}⚠️ CrumbCrew braucht einen API-Key${NC}"
|
||||
echo ""
|
||||
echo "Bitte konfiguriere .env mit OPENROUTER_API_KEY"
|
||||
read -p "Drücke Enter..." -r
|
||||
return
|
||||
fi
|
||||
|
||||
# Temporäres RC File für die Shell
|
||||
CREW_RC="/tmp/crumb_crew_$$.rc"
|
||||
|
||||
# Pfade zu allen Charakteren
|
||||
CREW_DIR="${SCRIPT_DIR}/crumbforest_roles"
|
||||
|
||||
cat > "${CREW_RC}" << EOF
|
||||
# Load .bashrc if exists
|
||||
if [ -f /etc/bashrc ]; then source /etc/bashrc; fi
|
||||
if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
|
||||
|
||||
# Farben
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
CYAN='\033[0;36m'
|
||||
BLUE='\033[0;34m'
|
||||
RED='\033[0;31m'
|
||||
MAGENTA='\033[1;35m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Prompt im CrumbCrew-Style
|
||||
export PS1="\[\033[1;32m\](🌲 CrumbCrew) \u@\h:\w\$ \[\033[0m\]"
|
||||
|
||||
# Pfad zu den Charakteren
|
||||
CREW_DIR="${CREW_DIR}"
|
||||
|
||||
# === WALDWÄCHTER FUNKTIONEN ===
|
||||
|
||||
function mayaeule() {
|
||||
if [[ -z "\$1" ]]; then
|
||||
echo -e "\${YELLOW}Verwendung: mayaeule \"Deine Frage\"\${NC}"
|
||||
return
|
||||
fi
|
||||
echo -e "\${MAGENTA}🦉 Maya-Eule erwacht...\${NC}"
|
||||
"\$CREW_DIR/mayaeule_zero.sh" "\$@"
|
||||
}
|
||||
|
||||
function deepbit() {
|
||||
if [[ -z "\$1" ]]; then
|
||||
echo -e "\${YELLOW}Verwendung: deepbit \"Deine Frage\"\${NC}"
|
||||
return
|
||||
fi
|
||||
echo -e "\${BLUE}🐙 Deepbit taucht auf...\${NC}"
|
||||
"\$CREW_DIR/deepbit_zero.sh" "\$@"
|
||||
}
|
||||
|
||||
function bugsy() {
|
||||
if [[ -z "\$1" ]]; then
|
||||
echo -e "\${YELLOW}Verwendung: bugsy \"Deine Frage\"\${NC}"
|
||||
return
|
||||
fi
|
||||
echo -e "\${RED}🐞 Bugsy analysiert...\${NC}"
|
||||
"\$CREW_DIR/bugsy_zero.sh" "\$@"
|
||||
}
|
||||
|
||||
function schnippsi() {
|
||||
if [[ -z "\$1" ]]; then
|
||||
echo -e "\${YELLOW}Verwendung: schnippsi \"Deine Frage\"\${NC}"
|
||||
return
|
||||
fi
|
||||
echo -e "\${CYAN}✂️ Schnippsi schnippelt...\${NC}"
|
||||
"\$CREW_DIR/schnippsi_zero.sh" "\$@"
|
||||
}
|
||||
|
||||
function tobi() {
|
||||
if [[ -z "\$1" ]]; then
|
||||
echo -e "\${YELLOW}Verwendung: tobi \"Deine Frage\"\${NC}"
|
||||
return
|
||||
fi
|
||||
echo -e "\${GREEN}🤖 Tobi rechnet...\${NC}"
|
||||
"\$CREW_DIR/tobi_zero.sh" "\$@"
|
||||
}
|
||||
|
||||
# === CREW MANAGEMENT ===
|
||||
|
||||
function crew_help() {
|
||||
echo -e "\${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
||||
echo -e "\${GREEN} 🌲 CrumbCrew Command Central 🌲 \${NC}"
|
||||
echo -e "\${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
||||
echo ""
|
||||
echo -e "\${CYAN}Die Waldwächter (Verfügbare Charaktere):\${NC}"
|
||||
echo ""
|
||||
echo -e " \${MAGENTA}🦉 mayaeule\${NC} - Die weise Eule (Philosophie, Weisheit)"
|
||||
echo -e " \${BLUE}🐙 deepbit\${NC} - Der poetische Oktopus (Bash-Konzepte)"
|
||||
echo -e " \${RED}🐞 bugsy\${NC} - Der Debugging-Clown (Fehlersuche)"
|
||||
echo -e " \${CYAN}✂️ schnippsi\${NC} - Der Shell-Helfer (Kommandos)"
|
||||
echo -e " \${GREEN}🤖 tobi\${NC} - Der Daten-Experte (JSON, Daten)"
|
||||
echo ""
|
||||
echo -e "\${YELLOW}Crew-Befehle:\${NC}"
|
||||
echo " crew_status - Status aller Waldwächter"
|
||||
echo " crew_tokens - Token-Verbrauch aller Charaktere"
|
||||
echo " crew_memory - Erinnerungen aller Charaktere"
|
||||
echo " crew_help - Diese Hilfe"
|
||||
echo " exit - Zurück zum Hauptmenü"
|
||||
echo ""
|
||||
echo -e "\${CYAN}Beispiele:\${NC}"
|
||||
echo " mayaeule \"Was ist das Leben?\""
|
||||
echo " deepbit \"Erkläre Pipes und Redirects\""
|
||||
echo " bugsy \"Warum funktioniert mein Script nicht?\""
|
||||
echo " schnippsi \"Wie nutze ich grep?\""
|
||||
echo " tobi \"Parse dieses JSON\""
|
||||
echo ""
|
||||
echo -e "\${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
||||
}
|
||||
|
||||
function crew_status() {
|
||||
echo -e "\${CYAN}🌲 CrumbCrew Status\${NC}"
|
||||
echo ""
|
||||
|
||||
CHARS=("mayaeule:🦉:Maya-Eule" "deepbit:🐙:Deepbit" "bugsy:🐞:Bugsy" "schnippsi:✂️:Schnippsi" "tobi:🤖:Tobi")
|
||||
|
||||
for char_info in "\${CHARS[@]}"; do
|
||||
IFS=: read -r name icon display <<< "\$char_info"
|
||||
if [[ -x "\$CREW_DIR/\${name}_zero.sh" ]]; then
|
||||
echo -e " \${GREEN}✅ \$icon \$display\${NC} - Bereit"
|
||||
else
|
||||
echo -e " \${RED}❌ \$icon \$display\${NC} - Nicht verfügbar"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo -e "\${YELLOW}API Status:\${NC}"
|
||||
if [[ -n "\$OPENROUTER_API_KEY" ]]; then
|
||||
echo -e " \${GREEN}✅ OpenRouter API\${NC} - Konfiguriert"
|
||||
else
|
||||
echo -e " \${RED}❌ Kein API-Key\${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
function crew_tokens() {
|
||||
echo -e "\${CYAN}📊 CrumbCrew Token-Verbrauch\${NC}"
|
||||
echo ""
|
||||
|
||||
TOTAL=0
|
||||
|
||||
for logdir in ~/.{mayaeule,eule,deepbit,bugsy,schnippsi,tobi}_logs; do
|
||||
if [[ -d "\$logdir" ]] && [[ -f "\$logdir/token_log.json" ]]; then
|
||||
char_name=\$(basename "\$logdir" | sed 's/_logs//')
|
||||
char_tokens=0
|
||||
|
||||
while IFS= read -r line; do
|
||||
tokens=\$(echo "\$line" | jq -r '.usage.total_tokens' 2>/dev/null)
|
||||
if [[ "\$tokens" != "null" ]] && [[ -n "\$tokens" ]]; then
|
||||
char_tokens=\$((char_tokens + tokens))
|
||||
fi
|
||||
done < "\$logdir/token_log.json"
|
||||
|
||||
if [[ \$char_tokens -gt 0 ]]; then
|
||||
echo -e " \${GREEN}\$char_name:\${NC} \$char_tokens Tokens"
|
||||
TOTAL=\$((TOTAL + char_tokens))
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo -e "\${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
||||
echo -e " \${GREEN}Gesamt: \$TOTAL Tokens\${NC}"
|
||||
echo -e " \${CYAN}Jede Frage ist wertvoll 🌲\${NC}"
|
||||
echo -e "\${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\${NC}"
|
||||
}
|
||||
|
||||
function crew_memory() {
|
||||
echo -e "\${CYAN}📜 CrumbCrew Erinnerungen\${NC}"
|
||||
echo ""
|
||||
|
||||
for logdir in ~/.{mayaeule,eule,deepbit,bugsy,schnippsi,tobi}_logs; do
|
||||
if [[ -d "\$logdir" ]] && [[ -f "\$logdir/*_history.json" ]]; then
|
||||
char_name=\$(basename "\$logdir" | sed 's/_logs//')
|
||||
count=\$(jq '. | length' "\$logdir/*_history.json" 2>/dev/null)
|
||||
if [[ "\$count" != "null" ]] && [[ \$count -gt 0 ]]; then
|
||||
echo -e " \${GREEN}\$char_name:\${NC} \$count Gespräche"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
alias help="crew_help"
|
||||
alias status="crew_status"
|
||||
alias tokens="crew_tokens"
|
||||
alias memory="crew_memory"
|
||||
|
||||
# Willkommensnachricht
|
||||
clear
|
||||
echo -e "\${GREEN}"
|
||||
cat << 'CREWEOF'
|
||||
🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲
|
||||
|
||||
CrumbCrew Command Central
|
||||
Alle Waldwächter vereint!
|
||||
|
||||
🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲🌲
|
||||
CREWEOF
|
||||
echo -e "\${NC}"
|
||||
echo ""
|
||||
crew_help
|
||||
EOF
|
||||
|
||||
bash --rcfile "${CREW_RC}"
|
||||
rm -f "${CREW_RC}"
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# HAUPTMENÜ
|
||||
# ============================================================
|
||||
@@ -606,10 +824,11 @@ function main_menu() {
|
||||
echo "6) 🌲 Git Doktor"
|
||||
echo "7) 🤖 AI & Token-Tracking"
|
||||
echo "8) 🦉 Maya-Eule Weisheit"
|
||||
echo "9) 🌲 CrumbCrew - Alle Waldwächter"
|
||||
echo ""
|
||||
echo "9) 👋 Beenden"
|
||||
echo "10) 👋 Beenden"
|
||||
echo ""
|
||||
read -p "Auswahl [1-9]: " CHOICE
|
||||
read -p "Auswahl [1-10]: " CHOICE
|
||||
|
||||
case $CHOICE in
|
||||
1) run_mission_menu "basics" "📚 Basics - Einsteiger" ;;
|
||||
@@ -620,7 +839,8 @@ function main_menu() {
|
||||
6) git_doktor ;;
|
||||
7) ai_doktor ;;
|
||||
8) mayaeule_doktor ;;
|
||||
9)
|
||||
9) crumbcrew_doktor ;;
|
||||
10)
|
||||
clear
|
||||
echo -e "${GREEN}"
|
||||
echo "👋 Auf bald im Crumbforest!"
|
||||
@@ -628,7 +848,7 @@ function main_menu() {
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Bitte 1-9 wählen.${NC}"
|
||||
echo -e "${RED}Bitte 1-10 wählen.${NC}"
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user