J.A.R.V.I.S-py/commands.yaml
Bossiara13 f82427c7b6 feat: extensions module + 19 new commands (100 → 119)
Mirror of new packs from the rust fork. Self-contained `extensions.py` with
new do_* handlers, registered via 'set_speak' / 'set_clipboard_fn' callbacks
from main.py.

Wiring (main.py)
  - `import extensions` at top.
  - `extensions.set_speak(_speak)` + `extensions.set_clipboard_fn(_set_clipboard)`
    right after _set_clipboard is defined.
  - Added 15 new action-type dispatches in run_action.

extensions.py (new, ~360 lines)
  Action types:
    lock_workstation  → rundll32 user32.dll,LockWorkStation
    screenshot {mode} → clipboard via System.Windows.Forms.Clipboard.SetImage
                        OR file → ~/Pictures/Screenshots/jarvis-<ts>.png
    disk_free / disk_list → PowerShell Get-PSDrive
    coin_flip / uuid_gen / password_gen (length 6..64, copies to clipboard,
                        speaks length only — never echoes the password)
    ssl_check {domain} → PowerShell TCP+SslStream→X509Certificate2 expiry
    wifi_ssid → netsh wlan show interfaces parser (ru + en field names)
    public_ip → urllib request to api.ipify.org
    unit_convert {mode: length|weight|temperature|speed}
                  Russian-grammar pluralisation (фут/фута/футов).
    date_math {mode: days_until|day_of_week}
                  Recognises Новый год, Рождество, 8 марта, 9 мая + "до N <месяц>".
    echo_repeat / self_ping — debug commands
    interesting_fact → Groq LLM (requires GROQ_TOKEN)

commands.yaml — 19 new entries:
  lock_workstation, screenshot_clipboard, screenshot_file, disk_free, disk_list,
  coin_flip, password_gen, uuid_gen, ssl_check, wifi_ssid, public_ip,
  convert_length, convert_weight, convert_temperature, convert_speed,
  days_until, day_of_week, echo_repeat, self_ping, interesting_fact.

Tests: python syntax check + yaml.safe_load both pass. Total commands: 119.

NOT YET mirrored from rust (would require deeper rework):
  memory_pack / profile_switch / scheduler / macros / vision / codebase_qa
  / github_pr / llm_switch / llm_context / media_keys / mood_log / pomodoro
  / habit_nudge / daily_briefing / quick_search / diagnostics / sleep_timer
  / wikipedia (the rewritten one) / intro / mailto / generators (UUID, coin,
  password ARE included — others can follow).

The reason these weren't mirrored: they need new state files
(memory.json, profiles.json, schedule.json, macros.json) and background
threads (scheduler tick). Doable as a follow-up but out of scope here.
2026-05-15 23:51:13 +03:00

1035 lines
26 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

