# 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