J.A.R.V.I.S-rust/resources/commands/window/command.toml

95 lines
2.1 KiB
TOML
Raw Permalink Normal View History

feat(commands): tier-1 PC tools — window mgmt, clipboard, notes, process killer, web search Five new portable Lua command packs. Bumps the total from 11 to 16 packs. All sandbox=full, all dispatched via jarvis.system.exec or jarvis.fs / jarvis.system APIs, no new Rust code, post_build.py --sync copies them under target/. cargo test -p jarvis-core --lib commands::tests passes 3/3 against all 16. window/ — 8 commands, single dispatch.lua keyed by jarvis.context.command_id: show_desktop / maximize_window / minimize_window / snap_left / snap_right / close_window / restore_all / task_view. _window_helper.ps1 P/Invokes user32!keybd_event for arbitrary combos like "win+d", "alt+f4", "win+shift+m". Uses one shared script per pack — much less duplication than the volume/ approach. clipboard_read/ — read_clipboard. Pulls jarvis.system.clipboard.get(), caps preview at 400 chars, then shells PowerShell System.Speech to actually speak it aloud (auto-picks the first ru-RU voice if present). Also fires a notify with a 120-char snippet. notes/ — add_note + open_notes. add_note strips the trigger phrase from the recognized voice, appends "[YYYY-MM-DD HH:MM] body\n" to %USERPROFILE%\Documents\jarvis-notes.txt via jarvis.fs.append (creates the file on first call). open_notes opens the file in the default editor via jarvis.system.open. Trigger list covers RU/EN/UA variants of "запиши" / "запомни" / "write down" / etc. process_kill/ — kill_process. Trigger-strips "закрой программу" / "убей процесс" / etc., then runs the remainder through an alias map (хром→ chrome, телега→telegram, спотифай→spotify, edge/edge/едж→msedge etc., 20+ entries) before invoking taskkill /F /IM. Notifies success/not-found. websearch/ — search_google / search_youtube / search_wiki / search_yandex. Single dispatch.lua reads jarvis.context.command_id to pick the base URL, URL-encodes the query (Lua %02X gsub, not relying on jarvis.http), opens the resulting link via jarvis.system.open (system default browser). Portability check: every helper resolves paths via $env:USERPROFILE / jarvis.context.command_path / jarvis.system.env — no hardcoded C:\ refs.
2026-05-15 11:27:02 +03:00
[[commands]]
id = "show_desktop"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["покажи рабочий стол", "свернуть всё", "сверни все окна", "покажи десктоп"]
en = ["show desktop", "minimize all"]
[[commands]]
id = "maximize_window"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["разверни окно", "развернуть окно", "на весь экран", "раскрой окно"]
en = ["maximize window", "fullscreen window"]
[[commands]]
id = "minimize_window"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["сверни окно", "свернуть окно", "убери окно"]
en = ["minimize window"]
[[commands]]
id = "snap_left"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["окно влево", "сдвинь влево", "прижми влево"]
en = ["snap left", "window left"]
[[commands]]
id = "snap_right"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["окно вправо", "сдвинь вправо", "прижми вправо"]
en = ["snap right", "window right"]
[[commands]]
id = "close_window"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["закрой окно", "закрой вкладку", "закрой текущее", "alt f4"]
en = ["close window", "close tab"]
[[commands]]
id = "restore_all"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["восстанови окна", "верни окна", "разверни окна"]
en = ["restore windows", "restore all"]
[[commands]]
id = "task_view"
type = "lua"
script = "dispatch.lua"
sandbox = "full"
timeout = 3000
[commands.phrases]
ru = ["открой все окна", "обзор окон", "таск вью", "покажи все окна"]
en = ["task view", "show all windows"]