From 93b8e7a0b9e47941f2cfe6527a6054da6444dbb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Monnom?= Date: Sat, 7 Feb 2026 23:03:56 -0800 Subject: [PATCH] wip --- livekit-rtc/livekit/rtc/participant.py | 5 +++++ livekit-rtc/livekit/rtc/room.py | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/livekit-rtc/livekit/rtc/participant.py b/livekit-rtc/livekit/rtc/participant.py index d61e79a2..d2794ace 100644 --- a/livekit-rtc/livekit/rtc/participant.py +++ b/livekit-rtc/livekit/rtc/participant.py @@ -119,6 +119,11 @@ def kind(self) -> proto_participant.ParticipantKind.ValueType: """Participant's kind (e.g., regular participant, ingress, egress, sip, agent).""" return self._info.kind + @property + def permissions(self) -> proto_participant.ParticipantPermission: + """The participant's permissions within the room.""" + return self._info.permission + @property def disconnect_reason( self, diff --git a/livekit-rtc/livekit/rtc/room.py b/livekit-rtc/livekit/rtc/room.py index 3fc56a17..e8bc6779 100644 --- a/livekit-rtc/livekit/rtc/room.py +++ b/livekit-rtc/livekit/rtc/room.py @@ -65,6 +65,7 @@ "participant_attributes_changed", "connection_quality_changed", "participant_encryption_status_changed", + "participant_permission_changed", "data_received", "sip_dtmf_received", "transcription_received", @@ -787,6 +788,16 @@ def _on_room_event(self, event: proto_room.RoomEvent): participant, event.participant_encryption_status_changed.is_encrypted, ) + elif which == "participant_permission_changed": + identity = event.participant_permission_changed.participant_identity + participant = self._retrieve_participant(identity) + assert isinstance(participant, Participant) + participant._info.permission.CopyFrom(event.participant_permission_changed.permission) + self.emit( + "participant_permission_changed", + participant, + participant.permissions, + ) elif which == "connection_quality_changed": identity = event.connection_quality_changed.participant_identity # TODO: pass participant identity