#!/bin/bash # Удаление панели «Claude». С --purge удаляет ещё настройки и логи. set -euo pipefail ok() { printf ' \033[32m✓\033[0m %s\n' "$*"; } die() { printf '\033[31mОшибка:\033[0m %s\n' "$*" >&2; exit 1; } [ -z "${SSH_CONNECTION:-}${SSH_TTY:-}" ] \ || die "запустите за самим Mac, не по SSH — из SSH-сессии launchd и iTerm2 не настроить. Если вы и так за Mac (например, в панели tmux, открытой раньше из SSH), запустите в обычной вкладке iTerm2 или после unset SSH_CONNECTION SSH_TTY" HERE="$(cd "$(dirname "$0")" && pwd)" AUTOLAUNCH="$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch" SETTINGS="$HOME/.claude/settings.json" BACKUP_DIR="$HOME/.claude-panel-backup/$(date +%Y%m%d-%H%M%S)-$$-uninstall" PORT=8766 LABEL=com.andrey.claude-agents PLIST="$HOME/Library/LaunchAgents/$LABEL.plist" # служба — первой, иначе launchd поднимет сервер снова launchctl bootout "gui/$(id -u)/$LABEL" >/dev/null 2>&1 && ok "служба остановлена" || true rm -f "$PLIST" rm -rf "$HOME/.local/share/claude-agents" ok "служба удалена" if command -v lsof >/dev/null; then pids=$(lsof -ti "tcp:$PORT" -sTCP:LISTEN 2>/dev/null || true) [ -n "$pids" ] && kill $pids 2>/dev/null && ok "панель остановлена" fi rm -f "$AUTOLAUNCH/claude_agents.py" && ok "скрипт убран из AutoLaunch" if [ -f "$SETTINGS" ]; then mkdir -p "$BACKUP_DIR" && cp -p "$SETTINGS" "$BACKUP_DIR/" removed=$(python3 "$HERE/files/settings_hooks.py" remove "$SETTINGS") ok "settings.json: убраны хуки ${removed} (копия — в $BACKUP_DIR)" fi rm -f "$HOME/.claude/hooks/agents_panel_hook.sh" && ok "хук удалён" if [ "${1:-}" = "--purge" ]; then rm -rf "$HOME/.config/claude-agents" "$HOME/.cache/claude-agents" "$HOME/Library/Logs/claude-agents" ok "настройки и логи удалены" else echo " Настройки (~/.config/claude-agents) и логи (~/.cache/claude-agents, ~/Library/Logs/claude-agents) оставлены; --purge удалит и их." fi echo "Панель «Claude» исчезнет из меню Toolbelt после перезапуска iTerm2."