feat(provider): add automatic recall via prefetch with per-session seen-set
- prefetch() embeds the current message plus a rolling topic (two prior
user messages and the tail of the last reply, recorded by sync_turn)
so short follow-ups retrieve on-topic memories; injects up to
PREFETCH_LIMIT=30 memories per turn as a "Retinue recall (N fresh)"
block
- per-session in-RAM seen-set filters ids already returned, shared with
retinue_memory_search (new include_seen parameter, default false;
limit default now 30); on_session_switch and on_pre_compress clear it
- warm the embedding model on a daemon thread at initialize() and guard
get_model() with a lock so warmup and concurrent tool calls cannot
double-load the 500 MB model
- recall_status() reports the last injection size for Hermes' recall
indicator
- fix mirror data loss: deletions now key on the previous_content
metadata and match exact content first, falling back to a substring
match only when unambiguous; find_by_content split into find_exact
and find_containing (instr-based, so % and _ stay literal)
- docs: AGENTS.org "Recall algorithm" section, Development prefetch
section, corrected similarity-score explanation; version 1.1.1 -> 1.2.0