.PHONY: eval-copilot eval-copilot-case eval-copilot-skill-only eval-copilot-mini eval-copilot-mini-case eval-copilot-mini-skill-only eval-claude eval-claude-case eval-claude-skill-only eval-haiku eval-haiku-case eval-haiku-skill-only install fmt lint clean clean-workspace

SKILL_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
RUNNER    := $(SKILL_DIR)evals/runner

# Sync dependencies with uv (creates .venv inside evals/runner/)
install:
	cd $(RUNNER) && uv sync --group dev

# Copilot (GitHub Models) — gpt-4.1, full eval
eval-copilot: install
	cd $(RUNNER) && uv run python copilot_runner.py $(ARGS)

# Run a single case: make eval-copilot-case CASE=enforced-access-rules
eval-copilot-case: install
	cd $(RUNNER) && uv run python copilot_runner.py --case $(CASE) $(ARGS)

# Run only with-skill (skip baseline, faster)
eval-copilot-skill-only: install
	cd $(RUNNER) && uv run python copilot_runner.py --no-baseline $(ARGS)

# Copilot mini (GitHub Models) — gpt-4.1-mini, cheaper/faster for iteration
COPILOT_MINI_MODEL ?= openai/gpt-4.1-mini

eval-copilot-mini: install
	cd $(RUNNER) && EVAL_MODEL=$(COPILOT_MINI_MODEL) uv run python copilot_runner.py $(ARGS)

eval-copilot-mini-case: install
	cd $(RUNNER) && EVAL_MODEL=$(COPILOT_MINI_MODEL) uv run python copilot_runner.py --case $(CASE) $(ARGS)

eval-copilot-mini-skill-only: install
	cd $(RUNNER) && EVAL_MODEL=$(COPILOT_MINI_MODEL) uv run python copilot_runner.py --no-baseline $(ARGS)

# Claude (Sonnet) — full eval (require ANTHROPIC_API_KEY)
eval-claude: install
	cd $(RUNNER) && uv run python claude_runner.py $(ARGS)

eval-claude-case: install
	cd $(RUNNER) && uv run python claude_runner.py --case $(CASE) $(ARGS)

eval-claude-skill-only: install
	cd $(RUNNER) && uv run python claude_runner.py --no-baseline $(ARGS)

# Claude Haiku — ~4x cheaper than Sonnet, good for fast iteration
HAIKU_MODEL ?= claude-haiku-4-5-20251001

eval-haiku: install
	cd $(RUNNER) && EVAL_MODEL=$(HAIKU_MODEL) uv run python claude_runner.py $(ARGS)

eval-haiku-case: install
	cd $(RUNNER) && EVAL_MODEL=$(HAIKU_MODEL) uv run python claude_runner.py --case $(CASE) $(ARGS)

eval-haiku-skill-only: install
	cd $(RUNNER) && EVAL_MODEL=$(HAIKU_MODEL) uv run python claude_runner.py --no-baseline $(ARGS)

# Format runner source with ruff
fmt: install
	cd $(RUNNER) && uv run ruff check . --fix
	cd $(RUNNER) && uv run ruff format .

# Lint runner source with ruff (no autofix)
lint: install
	cd $(RUNNER) && uv run ruff check .
	cd $(RUNNER) && uv run ruff format . --check

clean:
	rm -rf $(RUNNER)/.venv $(RUNNER)/uv.lock

clean-workspace:
	rm -rf $(SKILL_DIR)evals/workspace
