GUI integration
- crates/jarvis-gui/src/tauri_commands/backends.rs — 5 new Tauri commands:
get_active_backends() -> {tts, llm, llm_model, profile}
set_llm_backend(name) -> swap LLM hot, persists to DB
set_tts_backend(name) -> persist choice (effective on jarvis-app restart)
llm_reset_context() -> clear conversation history
llm_get_last_reply() -> last assistant message or null
- Registered in main.rs invoke_handler. Svelte side can now read active
backend + swap from a settings page / footer without env-var gymnastics.
Wikipedia pack rewritten (resources/commands/wikipedia/)
- Old `wiki/wiki.lua` (104 lines, hand-rolled Groq HTTP + inline SAPI PS) deleted.
- Replacement `wikipedia/summary.lua` (87 lines):
* REST summary endpoint (cleaner than opensearch+summary chain).
* Russian first, English fallback with LLM translation.
* Pure LLM fallback if Wikipedia has no article.
* Uses jarvis.cmd.{ok,error,not_found} + jarvis.llm + jarvis.speak (no
inline PowerShell SAPI). Phrases kept compatible with old pack.
GitHub PR voice review (resources/commands/github_pr/, 3 commands)
- "текущий репо bossiara13/J.A.R.V.I.S-rust" → github.set_repo
Persists repo via jarvis.memory.
- "какие пиары" / "открытые пиары" → github.list_prs
Calls `gh pr list --json number,title,author,createdAt --limit 10`.
Parses count + first 3 titles by regex from JSON.
- "разбери последний пиар" / "что в pr" → github.summarize_pr
`gh pr view N --json title,body,additions,deletions,changedFiles,author`,
sends to LLM with "senior reviewer" system prompt, speaks 3-5 sentence
review focusing on changes, risks, merge-readiness.
- Requires gh CLI installed and `gh auth login` done.
Tests: 52/52 jarvis-core unit tests pass (Wikipedia pack TOML/script auto-checked).
Build: cargo build --release -p jarvis-app -p jarvis-gui green.
73 lines
1.5 KiB
TOML
73 lines
1.5 KiB
TOML
# GitHub PR voice review — list open PRs and summarise the latest one via LLM.
|
|
# Requires `gh` CLI installed and authenticated (`gh auth login`).
|
|
# Repo can be set via voice ("текущий репо <owner/repo>") or auto-detected
|
|
# from cwd if jarvis-app is launched inside a git repo.
|
|
|
|
[[commands]]
|
|
id = "github.list_prs"
|
|
type = "lua"
|
|
script = "list.lua"
|
|
sandbox = "full"
|
|
timeout = 15000
|
|
|
|
[commands.phrases]
|
|
ru = [
|
|
"какие пиары",
|
|
"какие пулл реквесты",
|
|
"что в пиарах",
|
|
"что в pr",
|
|
"открытые пиары",
|
|
"список пиаров",
|
|
]
|
|
en = [
|
|
"list open prs",
|
|
"what's in the prs",
|
|
"open pull requests",
|
|
]
|
|
ua = [
|
|
"які піари",
|
|
"відкриті пр",
|
|
]
|
|
|
|
|
|
[[commands]]
|
|
id = "github.summarize_pr"
|
|
type = "lua"
|
|
script = "summarize.lua"
|
|
sandbox = "full"
|
|
timeout = 60000
|
|
|
|
[commands.phrases]
|
|
ru = [
|
|
"разбери последний пиар",
|
|
"объясни последний пиар",
|
|
"обзор последнего пиара",
|
|
"что в последнем pr",
|
|
"разбор pr",
|
|
]
|
|
en = [
|
|
"review the latest pr",
|
|
"explain the latest pr",
|
|
"summarize pr",
|
|
]
|
|
ua = [
|
|
"розбери останній пр",
|
|
]
|
|
|
|
|
|
[[commands]]
|
|
id = "github.set_repo"
|
|
type = "lua"
|
|
script = "set_repo.lua"
|
|
sandbox = "standard"
|
|
timeout = 3000
|
|
|
|
[commands.phrases]
|
|
ru = [
|
|
"текущий репо",
|
|
"установи репо",
|
|
"выбери репо",
|
|
"репозиторий",
|
|
]
|
|
en = ["set repo", "current repo"]
|
|
ua = ["встанови репо"]
|