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 {
        AgentCanSee?: boolean;
        AudioLevel: number;
        AvatarAudioOnly?: LiveKitAvatarAudioOnly;
        ConnectionQuality: "unknown" | "excellent" | "good" | "poor" | "lost";
        DisplayName: string;
        HasAudio: boolean;
        HasVideo: boolean;
        Identity: string;
        IsLocal: boolean;
        IsScreenSharing: boolean;
        IsSpeaking: boolean;
        Media?: Partial<Pick<MediaParticipant, "Video" | "GetAudioLevel">>;
        Raw: Participant;
        Role: LiveKitParticipantRole;
    }
    Index

    Properties

    AgentCanSee?: boolean

    Whether an agent can see this participant's camera and shared screen: they allowed it (AllowsAgentVision in @memberjunction/ai) and an agent in the room watches (LiveKitRoomState.AgentWatching). Absent means no.

    AudioLevel: number

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

    AvatarAudioOnly?: LiveKitAvatarAudioOnly

    Set on an agent whose avatar the meeting can't show, from its bot's attribute. Absent while the avatar shows, when the agent asked for none, and on anyone who is not an agent. The avatar itself is the bot's camera track named REALTIME_AGENT_AVATAR_TRACK_NAME (@memberjunction/ai), which ToMediaParticipant shows as the avatar.

    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).

    Media?: Partial<Pick<MediaParticipant, "Video" | "GetAudioLevel">>

    Media from outside LiveKit, which ToMediaParticipant shows in place of Raw's tracks and level: a video of a kind here replaces that kind's track, and a level reader replaces Raw.audioLevel. Absent for a participant whose media comes through LiveKit.

    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 its controller (import('./livekit-room-controller').ILiveKitRoomController) instead.

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