Add a traditional IRC wire protocol listener (RFC 1459/2812) on
configurable port (default :6667), sharing business logic with
the HTTP API via a new service layer.
- IRC listener: NICK, USER, PASS, JOIN, PART, PRIVMSG, NOTICE,
TOPIC, MODE, KICK, QUIT, NAMES, LIST, WHOIS, WHO, AWAY, OPER,
INVITE, LUSERS, MOTD, PING/PONG, CAP
- Service layer: shared logic for both transports including
channel join (with Tier 2 checks: ban/invite/key/limit),
message send (with ban + moderation checks), nick change,
topic, kick, mode, quit broadcast, away, oper, invite
- BroadcastQuit uses FanOut pattern (one insert, N enqueues)
- HTTP handlers delegate to service for all command logic
- Tier 2 mode operations (+b/+i/+s/+k/+l) use service methods
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>