@ai-matrx/meet 0.11.43 → 0.11.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/core.cjs +148 -13
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +96 -1
- package/dist/core.d.ts +96 -1
- package/dist/core.js +148 -13
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +148 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +148 -13
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +385 -25
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +791 -431
- package/dist/react.js.map +1 -1
- package/dist/skins/meet.cjs +262 -15
- package/dist/skins/meet.cjs.map +1 -1
- package/dist/skins/meet.d.cts +2 -1
- package/dist/skins/meet.d.ts +2 -1
- package/dist/skins/meet.js +609 -362
- package/dist/skins/meet.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +5 -5
package/dist/core.d.cts
CHANGED
|
@@ -260,6 +260,20 @@ interface MediaRegionState {
|
|
|
260
260
|
readonly audioOutput: "ok" | "blocked";
|
|
261
261
|
readonly notice: DeviceNotice | null;
|
|
262
262
|
readonly offer: DeviceOffer | null;
|
|
263
|
+
/**
|
|
264
|
+
* THE PRE-JOIN CHECK per kind (P1 `perm-prompt-pending`, `perm-blocked-site`, `device-none-found`,
|
|
265
|
+
* `device-busy`): what the preview found BEFORE the room exists. `prompting` = the browser was
|
|
266
|
+
* asked and has not answered (Join stays usable); `unavailable` carries the classified refusal.
|
|
267
|
+
*/
|
|
268
|
+
readonly preview: {
|
|
269
|
+
readonly microphone: DevicePreview;
|
|
270
|
+
readonly camera: DevicePreview;
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/** One kind's pre-join check. `idle` = nothing was tried (or the person turned it off before). */
|
|
274
|
+
interface DevicePreview {
|
|
275
|
+
readonly state: "idle" | "prompting" | "on" | "off" | "unavailable";
|
|
276
|
+
readonly unavailable: MediaUnavailable | null;
|
|
263
277
|
}
|
|
264
278
|
declare const IDLE_MEDIA_REGION: MediaRegionState;
|
|
265
279
|
interface LocalTrackState {
|
|
@@ -687,6 +701,8 @@ interface ShareRegion {
|
|
|
687
701
|
/** The fix, in the core's words (system setting, administrator policy, …), or null. */
|
|
688
702
|
readonly remedy: string | null;
|
|
689
703
|
readonly at: number;
|
|
704
|
+
/** While presenting: whether the share carries sound (`share-audio`). Absent = not known. */
|
|
705
|
+
readonly audio?: boolean;
|
|
690
706
|
}
|
|
691
707
|
declare const NO_SHARE: ShareRegion;
|
|
692
708
|
interface MeetSnapshot {
|
|
@@ -869,6 +885,11 @@ interface MeetSnapshot {
|
|
|
869
885
|
* ask again. Absent for every refusal that does not lift (CORE-DESIGN §11 `wr-denied-reknock`).
|
|
870
886
|
*/
|
|
871
887
|
readonly retryAt?: number | null;
|
|
888
|
+
/**
|
|
889
|
+
* `join` = the person never got into the call this time (`net-cannot-connect`): a network or
|
|
890
|
+
* server failure on the way IN is "can't connect", not "lost your connection".
|
|
891
|
+
*/
|
|
892
|
+
readonly stage?: "join";
|
|
872
893
|
} | null;
|
|
873
894
|
/**
|
|
874
895
|
* Meet wave 5: polls, Q&A, the shared whiteboard and the breakout plan — what the
|
|
@@ -2075,6 +2096,8 @@ interface MeetRoomDriver {
|
|
|
2075
2096
|
supportsVideoEffects?(): boolean;
|
|
2076
2097
|
/** Whether this browser can share a screen at all (iOS cannot). Absent = assume yes. */
|
|
2077
2098
|
supportsScreenShare?(): boolean;
|
|
2099
|
+
/** The screen share being published carries sound (`share-audio`). */
|
|
2100
|
+
screenShareHasAudio?(): boolean;
|
|
2078
2101
|
/**
|
|
2079
2102
|
* Attach a participant's track to a media element. Returns the detach
|
|
2080
2103
|
* function — returning it (rather than exposing `detach`) is what makes a
|
|
@@ -2456,6 +2479,14 @@ interface MediaSupervisor {
|
|
|
2456
2479
|
onDisconnected(): void;
|
|
2457
2480
|
/** "Enable sound" — call from inside the person's click. */
|
|
2458
2481
|
enableAudio(): Promise<void>;
|
|
2482
|
+
/**
|
|
2483
|
+
* The pre-join preview's outcome for one kind: `prompting` when it asks the browser, `on` / `off`
|
|
2484
|
+
* when it settles or is turned off, or the error it was refused with (classified here, against
|
|
2485
|
+
* the permission store, exactly as an in-room refusal is).
|
|
2486
|
+
*/
|
|
2487
|
+
preview(kind: MediaKind, outcome: "prompting" | "on" | "off" | {
|
|
2488
|
+
readonly error: unknown;
|
|
2489
|
+
}): Promise<void>;
|
|
2459
2490
|
/** Use the offered new device. */
|
|
2460
2491
|
acceptOffer(): Promise<void>;
|
|
2461
2492
|
dismissOffer(): void;
|
|
@@ -2637,6 +2668,10 @@ interface RoomEngine {
|
|
|
2637
2668
|
/** S6c: "Enable sound" — resume remote audio the autoplay policy holds. Call inside the click. */
|
|
2638
2669
|
enableAudio(): Promise<void>;
|
|
2639
2670
|
/** S6c: switch to the device the supervisor offered (a new one was plugged in). */
|
|
2671
|
+
/** The pre-join preview's outcome for one kind (the media supervisor classifies a refusal). */
|
|
2672
|
+
previewDevice(kind: "microphone" | "camera", outcome: "prompting" | "on" | "off" | {
|
|
2673
|
+
readonly error: unknown;
|
|
2674
|
+
}): Promise<void>;
|
|
2640
2675
|
acceptDeviceOffer(): Promise<void>;
|
|
2641
2676
|
dismissDeviceOffer(): void;
|
|
2642
2677
|
dismissDeviceNotice(): void;
|
|
@@ -3967,4 +4002,64 @@ declare function participantAttributes(p: MeetParticipant): Record<string, strin
|
|
|
3967
4002
|
/** The listen-only notice's contract code, from why the microphone is off. */
|
|
3968
4003
|
declare function microphoneNoticeCode(track: LocalTrackState, permission?: PermissionReading): "mic-blocked" | "device-lost" | null;
|
|
3969
4004
|
|
|
3970
|
-
|
|
4005
|
+
/**
|
|
4006
|
+
* CG — WHAT THIS BROWSER CAN DO, probed before anything else (CORE-DESIGN §11 `browser-unsupported`,
|
|
4007
|
+
* `share-unsupported-mobile`). Pure over an injected scope so the rules are the tests; the web
|
|
4008
|
+
* reading is `detectCapabilities()` with no argument. Never touches LiveKit.
|
|
4009
|
+
*/
|
|
4010
|
+
type UnsupportedReason = "no_webrtc";
|
|
4011
|
+
interface MeetCapabilities {
|
|
4012
|
+
/** False only when a call cannot run here at all (no WebRTC: an in-app webview, an old browser). */
|
|
4013
|
+
readonly canJoin: boolean;
|
|
4014
|
+
readonly reason: UnsupportedReason | null;
|
|
4015
|
+
/** The in-app browser this looks like (Instagram, Facebook, LinkedIn…), or null. */
|
|
4016
|
+
readonly inAppBrowser: string | null;
|
|
4017
|
+
/** A phone or tablet: no screen sharing from the browser there. */
|
|
4018
|
+
readonly mobile: boolean;
|
|
4019
|
+
/** `getDisplayMedia` exists AND this is not a phone/tablet. */
|
|
4020
|
+
readonly canShareScreen: boolean;
|
|
4021
|
+
}
|
|
4022
|
+
interface ScopeLike {
|
|
4023
|
+
readonly RTCPeerConnection?: unknown;
|
|
4024
|
+
readonly webkitRTCPeerConnection?: unknown;
|
|
4025
|
+
readonly navigator?: {
|
|
4026
|
+
readonly userAgent?: string;
|
|
4027
|
+
readonly maxTouchPoints?: number;
|
|
4028
|
+
readonly mediaDevices?: {
|
|
4029
|
+
readonly getDisplayMedia?: unknown;
|
|
4030
|
+
};
|
|
4031
|
+
};
|
|
4032
|
+
}
|
|
4033
|
+
declare function isMobileUserAgent(userAgent: string, maxTouchPoints?: number): boolean;
|
|
4034
|
+
declare function detectCapabilities(scope?: ScopeLike | null): MeetCapabilities;
|
|
4035
|
+
/** The words for a browser that cannot join: what to open instead. Short lines (layout, not prose). */
|
|
4036
|
+
declare function unsupportedWords(capabilities: MeetCapabilities): {
|
|
4037
|
+
readonly title: string;
|
|
4038
|
+
readonly body: string;
|
|
4039
|
+
};
|
|
4040
|
+
|
|
4041
|
+
/**
|
|
4042
|
+
* MS — SPEAKING WHILE MUTED (CORE-DESIGN §11 `speaking-while-muted`). A pure detector fed the local
|
|
4043
|
+
* microphone level while the person muted themselves: sound that lasts `holdMs` (gaps shorter than
|
|
4044
|
+
* `gapMs` do not break it) fires ONCE, then stays quiet for `cooldownMs` so the nudge never nags.
|
|
4045
|
+
* The level source is the platform's (a browser analyser in the web skin); the rule lives here.
|
|
4046
|
+
*/
|
|
4047
|
+
interface SpeakingWhileMutedOptions {
|
|
4048
|
+
/** Peak level 0..1 that counts as speech. */
|
|
4049
|
+
readonly threshold?: number;
|
|
4050
|
+
/** How long speech must last before the nudge. */
|
|
4051
|
+
readonly holdMs?: number;
|
|
4052
|
+
/** A pause shorter than this does not end the speech. */
|
|
4053
|
+
readonly gapMs?: number;
|
|
4054
|
+
/** After a nudge, no second one for this long. */
|
|
4055
|
+
readonly cooldownMs?: number;
|
|
4056
|
+
}
|
|
4057
|
+
interface SpeakingWhileMutedDetector {
|
|
4058
|
+
/** One level reading at time `at` (ms). True exactly when the nudge should show now. */
|
|
4059
|
+
feed(level: number, at: number): boolean;
|
|
4060
|
+
/** The person unmuted (or left): start over, cooldown included. */
|
|
4061
|
+
reset(): void;
|
|
4062
|
+
}
|
|
4063
|
+
declare function createSpeakingWhileMutedDetector(options?: SpeakingWhileMutedOptions): SpeakingWhileMutedDetector;
|
|
4064
|
+
|
|
4065
|
+
export { ATTENDANCE_CSV_HEADER, AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, type BrowserFamily, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, CallId, CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, CallMode, type CallOutcomePhase, CallState, type CollabAction, CollabPanel, type CollabRequest, type CollabResult, type CollabRuntime, CollabSnapshot, type CollabStoreLike, type ConnectionPolicy, ConnectionQuality, type ConnectionRegion, type ConnectionSupervisor, type ConnectionSupervisorOptions, type CreateCallInviteInput, type CreateMeetingInput, DATA_TOPICS, DEFAULT_CONNECTION_POLICY, DEFAULT_EFFECTS, DEFAULT_LEAVE_POLICY, DEFAULT_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceNotice, type DeviceOffer, type DeviceSnapshot, type DeviceStorage, type DeviceUnavailableReason, type DriverConnectionState, type DriverParticipant, type DriverTrackKind, type DriverTranscription, END_MEETING_NOT_SERVED, type EffectsStorage, type EndMeetingResult, type ExitInput, type ExitPhase, type ExitResolution, type ExitServerWord, type FollowUpDraft, type FollowUpRecipient, type FollowUpSendResult, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, type Ghost, type GuestRecordAccess, type GuestRecordAccessResolution, type GuestRecordAccessSetting, type HostLeavePrompt, IDLE_MEDIA, IDLE_MEDIA_REGION, IDLE_PHASES, IDLE_TRACK, type InRoomClient, type InRoomClientOptions, InviteeInput, InviteeRole, JOIN_REFUSAL_REASONS, type JoinRefusalReason, type JoinRequest, LISTEN_ONLY_NOTICE, LIVEKIT_BASE_DELAYS_MS, LIVE_PHASES, type LeaveChoice, type LeavePolicy, type LibraryRecording, type LiveKitDriverOptions, LobbyEntry, type LocalMediaState, type LocalTrackState, MEETING_INVITE_KIND, MEETING_INVITE_VERSION, MEETING_PASS_HEADER, MEETING_RECORD_GRACE_MS, MEET_ANSWER_CONTEXT_EVENT, MEET_ANSWER_EVENTS, MEET_EVENTS, MEET_REACTIONS, MEET_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, type MediaDevicesLike, type MediaEffects, type MediaKind, type MediaPlatform, type MediaRegionState, type MediaSupervisor, type MediaSupervisorOptions, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, MeetApi, type MeetCapabilities, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetGrants, MeetIdentity, type MeetObservation, MeetParticipant, type MeetPatch, type MeetPhase, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, MeetingAttendee, MeetingChanges, type MeetingChatHistory, MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, MeetingInvitee, MeetingKind, MeetingNote, MeetingOccurrence, MeetingRecord, type MeetingRecordAnswer, type MeetingRecordBundle, type MeetingRecordCache, type MeetingRecordChange, type MeetingRecordFailure, type MeetingRecordParts, type MeetingRecordRestriction, type MeetingRecordRestrictionNotice, type MeetingRecordState, type MeetingSearchHit, type MeetingSearchSource, type MeetingSession, type MeetingSessionOptions, MeetingSettings, type ModerationAction, type ModerationNotice, type ModerationRequest, type ModerationResult, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, NO_SHARE, type NameBook, type NetworkPort, type NoteTakerDispatch, type NoteTakerRefusal, NoteTakerState, type NoteTakerStatus, type ObserveInput, type ObservedConnection, type ObservedPhase, ObserversVisibleTo, OccurrenceOverride, OrganizationId, type OsFamily, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_HAND_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, PARTICIPANT_STANDING_ATTRIBUTE, ParticipantIdentity, ParticipantRole, ParticipantStanding, type PermissionReading, type PhaseEvent, type PhaseEventType, type PlatformDevice, REACTION_TTL_MS, REFUSED_ABSENCE, RESUME_WINDOW_MS, ROOM_EVENTS, ROOM_EVENT_PREFIX, RPCS, type ReconnectPolicyLike, type ReconnectPolicyOptions, type RecordingController, type RecordingControllerOptions, RecordingPolicy, RecordingRecord, RecordingState, type RepositoryOptions, type ResumeMarker, type ResumeStorage, type RoomChatMessage, type RoomDriverFactory, type RoomDriverHandlers, type RoomEngine, type RoomEngineOptions, type RoomEventOutcome, type RoomEventTopic, RoomName, type RoomReaction, type RoomToken, type RoomTokenStorage, RsvpAnswer, RsvpInvitation, type ScheduleMeetingInput, type ShareRegion, type SpeakingWhileMutedDetector, type SpeakingWhileMutedOptions, type Stage, type StageArgs, StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, TranscriptSegment, type UnsupportedReason, UpcomingOccurrence, UserId, type VideoEffect, WAITING_PHASES, WrapUpAnnouncement, type WrapUpStatus, absenceSentence, activeWrapUpSummary, activityAttention, admissionPhase, announceMeeting, applyRoomEvent, assembleMeetingRecord, attendanceCsv, attendanceReport, attendanceTotals, attendeeKey, autoRejoinDelayMs, availableActivities, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, classifyDeviceFailure, clockPosition, computeStage, connectionPolicyFrom, countLabel, createCallCenter, createCallInviteHandler, createConnectionSupervisor, createDeviceManager, createInRoomClient, createLiveKitDriver, createMediaSupervisor, createMeetAi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createReachabilityProbe, createReconnectPolicy, createRecordingController, createRoomEngine, createSpeakingWhileMutedDetector, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, detectBrowser, detectCapabilities, detectOs, deviceChipLabel, deviceFixSteps, deviceNoticeCode, deviceUnavailableReason, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isMobileUserAgent, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, leaveChoices, leavePolicyFrom, listenOnlyNotice, loadFollowUpDraft, loadGuestMeetingRecord, loadMeetingChat, loadMeetingRecord, loadMeetingRecordParts, mapConnectionState, mapQuality, meetingInviteAction, meetingLength, meetingLink, meetingPassHeaders, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeGhosts, mergeRecord, microphoneNoticeCode, moveToRoom, nextPhase, nextTranslationBatch, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, notesDocument, observe as observeMeeting, observedDevice, observedPhase, observedQuality, orderParticipants, parseRoomToken, participantAttributes, participantSummary, performCollab, playableRecordingFileId, projectInvitee, projectLibraryRecording, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSearchHit, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, reasonOf, recordingLabel, recordingNotice, recordingOffsetMs, refusalPhase, rememberedMeetingPass, resolveExit, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setCaptionLanguage, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, takeMoveRequest, takePanelRequest, transcriptDocument, unavailableFrom, uniqueAttendees, unsupportedWords, untranslatedLines, userTopic, wasRefused, webMediaPlatform, wrapUpStatus };
|
package/dist/core.d.ts
CHANGED
|
@@ -260,6 +260,20 @@ interface MediaRegionState {
|
|
|
260
260
|
readonly audioOutput: "ok" | "blocked";
|
|
261
261
|
readonly notice: DeviceNotice | null;
|
|
262
262
|
readonly offer: DeviceOffer | null;
|
|
263
|
+
/**
|
|
264
|
+
* THE PRE-JOIN CHECK per kind (P1 `perm-prompt-pending`, `perm-blocked-site`, `device-none-found`,
|
|
265
|
+
* `device-busy`): what the preview found BEFORE the room exists. `prompting` = the browser was
|
|
266
|
+
* asked and has not answered (Join stays usable); `unavailable` carries the classified refusal.
|
|
267
|
+
*/
|
|
268
|
+
readonly preview: {
|
|
269
|
+
readonly microphone: DevicePreview;
|
|
270
|
+
readonly camera: DevicePreview;
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
/** One kind's pre-join check. `idle` = nothing was tried (or the person turned it off before). */
|
|
274
|
+
interface DevicePreview {
|
|
275
|
+
readonly state: "idle" | "prompting" | "on" | "off" | "unavailable";
|
|
276
|
+
readonly unavailable: MediaUnavailable | null;
|
|
263
277
|
}
|
|
264
278
|
declare const IDLE_MEDIA_REGION: MediaRegionState;
|
|
265
279
|
interface LocalTrackState {
|
|
@@ -687,6 +701,8 @@ interface ShareRegion {
|
|
|
687
701
|
/** The fix, in the core's words (system setting, administrator policy, …), or null. */
|
|
688
702
|
readonly remedy: string | null;
|
|
689
703
|
readonly at: number;
|
|
704
|
+
/** While presenting: whether the share carries sound (`share-audio`). Absent = not known. */
|
|
705
|
+
readonly audio?: boolean;
|
|
690
706
|
}
|
|
691
707
|
declare const NO_SHARE: ShareRegion;
|
|
692
708
|
interface MeetSnapshot {
|
|
@@ -869,6 +885,11 @@ interface MeetSnapshot {
|
|
|
869
885
|
* ask again. Absent for every refusal that does not lift (CORE-DESIGN §11 `wr-denied-reknock`).
|
|
870
886
|
*/
|
|
871
887
|
readonly retryAt?: number | null;
|
|
888
|
+
/**
|
|
889
|
+
* `join` = the person never got into the call this time (`net-cannot-connect`): a network or
|
|
890
|
+
* server failure on the way IN is "can't connect", not "lost your connection".
|
|
891
|
+
*/
|
|
892
|
+
readonly stage?: "join";
|
|
872
893
|
} | null;
|
|
873
894
|
/**
|
|
874
895
|
* Meet wave 5: polls, Q&A, the shared whiteboard and the breakout plan — what the
|
|
@@ -2075,6 +2096,8 @@ interface MeetRoomDriver {
|
|
|
2075
2096
|
supportsVideoEffects?(): boolean;
|
|
2076
2097
|
/** Whether this browser can share a screen at all (iOS cannot). Absent = assume yes. */
|
|
2077
2098
|
supportsScreenShare?(): boolean;
|
|
2099
|
+
/** The screen share being published carries sound (`share-audio`). */
|
|
2100
|
+
screenShareHasAudio?(): boolean;
|
|
2078
2101
|
/**
|
|
2079
2102
|
* Attach a participant's track to a media element. Returns the detach
|
|
2080
2103
|
* function — returning it (rather than exposing `detach`) is what makes a
|
|
@@ -2456,6 +2479,14 @@ interface MediaSupervisor {
|
|
|
2456
2479
|
onDisconnected(): void;
|
|
2457
2480
|
/** "Enable sound" — call from inside the person's click. */
|
|
2458
2481
|
enableAudio(): Promise<void>;
|
|
2482
|
+
/**
|
|
2483
|
+
* The pre-join preview's outcome for one kind: `prompting` when it asks the browser, `on` / `off`
|
|
2484
|
+
* when it settles or is turned off, or the error it was refused with (classified here, against
|
|
2485
|
+
* the permission store, exactly as an in-room refusal is).
|
|
2486
|
+
*/
|
|
2487
|
+
preview(kind: MediaKind, outcome: "prompting" | "on" | "off" | {
|
|
2488
|
+
readonly error: unknown;
|
|
2489
|
+
}): Promise<void>;
|
|
2459
2490
|
/** Use the offered new device. */
|
|
2460
2491
|
acceptOffer(): Promise<void>;
|
|
2461
2492
|
dismissOffer(): void;
|
|
@@ -2637,6 +2668,10 @@ interface RoomEngine {
|
|
|
2637
2668
|
/** S6c: "Enable sound" — resume remote audio the autoplay policy holds. Call inside the click. */
|
|
2638
2669
|
enableAudio(): Promise<void>;
|
|
2639
2670
|
/** S6c: switch to the device the supervisor offered (a new one was plugged in). */
|
|
2671
|
+
/** The pre-join preview's outcome for one kind (the media supervisor classifies a refusal). */
|
|
2672
|
+
previewDevice(kind: "microphone" | "camera", outcome: "prompting" | "on" | "off" | {
|
|
2673
|
+
readonly error: unknown;
|
|
2674
|
+
}): Promise<void>;
|
|
2640
2675
|
acceptDeviceOffer(): Promise<void>;
|
|
2641
2676
|
dismissDeviceOffer(): void;
|
|
2642
2677
|
dismissDeviceNotice(): void;
|
|
@@ -3967,4 +4002,64 @@ declare function participantAttributes(p: MeetParticipant): Record<string, strin
|
|
|
3967
4002
|
/** The listen-only notice's contract code, from why the microphone is off. */
|
|
3968
4003
|
declare function microphoneNoticeCode(track: LocalTrackState, permission?: PermissionReading): "mic-blocked" | "device-lost" | null;
|
|
3969
4004
|
|
|
3970
|
-
|
|
4005
|
+
/**
|
|
4006
|
+
* CG — WHAT THIS BROWSER CAN DO, probed before anything else (CORE-DESIGN §11 `browser-unsupported`,
|
|
4007
|
+
* `share-unsupported-mobile`). Pure over an injected scope so the rules are the tests; the web
|
|
4008
|
+
* reading is `detectCapabilities()` with no argument. Never touches LiveKit.
|
|
4009
|
+
*/
|
|
4010
|
+
type UnsupportedReason = "no_webrtc";
|
|
4011
|
+
interface MeetCapabilities {
|
|
4012
|
+
/** False only when a call cannot run here at all (no WebRTC: an in-app webview, an old browser). */
|
|
4013
|
+
readonly canJoin: boolean;
|
|
4014
|
+
readonly reason: UnsupportedReason | null;
|
|
4015
|
+
/** The in-app browser this looks like (Instagram, Facebook, LinkedIn…), or null. */
|
|
4016
|
+
readonly inAppBrowser: string | null;
|
|
4017
|
+
/** A phone or tablet: no screen sharing from the browser there. */
|
|
4018
|
+
readonly mobile: boolean;
|
|
4019
|
+
/** `getDisplayMedia` exists AND this is not a phone/tablet. */
|
|
4020
|
+
readonly canShareScreen: boolean;
|
|
4021
|
+
}
|
|
4022
|
+
interface ScopeLike {
|
|
4023
|
+
readonly RTCPeerConnection?: unknown;
|
|
4024
|
+
readonly webkitRTCPeerConnection?: unknown;
|
|
4025
|
+
readonly navigator?: {
|
|
4026
|
+
readonly userAgent?: string;
|
|
4027
|
+
readonly maxTouchPoints?: number;
|
|
4028
|
+
readonly mediaDevices?: {
|
|
4029
|
+
readonly getDisplayMedia?: unknown;
|
|
4030
|
+
};
|
|
4031
|
+
};
|
|
4032
|
+
}
|
|
4033
|
+
declare function isMobileUserAgent(userAgent: string, maxTouchPoints?: number): boolean;
|
|
4034
|
+
declare function detectCapabilities(scope?: ScopeLike | null): MeetCapabilities;
|
|
4035
|
+
/** The words for a browser that cannot join: what to open instead. Short lines (layout, not prose). */
|
|
4036
|
+
declare function unsupportedWords(capabilities: MeetCapabilities): {
|
|
4037
|
+
readonly title: string;
|
|
4038
|
+
readonly body: string;
|
|
4039
|
+
};
|
|
4040
|
+
|
|
4041
|
+
/**
|
|
4042
|
+
* MS — SPEAKING WHILE MUTED (CORE-DESIGN §11 `speaking-while-muted`). A pure detector fed the local
|
|
4043
|
+
* microphone level while the person muted themselves: sound that lasts `holdMs` (gaps shorter than
|
|
4044
|
+
* `gapMs` do not break it) fires ONCE, then stays quiet for `cooldownMs` so the nudge never nags.
|
|
4045
|
+
* The level source is the platform's (a browser analyser in the web skin); the rule lives here.
|
|
4046
|
+
*/
|
|
4047
|
+
interface SpeakingWhileMutedOptions {
|
|
4048
|
+
/** Peak level 0..1 that counts as speech. */
|
|
4049
|
+
readonly threshold?: number;
|
|
4050
|
+
/** How long speech must last before the nudge. */
|
|
4051
|
+
readonly holdMs?: number;
|
|
4052
|
+
/** A pause shorter than this does not end the speech. */
|
|
4053
|
+
readonly gapMs?: number;
|
|
4054
|
+
/** After a nudge, no second one for this long. */
|
|
4055
|
+
readonly cooldownMs?: number;
|
|
4056
|
+
}
|
|
4057
|
+
interface SpeakingWhileMutedDetector {
|
|
4058
|
+
/** One level reading at time `at` (ms). True exactly when the nudge should show now. */
|
|
4059
|
+
feed(level: number, at: number): boolean;
|
|
4060
|
+
/** The person unmuted (or left): start over, cooldown included. */
|
|
4061
|
+
reset(): void;
|
|
4062
|
+
}
|
|
4063
|
+
declare function createSpeakingWhileMutedDetector(options?: SpeakingWhileMutedOptions): SpeakingWhileMutedDetector;
|
|
4064
|
+
|
|
4065
|
+
export { ATTENDANCE_CSV_HEADER, AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, type BrowserFamily, CALL_INVITE_KIND, CALL_INVITE_VERSION, CONSENT_NOTICE_ATTRIBUTE, type CallCenter, type CallCenterOptions, CallId, CallInvite, type CallInviteHandlerOptions, type CallInvitePayload, CallMode, type CallOutcomePhase, CallState, type CollabAction, CollabPanel, type CollabRequest, type CollabResult, type CollabRuntime, CollabSnapshot, type CollabStoreLike, type ConnectionPolicy, ConnectionQuality, type ConnectionRegion, type ConnectionSupervisor, type ConnectionSupervisorOptions, type CreateCallInviteInput, type CreateMeetingInput, DATA_TOPICS, DEFAULT_CONNECTION_POLICY, DEFAULT_EFFECTS, DEFAULT_LEAVE_POLICY, DEFAULT_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceNotice, type DeviceOffer, type DeviceSnapshot, type DeviceStorage, type DeviceUnavailableReason, type DriverConnectionState, type DriverParticipant, type DriverTrackKind, type DriverTranscription, END_MEETING_NOT_SERVED, type EffectsStorage, type EndMeetingResult, type ExitInput, type ExitPhase, type ExitResolution, type ExitServerWord, type FollowUpDraft, type FollowUpRecipient, type FollowUpSendResult, GUEST_RECORD_ACCESS_CHOICES, GUEST_RECORD_ACCESS_LEVELS, GUEST_RECORD_ACCESS_METADATA_KEY, GUEST_RECORD_NOT_SHARED, type Ghost, type GuestRecordAccess, type GuestRecordAccessResolution, type GuestRecordAccessSetting, type HostLeavePrompt, IDLE_MEDIA, IDLE_MEDIA_REGION, IDLE_PHASES, IDLE_TRACK, type InRoomClient, type InRoomClientOptions, InviteeInput, InviteeRole, JOIN_REFUSAL_REASONS, type JoinRefusalReason, type JoinRequest, LISTEN_ONLY_NOTICE, LIVEKIT_BASE_DELAYS_MS, LIVE_PHASES, type LeaveChoice, type LeavePolicy, type LibraryRecording, type LiveKitDriverOptions, LobbyEntry, type LocalMediaState, type LocalTrackState, MEETING_INVITE_KIND, MEETING_INVITE_VERSION, MEETING_PASS_HEADER, MEETING_RECORD_GRACE_MS, MEET_ANSWER_CONTEXT_EVENT, MEET_ANSWER_EVENTS, MEET_EVENTS, MEET_REACTIONS, MEET_ROUTES, MEET_SCHEMA, MODERATION_ACTIONS, type MediaDevicesLike, type MediaEffects, type MediaKind, type MediaPlatform, type MediaRegionState, type MediaSupervisor, type MediaSupervisorOptions, type MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, MeetApi, type MeetCapabilities, type MeetDevice, MeetError, type MeetErrorCode, type MeetEvent, type MeetGrants, MeetIdentity, type MeetObservation, MeetParticipant, type MeetPatch, type MeetPhase, type MeetRepository, type MeetRoomDriver, type MeetSnapshot, type MeetStore, MeetingAttendee, MeetingChanges, type MeetingChatHistory, MeetingId, type MeetingInviteHandlerOptions, type MeetingInvitePayload, MeetingInvitee, MeetingKind, MeetingNote, MeetingOccurrence, MeetingRecord, type MeetingRecordAnswer, type MeetingRecordBundle, type MeetingRecordCache, type MeetingRecordChange, type MeetingRecordFailure, type MeetingRecordParts, type MeetingRecordRestriction, type MeetingRecordRestrictionNotice, type MeetingRecordState, type MeetingSearchHit, type MeetingSearchSource, type MeetingSession, type MeetingSessionOptions, MeetingSettings, type ModerationAction, type ModerationNotice, type ModerationRequest, type ModerationResult, NOTE_TAKER_IDENTITY_PREFIX, NOTE_TAKER_METADATA_KEY, NO_GRANTS, NO_SHARE, type NameBook, type NetworkPort, type NoteTakerDispatch, type NoteTakerRefusal, NoteTakerState, type NoteTakerStatus, type ObserveInput, type ObservedConnection, type ObservedPhase, ObserversVisibleTo, OccurrenceOverride, OrganizationId, type OsFamily, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_HAND_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, PARTICIPANT_STANDING_ATTRIBUTE, ParticipantIdentity, ParticipantRole, ParticipantStanding, type PermissionReading, type PhaseEvent, type PhaseEventType, type PlatformDevice, REACTION_TTL_MS, REFUSED_ABSENCE, RESUME_WINDOW_MS, ROOM_EVENTS, ROOM_EVENT_PREFIX, RPCS, type ReconnectPolicyLike, type ReconnectPolicyOptions, type RecordingController, type RecordingControllerOptions, RecordingPolicy, RecordingRecord, RecordingState, type RepositoryOptions, type ResumeMarker, type ResumeStorage, type RoomChatMessage, type RoomDriverFactory, type RoomDriverHandlers, type RoomEngine, type RoomEngineOptions, type RoomEventOutcome, type RoomEventTopic, RoomName, type RoomReaction, type RoomToken, type RoomTokenStorage, RsvpAnswer, RsvpInvitation, type ScheduleMeetingInput, type ShareRegion, type SpeakingWhileMutedDetector, type SpeakingWhileMutedOptions, type Stage, type StageArgs, StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, TranscriptSegment, type UnsupportedReason, UpcomingOccurrence, UserId, type VideoEffect, WAITING_PHASES, WrapUpAnnouncement, type WrapUpStatus, absenceSentence, activeWrapUpSummary, activityAttention, admissionPhase, announceMeeting, applyRoomEvent, assembleMeetingRecord, attendanceCsv, attendanceReport, attendanceTotals, attendeeKey, autoRejoinDelayMs, availableActivities, callInviteAction, callInviteText, callStateLabel, canModerate, canModerateParticipant, canTransition, captionSegment, changesPatch, classifyDeviceFailure, clockPosition, computeStage, connectionPolicyFrom, countLabel, createCallCenter, createCallInviteHandler, createConnectionSupervisor, createDeviceManager, createInRoomClient, createLiveKitDriver, createMediaSupervisor, createMeetAi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createReachabilityProbe, createReconnectPolicy, createRecordingController, createRoomEngine, createSpeakingWhileMutedDetector, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, detectBrowser, detectCapabilities, detectOs, deviceChipLabel, deviceFixSteps, deviceNoticeCode, deviceUnavailableReason, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isMobileUserAgent, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, leaveChoices, leavePolicyFrom, listenOnlyNotice, loadFollowUpDraft, loadGuestMeetingRecord, loadMeetingChat, loadMeetingRecord, loadMeetingRecordParts, mapConnectionState, mapQuality, meetingInviteAction, meetingLength, meetingLink, meetingPassHeaders, meetingPath, meetingSlug, meetingTopic, meetingWhen, mergeCaption, mergeGhosts, mergeRecord, microphoneNoticeCode, moveToRoom, nextPhase, nextTranslationBatch, normalizeDeviceError, normalizeMeetError, normalizeSpoken, noteTakerIdentity, noteTakerLabel, noteTakerParticipant, noteTakerStatus, notesDocument, observe as observeMeeting, observedDevice, observedPhase, observedQuality, orderParticipants, parseRoomToken, participantAttributes, participantSummary, performCollab, playableRecordingFileId, projectInvitee, projectLibraryRecording, projectNote, projectOccurrence, projectOverride, projectParticipant, projectRsvpInvitation, projectSearchHit, projectSegment, projectUpcoming, pushMeetingToGoogleCalendar, readServerRefusal, readableTranscript, reasonOf, recordingLabel, recordingNotice, recordingOffsetMs, refusalPhase, rememberedMeetingPass, resolveExit, roleOf, roomTopic, rootAttributes, searchTranscript, sendFollowUp, setCaptionLanguage, setGuestRecordAccess, settingsPatch, snapshotParticipant, snippetRuns, staticObservation, summarizeMeetingRecordRestrictions, takeMoveRequest, takePanelRequest, transcriptDocument, unavailableFrom, uniqueAttendees, unsupportedWords, untranslatedLines, userTopic, wasRefused, webMediaPlatform, wrapUpStatus };
|