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

# DevFlow Stop Hook — graceful daemon shutdown + cleanup
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$SCRIPT_DIR/..}"
source "$SCRIPT_DIR/runtime-node"
DEVFLOW_NODE="$(devflow_resolve_node "$PLUGIN_ROOT")"

# 1. Use the daemon as the authoritative Stop handler.
CLIENT_JS="$PLUGIN_ROOT/dist/hooks/hook-client.js"
INPUT="$(cat)"
if [ -f "$CLIENT_JS" ]; then
  if "$DEVFLOW_NODE" "$CLIENT_JS" stop "$INPUT" </dev/null 2>/dev/null; then
    exit 0
  fi
fi

# 2. Run standalone fallback only when daemon delivery failed.
STOP_JS="$PLUGIN_ROOT/dist/hooks/stop.js"
if [ -f "$STOP_JS" ]; then
  printf '%s' "$INPUT" | DEVFLOW_HOOK_DEGRADED=1 "$DEVFLOW_NODE" "$STOP_JS" 2>/dev/null || true
fi

# 3. Clean up stale receipt files for this project
PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
SESSION_ID=$(echo -n "$PROJECT_ROOT" | shasum -a 256 2>/dev/null | cut -c1-16 || echo "")
RECEIPT_FILE="${TMPDIR:-/tmp}/.devflow-receipts/${SESSION_ID}.json"
rm -f "$RECEIPT_FILE" 2>/dev/null || true

exit 0
