Files
reporting-governance-plugin/scripts/install_long_task_watchdog_cron.sh

32 lines
2.2 KiB
Bash
Executable File

#!/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" <<EOF
*/10 * * * * cd "$ROOT_DIR" && /usr/bin/env node "$ORCHESTRATOR" --write-state --state "$STATE_FILE" --evidence-dir "$WATCHDOG_EVIDENCE_DIR" --event-dir "$WATCHDOG_EVENT_DIR" --queue-dir "$WATCHDOG_QUEUE_DIR" --spool-dir "$WATCHDOG_SPOOL_DIR" --receipt-dir "$WATCHDOG_RECEIPT_DIR" --watchdog-script "$PACKAGE_WATCHDOG_SCRIPT" --dispatcher-script "$PACKAGE_DISPATCHER_SCRIPT" --supervisor-script "$PACKAGE_SUPERVISOR_SCRIPT" --sender-command "/usr/bin/env node \"$PACKAGE_SENDER_BINDING_SCRIPT\" --queue-item \"__QUEUE_ITEM_PATH__\"" --dry-run >> "$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 <shell>.\n'