recall: carry self-instruction (message) on the recall_update wire
The recall card could show call_type/trigger_at but not the self-instruction
(additional_context_message) — it was absent from RecallUpdate.to_wire, so
the user couldn't see what future-self was about to do at the scheduled or
fired moment. Extend the wire payload.

- events.RecallUpdate: add `message` field; to_wire emits "message".
- scheduler._publish_recall_update: accept and forward `message`.
- Publish sites carry message=recall.additional_context_message:
  schedule_recall (scheduled) and orchestrator._finalize_recall
  (rescheduled / fired / cancelled). manage_recall cancel/skip omit it
  (no recall object handy; already visible in the prior scheduled card).
- TUI RecallRenderer: preview the message (first line + "(+N lines)",
  capped at 80) on a `msg:` body line when present.
- Tests: RecallUpdate.to_wire carries message (defaults None); renderer
  preview (single/multiline/truncate/empty) and scheduled-card renders it.

Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 3573e29 commit e865a932e5d34e4840f11d716ef0bb66d2e3ce3c
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 5 hours ago
Showing 7 changed files
View
clients/terminal/tui/renderers/recall.py
View
navi/core/events.py
View
navi/core/orchestrator.py
View
navi/core/scheduler.py
View
navi/tools/schedule_recall.py
View
tests/clients/test_recall_renderer.py
View
tests/unit/core/test_events.py