feat: Wave 1 python parity — 20 new commands (154 → 174)
Mirrors all 10 packs from rust commit c4b2261 to python.
wave1_handlers.py (new, ~480 lines)
Self-contained module with 20 handlers + DPAPI helpers + http/ps wrappers.
Imports memory_store for state-backed packs (vault, clip, habit, rss, weather).
Coverage:
do_magic_8ball — 15 random answers
do_github_list_issues — gh issue list (uses memory[github.repo])
do_github_my_issues — gh issue list --assignee @me
do_weather_tomorrow — Open-Meteo + ipinfo auto-detect
do_weather_week — 7-day forecast min/max range
do_rss_add/read/list — RSS subscriptions + parse <title> tags
do_ics_create — write .ics, open via os.startfile
do_backup_export — zipfile of long_term_memory.json + schedule + macros
+ profiles/ + active_profile + llm_backend + settings
(searches script_dir + %APPDATA%/Jarvis)
do_clip_save/list/restore — 20-slot rolling clipboard history in memory
do_notif_missed/clear — enumerate memory[notif.*] / purge
do_vault_save/get/list — DPAPI encrypt via PowerShell, clears clipboard
after 30 sec via threading.Thread
do_habit_checkin/streak — date-keyed memory state, consecutive-day counter
extensions.py: +20 proxy functions + wave1_handlers import + set_speak wiring.
main.py: +20 dispatch entries.
commands.yaml: +20 entries (154 → 174).
Tests: ast.parse passes for all .py files. 42 pytest still green.
This commit is contained in:
parent
4e62049a98
commit
2bef1d5ea7
4 changed files with 839 additions and 0 deletions
|
|
@ -27,6 +27,7 @@ import scheduler_store
|
|||
import vision_handler
|
||||
import dev_handlers
|
||||
import llm_backend
|
||||
import wave1_handlers
|
||||
|
||||
_speak_fn = print
|
||||
_set_clipboard_fn = None
|
||||
|
|
@ -39,6 +40,7 @@ def set_speak(fn):
|
|||
scheduler_store.set_speak(fn)
|
||||
vision_handler.set_speak(fn)
|
||||
dev_handlers.set_speak(fn)
|
||||
wave1_handlers.set_speak(fn)
|
||||
|
||||
|
||||
def set_clipboard_fn(fn):
|
||||
|
|
@ -1093,3 +1095,27 @@ def do_github_list_prs(action, voice):
|
|||
|
||||
def do_github_summarize_pr(action, voice):
|
||||
dev_handlers.do_github_summarize_pr(action, voice)
|
||||
|
||||
|
||||
# ── Wave 1 proxies (to wave1_handlers) ──────────────────────────────────────
|
||||
|
||||
def do_magic_8ball(a, v): wave1_handlers.do_magic_8ball(a, v)
|
||||
def do_gh_list_issues(a, v): wave1_handlers.do_github_list_issues(a, v)
|
||||
def do_gh_my_issues(a, v): wave1_handlers.do_github_my_issues(a, v)
|
||||
def do_weather_tomorrow(a, v): wave1_handlers.do_weather_tomorrow(a, v)
|
||||
def do_weather_week(a, v): wave1_handlers.do_weather_week(a, v)
|
||||
def do_rss_add(a, v): wave1_handlers.do_rss_add(a, v)
|
||||
def do_rss_read(a, v): wave1_handlers.do_rss_read(a, v)
|
||||
def do_rss_list(a, v): wave1_handlers.do_rss_list(a, v)
|
||||
def do_ics_create(a, v): wave1_handlers.do_ics_create(a, v)
|
||||
def do_backup_export(a, v): wave1_handlers.do_backup_export(a, v)
|
||||
def do_clip_save(a, v): wave1_handlers.do_clip_save(a, v)
|
||||
def do_clip_list(a, v): wave1_handlers.do_clip_list(a, v)
|
||||
def do_clip_restore(a, v): wave1_handlers.do_clip_restore(a, v)
|
||||
def do_notif_missed(a, v): wave1_handlers.do_notif_missed(a, v)
|
||||
def do_notif_clear(a, v): wave1_handlers.do_notif_clear(a, v)
|
||||
def do_vault_save(a, v): wave1_handlers.do_vault_save(a, v)
|
||||
def do_vault_get(a, v): wave1_handlers.do_vault_get(a, v)
|
||||
def do_vault_list(a, v): wave1_handlers.do_vault_list(a, v)
|
||||
def do_habit_checkin(a, v): wave1_handlers.do_habit_checkin(a, v)
|
||||
def do_habit_streak(a, v): wave1_handlers.do_habit_streak(a, v)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue