# ── Core (required) — the FastAPI app + full ingest/query pipeline ───────────
fastapi==0.115.0
uvicorn[standard]==0.32.0
pydantic==2.9.2
pydantic-settings==2.6.0
httpx==0.27.2
python-multipart==0.0.12
PyYAML==6.0.2
numpy==1.26.4

# Retrieval
rank-bm25==0.2.2
chromadb==0.5.15          # dense vectors; falls back to an in-process numpy index if it fails to load
flashrank==0.2.9          # cross-encoder rerank; falls back to RRF-order passthrough if absent

# Knowledge graph
networkx==3.3
thefuzz==0.22.1
python-Levenshtein==0.25.1

# Document loaders (all formats listed in the README work out of the box)
pypdf==5.0.1              # PDF text
pdfplumber==0.11.4        # better PDF text + real table extraction (falls back to pypdf if absent)
python-docx==1.1.2        # DOCX
python-pptx==1.0.2        # PPTX
openpyxl==3.1.5           # XLSX / XLSM
beautifulsoup4==4.12.3    # HTML

# Scheduling
APScheduler>=3.10         # background upkeep jobs; the app runs without it (jobs just don't fire)

# ── Optional — features that need a SYSTEM binary or a separate entry point ───
# Uncomment as needed; the app degrades gracefully when these are absent.
#
# OCR of scanned PDFs (INGEST_OCR=true) — also requires the Tesseract binary
# (https://github.com/tesseract-ocr/tesseract) and Poppler on PATH:
# pytesseract==0.3.13
# pdf2image==1.17.0
# Pillow==10.4.0
#
# Agent-facing MCP server (`python -m src.mcp_server`, separate from the FastAPI app):
# mcp>=1.0.0
