# ── Web framework ─────────────────────────────────────────────────────────────
# fastapi 0.115+ pulls starlette >=0.41; we need >=0.49.1 (sse-starlette 3.x).
# Using a floor rather than an exact pin so dependabot can bump minor releases.
fastapi>=0.115.0
uvicorn[standard]>=0.31.1       # mcp 1.26 requires >=0.31.1
starlette>=0.49.1               # sse-starlette 3.x requires >=0.49.1

# ── Validation ────────────────────────────────────────────────────────────────
# pydantic 2.11+ required by mcp 1.26 and crawl4ai 0.8.
pydantic>=2.11.0
pydantic[email]>=2.11.0         # EmailStr validation for /auth/register

# ── Database ──────────────────────────────────────────────────────────────────
sqlalchemy[asyncio]>=2.0.30
asyncpg>=0.29.0                 # Postgres async driver (production)
aiosqlite>=0.20.0               # SQLite async driver (test suite in-memory DB)
alembic>=1.13.0                 # Schema migrations — replaces create_all() in production

# ── Local dev ────────────────────────────────────────────────────────────────
python-dotenv>=1.0.0            # loads .env automatically when running python main.py locally

# ── Auth ──────────────────────────────────────────────────────────────────────
python-jose[cryptography]==3.3.0
bcrypt>=4.0.0                  # replaces passlib (abandoned, incompatible with bcrypt 4.x)
email-validator>=2.1.1
redis[asyncio]>=5.0.0          # JWT revocation blocklist (jti → Redis SETEX)

# ── Rate limiting ─────────────────────────────────────────────────────────────
slowapi>=0.1.9
limits>=3.13.0

# ── Agent runtimes ────────────────────────────────────────────────────────────
crewai>=1.0.0                   # 1.x dropped many 0.x breaking changes
langgraph>=0.2.0
langchain-openai>=0.1.0         # LangGraph generated code: ChatOpenAI
langchain-core>=0.2.0           # LangGraph generated code: messages, tools
langchain-community>=0.2.0      # LangGraph generated code: community integrations
semantic-kernel>=1.0.0          # MAF v1.0 GA (Apr 2026) — merger of SK + AutoGen
opentelemetry-exporter-otlp>=1.24.0  # MAF generated code: OTLPSpanExporter (telemetry.enabled)

# ── Observability ─────────────────────────────────────────────────────────────
langfuse>=4.0.0
openinference-instrumentation-crewai>=0.1.0
opentelemetry-api>=1.24.0
opentelemetry-sdk>=1.24.0
httpx>=0.27.0                  # HTTP client for Langfuse API proxy (eval_api, prompts_api)
