# Sanad Package 3 — Recognition + Places + Memories — self-contained deps.
# Comms + mask (like P2) + camera vision (opencv). Recognition is Gemini-side
# (in-context primers) — NO local ML / torch / face-embeddings.

# Web dashboard
fastapi
uvicorn[standard]
pydantic
python-multipart
websockets

# IPC bus shim + offline license verification
pyzmq
cryptography

# Numerics + image
numpy
Pillow

# Gemini Live voice + audio I/O
google-genai>=1.0.0
pyaudio
soundfile
requests

# Camera vision — JPEG-encode + USB (/dev/video*) capture. Headless (no GUI/libGL).
#   pyrealsense2 is deliberately OMITTED (PyPI wheel's newer glibc ImportErrors on
#   slim-bookworm); camera.py probes pyrealsense2 then falls back to cv2 V4L capture,
#   so a USB colour camera works via opencv alone. Add pyrealsense2 (built from
#   source) only if RealSense-specific depth is required.
opencv-python-headless

# Mask (BLE LED "Shining Mask") — expressions on recognition.
bleak==0.22.3
