# LLM Agent Service dependencies
fastapi==0.115.12
uvicorn>=0.31.1
pydantic>=2.5.0,<3.0.0
pydantic-core>=2.14.0,<3.0.0
python-multipart>=0.0.6
httpx==0.28.1
anthropic==0.74.1
websockets==15.0.1  # aligned with cli (>=14): SDK client uses the asyncio-API additional_headers kwarg (new in 14.0). Server (uvicorn>=0.31.1) is compatible; validated by tests/integration + test_protocol.py WS tests.
python-dotenv>=1.0.0
anyio>=3.7.1

# PDF & document processing
PyMuPDF>=1.23.0
pdfplumber>=0.9.0,<1.0.0
python-docx>=0.8.11,<2.0.0

# Dataset schema extraction (parquet footer metadata, Excel sheets) — schema-only,
# no raw data is read. Without these, .parquet/.xlsx files silently fail to index.
pyarrow>=14.0.0
openpyxl>=3.1.0,<4.0.0

# Vector database and embeddings
qdrant-client>=1.7.0
numpy>=1.24.0,<2.0.0

# MCP server
mcp[cli]>=1.20.0,<2.0.0

# Daemon-owned auth (services/rao/auth.py: DaemonAuth). Mirrors
# services/rao/requirements.txt — kept here so CI's root install imports cleanly.
supabase>=2.31,<3

# HTML parsing (skill generator web fetcher)
beautifulsoup4>=4.12.0

# Utilities
pyyaml>=6.0.0,<7.0.0
requests>=2.31.0,<3.0.0
rich>=13.0.0

# Feature flags / analytics.
posthog>=3.0.0,<4.0.0

# NOTE: dense/hybrid retrieval deps (sentence-transformers + torch) live in
# requirements-dense.txt, installed best-effort so a torch failure can't block
# backend provisioning. Runtime auto-degrades to BM25 when they're missing.

# Testing
pytest>=9.0.0
pytest-asyncio>=1.0.0
