#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" if ! command -v jq >/dev/null 2>&1; then echo "[install-copilot-auth-watchdog] jq is required" >&2 exit 1 fi LABEL="ai.openclaw.copilot-auth-watchdog" PLIST_PATH="$HOME/Library/LaunchAgents/$LABEL.plist" STAGE_DIR="${MODEL_GUARD_STAGE_DIR:-$HOME/Library/Application Support/openclaw-copilot-guard}" STAGE_SCRIPTS_DIR="$STAGE_DIR/scripts" STAGE_CONFIG="$STAGE_DIR/copilot-auth-watchdog.config.json" AUTH_WATCHDOG_CONFIG="${AUTH_WATCHDOG_CONFIG:-$STAGE_CONFIG}" INTERVAL_SECONDS="${INTERVAL_SECONDS:-300}" mkdir -p "$STAGE_SCRIPTS_DIR" cp "$ROOT_DIR/scripts/copilot_auth_watchdog.sh" "$STAGE_SCRIPTS_DIR/copilot_auth_watchdog.sh" jq \ --arg state "$STAGE_DIR/copilot-auth-watchdog-state.json" \ '.stateFile=$state' \ "$ROOT_DIR/config/copilot-auth-watchdog.config.json" > "$STAGE_CONFIG" chmod +x "$STAGE_SCRIPTS_DIR/copilot_auth_watchdog.sh" cat > "$PLIST_PATH" < Label $LABEL ProgramArguments /bin/bash $STAGE_SCRIPTS_DIR/copilot_auth_watchdog.sh EnvironmentVariables PATH /opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin AUTH_WATCHDOG_CONFIG $AUTH_WATCHDOG_CONFIG RunAtLoad StartInterval $INTERVAL_SECONDS StandardOutPath /tmp/openclaw-copilot-auth-watchdog.log StandardErrorPath /tmp/openclaw-copilot-auth-watchdog.err.log PLIST launchctl bootout "gui/$(id -u)/$LABEL" 2>/dev/null || true launchctl bootstrap "gui/$(id -u)" "$PLIST_PATH" launchctl kickstart -k "gui/$(id -u)/$LABEL" cat <