# The runtime dependencies; pyproject.toml reads this file. Full-line comments only.
fastapi>=0.128,<1
# A floor here keeps the resolver off the pydantic 1.x line.
pydantic>=2.9,<3
uvicorn>=0.34,<1
python-dotenv>=1.0,<2
httpx>=0.27,<1
# Direct, not transitive: ingestion.py's SSRF guard imports httpcore._backends.auto.
httpcore>=1.0,<2
# Decodes the first frame of a GIF for vision endpoints that reject GIFs.
Pillow>=10.4,<13
# The no-key web search backend (DuckDuckGo).
ddgs>=9,<10
# Discord's and QQ's gateways for the platforms personagent connects itself.
websockets>=13,<16
# Draws the WeChat login QR code for the local page (with Pillow, above).
qrcode>=7.4,<9
# Unseals the bot secret QQ's scan-to-bind flow returns (AES-GCM).
cryptography>=44,<52
