feat: reminders due-date support + context filtering

reminders_add now accepts optional due: YYYY-MM-DD parameter.
Due date stored as first line of section body in REMINDERS.md.

context_loader.py calls load_due_reminders() instead of loading REMINDERS.md
wholesale — future-dated reminders are suppressed in the system prompt until
their date arrives. Undated reminders always surface (backward compatible).

reminders_list shows due status per entry: [OVERDUE by N days], [due TODAY],
or [due: YYYY-MM-DD] for future items. All reminders visible via the tool
regardless of date; only context surfacing is filtered.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-05-08 21:46:45 -04:00
parent 750cde489d
commit 8e512d4e11
3 changed files with 113 additions and 36 deletions

View File

@@ -76,10 +76,11 @@ system prompt by `context_loader.py` at all tiers.
- Params: `query: str`, `limit: int = 5` (max 20)
- Returns: excerpts with session date, newest first; own sessions only via ContextVars
- User-level (no TOOL_ROLES entry needed)
- [ ] **`reminders` due-date support** — make reminders time-aware
- Add optional `due: str` (ISO date or natural language) to `reminders_add`
- Filter context surfacing: only show reminders where `due` is today or past (or no due date)
- `reminders_list` should show due date and overdue status
- [x] **`reminders` due-date support** — make reminders time-aware — 2026-05-08
- Optional `due: YYYY-MM-DD` on `reminders_add`; stored as `due: date` first line of body
- `context_loader.py` calls `load_due_reminders()` — future-dated sections suppressed until due
- `reminders_list` shows `[OVERDUE]`, `[due TODAY]`, or `[due: YYYY-MM-DD]` per entry
- Backward compatible — existing undated reminders always surface as before
- [ ] **`http_post`** — POST to external URLs
- Params: `url: str`, `body: dict | str`, `headers: dict | None`
- Per-user host allowlist in `home/{user}/http_allowlist.json` (same pattern as email)