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

# DevFlow PreToolUse Hook — talks to hook-daemon via hook-client
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")"
CLIENT_JS="$PLUGIN_ROOT/dist/hooks/hook-client.js"
FALLBACK_JS="$PLUGIN_ROOT/dist/hooks/pre-tool-use.js"

if [ -f "$CLIENT_JS" ]; then
  "$DEVFLOW_NODE" "$CLIENT_JS" pre-tool-use || {
    echo '[devflow] hook-client failed, trying fallback' >&2
    if [ -f "$FALLBACK_JS" ]; then
      DEVFLOW_HOOK_DEGRADED=1 "$DEVFLOW_NODE" "$FALLBACK_JS" || echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","additionalContext":"WARNING: DevFlow is in degraded mode (daemon unreachable). Run devflow doctor for details."}}'
    else
      echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","additionalContext":"WARNING: DevFlow is in degraded mode (daemon unreachable). Run devflow doctor for details."}}'
    fi
  }
elif [ -f "$FALLBACK_JS" ]; then
  DEVFLOW_HOOK_DEGRADED=1 "$DEVFLOW_NODE" "$FALLBACK_JS" || echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","additionalContext":"WARNING: DevFlow is in degraded mode (daemon unavailable). Run devflow doctor for details."}}'
else
  echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","additionalContext":"WARNING: DevFlow is in degraded mode (daemon unavailable). Run devflow doctor for details."}}'
fi
