#!/bin/bash input=$(cat) cwd=$(echo "$input" | jq -r '.cwd') model=$(echo "$input" | jq -r '.model.display_name // empty') five_pct=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty') five_reset=$(echo "$input" | jq -r '.rate_limits.five_hour.resets_at // empty') week_pct=$(echo "$input" | jq -r '.rate_limits.seven_day.used_percentage // empty') week_reset=$(echo "$input" | jq -r '.rate_limits.seven_day.resets_at // empty') ctx_pct=$(echo "$input" | jq -r '.context_window.used_percentage // empty') branch=$(git -C "$cwd" --no-optional-locks symbolic-ref --short HEAD 2>/dev/null) short_cwd="${cwd/#$HOME/\~}" printf "\033[01;34m%s\033[00m" "$short_cwd" [ -n "$branch" ] && printf " \033[01;33m[%s]\033[00m" "$branch" [ -n "$model" ] && printf " \033[00;36m%s\033[00m" "$model" # Форматирует оставшееся время до сброса лимита fmt_remaining() { local reset_ts="$1" local now now=$(date +%s) local diff=$(( reset_ts - now )) [ "$diff" -le 0 ] && echo "скоро" && return local d=$(( diff / 86400 )) local h=$(( (diff % 86400) / 3600 )) local m=$(( (diff % 3600) / 60 )) if [ "$d" -gt 0 ]; then echo "${d}д${h}ч" elif [ "$h" -gt 0 ]; then echo "${h}ч${m}м" else echo "${m}м" fi } if [[ "$model" == *[Dd]eep[Ss]eek* ]]; then cache_file="$HOME/.cache/ai-setup/deepseek_balance" if [ -f "$cache_file" ]; then balance=$(head -1 "$cache_file") [ -n "$balance" ] && printf " \033[00;35m\$%s\033[00m" "$balance" fi else if [ -n "$five_pct" ] && [ -n "$five_reset" ]; then remaining=$(fmt_remaining "$five_reset") printf " \033[00;35m%s:$(printf '%.0f' "$five_pct")%%\033[00m" "$remaining" fi if [ -n "$week_pct" ] && [ -n "$week_reset" ]; then remaining=$(fmt_remaining "$week_reset") printf " \033[00;35m%s:$(printf '%.0f' "$week_pct")%%\033[00m" "$remaining" fi fi if [ -n "$ctx_pct" ]; then ctx_int=$(printf '%.0f' "$ctx_pct") if [ "$ctx_int" -lt 40 ]; then ctx_color="\033[00;32m" elif [ "$ctx_int" -lt 60 ]; then ctx_color="\033[00;33m" else ctx_color="\033[00;31m" fi printf " ${ctx_color}ctx:${ctx_int}%%\033[00m" # Звуковой сигнал при первом достижении 60% alert_file="$HOME/.cache/ai-setup/ctx_alert_state" if [ "$ctx_int" -ge 60 ]; then if [ ! -f "$alert_file" ] || [ "$(cat "$alert_file")" != "alerted" ]; then mkdir -p "$HOME/.cache/ai-setup" echo "alerted" > "$alert_file" (timeout 1s paplay /usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga 2>/dev/null; true) & fi elif [ "$ctx_int" -lt 50 ]; then rm -f "$alert_file" 2>/dev/null fi fi exit 0