open_browser:
phrases:
- открой браузер
- запусти браузер
- открой яндекс
- яндекс браузер
action: {type: url, href: "about:blank", browser: "yandex"}
open_youtube:
phrases:
- открой ютуб
- ютуб
- запусти ютуб
action: {type: url, href: "https://www.youtube.com", browser: "yandex"}
open_google:
phrases:
- открой гугл
- гугл
- запусти гугл
action: {type: url, href: "https://www.google.com", browser: "yandex"}
open_notepad:
phrases:
- открой блокнот
- запусти блокнот
- открой нотепад
action: {type: shell, cmd: 'start "" notepad.exe'}
open_calculator:
phrases:
- открой калькулятор
- запусти калькулятор
- нужен калькулятор
action: {type: shell, cmd: 'start "" calc.exe'}
open_explorer:
phrases:
- открой проводник
- открой папку
- запусти проводник
- открой файлы
action: {type: shell, cmd: 'start "" explorer.exe'}
open_terminal:
phrases:
- открой терминал
- запусти терминал
- открой консоль
- открой повершелл
action: {type: shell, cmd: 'start "" wt.exe || start "" powershell.exe'}
open_settings:
phrases:
- открой настройки
- открой параметры
- открой настройки виндоус
action: {type: shell, cmd: 'start "" ms-settings:'}
open_task_manager:
phrases:
- открой диспетчер задач
- запусти диспетчер задач
- диспетчер задач
action: {type: shell, cmd: 'start "" taskmgr.exe'}
lock_screen:
phrases:
- заблокируй компьютер
- заблокируй экран
- блокировка экрана
- залочь
action: {type: shell, cmd: 'rundll32.exe user32.dll,LockWorkStation'}
screenshot:
phrases:
- сделай скриншот
- скриншот
- сними экран
action:
type: shell
cmd: >-
powershell -NoProfile -Command "Add-Type -AssemblyName System.Windows.Forms,System.Drawing; $b=[System.Windows.Forms.Screen]::PrimaryScreen.Bounds; $bmp=New-Object Drawing.Bitmap $b.Width,$b.Height; $g=[Drawing.Graphics]::FromImage($bmp); $g.CopyFromScreen($b.Location,[Drawing.Point]::Empty,$b.Size); $p=Join-Path $env:USERPROFILE ('Pictures\jarvis_'+(Get-Date -Format 'yyyyMMdd_HHmmss')+'.png'); $bmp.Save($p); $g.Dispose(); $bmp.Dispose()"
volume_up:
phrases:
- громче
- сделай громче
- прибавь звук
- увеличь громкость
- погромче
action:
type: multi
steps:
- {type: keys, sequence: 'volumeup'}
- {type: keys, sequence: 'volumeup'}
- {type: keys, sequence: 'volumeup'}
- {type: keys, sequence: 'volumeup'}
- {type: keys, sequence: 'volumeup'}
volume_down:
phrases:
- тише
- сделай тише
- убавь звук
- уменьши громкость
- потише
action:
type: multi
steps:
- {type: keys, sequence: 'volumedown'}
- {type: keys, sequence: 'volumedown'}
- {type: keys, sequence: 'volumedown'}
- {type: keys, sequence: 'volumedown'}
- {type: keys, sequence: 'volumedown'}
sound_off:
phrases:
- выключи звук
- беззвучный режим
- режим без звука
- отключи звук
action:
type: multi
steps:
- {type: play_sound, name: ok}
- {type: system, op: volume_mute}
sound_on:
phrases:
- включи звук
- режим со звуком
- верни звук
action:
type: multi
steps:
- {type: system, op: volume_unmute}
- {type: play_sound, name: ok}
music:
phrases:
- давай музыку
- музыка
- яндекс музыка
- включи музыку
- открой музыку
- послушаем музыку
- хочу музыку
- врубай музло
- включи что-то послушать
- давай что-то послушаем
action: {type: keys, sequence: 'playpause'}
music_off:
phrases:
- выключи музыку
- отруби музыку
- убери музыку
- отключи музыку
- закрой музыку
- останови музыку
- хватит музыки
- пауза
- поставь на паузу
action: {type: keys, sequence: 'playpause'}
music_next:
phrases:
- следующий трек
- следующая мелодия
- следующая песня
- переключи трек
- переключи мелодию
- переключи песню
- следующая музыка
action: {type: keys, sequence: 'nexttrack'}
music_prev:
phrases:
- предыдущая музыка
- предыдущий трек
- предыдущая мелодия
- предыдущая песня
- верни трек
- верни мелодию
- верни песню
- верни прошлый трек
- переключи на прошлый трек
action: {type: keys, sequence: 'prevtrack'}
media_stop:
phrases:
- стоп музыка
- полная тишина
action: {type: keys, sequence: 'stop'}
switch_audio_device:
phrases:
- переключи устройство
- смени вывод
- переключи на наушники
- переключи на колонки
- переключи на динамики
- открой настройки звука
action: {type: audio_devices_panel}
sysinfo_time:
phrases:
- сколько времени
- который час
- какой сегодня день
- какое сегодня число
action: {type: sysinfo, topic: time}
sysinfo_battery:
phrases:
- сколько заряда
- заряд батареи
- сколько процентов батареи
action: {type: sysinfo, topic: battery}
sysinfo_cpu:
phrases:
- загрузка процессора
- сколько процессор
- нагрузка цпу
action: {type: sysinfo, topic: cpu}
sysinfo_ram:
phrases:
- сколько памяти
- сколько оперативки
- загрузка оперативки
- сколько свободной памяти
action: {type: sysinfo, topic: ram}
sysinfo_disk:
phrases:
- сколько свободно на диске
- сколько места на диске
- сколько свободно на компе
action: {type: sysinfo, topic: disk}
sysinfo_all:
phrases:
- статус системы
- что с компьютером
- состояние пк
- что по системе
action: {type: sysinfo, topic: all}
file_search:
phrases:
- найди файл
- найди документ
- поиск файла
- ищи файл
- где файл
action: {type: file_search}
codegen:
phrases:
- напиши код
- сгенерируй код
- набросай код
- сделай скрипт
- напиши скрипт
- сгенерируй скрипт
action: {type: groq_codegen}
read_screen:
phrases:
- прочитай экран
- что на экране
- распознай текст с экрана
- что написано на экране
- сними текст с экрана
action: {type: ocr_screen}
# Window management via pyautogui hotkeys
show_desktop:
phrases:
- покажи рабочий стол
- свернуть всё
- сверни все окна
- покажи десктоп
action: {type: keys, sequence: 'winleft+d'}
maximize_window:
phrases:
- разверни окно
- развернуть окно
- на весь экран
- раскрой окно
action: {type: keys, sequence: 'winleft+up'}
minimize_window:
phrases:
- сверни окно
- свернуть окно
- убери окно
action: {type: keys, sequence: 'winleft+down'}
snap_left:
phrases:
- окно влево
- сдвинь влево
- прижми влево
action: {type: keys, sequence: 'winleft+left'}
snap_right:
phrases:
- окно вправо
- сдвинь вправо
- прижми вправо
action: {type: keys, sequence: 'winleft+right'}
close_window:
phrases:
- закрой окно
- закрой вкладку
- закрой текущее
action: {type: keys, sequence: 'alt+f4'}
restore_all:
phrases:
- восстанови окна
- верни окна
- разверни окна
action: {type: keys, sequence: 'winleft+shift+m'}
task_view:
phrases:
- открой все окна
- обзор окон
- таск вью
- покажи все окна
action: {type: keys, sequence: 'winleft+tab'}
# Clipboard read aloud
read_clipboard:
phrases:
- прочитай буфер
- что в буфере
- прочитай из буфера
- озвучь буфер
action: {type: clipboard_read}
# Notes
add_note:
phrases:
- запиши
- запиши заметку
- запиши идею
- запомни
- запомни идею
- сделай заметку
action: {type: notes_add}
open_notes:
phrases:
- покажи заметки
- открой заметки
- что я записал
action: {type: notes_open}
# Process killer
kill_process:
phrases:
- убей процесс
- закрой программу
- завершить процесс
- выруби процесс
action: {type: process_kill}
# Web search shortcuts
search_google:
phrases:
- загугли
- поиск в гугл
- поищи в гугл
- найди в гугл
- ищи в гугл
action: {type: websearch, service: google}
search_youtube:
phrases:
- найди на ютубе
- поиск на ютубе
- ищи на ютубе
- ютуб поиск
action: {type: websearch, service: youtube}
search_wiki:
phrases:
- найди в википедии
- поиск в википедии
- википедия
- вики поиск
action: {type: websearch, service: wiki}
search_yandex:
phrases:
- поищи в яндекс
- найди в яндекс
- яндекс поиск
- пробей в яндекс
action: {type: websearch, service: yandex}
translate:
phrases:
- переведи на английский
- переведи на русский
- переведи на украинский
- переведи на немецкий
- переведи на французский
- переведи на испанский
- переведи на китайский
- переведи на японский
- переведи
- как по английски
- как по русски
action: {type: translate}
math_eval:
phrases:
- посчитай
- сколько будет
- вычисли
- реши
- сколько это
action: {type: math_eval}
theme_dark:
phrases:
- тёмная тема
- темная тема
- включи тёмную тему
- тёмный режим
- темный режим
action: {type: theme_set, mode: dark}
theme_light:
phrases:
- светлая тема
- включи светлую тему
- светлый режим
action: {type: theme_set, mode: light}
open_project:
phrases:
- открой проект
- запусти проект
- открой папку проекта
action: {type: open_project}
list_projects:
phrases:
- какие у меня проекты
- список проектов
- покажи проекты
action: {type: list_projects}
open_sound_panel:
phrases:
- открой настройки звука
- панель звука
- настройки микрофона
- управление звуком
action: {type: open_sound_panel}
set_reminder:
phrases:
- напомни через
- напомни мне через
- поставь напоминание через
- установи таймер на
- таймер на
action: {type: set_reminder}
today:
phrases:
- какой сегодня день
- какое сегодня число
- сегодня какое число
- что сегодня
action: {type: date_query, offset: 0}
tomorrow:
phrases:
- какой день завтра
- что завтра
- завтра какое число
- какое число завтра
action: {type: date_query, offset: 1}
yesterday:
phrases:
- какой был вчера день
- что было вчера
- вчера какое число было
action: {type: date_query, offset: -1}
type_text:
phrases:
- напечатай
- набери текст
- введи текст
- впиши
action: {type: type_text}
coin_flip:
phrases:
- подбрось монетку
- брось монетку
- орёл или решка
- орел или решка
action: {type: dice, kind: coin}
roll_dice:
phrases:
- брось кубик
- подбрось кубик
- кинь кубик
action: {type: dice, kind: dice}
random_number:
phrases:
- случайное число
- выбери случайное число
- рандомное число
action: {type: dice, kind: random}
stopwatch_start:
phrases:
- засеки время
- запусти секундомер
- старт секундомер
- включи секундомер
action: {type: stopwatch, op: start}
stopwatch_check:
phrases:
- сколько прошло
- сколько времени прошло
- проверь секундомер
action: {type: stopwatch, op: check}
stopwatch_stop:
phrases:
- стоп секундомер
- останови секундомер
- выключи секундомер
action: {type: stopwatch, op: stop}
news_headlines:
phrases:
- что нового
- новости
- что в мире
- последние новости
- расскажи новости
- топ новостей
action: {type: news}
currency_rate:
phrases:
- курс доллара
- курс евро
- сколько стоит доллар
- сколько стоит евро
- курс юаня
- курс валют
- что с долларом
- что с евро
action: {type: currency_rate}
crypto_price:
phrases:
- сколько биткоин
- цена биткоина
- курс биткоина
- цена эфира
- сколько эфир
- цена крипты
- цена соланы
action: {type: crypto_price}
joke:
phrases:
- расскажи шутку
- пошути
- анекдот
- рассмеши меня
action: {type: fun_ask, kind: joke}
fact:
phrases:
- расскажи факт
- интересный факт
- поделись фактом
action: {type: fun_ask, kind: fact}
quote:
phrases:
- вдохнови меня
- цитата дня
- мотивируй
- процитируй кого-нибудь
action: {type: fun_ask, kind: quote}
compliment:
phrases:
- сделай комплимент
- похвали меня
action: {type: fun_ask, kind: compliment}
wiki_lookup:
phrases:
- что такое
- кто такой
- кто такая
- расскажи про
- википедия про
- найди в википедии про
action: {type: wiki_lookup}
shutdown_pc:
phrases:
- выключи компьютер
- выключи пк
- выключи комп
action: {type: power, op: shutdown}
restart_pc:
phrases:
- перезагрузи компьютер
- перезагрузи пк
- ребутни
- ребут
action: {type: power, op: restart}
sleep_pc:
phrases:
- усыпи компьютер
- усыпи пк
- режим сна
- перейди в сон
action: {type: power, op: sleep}
hibernate_pc:
phrases:
- гибернация
- переведи в гибернацию
- режим гибернации
action: {type: power, op: hibernate}
logoff_user:
phrases:
- выйди из системы
- разлогинь
- выйди из учётки
- сеанс закончи
action: {type: power, op: logoff}
cancel_shutdown:
phrases:
- отмени выключение
- отмени ребут
- отмени перезагрузку
- стой не выключай
action: {type: power, op: cancel}
help:
phrases:
- что ты умеешь
- какие команды
- список команд
- помощь
- помоги
- что можешь
action: {type: help_commands}
launch_game:
phrases:
- запусти игру
- включи игру
- поиграем
- хочу поиграть
- запусти доту
- включи кс
- включи фортнайт
action: {type: launch_game}
list_games:
phrases:
- какие у меня игры
- список игр
- покажи игры
action: {type: list_games}
mouse_left_click:
phrases:
- клик
- кликни
- нажми мышкой
action: {type: mouse, op: left}
mouse_right_click:
phrases:
- правый клик
- клик правой
- правой кнопкой
action: {type: mouse, op: right}
mouse_double_click:
phrases:
- двойной клик
- дабл клик
- двойное нажатие
action: {type: mouse, op: double}
mouse_scroll_down:
phrases:
- промотай вниз
- прокрути вниз
action: {type: mouse, op: scroll_down}
mouse_scroll_up:
phrases:
- промотай вверх
- прокрути вверх
action: {type: mouse, op: scroll_up}
random_choice:
phrases:
- выбери из
- выбери
- решай за меня
- выбрать
action: {type: random_choice}
brightness_up:
phrases:
- ярче
- сделай ярче
- увеличь яркость
- поярче
action: {type: brightness, op: up}
brightness_down:
phrases:
- темнее
- сделай темнее
- уменьши яркость
- потемнее
action: {type: brightness, op: down}
brightness_max:
phrases:
- максимальная яркость
- яркость на максимум
action: {type: brightness, op: max}
brightness_min:
phrases:
- минимальная яркость
- яркость на минимум
action: {type: brightness, op: min}
switch_to_window:
phrases:
- переключись на
- переключи на
- активируй окно
- покажи окно
- перейди в
action: {type: window_switch}
spell_out:
phrases:
- произнеси по буквам
- продиктуй по буквам
- произнеси буквы
- по буквам
action: {type: spell_out}
open_wifi_settings:
phrases:
- настройки wifi
- настройки вайфай
- wifi настройки
- сеть
action: {type: network_settings, section: wifi}
open_bluetooth_settings:
phrases:
- настройки блютуз
- блютуз
action: {type: network_settings, section: bluetooth}
my_ip:
phrases:
- мой ай пи
- мой ip
- какой у меня айпи
- айпишник
action: {type: my_ip}
summarize_selection:
phrases:
- суммируй
- перескажи выделенное
- кратко перескажи
- о чём это
- что выделил
- перескажи это
action: {type: summarize_selection}
thanks:
phrases:
- спасибо
- молодец
- респект
- ты супер
- отличная работа
- ты крут
- ты большой молодец
- ты реально крут
- ты афигенный
action: {type: play_sound, name: thanks}
stupid:
phrases:
- ты дурак
- ты дебил
- ты глупый
- ты тупой
action: {type: play_sound, name: stupid}
'off':
phrases:
- выключись
- вырубись
- завершить работу
- закройся
- отключись
- заверши свою работу
- на сегодня хватит
- выгрузи себя из памяти
- ты мне надоел
- пора спать
action:
type: multi
steps:
- {type: play_sound, name: "off"}
- {type: system, op: exit}
# ─── Ported from rust fork (2026-05-15) ───────────────────────────────────
lock_workstation:
phrases:
- заблокируй компьютер
- заблокируй пк
- заблокируй комп
- заблокируй экран
- запри компьютер
action: {type: lock_workstation}
screenshot_clipboard:
phrases:
- сделай скриншот
- сделай скрин
- скопируй экран
- скриншот в буфер
- захвати экран
action: {type: screenshot, mode: clipboard}
screenshot_file:
phrases:
- сохрани скриншот
- сохрани скрин
- скриншот в файл
- сохрани экран
action: {type: screenshot, mode: file}
disk_free:
phrases:
- сколько свободного места
- сколько места на диске
- сколько свободно на диске
- место на диске
- свободное место
action: {type: disk_free}
disk_list:
phrases:
- какие у меня диски
- список дисков
- перечень дисков
action: {type: disk_list}
coin_flip:
phrases:
- подбрось монету
- брось монетку
- орёл или решка
- монетка
action: {type: coin_flip}
password_gen:
phrases:
- сгенерируй пароль
- придумай пароль
- сгенерируй надёжный пароль
action: {type: password_gen}
uuid_gen:
phrases:
- сгенерируй uuid
- сгенерируй юид
- юид
- уникальный идентификатор
action: {type: uuid_gen}
ssl_check:
phrases:
- проверь сертификат
- когда истекает сертификат
- проверь tls
- проверь ssl
- сертификат сайта
action: {type: ssl_check}
wifi_ssid:
phrases:
- к какой сети я подключен
- какой wifi
- какой вайфай
- какая сеть
- имя сети
action: {type: wifi_ssid}
public_ip:
phrases:
- мой внешний ip
- публичный ip
- внешний айпи
- какой у меня внешний
action: {type: public_ip}
convert_length:
phrases:
- переведи метры в футы
- переведи футы в метры
- сколько метров
- сколько футов
- сколько километров
- сколько миль
- переведи в метры
- переведи в футы
- переведи в км
- переведи в мили
action: {type: unit_convert, mode: length}
convert_weight:
phrases:
- переведи килограммы в фунты
- переведи фунты в килограммы
- сколько кг в фунтах
- сколько фунтов
- сколько килограммов
action: {type: unit_convert, mode: weight}
convert_temperature:
phrases:
- переведи цельсий в фаренгейт
- переведи фаренгейт в цельсий
- сколько по фаренгейту
- сколько по цельсию
action: {type: unit_convert, mode: temperature}
convert_speed:
phrases:
- переведи километры в час в мили в час
- переведи в кмч
- переведи в мили в час
- сколько миль в час
- сколько км в час
action: {type: unit_convert, mode: speed}
days_until:
phrases:
- сколько дней до
- сколько до нового года
- сколько до
- до нового года
action: {type: date_math, mode: days_until}
day_of_week:
phrases:
- какой сегодня день недели
- какой день недели
- сегодня какой
action: {type: date_math, mode: day_of_week}
echo_repeat:
phrases:
- повтори за мной
- скажи как я
- эхо
- проверка эхо
action: {type: echo_repeat}
self_ping:
phrases:
- ты тут
- ты слышишь
- ты меня слышишь
- пинг
- ты живой
- ты на месте
- проверка связи
action: {type: self_ping}
interesting_fact:
phrases:
- расскажи интересный факт
- интересный факт о
- интересный факт про
- удиви меня
- интересный факт
- расскажи факт
action: {type: interesting_fact}