mirror of
https://github.com/brianlovin/agent-config.git
synced 2026-09-14 19:57:10 +08:00
4305a3d6e9
- Settings and statusline - Commands: favicon, rams, simplify - Skills: agent-browser, reclaude - install.sh and sync.sh helpers
79 lines
2.4 KiB
Bash
Executable File
79 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Read JSON input from stdin
|
|
input=$(cat)
|
|
|
|
# Extract information from JSON
|
|
model_name=$(echo "$input" | jq -r '.model.display_name')
|
|
current_dir=$(echo "$input" | jq -r '.workspace.current_dir')
|
|
|
|
# Extract context window information
|
|
context_size=$(echo "$input" | jq -r '.context_window.context_window_size // 200000')
|
|
current_usage=$(echo "$input" | jq '.context_window.current_usage')
|
|
|
|
# Calculate context percentage
|
|
if [ "$current_usage" != "null" ]; then
|
|
current_tokens=$(echo "$current_usage" | jq '.input_tokens + .cache_creation_input_tokens + .cache_read_input_tokens')
|
|
context_percent=$((current_tokens * 100 / context_size))
|
|
else
|
|
context_percent=0
|
|
fi
|
|
|
|
# Build context progress bar (20 chars wide)
|
|
bar_width=15
|
|
filled=$((context_percent * bar_width / 100))
|
|
empty=$((bar_width - filled))
|
|
bar=""
|
|
for ((i=0; i<filled; i++)); do bar+="█"; done
|
|
for ((i=0; i<empty; i++)); do bar+="░"; done
|
|
|
|
# Get directory name (basename)
|
|
dir_name=$(basename "$current_dir")
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[0;33m'
|
|
CYAN='\033[0;36m'
|
|
GRAY='\033[0;90m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Change to the current directory to get git info
|
|
cd "$current_dir" 2>/dev/null || cd /
|
|
|
|
# Get git branch
|
|
if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
branch=$(git branch --show-current 2>/dev/null || echo "detached")
|
|
|
|
# Get git status with file counts
|
|
status_output=$(git status --porcelain 2>/dev/null)
|
|
|
|
if [ -n "$status_output" ]; then
|
|
# Count files and get basic line stats
|
|
total_files=$(echo "$status_output" | wc -l | xargs)
|
|
line_stats=$(git diff --numstat HEAD 2>/dev/null | awk '{added+=$1; removed+=$2} END {print added+0, removed+0}')
|
|
|
|
added=$(echo $line_stats | cut -d' ' -f1)
|
|
removed=$(echo $line_stats | cut -d' ' -f2)
|
|
|
|
# Build status display
|
|
git_info=" ${YELLOW}($branch${NC} ${YELLOW}|${NC} ${GRAY}${total_files} files${NC}"
|
|
|
|
[ "$added" -gt 0 ] && git_info="${git_info} ${GREEN}+${added}${NC}"
|
|
[ "$removed" -gt 0 ] && git_info="${git_info} ${RED}-${removed}${NC}"
|
|
|
|
git_info="${git_info} ${YELLOW})${NC}"
|
|
else
|
|
git_info=" ${YELLOW}($branch)${NC}"
|
|
fi
|
|
else
|
|
git_info=""
|
|
fi
|
|
|
|
# Build context bar display
|
|
context_info="${GRAY}${bar}${NC} ${context_percent}%"
|
|
|
|
# Output the status line
|
|
echo -e "${BLUE}${dir_name}${NC} ${GRAY}|${NC} ${CYAN}${model_name}${NC} ${GRAY}|${NC} ${context_info}${git_info:+ ${GRAY}|${NC}}${git_info}"
|