# Fulloch runtime dependencies — fully pinned for reproducible installs.
#
# Direct deps are pinned to exact versions (the 11 formerly-floating entries
# were pinned to the known-good versions running on the dev box). A fresh
# `docker compose build` now resolves the same direct-dep set every time
# instead of drifting to whatever was latest at build time.
#
# NOTE: this is a *direct*-dependency lock. A full transitive lockfile isn't
# generated here because the GPU stack can't be PyPI-locked cleanly — torch is
# pulled transitively as a CUDA build, and qwen-tts / flash-attn install from
# git with special flags (below), neither of which pip-compile/pip-freeze can
# model without breaking the CUDA build. To capture a transitive snapshot, run
# `pip freeze` inside the built image (see README).

# Core dependencies
numpy==2.2.6
setuptools==80.9.0
word2number==1.1

# Calculator / date-resolver / unit-conversion tool (all local, no network)
simpleeval==1.0.7
pint==0.25.3
python-dateutil==2.9.0.post0
Babel==2.17.0                # CLDR territory, currency, and timezone metadata for locale defaults

# Dashboard (text chat UI) + setup wizard / settings console
fastapi==0.128.0
uvicorn==0.38.0
websockets==15.0.1
beautifulsoup4==4.14.2
python-dotenv==1.2.1
ruamel.yaml==0.18.16          # comment-preserving config.yml round-trip (config_store)
huggingface_hub==0.36.2       # in-container model download manager (downloader)
openai==2.16.0                # advanced OpenAI-compatible remote LLM backend (llm_openai)
httpx==0.28.1                 # split connect/read timeouts for the remote LLM
cryptography==46.0.3          # self-signed dashboard HTTPS cert on first launch (tls_certs)
spotipy==2.25.1                # direct Spotify Web API (tools/spotify.py, optional `spotify:` block)
arxiv==2.2.0                   # paper metadata search (tools/research.py, optional `research:` block)
airportsdata==20260803         # IATA airport timezone metadata for travel schedule evaluation

# Audio processing
soundfile==0.13.1
silero-vad==5.1.2

# AI and ML
transformers==4.57.6
accelerate==1.12.0
onnxruntime==1.23.2
openwakeword==0.6.0       # optional experimental idle wakeword gate
onnx==1.22.0                # FP16→FP32 patching for qwen3-tts-onnx CPU backend
qwen-asr==0.0.6
sentence-transformers==5.1.2
# Tiny tier (CPU-friendly backends): Moonshine ASR rides on transformers
# above; Kokoro TTS needs its own package (+ espeak-ng system dep for G2P).
misaki[en]==0.9.4   # G2P for the Kokoro ONNX TTS backend (pulls spacy en_core_web_sm)
librosa==0.11.0   # Qwen3-ASR ONNX backend (asr.backend: qwen-onnx) mel features
sentencepiece==0.2.1  # Pocket TTS ONNX tokenizer
scipy==1.15.3         # Pocket TTS WAV reference resampling
pocket-tts==2.1.0     # official Kyutai Pocket TTS PyTorch streaming backend

# These packages require special install flags - see Dockerfile
# qwen-tts: pip install --no-deps git+https://github.com/liampetti/Qwen3-TTS-streaming.git@97da215
#   (mirror of rekuenkdr/Qwen3-TTS-streaming@97da215, pinned under this org so a
#    deleted upstream fork can't brick fresh installs / rebuilds)
# flash-attn: pip install --no-build-isolation --no-deps git+https://github.com/Dao-AILab/flash-attention.git@ef9e6a6
