Build a mini "workspace messenger" that supports both human-to-human chat and a plugin system. Users can send ordinary text messages to one another, but they can also invoke built-in plugins by sending a message whose receiver is the plugin’s name. The messenger maintains an in-memory store of users, their inboxes, and three plugins you must implement:
StatusPlugin – lets a user set an out-of-office message ("@StatusPlugin set I’m on vacation"). While the status is active, every ordinary message sent to that user triggers an automatic reply to the sender that says "<receiver> is out of office: <reason>".
KudosPlugin – maintains a counter per user. "@KudosPlugin give @alice" increments alice’s kudos count and confirms to the sender. "@KudosPlugin leaderboard" returns the top 3 users sorted by kudos descending.
HuddlePlugin – creates lightweight voice rooms. "@HuddlePlugin start" returns a room id and remembers the creator. "@HuddlePlugin join <id>" adds the sender to that room and notifies everyone already in it. "@HuddlePlugin end <id>" can only be done by the creator; it removes everyone and notifies them the room is closed.
Your task is to implement the Messenger class with:
Plugin commands are only processed when the receiverId exactly matches the plugin name shown above; anything else is treated as a normal message. Plugin replies are appended to the sender’s inbox. Auto-replies are appended to the sender’s inbox immediately after their original message is delivered. All operations should be sub-linear per user/message; global broadcasts are not required.