ae0a0de9fd
Add four protocol-layer components for Marmot group messaging: 1. MarmotSubscriptionManager: Coordinates relay subscriptions for GroupEvent (kind:445), GiftWrap (kind:1059), and KeyPackage (kind:30443) events. Tracks per-group since timestamps for pagination and syncs with MlsGroupManager state. 2. MarmotInboundProcessor: Processes incoming GroupEvents through outer ChaCha20-Poly1305 decryption → MLS decrypt → inner event extraction. Handles commit detection, conflict resolution via CommitOrdering, and Welcome processing with KeyPackage rotation. 3. MarmotOutboundProcessor: Builds outbound GroupEvents by MLS encrypting inner Nostr events, applying ChaCha20-Poly1305 outer layer, and signing with ephemeral keys for sender privacy. 4. MarmotWelcomeSender: Wraps MLS Welcome messages through the NIP-59 gift wrap pipeline for delivery to new group members. All code in quartz/commonMain (protocol layer). Includes 25 tests covering roundtrip encryption, subscription management, error handling, ephemeral key usage, and Welcome wrapping. https://claude.ai/code/session_01XC5umkmsFB7XQ7xdrouArt