cd8015ada8
CrmMessagingAdapter is now hybrid: BFF for the conversation list, thread creation, and directory (server-side tenancy); the IIOS MessageSocket (delegated crm.messenger.realtime token) for everything live — history+join, send, typing, read receipts, and reaction annotations. Falls back to the 4s poll only when no socket is available. - messenger-sdk useRealtimeSocket() opens the MessageSocket from the BFF token and passes it to the adapter (adapter rebuilds live once connected) - socket path maps senderId (userId space) → actorId so 'mine'/seen work consistently, killing the actor-vs-user ambiguity in the poll fallback - reaction annotations tracked per message and re-emitted as full sets Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>