#!/bin/bash
#
# SessionStart Hook: Load Grid state and provide context.
#
# Outputs state summary to stdout for Claude to consume.
# Uses $CLAUDE_PROJECT_DIR for paths.
#

# Get Grid directory
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
GRID_DIR="$PROJECT_DIR/.grid"
STATE_FILE="$GRID_DIR/STATE.md"
BUDGET_FILE="$GRID_DIR/budget.json"
CONFIG_FILE="$GRID_DIR/config.json"

# Helper: Extract YAML frontmatter value
get_yaml_value() {
    local file="$1"
    local key="$2"
    grep "^${key}:" "$file" 2>/dev/null | head -1 | sed "s/^${key}:[[:space:]]*//"
}

# Check if Grid is initialized
if [[ ! -d "$GRID_DIR" ]]; then
    echo "Grid not initialized in this project."
    exit 0
fi

# Check for active mission
if [[ -f "$STATE_FILE" ]]; then
    # Extract state from YAML frontmatter
    MISSION=$(get_yaml_value "$STATE_FILE" "mission")
    PHASE=$(get_yaml_value "$STATE_FILE" "phase")
    BLOCK=$(get_yaml_value "$STATE_FILE" "block")
    STATUS=$(get_yaml_value "$STATE_FILE" "status")

    if [[ -n "$MISSION" && "$STATUS" != "completed" && "$STATUS" != "aborted" ]]; then
        echo "=== GRID STATE RESTORED ==="
        echo ""
        echo "Active Mission: $MISSION"
        echo "Current Phase: $PHASE"
        echo "Current Block: $BLOCK"
        echo "Status: $STATUS"
        echo ""

        # Show recent progress if SCRATCHPAD exists
        SCRATCHPAD="$GRID_DIR/SCRATCHPAD.md"
        if [[ -f "$SCRATCHPAD" ]]; then
            echo "Recent Progress (last 10 entries):"
            tail -20 "$SCRATCHPAD" | grep "^\[" | tail -10
            echo ""
        fi

        # Show budget status if configured
        if [[ -f "$BUDGET_FILE" ]]; then
            BUDGET_LIMIT=$(grep '"budget_limit"' "$BUDGET_FILE" | head -1 | sed 's/.*:[[:space:]]*\([0-9.]*\).*/\1/')
            ESTIMATED_COST=$(grep '"estimated_cost"' "$BUDGET_FILE" | head -1 | sed 's/.*:[[:space:]]*\([0-9.]*\).*/\1/')

            if [[ -n "$BUDGET_LIMIT" && "$BUDGET_LIMIT" != "null" ]]; then
                echo "Budget: \$${ESTIMATED_COST:-0} / \$${BUDGET_LIMIT}"
                echo ""
            fi
        fi

        echo "Use '/grid:resume' to continue this mission."
        echo "=========================="
    fi
else
    echo "No active Grid mission."
fi

# Log session start
TIMESTAMP=$(date +"%Y-%m-%dT%H:%M:%S")
SCRATCHPAD="$GRID_DIR/SCRATCHPAD.md"

if [[ -f "$SCRATCHPAD" ]]; then
    echo "" >> "$SCRATCHPAD"
    echo "--- SESSION START: $TIMESTAMP ---" >> "$SCRATCHPAD"
fi

exit 0
