J.A.R.V.I.S-rust/resources/commands
Bossiara13 919d565879
Some checks are pending
Rust CI / cargo test (jarvis-core) (push) Waiting to run
Rust CI / cargo clippy (push) Waiting to run
Rust CI / cargo check (workspace) (push) Waiting to run
feat: real-Jarvis Wave 4 — personality, idle banter, persistent history, offline math, DDG search
Personality pack (`resources/commands/personality/`):
- 5 voice commands × ~7-29 phrases each across RU and EN.
- personality.greet: 4 time-of-day buckets (morning/midday/evening/night),
  pulls one of ~7 lines per bucket per language.
- personality.thanks / .compliment / .how_are_you / .tony_quote.
- how_are_you embeds live memory size + active profile via jarvis.health()
  and jarvis.memory.all() for a "feels alive" effect.
- All use jarvis.cmd.ok helpers, no inline PowerShell SAPI.
- Built by sub-agent. Verified: 6 rust command tests + 60 python tests.

Idle banter (`crates/jarvis-core/src/idle_banter.rs`):
- Background thread chimes in periodically without being asked. Gated by
  JARVIS_IDLE_BANTER env (default OFF — intrusion is opt-in).
- Quiet hours 23:00–07:00, skipped under "sleep" profile, paused during
  active interactions via `pause()`.
- 30+ static offline lines split into RU/EN × morning/evening/generic
  buckets — no network required.
- Lua API jarvis.banter.{fire, pause, resume, enabled}.
- New voice pack `banter/` exposes "скажи что-нибудь интересное",
  "помолчи", "можешь говорить".
- 6 unit tests covering pool selection, quiet hours, interval clamp,
  pause/resume, opt-in default.

Conversation continuity (`crates/jarvis-core/src/llm/history.rs`):
- New `ConversationHistory::with_persistence(path)` builder. Every
  push/clear/pop atomically writes to `<APP_CONFIG_DIR>/llm_history.json`
  so daemon restart picks up the thread.
- System prompt is intentionally NOT persisted — comes from current init
  call so prompt edits take effect immediately on restart.
- `llm::init_history` wires the path in automatically.
- 4 new tests: round-trip, clear wipes file, corrupt file tolerated,
  len/is_empty helpers.

Offline-first math (`resources/commands/math/math.lua`):
- Was: always-LLM, hard fail without GROQ_TOKEN, inline PowerShell SAPI.
- Now: shunting-yard parser handles 95% of voice queries in <50ms — no
  network, no token. Russian operator words ("плюс", "умножить на",
  "в степени", "квадрат", ...) normalised to symbols first. Patterns
  for "корень из X" and "X процентов от Y". Falls back to LLM only on
  parse failure (word problems / equations / unit conversions).
- Drops inline PowerShell — speaks via jarvis.cmd.ok.
- 10-case shunting-yard kernel test added (basic ops, precedence,
  parens, unary minus, div-by-zero, garbage rejected).

DuckDuckGo Instant Answer (`resources/commands/ddg_answer/`):
- New pack — short factual Q&A without API key. Trigger phrases
  "что такое", "кто такой", "расскажи про", "what is", etc.
- Reads AbstractText → Answer → Definition → RelatedTopics[0] in order
  from DDG's free JSON API. Opens the search page only if nothing
  useful comes back.
- Sandbox full (needs http + system.open).

Tests: 128 → 139 (+11). Release build green.
2026-05-16 13:52:49 +03:00
..
apps chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
backup chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
banter feat: real-Jarvis Wave 4 — personality, idle banter, persistent history, offline math, DDG search 2026-05-16 13:52:49 +03:00
brightness chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
browser fix(commands): repair weather set_city schema, retire broken AHK browser pack 2026-05-15 00:54:34 +03:00
calculator project restructure with Rust workspaces 2026-01-04 05:19:47 +05:00
clip_history chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
clipboard_read chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
codebase_qa chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
codegen chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
counter basic Lua 5.4 implementation with few example commands 2026-01-17 05:46:38 +05:00
crypto chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
currency chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
daily_briefing chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
daily_quote chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
date_math chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
date_query chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
ddg_answer feat: real-Jarvis Wave 4 — personality, idle banter, persistent history, offline math, DDG search 2026-05-16 13:52:49 +03:00
diagnostics chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
dice chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
disk chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
echo chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
file_search chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
fun chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
games chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
generators chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
github_issues chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
github_pr chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
habit_nudge chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
habit_streaks chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
help chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
ics_event chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
interesting_fact chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
intro chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
jarvis project restructure with Rust workspaces 2026-01-04 05:19:47 +05:00
llm_context chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
llm_switch chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
macros chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
magic_8ball chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
mailto chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
math feat: real-Jarvis Wave 4 — personality, idle banter, persistent history, offline math, DDG search 2026-05-16 13:52:49 +03:00
media chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
media_keys chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
memory_pack chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
mood_log chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
mouse chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
net_info chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
network chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
news chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
notes chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
notif_queue chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
now_playing chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
ocr chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
output_device chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
password_vault chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
personality feat: real-Jarvis Wave 4 — personality, idle banter, persistent history, offline math, DDG search 2026-05-16 13:52:49 +03:00
pomodoro chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
power chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
process_kill chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
profile_switch chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
projects chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
quick_search chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
random_choice chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
reminders chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
rss_reader chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
scheduler chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
screenshot chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
self_check chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
sleep_timer chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
sound_panel chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
spelling chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
ssl_check chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
steam project restructure with Rust workspaces 2026-01-04 05:19:47 +05:00
stocks chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
stop project restructure with Rust workspaces 2026-01-04 05:19:47 +05:00
stopwatch chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
summarize chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
sysinfo chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
terminate project restructure with Rust workspaces 2026-01-04 05:19:47 +05:00
test_slots some fixes + gliner first implementation 2026-02-11 07:21:50 +05:00
theme chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
translate chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
unit_convert chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
vision chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
voice_type chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
volume chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
weather chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
weather_extended chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
websearch chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
wikipedia chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
window chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
window_switch chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00
windows project restructure with Rust workspaces 2026-01-04 05:19:47 +05:00
world_clock chore: CI workflows + drop Ukrainian (UA → just RU/EN) 2026-05-16 13:38:12 +03:00