#!/usr/bin/env bash
set -euo pipefail

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
repo_root="$(cd "$script_dir/../../.." && pwd)"

event_class=""
title=""
message=""
next=""
details=""
dry_run=false

usage() {
  cat <<'EOF'
Usage:
  ai/tools/operator-notifications/send-event.sh --class <event-class> --title <text> [options]

Options:
  --message <text>
  --next <text>
  --details <text>
  --dry-run

Renders operator events from ai/governance/registries/runtime-event-semantics.yaml.
Non-actionable notes never request freeform input.
EOF
}

while (($# > 0)); do
  case "$1" in
    --class) event_class="${2:?}"; shift 2 ;;
    --title) title="${2:?}"; shift 2 ;;
    --message) message="${2:?}"; shift 2 ;;
    --next) next="${2:?}"; shift 2 ;;
    --details) details="${2:?}"; shift 2 ;;
    --dry-run) dry_run=true; shift ;;
    -h | --help) usage; exit 0 ;;
    *) echo "send operator event error: unknown argument: $1" >&2; exit 2 ;;
  esac
done

rendered="$("$script_dir/render-event.mjs" --class "$event_class" --title "$title" --message "$message" --next "$next" --details "$details")"
[[ -n "$rendered" ]] || {
  printf 'SUPPRESSED\n'
  exit 0
}

if [[ "$dry_run" == "true" ]]; then
  printf '%s\n' "$rendered"
else
  node "$repo_root/ai/tools/telegram/send-message.mjs" "$rendered"
fi
