Member Junction
    Preparing search index...

    A normalized view of one room participant. This is what a UI grid renders — one tile per view. Raw is included so the UI can attach the participant's video/audio tracks to DOM elements.

    interface LiveKitParticipantView {
        AudioLevel: number;
        ConnectionQuality: "unknown" | "excellent" | "good" | "poor" | "lost";
        DisplayName: string;
        HasAudio: boolean;
        HasVideo: boolean;
        Identity: string;
        IsLocal: boolean;
        IsScreenSharing: boolean;
        IsSpeaking: boolean;
        Raw: Participant;
        Role: LiveKitParticipantRole;
    }
    Index

    Properties

    AudioLevel: number

    Smoothed audio level in 0..1 for meters, sourced from LiveKit's per-participant audio level.

    ConnectionQuality: "unknown" | "excellent" | "good" | "poor" | "lost"

    Connection quality bucket as LiveKit reports it.

    DisplayName: string

    The participant's display name (name), when set; falls back to Identity.

    HasAudio: boolean

    Whether the participant currently has a published, unmuted microphone track.

    HasVideo: boolean

    Whether the participant currently has a published, unmuted camera track.

    Identity: string

    Stable, application-assigned participant identity (the diarization / addressing key).

    IsLocal: boolean

    Whether this is the local participant (the human running this client).

    IsScreenSharing: boolean

    Whether the participant is currently sharing their screen.

    IsSpeaking: boolean

    Whether the participant is currently speaking (LiveKit voice-activity detection).

    Raw: Participant

    The underlying livekit-client participant, exposed ONLY so a UI layer can attach media tracks (view.Raw.getTrackPublication(...)?.track?.attach(el)). Do not mutate it directly — drive the room through import('./livekit-room-controller').LiveKitRoomController instead.

    The participant's room role, derived from metadata (the agent bot reports as 'agent').