.PHONY: test test-safety test-all lint format tdd ci serve mcp-setup mcp-setup-codex mcp-setup-claude claude-review claude-review-commit claude-consult

# Fast TDD loop: format + unit tests (fail fast)
tdd:
	uv run ruff check --fix src/ tests/
	uv run pytest tests/unit/ -x --maxfail=1 -q

# Unit tests only
test:
	uv run pytest tests/unit/ -v

# Safety/adversarial tests only
test-safety:
	uv run pytest tests/unit/test_safety_*.py tests/unit/test_email_refs.py -v

# All tests with coverage
test-all:
	uv run pytest tests/ -v --cov=ms365_toolkit --cov-report=term-missing

# Lint: ruff check + mypy strict
lint:
	uv run ruff check src/ tests/
	uv run mypy src/ms365_toolkit/

# Format: ruff format + fix
format:
	uv run ruff format src/ tests/
	uv run ruff check --fix src/ tests/

# Full CI pipeline
ci: lint test-all

# Run MCP server (stdio)
serve:
	uv run --extra mcp ms365-toolkit-mcp

mcp-setup:
	./scripts/setup_mcp.sh

mcp-setup-codex:
	./scripts/setup_mcp.sh --target codex

mcp-setup-claude:
	./scripts/setup_mcp.sh --target claude

claude-review:
	./scripts/claude_workflow.sh review

claude-review-commit:
	@if [ -z "$(COMMIT)" ]; then echo "Usage: make claude-review-commit COMMIT=<sha-or-range>"; exit 1; fi
	./scripts/claude_workflow.sh review-commit "$(COMMIT)"

claude-consult:
	@if [ -z "$(PROMPT)" ]; then echo "Usage: make claude-consult PROMPT='your question'"; exit 1; fi
	./scripts/claude_workflow.sh consult "$(PROMPT)"
