# Pinned deliberately: this container is the assistant's whole view of the
# outside world, and a surprise minor bump in an extraction library changes
# what the model reads.

fastapi==0.141.1
uvicorn[standard]==0.52.4
pydantic==2.13.5
httpx[http2]==0.28.1
redis==8.1.0

# TLS certificate parsing for inspect_tls.
cryptography==50.0.1

# HTML -> markdown. Top scorer in the Bevendorff et al. content-extraction
# benchmark, ~15MB installed, and it hands back metadata (title, date,
# sitename) in the same call, which is what the citation lines are built from.
trafilatura==2.2.0

# PDF text. pypdf is BSD-3, pure Python, zero runtime deps, and handles the
# digitally-generated datasheets that make up most of what gets fetched.
# pdfminer.six (MIT) is the fallback for multi-column pages where pypdf
# interleaves columns - the normal shape of a parameter table.
#
# PyMuPDF is deliberately absent. It is faster, but it is AGPL-3.0, and its
# section 13 network clause is a live problem here specifically: this serves
# an assistant that five other people reach over a network.
pypdf==6.18.0
pdfminer.six==20260107
