#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" CRON_FILE="$ROOT_DIR/state/cron/long-task-watchdog.cron" LOG_DIR="$ROOT_DIR/state/long-task-watchdog" ORCHESTRATOR="$ROOT_DIR/plugins/reporting-governance/scripts/watchdog_auto_notify_orchestrator.mjs" STATE_FILE="$ROOT_DIR/memory/watchdog-state.json" WATCHDOG_EVIDENCE_DIR="$ROOT_DIR/state/long-task-watchdog" WATCHDOG_EVENT_DIR="$ROOT_DIR/state/long-task-watchdog-events" WATCHDOG_QUEUE_DIR="$ROOT_DIR/state/operator-notify-queue" WATCHDOG_SPOOL_DIR="$ROOT_DIR/state/operator-notify-dispatch-spool" WATCHDOG_RECEIPT_DIR="$ROOT_DIR/state/operator-notify-bridge-receipts" PACKAGE_WATCHDOG_SCRIPT="$ROOT_DIR/plugins/reporting-governance/scripts/long_task_watchdog.mjs" PACKAGE_DISPATCHER_SCRIPT="$ROOT_DIR/plugins/reporting-governance/scripts/operator_notify_dispatcher.mjs" PACKAGE_SUPERVISOR_SCRIPT="$ROOT_DIR/plugins/reporting-governance/scripts/operator_notify_bridge_supervisor.mjs" PACKAGE_SENDER_BINDING_SCRIPT="$ROOT_DIR/plugins/reporting-governance/scripts/operator_notify_sender_binding.mjs" mkdir -p "$(dirname "$CRON_FILE")" "$LOG_DIR" cat >"$CRON_FILE" <> "$LOG_DIR/cron.log" 2>&1 EOF printf 'Wrote cron snippet: %s\n' "$CRON_FILE" printf 'Default mode is dry-run orchestration: runner -> dispatcher -> bridge, without pretending message.send was delivered.\n' printf 'To install for current user, run:\n' printf ' (crontab -l 2>/dev/null; cat "%s") | crontab -\n' "$CRON_FILE" printf '\nTo enable real delivery after you have a trusted sender binding, replace --dry-run with either:\n' printf ' --sender-mode openclaw-cli\n' printf 'or an explicit --sender-command .\n'