Per-channel state surfaced for session-channel events.
Why only two values?RealtimeSessionService's only channel observable is
ActiveChannels$ (the full plugin set), which fires once on resolve and again
with [] on teardown. There's no opening / closing transition observable
at the channel-plugin level today. Narrowing here is honest about what's
observable; widening later is non-breaking (consumers handling
'open' | 'closed' still type-check against 'opening' | 'open' | 'closing' | 'closed').
Per-channel state surfaced for
session-channelevents.Why only two values?
RealtimeSessionService's only channel observable isActiveChannels$(the full plugin set), which fires once on resolve and again with[]on teardown. There's noopening/closingtransition observable at the channel-plugin level today. Narrowing here is honest about what's observable; widening later is non-breaking (consumers handling'open' | 'closed'still type-check against'opening' | 'open' | 'closing' | 'closed').