feat: GUI /memory page + disk/date_math/sleep_timer packs (10 new commands)
GUI: Memory management completes the management trio (/macros + /scheduler + /memory).
Tauri commands (crates/jarvis-gui/src/tauri_commands/memory.rs)
- memory_list → Vec<MemoryFact{key, value, created_at, last_used_at, use_count}>
- memory_remember(k, v) → persist new fact (or overwrite)
- memory_forget(key) → delete by exact key
- memory_search(q, limit) → substring search
GUI /memory page (frontend/src/routes/memory/index.svelte)
- Top: add-fact form (key + value inputs + "+Добавить" button)
- Substring filter input for the list
- Per-card: key + use_count badge + value (highlighted box) + timestamps +
"Забыть" button with confirm() guard
- Auto-sorted by recency (last_used_at desc)
- Empty state shows voice-hint: 'скажи Jarvis-у "запомни что я люблю чай улун"'
Header (frontend/src/components/Header.svelte)
- New "Память" button between /scheduler and /settings.
- i18n: header-memory in ru/en/ua FTL files.
New voice packs
resources/commands/disk/ (2 cmds)
- disk.free "сколько свободно на диске" / "сколько места на диске C"
PowerShell Get-PSDrive → speaks "Свободно X ГБ из Y, это N%"
- disk.list "какие у меня диски" → "C 120 ГБ, D 300 ГБ, E 50 ГБ"
resources/commands/date_math/ (2 cmds)
- date.days_until "сколько дней до нового года" / "сколько до 8 марта" /
"сколько до 15 марта" — recognises Russian months,
holidays (Новый год, Рождество, 8 марта, 9 мая).
Auto-rolls to next year if target already passed.
Russian-grammar pluralisation (день/дня/дней).
- date.day_of_week "какой сегодня день недели" — Zeller's congruence,
maps to ru day name.
resources/commands/sleep_timer/ (3 cmds)
- sleep_timer.pause_in "выключи музыку через 30 минут"
→ scheduler one-shot lua action that fires media
VK_MEDIA_PLAY_PAUSE via the existing media_keys helper.
(Auto-generates _fire_pause.lua wrapper if missing.)
- sleep_timer.shutdown_in "выключи компьютер через 1 час"
→ shutdown.exe /s /t <secs>. Caps at 24 hours.
Speaks "Скажите 'отмени таймер' чтобы передумать."
- sleep_timer.cancel "отмени таймер выключения" / "не выключай компьютер"
→ shutdown /a + scheduler.remove("sleep_timer_pause"),
idempotent.
Pack count: 64 → 67. Tests: 112/112 pass.
Build: cargo build --release -p jarvis-gui green.
This commit is contained in:
parent
84d3b57ddc
commit
d3180b7d78
18 changed files with 717 additions and 4 deletions
|
|
@ -122,6 +122,12 @@ fn main() {
|
|||
tauri_commands::scheduler_list,
|
||||
tauri_commands::scheduler_remove,
|
||||
tauri_commands::scheduler_clear,
|
||||
|
||||
// Long-term memory facts
|
||||
tauri_commands::memory_list,
|
||||
tauri_commands::memory_remember,
|
||||
tauri_commands::memory_forget,
|
||||
tauri_commands::memory_search,
|
||||
])
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
|
|
|
|||
|
|
@ -49,4 +49,8 @@ pub use macros::*;
|
|||
|
||||
// Scheduler tasks
|
||||
mod scheduler;
|
||||
pub use scheduler::*;
|
||||
pub use scheduler::*;
|
||||
|
||||
// Long-term memory facts
|
||||
mod memory;
|
||||
pub use memory::*;
|
||||
45
crates/jarvis-gui/src/tauri_commands/memory.rs
Normal file
45
crates/jarvis-gui/src/tauri_commands/memory.rs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
//! Tauri commands for the long-term memory store.
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct MemoryFact {
|
||||
pub key: String,
|
||||
pub value: String,
|
||||
pub created_at: i64,
|
||||
pub last_used_at: i64,
|
||||
pub use_count: u64,
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn memory_list() -> Vec<MemoryFact> {
|
||||
jarvis_core::long_term_memory::all().into_iter().map(|r| MemoryFact {
|
||||
key: r.key,
|
||||
value: r.value,
|
||||
created_at: r.created_at,
|
||||
last_used_at: r.last_used_at,
|
||||
use_count: r.use_count,
|
||||
}).collect()
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn memory_remember(key: String, value: String) -> Result<(), String> {
|
||||
jarvis_core::long_term_memory::remember(&key, &value)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn memory_forget(key: String) -> bool {
|
||||
jarvis_core::long_term_memory::forget(&key)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn memory_search(query: String, limit: Option<usize>) -> Vec<MemoryFact> {
|
||||
jarvis_core::long_term_memory::search(&query, limit.unwrap_or(10))
|
||||
.into_iter().map(|r| MemoryFact {
|
||||
key: r.key,
|
||||
value: r.value,
|
||||
created_at: r.created_at,
|
||||
last_used_at: r.last_used_at,
|
||||
use_count: r.use_count,
|
||||
}).collect()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue