anthropic>=0.96
openai>=1.30
google-genai>=1.0
json-repair>=0.30
pydantic<3.0,>=2.9
pydantic-settings>=2.6
pyyaml>=6.0
structlog>=24.4
loguru>=0.7
keyring>=25.5
sounddevice>=0.5
scipy>=1.14
elevenlabs>=1.5
psutil>=6.1
pillow>=12.3.0
opentelemetry-api>=1.28
opentelemetry-sdk>=1.28
prometheus-client>=0.21
httpx>=0.27
ddgs==9.14.3
aiofiles>=24.1
aiolimiter>=1.1
tenacity>=9.0
mcp>=1.28.1
rich>=13.9
typer>=0.12
platformdirs>=4
click>=8.1
fastapi>=0.115
uvicorn>=0.32
websockets>=13
filelock>=3.16
packaging>=24.0
markdown>=3.5
num2words>=0.5.13
jinja2>=3.1
croniter>=6.0
gitpython>=3.1.51
tomlkit>=0.12
aiosqlite>=0.21
python-telegram-bot<23,>=22

[:(sys_platform != "darwin" or python_version < "3.14") and (sys_platform != "win32" or platform_machine != "ARM64")]
watchdog>=5.0

[:python_version < "3.14" and (sys_platform != "win32" or platform_machine != "ARM64")]
numpy<2.2,>=1.26

[:python_version >= "3.13"]
audioop-lts

[:python_version >= "3.14" or (sys_platform == "win32" and platform_machine == "ARM64")]
numpy<2.4,>=2.3.5

[:sys_platform != "darwin"]
onnxruntime>=1.17

[:sys_platform != "linux" and (sys_platform != "darwin" or (python_version < "3.14" and platform_machine == "arm64"))]
openwakeword>=0.6

[:sys_platform != "win32" or platform_machine != "ARM64"]
vosk<0.3.45,>=0.3.44

[:sys_platform == "darwin" and platform_machine == "x86_64"]
cryptography==48.0.1

[:sys_platform == "darwin" and python_version < "3.14" and platform_machine == "arm64"]
onnxruntime<1.24,>=1.17

[:sys_platform == "linux" and platform_machine == "x86_64" and python_version < "3.12"]
openwakeword>=0.6

[:sys_platform == "win32" and platform_machine == "ARM64"]
cryptography==46.0.3

[channels]
discord.py<3,>=2

[desktop]
pystray>=0.19
pywebview>=5.3
pyautogui>=0.9.54
mss>=10.0
tkinterdnd2==0.4.2

[desktop-macos]

[desktop-macos:sys_platform == "darwin"]
pyobjc-framework-Quartz>=10
pyobjc-framework-ApplicationServices>=10
pyobjc-framework-Accessibility>=10
pyobjc-framework-AVFoundation>=10
pyobjc-framework-ScreenCaptureKit>=10

[desktop:sys_platform != "linux" or platform_machine != "aarch64"]
pyside6-essentials>=6.7

[desktop:sys_platform != "win32"]
ptyprocess>=0.7

[desktop:sys_platform == "darwin"]
pynput>=1.7

[desktop:sys_platform == "win32"]
global-hotkeys>=0.1.7
pywinauto>=0.6.9
pywin32>=308
pywinpty>=2.0
win10toast-click>=0.1.2
pycaw>=20240210
comtypes>=1.2

[dev]
personal-jarvis[desktop,local-voice]
pytest>=8.3
pytest-asyncio>=0.24
pytest-cov>=6.0
hypothesis>=6.100
ruff>=0.7
mypy>=1.13
pyinstaller>=6.11

[full]
personal-jarvis[channels,desktop,desktop-macos,local-voice,telephony]

[local-voice]

[local-voice:(sys_platform != "win32" or platform_machine != "ARM64") and (sys_platform != "darwin" or python_version < "3.14")]
faster-whisper>=1.0

[local-voice:python_version < "3.14" and (sys_platform != "win32" or platform_machine != "ARM64")]
webrtcvad-wheels>=2.0

[local-voice:sys_platform == "darwin" and platform_machine == "arm64" and python_version < "3.14"]
av==15.1.0

[telephony]
twilio>=8.0

[tts-eval]

[tts-eval:(sys_platform != "win32" or platform_machine != "ARM64") and (sys_platform != "darwin" or python_version < "3.14")]
faster-whisper>=1.0

[tts-eval:sys_platform == "darwin" and platform_machine == "arm64" and python_version < "3.14"]
av==15.1.0
