Files
MyAiConfiguration/shared/statusline/statusline.sh
T

55 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
command -v jq >/dev/null 2>&1 || exit 0
input=
while IFS= read -r line || [ -n "$line" ]; do input+="$line"; done
IFS=$'\t' read -r model effort repo directory used_percentage used_tokens < <(
printf '%s' "$input" | jq -r '[
(.model.display_name // "-"),
(.effort.level // "-"),
(.workspace.repo.name // "-"),
(.workspace.current_dir // .cwd // "."),
(if .context_window.used_percentage == null then "-" else (.context_window.used_percentage | round) end),
((.context_window.total_input_tokens // 0) + (.context_window.total_output_tokens // 0))
] | @tsv'
)
used_percentage=${used_percentage%$'\r'}
used_tokens=${used_tokens%$'\r'}
[ "$repo" != - ] || repo=$(basename -- "$directory")
[ -n "$repo" ] || repo=-
branch=$(git -C "$directory" branch --show-current 2>/dev/null || true)
[ -n "$branch" ] || branch=-
if [ "$used_percentage" != - ]; then
used_context="${used_percentage}%"
else
used_context=-
fi
if [ "$used_tokens" -ge 1000 ]; then
used_tokens_display=$(awk -v t="$used_tokens" 'BEGIN { printf "%.1fk", t / 1000 }')
else
used_tokens_display=$used_tokens
fi
esc=$'\033'
reset="$esc[0m"
dim="$esc[90m"
cyan="$esc[36m"
magenta="$esc[35m"
blue="$esc[34m"
green="$esc[32m"
if [ "$used_percentage" = - ]; then
context_color=$dim
elif [ "$used_percentage" -ge 85 ]; then
context_color="$esc[31m"
elif [ "$used_percentage" -ge 60 ]; then
context_color="$esc[33m"
else
context_color=$green
fi
sep="${dim}ยท${reset}"
printf "${cyan}%s${reset} ${sep} ${magenta}%s${reset}\n${blue}%s${reset}${dim} on${reset} ${green}%s${reset} ${sep} ${context_color}%s ctx${reset} ${dim}(%s tok)${reset}\n" \
"$model" "$effort" "$repo" "$branch" "$used_context" "$used_tokens_display"