feat(commands): add PC control packs — volume, apps, file_search, output_device

All four packs are pure Lua (sandbox=full) and call out to PowerShell helpers
where COM / native APIs are needed. No new Rust code, no rebuild required:
post_build.py --sync copies them under target/{debug,release}/resources/.

volume/
  - volume_up / volume_down: 5x VK_VOLUME_UP|DOWN via keybd_event
  - volume_mute: VK_VOLUME_MUTE
  - volume_max: 50x VK_VOLUME_UP (system clamps)
  Helper _volume_helper.ps1 P/Invokes user32!keybd_event.

apps/
  - open_browser  : start "" https://www.google.com (uses system default browser)
  - open_notepad  : notepad.exe
  - open_calculator: calc.exe
  - open_explorer : explorer.exe
  - open_terminal : wt.exe, falls back to powershell.exe
  - open_settings : ms-settings: protocol
  - open_task_manager: taskmgr.exe
  - lock_screen   : rundll32 user32.dll,LockWorkStation
  - screenshot    : System.Drawing capture to ~/Pictures/jarvis_screenshot_*.png

file_search/
  - find file <query> : recursive Get-ChildItem in Desktop/Documents/Downloads
    (depth 3, top 5 matches). Strips Russian/English/Ukrainian trigger
    prefixes from the recognized phrase, then opens explorer /select on the
    first hit and notifies with the total count.

output_device/
  - list_output_devices : enumerates active render endpoints via
    IMMDeviceEnumerator and notifies friendly names with indices
  - next_output_device  : cycles the system default render device via the
    undocumented IPolicyConfig::SetDefaultEndpoint (eConsole/Multimedia/
    Communications). Tested locally — listed 7 devices, current correctly
    identified at index 5.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bossiara13 2026-05-15 00:54:52 +03:00
parent 307688c7d8
commit 54dcf7e564
22 changed files with 932 additions and 0 deletions

View file

@ -0,0 +1,230 @@
[[commands]]
id = "open_browser"
type = "lua"
script = "open_browser.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"открой браузер",
"запусти браузер",
"открой хром",
"запусти хром",
"включи браузер",
"браузер открой",
"нужен браузер",
]
en = [
"open browser",
"launch browser",
"open chrome",
"launch chrome",
"start browser",
"i need browser",
]
ua = [
"відкрий браузер",
"запусти браузер",
"відкрий хром",
"запусти хром",
"увімкни браузер",
]
[[commands]]
id = "open_notepad"
type = "lua"
script = "open_notepad.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"открой блокнот",
"запусти блокнот",
"открой нотепад",
]
en = [
"open notepad",
"launch notepad",
]
ua = [
"відкрий блокнот",
"запусти блокнот",
]
[[commands]]
id = "open_calculator"
type = "lua"
script = "open_calculator.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"открой калькулятор",
"запусти калькулятор",
"нужен калькулятор",
]
en = [
"open calculator",
"launch calculator",
"calculator please",
]
ua = [
"відкрий калькулятор",
"запусти калькулятор",
]
[[commands]]
id = "open_explorer"
type = "lua"
script = "open_explorer.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"открой проводник",
"открой папку",
"запусти проводник",
"открой файлы",
]
en = [
"open explorer",
"open file explorer",
"open files",
"open folder",
]
ua = [
"відкрий провідник",
"відкрий папку",
]
[[commands]]
id = "open_terminal"
type = "lua"
script = "open_terminal.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"открой терминал",
"запусти терминал",
"открой консоль",
"запусти консоль",
"открой повершелл",
]
en = [
"open terminal",
"open powershell",
"open console",
"launch terminal",
]
ua = [
"відкрий термінал",
"відкрий консоль",
]
[[commands]]
id = "open_settings"
type = "lua"
script = "open_settings.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"открой настройки",
"открой параметры",
"запусти настройки",
"открой настройки виндоус",
]
en = [
"open settings",
"launch settings",
"windows settings",
]
ua = [
"відкрий налаштування",
"відкрий параметри",
]
[[commands]]
id = "open_task_manager"
type = "lua"
script = "open_task_manager.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"открой диспетчер задач",
"запусти диспетчер задач",
"диспетчер задач",
]
en = [
"open task manager",
"launch task manager",
"task manager",
]
ua = [
"відкрий диспетчер задач",
"диспетчер задач",
]
[[commands]]
id = "lock_screen"
type = "lua"
script = "lock_screen.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = [
"заблокируй компьютер",
"заблокируй экран",
"блокировка экрана",
"залочь",
]
en = [
"lock screen",
"lock the computer",
"lock pc",
]
ua = [
"заблокуй комп'ютер",
"заблокуй екран",
]
[[commands]]
id = "screenshot"
type = "lua"
script = "screenshot.lua"
sandbox = "full"
timeout = 5000
[commands.phrases]
ru = [
"сделай скриншот",
"скриншот",
"сними экран",
]
en = [
"take screenshot",
"screenshot",
"capture screen",
]
ua = [
"зроби скріншот",
"знімок екрана",
]