Listens for ParticipantDisconnectedEvent on the LiveKit Room. When no
remote participants remain (1:1 call ended by other side), waits 5
seconds then auto-hangs up. The delay allows for brief reconnections.
Also ensures our app properly cleans up when Element X user hangs up
on their end — our side won't sit connected to an empty LiveKit room.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>