#!/bin/bash
# Smart suggestion for next action
# Usage: ./workflow/continue

WORKTREE_BASE="worktrees"

# Refresh symlinks first
"$(dirname "$0")/refresh" > /dev/null

echo "=== WORKFLOW CONTINUE ==="
echo ""

# Check for blocked worktrees first
BLOCKED_LIST=()
UNBLOCKED_LIST=()

for dated_dir in "$WORKTREE_BASE"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]; do
    [[ -d "$dated_dir" ]] || continue
    for worktree in "$dated_dir"/*/; do
        [[ -d "$worktree" ]] || continue
        NAME=$(basename "$worktree")

        if [[ -f "$worktree/STATUS.md" ]]; then
            BLOCKED=$(grep "^blocked:" "$worktree/STATUS.md" 2>/dev/null | cut -d: -f2 | tr -d ' ')
            if [[ "$BLOCKED" == "true" ]]; then
                REASON=$(grep "^blocker_reason:" "$worktree/STATUS.md" 2>/dev/null | cut -d: -f2-)
                BLOCKED_LIST+=("$NAME|$REASON|$worktree")
            else
                # Get last modified time
                MTIME=$(stat -c %Y "$worktree/STATUS.md" 2>/dev/null || stat -f %m "$worktree/STATUS.md" 2>/dev/null || echo 0)
                PHASE=$(grep "^phase:" "$worktree/STATUS.md" 2>/dev/null | cut -d: -f2 | tr -d ' ')
                UNBLOCKED_LIST+=("$MTIME|$NAME|$PHASE|$worktree")
            fi
        fi
    done
done

# Sort unblocked by most recent first
IFS=$'\n' SORTED_UNBLOCKED=($(sort -t'|' -k1 -nr <<< "${UNBLOCKED_LIST[*]}"))
unset IFS

# Check blockers that might be resolvable
if [[ ${#BLOCKED_LIST[@]} -gt 0 ]]; then
    echo "BLOCKED WORK (check if any can be unblocked):"
    echo ""
    for item in "${BLOCKED_LIST[@]}"; do
        NAME=$(echo "$item" | cut -d'|' -f1)
        REASON=$(echo "$item" | cut -d'|' -f2)
        echo "  ❌ $NAME"
        echo "     Reason:$REASON"
        echo "     Unblock: ./workflow/unblock $NAME"
        echo ""
    done
fi

# Show recommendation
if [[ ${#SORTED_UNBLOCKED[@]} -gt 0 ]]; then
    # Get most recent unblocked
    BEST=$(echo "${SORTED_UNBLOCKED[0]}")
    BEST_NAME=$(echo "$BEST" | cut -d'|' -f2)
    BEST_PHASE=$(echo "$BEST" | cut -d'|' -f3)
    BEST_PATH=$(echo "$BEST" | cut -d'|' -f4)

    echo "RECOMMENDED: Continue with '$BEST_NAME' (phase: $BEST_PHASE)"
    echo ""
    echo "Commands:"
    echo "  cd $BEST_PATH"
    echo "  cat HANDOFF.md"
    echo ""

    # Show HANDOFF.md preview if it exists
    if [[ -f "${BEST_PATH}HANDOFF.md" ]]; then
        echo "--- HANDOFF.md Preview ---"
        # Show Goal and Next Steps sections
        awk '/^## Goal/,/^## [^G]/' "${BEST_PATH}HANDOFF.md" | head -10
        echo "..."
        awk '/^## Next Steps/,/^## |^$/' "${BEST_PATH}HANDOFF.md" | head -10
        echo "---"
    fi

    # Show other options if any
    if [[ ${#SORTED_UNBLOCKED[@]} -gt 1 ]]; then
        echo ""
        echo "Other active work:"
        for i in "${!SORTED_UNBLOCKED[@]}"; do
            [[ $i -eq 0 ]] && continue
            ITEM="${SORTED_UNBLOCKED[$i]}"
            NAME=$(echo "$ITEM" | cut -d'|' -f2)
            PHASE=$(echo "$ITEM" | cut -d'|' -f3)
            echo "  - $NAME (phase: $PHASE)"
        done
    fi
else
    # No active work
    echo "NO ACTIVE WORK"
    echo ""

    # Check project/STATUS.md for suggestions
    if [[ -f "project/STATUS.md" ]]; then
        echo "Project status:"
        PHASE=$(grep -m1 "^\*\*Phase\*\*:" "project/STATUS.md" 2>/dev/null | sed 's/\*\*Phase\*\*: //')
        if [[ -n "$PHASE" ]]; then
            echo "  Phase: $PHASE"
        fi
        echo ""
    fi

    echo "Start new work:"
    echo "  ./workflow/start <name> '<purpose>'"
    echo ""
    echo "Examples:"
    echo "  ./workflow/start fix-auth-bug 'Fix OAuth token refresh'"
    echo "  ./workflow/start feature-dashboard 'Add analytics dashboard'"
fi
