Files
letta-code/hooks/permissions-status.sh
2026-01-26 11:20:21 -08:00

83 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Show current permission status when a permission request is made
input=$(cat)
tool_name=$(echo "$input" | jq -r '.tool_name')
working_dir=$(echo "$input" | jq -r '.working_directory')
# Colors for output
BOLD='\033[1m'
DIM='\033[2m'
GREEN='\033[32m'
RED='\033[31m'
YELLOW='\033[33m'
BLUE='\033[34m'
RESET='\033[0m'
echo -e "\n"
echo -e "${BOLD}═══════════════════════════════════════════════════════════════${RESET}"
echo -e "${BOLD}Permission Request: ${BLUE}$tool_name${RESET}"
echo -e "${BOLD}═══════════════════════════════════════════════════════════════${RESET}\n"
# Function to display permissions from a file
show_permissions() {
local file="$1"
local label="$2"
local color="$3"
echo -e "${color}${BOLD}$label${RESET}"
echo -e "${DIM}$file${RESET}"
if [ -f "$file" ]; then
local allow=$(jq -r '.permissions.allow // [] | .[]' "$file" 2>/dev/null)
local deny=$(jq -r '.permissions.deny // [] | .[]' "$file" 2>/dev/null)
local ask=$(jq -r '.permissions.ask // [] | .[]' "$file" 2>/dev/null)
if [ -n "$allow" ] || [ -n "$deny" ] || [ -n "$ask" ]; then
if [ -n "$allow" ]; then
echo -e " ${GREEN}Allow:${RESET}"
echo "$allow" | while read -r rule; do
[ -n "$rule" ] && echo -e " ${GREEN}${RESET} $rule"
done
fi
if [ -n "$deny" ]; then
echo -e " ${RED}Deny:${RESET}"
echo "$deny" | while read -r rule; do
[ -n "$rule" ] && echo -e " ${RED}${RESET} $rule"
done
fi
if [ -n "$ask" ]; then
echo -e " ${YELLOW}Ask:${RESET}"
echo "$ask" | while read -r rule; do
[ -n "$rule" ] && echo -e " ${YELLOW}?${RESET} $rule"
done
fi
else
echo -e " ${DIM}(none)${RESET}"
fi
else
echo -e " ${DIM}(file not found)${RESET}"
fi
echo ""
}
# XDG config settings (~/.config/letta/settings.json)
xdg_config="${XDG_CONFIG_HOME:-$HOME/.config}"
show_permissions "$xdg_config/letta/settings.json" "User Settings (XDG)" "$BLUE"
# Legacy global settings (~/.letta/settings.json)
show_permissions "$HOME/.letta/settings.json" "User Settings (Legacy)" "$BLUE"
# Project settings (.letta/settings.json)
show_permissions "$working_dir/.letta/settings.json" "Project Settings" "$YELLOW"
# Project local settings (.letta/settings.local.json)
show_permissions "$working_dir/.letta/settings.local.json" "Project Local Settings" "$GREEN"
echo -e "${BOLD}═══════════════════════════════════════════════════════════════${RESET}\n"
# Exit with code 1 to continue to normal permission flow (don't auto-allow/deny)
exit 1