Reactions now use the same peer ID normalization as messages (E.164
format for DMs) to ensure they land in the correct session key. Without
this fix, per-peer DM scopes would route reactions to a JID-based session
while messages go to an E.164-based session, making reactions invisible
to the agent.
- Add resolveReactionPeerId() matching resolvePeerId() logic
- Apply E.164 normalization for DM reactions when senderE164 available
- Add test verifying reactions land in the same session as messages
- Fixes session routing mismatch caught by Codex review
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>