feat: Python parity for Wave 6-8 — memory admin / cooking / leftoff / trivia / routines
New module `wave68_handlers.py` (~270 lines) covering the Rust packs that
were Rust-only after Waves 6-8:
- memory_admin: do_memory_count/list/wipe (with full RU plural decl.)
- cooking: do_cooking + reusable match_recipe(phrase) for the 15-dish
preset table. Schedules a "ready!" reminder via scheduler_store.
- leftoff: do_leftoff stitches memory + scheduled tasks + last reply
into a one-paragraph recap. Offline.
- trivia: do_trivia random one-liner from RU/EN MCU pools.
- routines: do_good_night (sleep profile + cancel one-shots),
do_good_morning (default profile + agenda hint),
do_coffee_break (5-min check-in via scheduler).
memory_store: new clear_all() returning removed count, atomic via _save.
extensions.py: imports + set_speak wiring + 9 proxy do_* fns.
main.py: 9 new dispatch elifs.
commands.yaml: 9 new entries (now 196 total).
tests/test_wave68_handlers.py: 15 unit tests covering each handler.
Test helper `_rewire()` re-imports state modules via the existing
isolated_state fixture then re-binds the wave68_handlers module-level
refs — fixes the gotcha where module-level imports cache the OLD
memory_store / scheduler_store instances from process startup.
Tests: 81 → 96 (+15).
This commit is contained in:
parent
5265cb0fbe
commit
94edb73f26
7 changed files with 644 additions and 0 deletions
|
|
@ -31,6 +31,7 @@ import wave1_handlers
|
|||
import personality_handlers
|
||||
import time_tracker_handlers
|
||||
import outlook_handlers
|
||||
import wave68_handlers
|
||||
|
||||
_speak_fn = print
|
||||
_set_clipboard_fn = None
|
||||
|
|
@ -47,6 +48,7 @@ def set_speak(fn):
|
|||
personality_handlers.set_speak(fn)
|
||||
time_tracker_handlers.set_speak(fn)
|
||||
outlook_handlers.set_speak(fn)
|
||||
wave68_handlers.set_speak(fn)
|
||||
|
||||
|
||||
def set_clipboard_fn(fn):
|
||||
|
|
@ -1151,3 +1153,16 @@ def do_outlook_unread_count(a, v): outlook_handlers.do_outlook_unread_count(a, v
|
|||
def do_outlook_latest(a, v): outlook_handlers.do_outlook_latest(a, v)
|
||||
def do_outlook_send_clipboard(a, v): outlook_handlers.do_outlook_send_clipboard(a, v)
|
||||
def do_outlook_summarize_inbox(a, v): outlook_handlers.do_outlook_summarize_inbox(a, v)
|
||||
|
||||
|
||||
# ── Wave 6-8 proxies (to wave68_handlers) ──────────────────────────────────
|
||||
|
||||
def do_memory_count(a, v): wave68_handlers.do_memory_count(a, v)
|
||||
def do_memory_list(a, v): wave68_handlers.do_memory_list(a, v)
|
||||
def do_memory_wipe(a, v): wave68_handlers.do_memory_wipe(a, v)
|
||||
def do_cooking(a, v): wave68_handlers.do_cooking(a, v)
|
||||
def do_leftoff(a, v): wave68_handlers.do_leftoff(a, v)
|
||||
def do_trivia(a, v): wave68_handlers.do_trivia(a, v)
|
||||
def do_good_night(a, v): wave68_handlers.do_good_night(a, v)
|
||||
def do_good_morning(a, v): wave68_handlers.do_good_morning(a, v)
|
||||
def do_coffee_break(a, v): wave68_handlers.do_coffee_break(a, v)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue