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
40
main.py
40
main.py
|
|
@ -1636,6 +1636,46 @@ def run_action(action):
|
|||
extensions.do_world_clock(action, _current_voice or '')
|
||||
elif t == 'daily_quote':
|
||||
extensions.do_daily_quote(action, _current_voice or '')
|
||||
elif t == 'magic_8ball':
|
||||
extensions.do_magic_8ball(action, _current_voice or '')
|
||||
elif t == 'gh_list_issues':
|
||||
extensions.do_gh_list_issues(action, _current_voice or '')
|
||||
elif t == 'gh_my_issues':
|
||||
extensions.do_gh_my_issues(action, _current_voice or '')
|
||||
elif t == 'weather_tomorrow':
|
||||
extensions.do_weather_tomorrow(action, _current_voice or '')
|
||||
elif t == 'weather_week':
|
||||
extensions.do_weather_week(action, _current_voice or '')
|
||||
elif t == 'rss_add':
|
||||
extensions.do_rss_add(action, _current_voice or '')
|
||||
elif t == 'rss_read':
|
||||
extensions.do_rss_read(action, _current_voice or '')
|
||||
elif t == 'rss_list':
|
||||
extensions.do_rss_list(action, _current_voice or '')
|
||||
elif t == 'ics_create':
|
||||
extensions.do_ics_create(action, _current_voice or '')
|
||||
elif t == 'backup_export':
|
||||
extensions.do_backup_export(action, _current_voice or '')
|
||||
elif t == 'clip_save':
|
||||
extensions.do_clip_save(action, _current_voice or '')
|
||||
elif t == 'clip_list':
|
||||
extensions.do_clip_list(action, _current_voice or '')
|
||||
elif t == 'clip_restore':
|
||||
extensions.do_clip_restore(action, _current_voice or '')
|
||||
elif t == 'notif_missed':
|
||||
extensions.do_notif_missed(action, _current_voice or '')
|
||||
elif t == 'notif_clear':
|
||||
extensions.do_notif_clear(action, _current_voice or '')
|
||||
elif t == 'vault_save':
|
||||
extensions.do_vault_save(action, _current_voice or '')
|
||||
elif t == 'vault_get':
|
||||
extensions.do_vault_get(action, _current_voice or '')
|
||||
elif t == 'vault_list':
|
||||
extensions.do_vault_list(action, _current_voice or '')
|
||||
elif t == 'habit_checkin':
|
||||
extensions.do_habit_checkin(action, _current_voice or '')
|
||||
elif t == 'habit_streak':
|
||||
extensions.do_habit_streak(action, _current_voice or '')
|
||||
|
||||
|
||||
_current_voice: str = ''
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue