[project]
name = "legal-mcp"
version = "0.1.0"
description = "MCP server for AI-assisted legal decision drafting"
requires-python = ">=3.10"
dependencies = [
    "mcp[cli]>=1.0.0",
    "asyncpg>=0.29.0",
    "pgvector>=0.3.0",
    "voyageai>=0.3.0",
    "python-dotenv>=1.0.0",
    "pydantic>=2.0.0",
    "pymupdf>=1.25.0",
    "python-docx>=1.1.0",
    "striprtf>=0.0.26",
    "redis>=5.0.0",
    "rq>=1.16.0",
    "pillow>=10.0.0",
    "google-cloud-vision>=3.7.0",
    "fastapi>=0.115.0",
    "uvicorn[standard]>=0.30.0",
    "httpx>=0.27.0",
    "infisicalsdk>=1.0.0",
    "aioboto3>=13.0.0",    # X14 object storage (MinIO/S3) — services/storage.py
]

[project.optional-dependencies]
# Tier-1 court-verdict fetch (X13) — host-only. The container can't run a
# browser, so these are NOT in the base deps; install on the host venv with
# `pip install -e ".[court-fetch]" && python -m camoufox fetch`. faster-whisper
# is only for the explicit-PDF-download reCAPTCHA fallback (the primary
# image-API path needs no solving).
court-fetch = [
    "camoufox>=0.4.11",
    "faster-whisper>=1.0.0",
    "h2>=4.0.0",          # Tier-0 supremedecisions uses httpx http2
]
# Durable execution for the local one-shot pipelines (X16 / INV-DUR1) —
# final_halacha_pipeline / final_learning_pipeline gain crash/OOM resume via
# scripts/_pipeline_runtime.py. HOST-ONLY (the pipelines run locally, not in the
# container): install on the host venv with `pip install -e ".[durable]"`. The
# runtime degrades gracefully to linear execution when these are absent, so the
# run-halacha / run-learning buttons keep working until then.
durable = [
    "langgraph>=1.0,<2.0",
    "langgraph-checkpoint-sqlite>=3.0",
]

[build-system]
requires = ["setuptools>=68.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
where = ["src"]
