# UI
PyQt6>=6.6

# Audio capture (needs system PortAudio: `brew install portaudio`)
sounddevice>=0.4.6
numpy>=1.26
soxr>=0.3.7            # high-quality resampling (optional, has a numpy fallback)

# Local transcription engine
faster-whisper>=1.0.0
# Apple-Silicon GPU transcription (Metal via MLX) — macOS arm64 only
mlx-whisper>=0.4; sys_platform == "darwin" and platform_machine == "arm64"

# Cloud transcription engine
openai>=1.30

# On-device speaker diarization (Speaker 1/2/… labels). Resemblyzer works out of
# the box (bundled model, no token). pyannote.audio is an alternative (needs a
# HuggingFace token). Cloud STT APIs don't return speaker labels.
resemblyzer>=0.1.1
# pyannote.audio>=3.1   # alternative backend (gated model, needs HF token)

# Pydantic AI agent for structured meeting notes (provider-agnostic:
# Claude / OpenAI / OpenRouter / open-source OpenAI-compatible servers)
pydantic-ai-slim[anthropic,openai]>=2.0

# Knowledge-graph storage + RDF export (JSON-LD / Turtle / N-Quads, SPARQL)
pyoxigraph>=0.4

# Optional: mirror meetings to an external relational database (PostgreSQL,
# MySQL, …). Needs a DB driver too, e.g. psycopg2-binary (PostgreSQL) or
# pymysql (MySQL). Graph-database (SPARQL) export uses the stdlib `urllib`.
SQLAlchemy>=2.0
# Optional: use MongoDB (Atlas or self-hosted) instead of/alongside SQL.
pymongo>=4.0

# Optional: deliver summaries to an MCP server (Model Context Protocol).
# REST/webhook delivery and email use the stdlib (urllib / smtplib).
mcp>=1.0; python_version >= "3.10"

# Local storage uses the stdlib `sqlite3` — no extra dependency.
# Key-term -> Wikipedia/Wikidata linking uses the stdlib `urllib` — no extra dependency.
