Offline mock WhatsApp socket for testing bot logic — same ev surface and
sendMessage() signature as the live socket, producing real
proto.WebMessageInfo objects. No network, CI-safe.
NOT a server emulator: WhatsApp-side behaviour (rate limits, sessions,
encryption) is out of scope; media builds use a stub uploader.
Offline mock WhatsApp socket for testing bot logic — same
evsurface andsendMessage()signature as the live socket, producing real proto.WebMessageInfo objects. No network, CI-safe.NOT a server emulator: WhatsApp-side behaviour (rate limits, sessions, encryption) is out of scope; media builds use a stub uploader.