#!/usr/bin/env bash set -euo pipefail INTERVAL_SECONDS="${INTERVAL_SECONDS:-30}" HEARTBEAT_EVERY_SECONDS="${HEARTBEAT_EVERY_SECONDS:-60}" ONCE="${1:-}" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" LOCAL_STATE_DIR="$REPO_ROOT/.sync-state" PUBLIC_STATE_DIR="$REPO_ROOT/sync-state" HEARTBEAT_FILE="$PUBLIC_STATE_DIR/heartbeat-vps.json" ERROR_FILE="$PUBLIC_STATE_DIR/error-vps.md" ALLOWED_PATHS=( "AGENT_BOARD.md" "README.md" "USER_STATUS.md" ".cursor/rules" "handoff" "evidence" "rollback" "tasks" "sync" "sync-state" "docs" "knowledge" "archive" ".gitattributes" ".gitignore" ) ensure_state_dir() { mkdir -p "$LOCAL_STATE_DIR" "$PUBLIC_STATE_DIR" } write_sync_error() { ensure_state_dir local message="$1" local timestamp timestamp="$(date '+%Y-%m-%d %H:%M:%S %z')" cat > "$ERROR_FILE" < "$HEARTBEAT_FILE" <&2 exit "$exit_code" fi if [[ "$ONCE" == "--once" ]]; then break fi sleep "$INTERVAL_SECONDS" done