#!/bin/bash
# Product Owner Decision Parser - Robust pattern matching with fallbacks

set -euo pipefail

# Parse arguments
OUTPUT=""

while [[ $# -gt 0 ]]; do
  case $1 in
    --output)
      OUTPUT="$2"
      shift 2
      ;;
    *)
      echo "Unknown option: $1" >&2
      exit 1
      ;;
  esac
done

if [ -z "$OUTPUT" ]; then
  echo "ERROR: --output required" >&2
  exit 1
fi

# Pattern 1: Labeled decision (most explicit)
# Example: "Decision: PROCEED"
DECISION=$(echo "$OUTPUT" | grep -oiE "Decision:\s*(PROCEED|ITERATE|ABORT)" | \
  grep -oE "(PROCEED|ITERATE|ABORT)" | head -1)

if [ -n "$DECISION" ]; then
  echo "$DECISION"
  exit 0
fi

# Pattern 2: Standalone keyword (first occurrence)
# Example: "I recommend we PROCEED with..."
DECISION=$(echo "$OUTPUT" | grep -oE "(PROCEED|ITERATE|ABORT)" | head -1)

if [ -n "$DECISION" ]; then
  echo "$DECISION"
  exit 0
fi

# Pattern 3: Case-insensitive fallback
# Example: "proceed with deployment"
DECISION=$(echo "$OUTPUT" | grep -oiE "(proceed|iterate|abort)" | head -1 | tr '[:lower:]' '[:upper:]')

if [ -n "$DECISION" ]; then
  echo "$DECISION"
  exit 0
fi

# Pattern 4: JSON format fallback
# Example: {"decision": "PROCEED"}
DECISION=$(echo "$OUTPUT" | jq -r '.decision // empty' 2>/dev/null | grep -oE "(PROCEED|ITERATE|ABORT)" | head -1)

if [ -n "$DECISION" ]; then
  echo "$DECISION"
  exit 0
fi

# No decision found - return empty (caller handles fallback to ABORT)
echo ""
exit 0
