#!/bin/bash
set -e

# Emdash Benchmark Runner
# Usage: ./bench [task-name]
# Example: ./bench regex-log
#          ./bench  (runs all tasks)

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

info() { echo -e "${GREEN}[✓]${NC} $1"; }
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
error() { echo -e "${RED}[✗]${NC} $1"; exit 1; }

# Load .env
if [ -f .env ]; then
    export $(grep -v '^#' .env | xargs)
    info "Loaded .env"
else
    warn "No .env file found - create one from .env.example"
fi

# Check Docker
if ! docker info > /dev/null 2>&1; then
    error "Docker not running. Start with: colima start"
fi
info "Docker running"

# Check/install Harbor
if ! command -v harbor &> /dev/null; then
    warn "Harbor not installed. Installing..."
    uv tool install harbor --python 3.12
fi
info "Harbor installed"

# Install emdash_core into Harbor's environment
HARBOR_PYTHON="$HOME/.local/share/uv/tools/harbor/bin/python3.12"
if [ -f "$HARBOR_PYTHON" ]; then
    if ! "$HARBOR_PYTHON" -c "import emdash_core" 2>/dev/null; then
        warn "Installing emdash_core into Harbor environment..."
        uv pip install -e "$SCRIPT_DIR/../packages/core" --python "$HARBOR_PYTHON"
    fi
    info "emdash_core available"
else
    warn "Harbor Python not found at $HARBOR_PYTHON"
fi

# Default settings
DATASET="${DATASET:-terminal-bench@2.0}"
MODEL="${MODEL:-accounts/fireworks/models/glm-4p7}"
PARALLEL="${PARALLEL:-4}"

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "  Emdash Benchmark"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "  Dataset:  $DATASET"
echo "  Model:    $MODEL"
echo "  Parallel: $PARALLEL"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

# Build task args
TASK_ARGS=""
for arg in "$@"; do
    TASK_ARGS="$TASK_ARGS -t $arg"
done

# Run benchmark
if [ -n "$TASK_ARGS" ]; then
    harbor run -d "$DATASET" --agent-import-path agents.emdash_coding:EmdashCodingAgent -m "$MODEL" -n "$PARALLEL" $TASK_ARGS
else
    harbor run -d "$DATASET" --agent-import-path agents.emdash_coding:EmdashCodingAgent -m "$MODEL" -n "$PARALLEL"
fi
