# ─────────────────────────────────────────────────────────────────
# Carely — Python dependencies
# Installed automatically by the launcher on first run. You don't need
# to run this yourself.  (Manual install:  pip install -r requirements.txt)
# ─────────────────────────────────────────────────────────────────

# ── Voice: OpenAI (TTS) + Groq (STT) ─────────────────────────────
openai>=1.30.0
groq>=0.9.0

# ── Google Sheets (read/write via the cloud broker) ──────────────
gspread>=6.1.0
google-auth>=2.29.0
google-auth-oauthlib>=1.2.0

# ── Cross-platform audio (mic capture + playback) ─────────────────
# Wraps PortAudio — works on Linux, Windows, macOS.
#   Linux:   sudo apt install portaudio19-dev   (launcher does this)
#   Windows: PortAudio is bundled with the wheel
#   macOS:   brew install portaudio
sounddevice>=0.4.6
numpy>=1.24.0
scipy>=1.11.0

# ── Web UI server (the app's interface) ──────────────────────────
aiohttp>=3.9.0
jsonschema>=4.20.0

# ── Native desktop window ─────────────────────────────────────────
pywebview>=4.4.1
# Linux also needs system packages (not pip — the launcher installs these):
#   sudo apt install python3-gi python3-gi-cairo gir1.2-webkit2-4.1

# ── Icon generation (Desktop shortcut) ───────────────────────────
Pillow>=10.0.0

# ── Native Arabic TTS (free, no key; needs internet) ─────────────
edge-tts>=6.1.0
miniaudio>=1.59

# ── BLE interactive button (ESP32 named "Carely") ────────────────
# Linux also needs system BlueZ:  sudo apt install bluez
bleak>=0.21.0

# ── Media-key trigger (earphone play/pause acts as the Carely button) ──
# Bluetooth (AVRCP) and USB headset buttons arrive as the system media key.
pynput>=1.7.6

# ── Wake word ("Malak") + emergency keyword spotter (local, offline, zero-token) ──
# openWakeWord runs a small ONNX model on the mic to detect the companion's name.
# Pulls onnxruntime. Without it, both spotters degrade to disabled (button still works).
openwakeword>=0.6.0
