Four additions across the channel registry, SMS, and diagnostics.
- Channel registry methods extracted into a dedicated
RegistersChannelstrait;via()and__call()remain inBaseNotificationfor discoverability BaseNotification::flushChannelRegistry()resets the global channel registry — call it insetUp/tearDownto isolate testsSmsMessagegains sender ID support viafrom()andgetFrom(), giving drivers access to the from-number or sender ID without hardcoding itFcmChannelandSmsChannelnow throw a descriptiveRuntimeExceptionwhen no driver is bound, instead of a generic container resolution error