@ai-matrx/meet 0.11.29 → 0.11.30
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 +2 -2
- package/dist/core.cjs +407 -30
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +186 -5
- package/dist/core.d.ts +186 -5
- package/dist/core.js +407 -30
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +407 -30
- 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 +407 -30
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +498 -30
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -9
- package/dist/react.d.ts +1 -9
- package/dist/react.js +498 -30
- package/dist/react.js.map +1 -1
- package/dist/skins/meet.cjs +250 -22
- package/dist/skins/meet.cjs.map +1 -1
- package/dist/skins/meet.js +250 -22
- package/dist/skins/meet.js.map +1 -1
- package/dist/styles.css +46 -0
- package/package.json +4 -4
package/dist/core.d.cts
CHANGED
|
@@ -152,12 +152,55 @@ declare function displayNameFor(book: NameBook, identity: ParticipantIdentity |
|
|
|
152
152
|
* there is no second wording to keep in sync.
|
|
153
153
|
*/
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* WHY a device is unusable, in the contract's words (CORE-DESIGN §3.2, the `mic` / `camera`
|
|
157
|
+
* region's `unavailable:<reason>`). The media supervisor (`media-supervisor.ts`) decides it from
|
|
158
|
+
* the browser's error AND the Permissions API, because the error alone cannot tell a person's
|
|
159
|
+
* Block from an operating-system refusal or a stale device id.
|
|
160
|
+
*/
|
|
161
|
+
type DeviceUnavailableReason = "denied" | "blocked_site" | "blocked_os" | "none" | "busy" | "failed" | "revoked";
|
|
155
162
|
/** Why a local track is not publishing, in the browser's terms plus a remedy. */
|
|
156
163
|
interface MediaUnavailable {
|
|
157
164
|
readonly code: string;
|
|
158
165
|
readonly message: string;
|
|
159
166
|
readonly remedy: string;
|
|
167
|
+
/** The region reason (S6c). Absent on states recorded before the supervisor classified them. */
|
|
168
|
+
readonly reason?: DeviceUnavailableReason | undefined;
|
|
169
|
+
}
|
|
170
|
+
/** What the browser's permission store says for one device kind. `unknown` = no Permissions API. */
|
|
171
|
+
type PermissionReading = "granted" | "denied" | "prompt" | "unknown";
|
|
172
|
+
/** A device change the person is told about (S6c): unplugged → switched, or nothing left. */
|
|
173
|
+
interface DeviceNotice {
|
|
174
|
+
readonly id: number;
|
|
175
|
+
readonly kind: "microphone" | "camera";
|
|
176
|
+
/** `switched` = the meeting moved to another device; `lost` = none of this kind is left. */
|
|
177
|
+
readonly outcome: "switched" | "lost";
|
|
178
|
+
/** The device that went away, by label (empty when the browser hid labels). */
|
|
179
|
+
readonly from: string;
|
|
180
|
+
/** The device now in use (`switched` only). */
|
|
181
|
+
readonly to: string | null;
|
|
182
|
+
}
|
|
183
|
+
/** A device that just appeared — offered, never switched to silently (catalog `device-default-changed`). */
|
|
184
|
+
interface DeviceOffer {
|
|
185
|
+
readonly kind: "microphone" | "camera";
|
|
186
|
+
readonly deviceId: string;
|
|
187
|
+
readonly label: string;
|
|
160
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* THE MEDIA REGIONS THE SUPERVISOR OWNS (CORE-DESIGN §3.2 `audio_output`, and the inputs the
|
|
191
|
+
* `mic` / `camera` regions are derived from). None of it can change the call phase.
|
|
192
|
+
*/
|
|
193
|
+
interface MediaRegionState {
|
|
194
|
+
readonly permission: {
|
|
195
|
+
readonly microphone: PermissionReading;
|
|
196
|
+
readonly camera: PermissionReading;
|
|
197
|
+
};
|
|
198
|
+
/** `blocked` = the browser's autoplay policy is holding remote audio until a gesture. */
|
|
199
|
+
readonly audioOutput: "ok" | "blocked";
|
|
200
|
+
readonly notice: DeviceNotice | null;
|
|
201
|
+
readonly offer: DeviceOffer | null;
|
|
202
|
+
}
|
|
203
|
+
declare const IDLE_MEDIA_REGION: MediaRegionState;
|
|
161
204
|
interface LocalTrackState {
|
|
162
205
|
/** True only when the track is actually published. Never optimistic. */
|
|
163
206
|
readonly enabled: boolean;
|
|
@@ -174,7 +217,7 @@ interface LocalMediaState {
|
|
|
174
217
|
}
|
|
175
218
|
declare const IDLE_TRACK: LocalTrackState;
|
|
176
219
|
declare const IDLE_MEDIA: LocalMediaState;
|
|
177
|
-
declare function unavailableFrom(error: MeetError): MediaUnavailable;
|
|
220
|
+
declare function unavailableFrom(error: MeetError, reason?: DeviceUnavailableReason): MediaUnavailable;
|
|
178
221
|
/**
|
|
179
222
|
* THE SENTENCE. One definition, so the room chrome, a host's own chrome and the
|
|
180
223
|
* tests cannot say three different things about the same fact.
|
|
@@ -702,6 +745,11 @@ interface MeetSnapshot {
|
|
|
702
745
|
* microphone is a state with a remedy, not a failed join.
|
|
703
746
|
*/
|
|
704
747
|
readonly media: LocalMediaState;
|
|
748
|
+
/**
|
|
749
|
+
* S6c — the media supervisor's regions: permission per kind, autoplay (`audio_output`), the
|
|
750
|
+
* last device change and an offered new device. Written only by `media-supervisor.ts`.
|
|
751
|
+
*/
|
|
752
|
+
readonly mediaRegion: MediaRegionState;
|
|
705
753
|
/** The last failure, with its remedy. Never null-and-hoping. */
|
|
706
754
|
readonly failure: {
|
|
707
755
|
readonly message: string;
|
|
@@ -1873,6 +1921,15 @@ interface RoomDriverHandlers {
|
|
|
1873
1921
|
* connect and on every change. Optional so an older host driver still works.
|
|
1874
1922
|
*/
|
|
1875
1923
|
roomMetadata?(metadata: string): void;
|
|
1924
|
+
/**
|
|
1925
|
+
* S6c — MEDIA. Can remote audio play (`false` = the browser's autoplay policy is holding it
|
|
1926
|
+
* until a gesture)? Fired on every change and once right after connect. Optional for older drivers.
|
|
1927
|
+
*/
|
|
1928
|
+
audioPlayback?(canPlay: boolean): void;
|
|
1929
|
+
/** S6c — the device list changed (plugged / unplugged), AFTER the SDK re-picked defaults. */
|
|
1930
|
+
devicesChanged?(): void;
|
|
1931
|
+
/** S6c — the SDK could not acquire or keep a local device. `kind` when the SDK knows it. */
|
|
1932
|
+
mediaDeviceError?(error: unknown, kind: "audioinput" | "videoinput" | null): void;
|
|
1876
1933
|
}
|
|
1877
1934
|
/** A camera background effect. `image` replaces the background with `imageUrl`. */
|
|
1878
1935
|
type VideoEffect = {
|
|
@@ -1925,6 +1982,11 @@ interface MeetRoomDriver {
|
|
|
1925
1982
|
/** The device the driver actually selected, so the UI never lies about it. */
|
|
1926
1983
|
activeDevices(): Readonly<Record<"audioinput" | "videoinput" | "audiooutput", string | null>>;
|
|
1927
1984
|
switchDevice(kind: "audioinput" | "videoinput" | "audiooutput", deviceId: string): Promise<void>;
|
|
1985
|
+
/**
|
|
1986
|
+
* S6c — resume remote audio the autoplay policy blocked. MUST run inside the person's click
|
|
1987
|
+
* (the gesture is what the browser checks). Optional: a driver without it never blocks.
|
|
1988
|
+
*/
|
|
1989
|
+
startAudio?(): Promise<void>;
|
|
1928
1990
|
}
|
|
1929
1991
|
type RoomDriverFactory = (handlers: RoomDriverHandlers) => MeetRoomDriver | Promise<MeetRoomDriver>;
|
|
1930
1992
|
/** Topics for the in-room control plane. One place, so senders cannot drift. */
|
|
@@ -2181,6 +2243,110 @@ declare function createRecordingController(options: RecordingControllerOptions):
|
|
|
2181
2243
|
/** The indicator's words. One definition, so no surface invents a softer one. */
|
|
2182
2244
|
declare function recordingLabel(state: RecordingState): string | null;
|
|
2183
2245
|
|
|
2246
|
+
/**
|
|
2247
|
+
* MS — THE MEDIA SUPERVISOR (CORE-DESIGN §3.3, step S6c).
|
|
2248
|
+
*
|
|
2249
|
+
* Owns the media regions of §3.2 that are about THIS person's devices and speakers:
|
|
2250
|
+
*
|
|
2251
|
+
* - **Permission per kind.** The browser's error alone cannot tell a person's Block from an
|
|
2252
|
+
* operating-system refusal or a stale device id (`NotAllowedError` is all three in Chrome), so
|
|
2253
|
+
* every refusal is classified against the Permissions API: `denied` there is the person's (or
|
|
2254
|
+
* the site's) Block; a refusal while the browser says `granted` is the operating system. A kind
|
|
2255
|
+
* whose permission is `denied` reads `unavailable:denied` even when nothing tried to open it —
|
|
2256
|
+
* a camera the browser will not hand over is not "off by choice".
|
|
2257
|
+
* - **Live device switching.** LiveKit falls back to the default for a lost MICROPHONE by itself
|
|
2258
|
+
* but MUTES a lost camera (client-sdk-js #2035). On every device change the supervisor checks
|
|
2259
|
+
* the devices in use against the devices present: a vanished camera moves to the next camera;
|
|
2260
|
+
* a vanished microphone is reported with the device LiveKit moved to; nothing left of a kind is
|
|
2261
|
+
* `unavailable:none`. Each is a notice — never a silent switch. A NEW device is offered, never
|
|
2262
|
+
* taken (a person mid-sentence does not want their mic to jump to a headset being charged).
|
|
2263
|
+
* - **Autoplay.** `audio_output` = `blocked` while the browser holds remote audio until a gesture;
|
|
2264
|
+
* `enableAudio()` runs inside the person's click; the check is repeated when the tab comes back.
|
|
2265
|
+
*
|
|
2266
|
+
* 🚨 NOTHING HERE CHANGES THE CALL PHASE (§3.1 invariant). Every outcome is region state.
|
|
2267
|
+
* 🚨 NO BROWSER GLOBAL IS TOUCHED HERE: the browser half is the `MediaPlatform` port (§3.5) —
|
|
2268
|
+
* `webMediaPlatform()` below is the web adapter; a React Native host passes its own.
|
|
2269
|
+
*/
|
|
2270
|
+
|
|
2271
|
+
type MediaKind = "microphone" | "camera";
|
|
2272
|
+
type BrowserFamily = "chrome" | "edge" | "firefox" | "safari" | "other";
|
|
2273
|
+
type OsFamily = "mac" | "windows" | "ios" | "android" | "linux" | "other";
|
|
2274
|
+
interface PlatformDevice {
|
|
2275
|
+
readonly deviceId: string;
|
|
2276
|
+
readonly kind: string;
|
|
2277
|
+
readonly label: string;
|
|
2278
|
+
}
|
|
2279
|
+
/** The slice of §3.5's `MeetPlatform` the media supervisor needs. */
|
|
2280
|
+
interface MediaPlatform {
|
|
2281
|
+
readonly browser: BrowserFamily;
|
|
2282
|
+
readonly os: OsFamily;
|
|
2283
|
+
/** The Permissions API reading, or `unknown` where the browser has none for this kind. */
|
|
2284
|
+
queryPermission(kind: MediaKind): Promise<PermissionReading>;
|
|
2285
|
+
/** Call `onChange` whenever the permission for `kind` changes. Returns the unsubscribe. */
|
|
2286
|
+
watchPermission(kind: MediaKind, onChange: (reading: PermissionReading) => void): () => void;
|
|
2287
|
+
listDevices(): Promise<readonly PlatformDevice[]>;
|
|
2288
|
+
/** The tab became visible again (autoplay is re-checked then). Returns the unsubscribe. */
|
|
2289
|
+
onVisible(callback: () => void): () => void;
|
|
2290
|
+
}
|
|
2291
|
+
/**
|
|
2292
|
+
* The region reason for a refused device, from the error AND the permission store.
|
|
2293
|
+
* Pure — the rules are the tests.
|
|
2294
|
+
*/
|
|
2295
|
+
declare function classifyDeviceFailure(error: {
|
|
2296
|
+
readonly code: string;
|
|
2297
|
+
readonly message: string;
|
|
2298
|
+
}, permission: PermissionReading): DeviceUnavailableReason;
|
|
2299
|
+
/** The contract notice code for an unusable device (HARNESS-CONTRACT §4). */
|
|
2300
|
+
declare function deviceNoticeCode(kind: MediaKind, reason: DeviceUnavailableReason): "mic-blocked" | "camera-blocked" | "device-lost";
|
|
2301
|
+
/**
|
|
2302
|
+
* The region reason this track is in, or null when the device is usable (on, or off by choice).
|
|
2303
|
+
* A kind the browser's permission store denies is `denied` even when nothing tried to open it.
|
|
2304
|
+
*/
|
|
2305
|
+
declare function deviceUnavailableReason(track: LocalTrackState, permission: PermissionReading): DeviceUnavailableReason | null;
|
|
2306
|
+
/** The short chip text — the skin's words may differ; the reason is the fact. */
|
|
2307
|
+
declare function deviceChipLabel(kind: MediaKind, reason: DeviceUnavailableReason): string;
|
|
2308
|
+
/**
|
|
2309
|
+
* THE REAL REMEDY, per browser and operating system: the steps a person actually follows. Short
|
|
2310
|
+
* lines (interface text is layout); the last step is always the Try again the screen offers.
|
|
2311
|
+
*/
|
|
2312
|
+
declare function deviceFixSteps(kind: MediaKind, reason: DeviceUnavailableReason, where: {
|
|
2313
|
+
readonly browser: BrowserFamily;
|
|
2314
|
+
readonly os: OsFamily;
|
|
2315
|
+
}): readonly string[];
|
|
2316
|
+
declare function detectBrowser(userAgent: string): BrowserFamily;
|
|
2317
|
+
declare function detectOs(userAgent: string, maxTouchPoints?: number): OsFamily;
|
|
2318
|
+
/** The browser adapter, or null outside a browser (SSR, a test, React Native without one). */
|
|
2319
|
+
declare function webMediaPlatform(): MediaPlatform | null;
|
|
2320
|
+
interface MediaSupervisorOptions {
|
|
2321
|
+
readonly store: MeetStore;
|
|
2322
|
+
readonly platform: MediaPlatform | null;
|
|
2323
|
+
/** The live room's driver, or null between rooms. */
|
|
2324
|
+
readonly driver: () => MeetRoomDriver | null;
|
|
2325
|
+
readonly report: (level: "info" | "warn" | "error", message: string, remedy?: string) => void;
|
|
2326
|
+
}
|
|
2327
|
+
interface MediaSupervisor {
|
|
2328
|
+
/** Begin watching permissions and visibility (idempotent). */
|
|
2329
|
+
start(): void;
|
|
2330
|
+
stop(): void;
|
|
2331
|
+
/** The `MediaUnavailable` for a refused device: the browser's words + the region reason. */
|
|
2332
|
+
unavailable(error: unknown, kind: MediaKind, operation: string): Promise<MediaUnavailable>;
|
|
2333
|
+
/** Driver handlers (wired by the engine). */
|
|
2334
|
+
onAudioPlayback(canPlay: boolean): void;
|
|
2335
|
+
onDevicesChanged(): void;
|
|
2336
|
+
onDeviceError(error: unknown, kind: "audioinput" | "videoinput" | null): void;
|
|
2337
|
+
/** The engine connected a room: remember which devices are in use now. */
|
|
2338
|
+
onConnected(): void;
|
|
2339
|
+
/** The room is gone: autoplay and device notices belong to the room. */
|
|
2340
|
+
onDisconnected(): void;
|
|
2341
|
+
/** "Enable sound" — call from inside the person's click. */
|
|
2342
|
+
enableAudio(): Promise<void>;
|
|
2343
|
+
/** Use the offered new device. */
|
|
2344
|
+
acceptOffer(): Promise<void>;
|
|
2345
|
+
dismissOffer(): void;
|
|
2346
|
+
dismissNotice(): void;
|
|
2347
|
+
}
|
|
2348
|
+
declare function createMediaSupervisor(options: MediaSupervisorOptions): MediaSupervisor;
|
|
2349
|
+
|
|
2184
2350
|
/**
|
|
2185
2351
|
* THE ROOM ENGINE — the object a host mounts once and never reasons about.
|
|
2186
2352
|
*
|
|
@@ -2259,6 +2425,11 @@ interface RoomEngineOptions {
|
|
|
2259
2425
|
* (default: `navigator.onLine`); `probe` = do our API and the media server answer (default:
|
|
2260
2426
|
* assume yes); `resume` = per-tab storage for the reload-after-offline marker (default: none).
|
|
2261
2427
|
*/
|
|
2428
|
+
/**
|
|
2429
|
+
* S6c — the media supervisor's platform port (permissions, device list, visibility). Default:
|
|
2430
|
+
* the browser's (`webMediaPlatform()`); `null` turns the supervisor's browser reads off.
|
|
2431
|
+
*/
|
|
2432
|
+
mediaPlatform?: MediaPlatform | null | undefined;
|
|
2262
2433
|
connection?: {
|
|
2263
2434
|
readonly network?: NetworkPort | undefined;
|
|
2264
2435
|
readonly probe?: ((serverUrl: string | null) => Promise<boolean>) | undefined;
|
|
@@ -2322,6 +2493,12 @@ interface RoomEngine {
|
|
|
2322
2493
|
supportsVideoEffects(): boolean;
|
|
2323
2494
|
/** Whether this browser can share a screen at all — the control is ABSENT where it cannot. */
|
|
2324
2495
|
supportsScreenShare(): boolean;
|
|
2496
|
+
/** S6c: "Enable sound" — resume remote audio the autoplay policy holds. Call inside the click. */
|
|
2497
|
+
enableAudio(): Promise<void>;
|
|
2498
|
+
/** S6c: switch to the device the supervisor offered (a new one was plugged in). */
|
|
2499
|
+
acceptDeviceOffer(): Promise<void>;
|
|
2500
|
+
dismissDeviceOffer(): void;
|
|
2501
|
+
dismissDeviceNotice(): void;
|
|
2325
2502
|
/** Choose the speaker (audio output) for this meeting. */
|
|
2326
2503
|
switchDevice(kind: "audioinput" | "videoinput" | "audiooutput", deviceId: string): Promise<void>;
|
|
2327
2504
|
pin(identity: ParticipantIdentity | null): void;
|
|
@@ -3593,8 +3770,12 @@ interface ObserveInput {
|
|
|
3593
3770
|
/** The row the consumer resolved, when the store has none yet (the guest lane). */
|
|
3594
3771
|
readonly meeting?: MeetingRecord | null | undefined;
|
|
3595
3772
|
}
|
|
3596
|
-
/**
|
|
3597
|
-
|
|
3773
|
+
/**
|
|
3774
|
+
* The store's device state → the contract's `camera` / `microphone` value (CORE-DESIGN §3.2).
|
|
3775
|
+
* The reason comes from the media supervisor (S6c), which reads the browser's permission store: a
|
|
3776
|
+
* kind the browser denies is `unavailable:denied` even when nothing tried to open it.
|
|
3777
|
+
*/
|
|
3778
|
+
declare function observedDevice(track: LocalTrackState, permission?: PermissionReading): string;
|
|
3598
3779
|
/**
|
|
3599
3780
|
* The phase the person is looking at: the store's phase, verbatim (CORE-DESIGN §3.1). The one
|
|
3600
3781
|
* derivation left is the ended meeting: a row that says it is over renders `ended` for anyone not
|
|
@@ -3611,6 +3792,6 @@ declare function observedQuality(quality: ConnectionQuality): string | null;
|
|
|
3611
3792
|
/** `[data-meet-participant]` attributes for one person's tile or roster row. */
|
|
3612
3793
|
declare function participantAttributes(p: MeetParticipant): Record<string, string>;
|
|
3613
3794
|
/** The listen-only notice's contract code, from why the microphone is off. */
|
|
3614
|
-
declare function microphoneNoticeCode(track: LocalTrackState): "mic-blocked" | "device-lost" | null;
|
|
3795
|
+
declare function microphoneNoticeCode(track: LocalTrackState, permission?: PermissionReading): "mic-blocked" | "device-lost" | null;
|
|
3615
3796
|
|
|
3616
|
-
export { ATTENDANCE_CSV_HEADER, AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, 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_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceSnapshot, type DeviceStorage, 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, IDLE_MEDIA, 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 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 MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, MeetApi, 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, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, PARTICIPANT_STANDING_ATTRIBUTE, ParticipantIdentity, ParticipantRole, ParticipantStanding, type PhaseEvent, type PhaseEventType, 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 Stage, type StageArgs, StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, TranscriptSegment, 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, clockPosition, computeStage, connectionPolicyFrom, countLabel, createCallCenter, createCallInviteHandler, createConnectionSupervisor, createDeviceManager, createInRoomClient, createLiveKitDriver, createMeetAi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createReachabilityProbe, createReconnectPolicy, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, 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, untranslatedLines, userTopic, wasRefused, wrapUpStatus };
|
|
3797
|
+
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_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, 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 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 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_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 Stage, type StageArgs, StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, TranscriptSegment, 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, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, detectBrowser, detectOs, deviceChipLabel, deviceFixSteps, deviceNoticeCode, deviceUnavailableReason, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, 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, untranslatedLines, userTopic, wasRefused, webMediaPlatform, wrapUpStatus };
|
package/dist/core.d.ts
CHANGED
|
@@ -152,12 +152,55 @@ declare function displayNameFor(book: NameBook, identity: ParticipantIdentity |
|
|
|
152
152
|
* there is no second wording to keep in sync.
|
|
153
153
|
*/
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* WHY a device is unusable, in the contract's words (CORE-DESIGN §3.2, the `mic` / `camera`
|
|
157
|
+
* region's `unavailable:<reason>`). The media supervisor (`media-supervisor.ts`) decides it from
|
|
158
|
+
* the browser's error AND the Permissions API, because the error alone cannot tell a person's
|
|
159
|
+
* Block from an operating-system refusal or a stale device id.
|
|
160
|
+
*/
|
|
161
|
+
type DeviceUnavailableReason = "denied" | "blocked_site" | "blocked_os" | "none" | "busy" | "failed" | "revoked";
|
|
155
162
|
/** Why a local track is not publishing, in the browser's terms plus a remedy. */
|
|
156
163
|
interface MediaUnavailable {
|
|
157
164
|
readonly code: string;
|
|
158
165
|
readonly message: string;
|
|
159
166
|
readonly remedy: string;
|
|
167
|
+
/** The region reason (S6c). Absent on states recorded before the supervisor classified them. */
|
|
168
|
+
readonly reason?: DeviceUnavailableReason | undefined;
|
|
169
|
+
}
|
|
170
|
+
/** What the browser's permission store says for one device kind. `unknown` = no Permissions API. */
|
|
171
|
+
type PermissionReading = "granted" | "denied" | "prompt" | "unknown";
|
|
172
|
+
/** A device change the person is told about (S6c): unplugged → switched, or nothing left. */
|
|
173
|
+
interface DeviceNotice {
|
|
174
|
+
readonly id: number;
|
|
175
|
+
readonly kind: "microphone" | "camera";
|
|
176
|
+
/** `switched` = the meeting moved to another device; `lost` = none of this kind is left. */
|
|
177
|
+
readonly outcome: "switched" | "lost";
|
|
178
|
+
/** The device that went away, by label (empty when the browser hid labels). */
|
|
179
|
+
readonly from: string;
|
|
180
|
+
/** The device now in use (`switched` only). */
|
|
181
|
+
readonly to: string | null;
|
|
182
|
+
}
|
|
183
|
+
/** A device that just appeared — offered, never switched to silently (catalog `device-default-changed`). */
|
|
184
|
+
interface DeviceOffer {
|
|
185
|
+
readonly kind: "microphone" | "camera";
|
|
186
|
+
readonly deviceId: string;
|
|
187
|
+
readonly label: string;
|
|
160
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* THE MEDIA REGIONS THE SUPERVISOR OWNS (CORE-DESIGN §3.2 `audio_output`, and the inputs the
|
|
191
|
+
* `mic` / `camera` regions are derived from). None of it can change the call phase.
|
|
192
|
+
*/
|
|
193
|
+
interface MediaRegionState {
|
|
194
|
+
readonly permission: {
|
|
195
|
+
readonly microphone: PermissionReading;
|
|
196
|
+
readonly camera: PermissionReading;
|
|
197
|
+
};
|
|
198
|
+
/** `blocked` = the browser's autoplay policy is holding remote audio until a gesture. */
|
|
199
|
+
readonly audioOutput: "ok" | "blocked";
|
|
200
|
+
readonly notice: DeviceNotice | null;
|
|
201
|
+
readonly offer: DeviceOffer | null;
|
|
202
|
+
}
|
|
203
|
+
declare const IDLE_MEDIA_REGION: MediaRegionState;
|
|
161
204
|
interface LocalTrackState {
|
|
162
205
|
/** True only when the track is actually published. Never optimistic. */
|
|
163
206
|
readonly enabled: boolean;
|
|
@@ -174,7 +217,7 @@ interface LocalMediaState {
|
|
|
174
217
|
}
|
|
175
218
|
declare const IDLE_TRACK: LocalTrackState;
|
|
176
219
|
declare const IDLE_MEDIA: LocalMediaState;
|
|
177
|
-
declare function unavailableFrom(error: MeetError): MediaUnavailable;
|
|
220
|
+
declare function unavailableFrom(error: MeetError, reason?: DeviceUnavailableReason): MediaUnavailable;
|
|
178
221
|
/**
|
|
179
222
|
* THE SENTENCE. One definition, so the room chrome, a host's own chrome and the
|
|
180
223
|
* tests cannot say three different things about the same fact.
|
|
@@ -702,6 +745,11 @@ interface MeetSnapshot {
|
|
|
702
745
|
* microphone is a state with a remedy, not a failed join.
|
|
703
746
|
*/
|
|
704
747
|
readonly media: LocalMediaState;
|
|
748
|
+
/**
|
|
749
|
+
* S6c — the media supervisor's regions: permission per kind, autoplay (`audio_output`), the
|
|
750
|
+
* last device change and an offered new device. Written only by `media-supervisor.ts`.
|
|
751
|
+
*/
|
|
752
|
+
readonly mediaRegion: MediaRegionState;
|
|
705
753
|
/** The last failure, with its remedy. Never null-and-hoping. */
|
|
706
754
|
readonly failure: {
|
|
707
755
|
readonly message: string;
|
|
@@ -1873,6 +1921,15 @@ interface RoomDriverHandlers {
|
|
|
1873
1921
|
* connect and on every change. Optional so an older host driver still works.
|
|
1874
1922
|
*/
|
|
1875
1923
|
roomMetadata?(metadata: string): void;
|
|
1924
|
+
/**
|
|
1925
|
+
* S6c — MEDIA. Can remote audio play (`false` = the browser's autoplay policy is holding it
|
|
1926
|
+
* until a gesture)? Fired on every change and once right after connect. Optional for older drivers.
|
|
1927
|
+
*/
|
|
1928
|
+
audioPlayback?(canPlay: boolean): void;
|
|
1929
|
+
/** S6c — the device list changed (plugged / unplugged), AFTER the SDK re-picked defaults. */
|
|
1930
|
+
devicesChanged?(): void;
|
|
1931
|
+
/** S6c — the SDK could not acquire or keep a local device. `kind` when the SDK knows it. */
|
|
1932
|
+
mediaDeviceError?(error: unknown, kind: "audioinput" | "videoinput" | null): void;
|
|
1876
1933
|
}
|
|
1877
1934
|
/** A camera background effect. `image` replaces the background with `imageUrl`. */
|
|
1878
1935
|
type VideoEffect = {
|
|
@@ -1925,6 +1982,11 @@ interface MeetRoomDriver {
|
|
|
1925
1982
|
/** The device the driver actually selected, so the UI never lies about it. */
|
|
1926
1983
|
activeDevices(): Readonly<Record<"audioinput" | "videoinput" | "audiooutput", string | null>>;
|
|
1927
1984
|
switchDevice(kind: "audioinput" | "videoinput" | "audiooutput", deviceId: string): Promise<void>;
|
|
1985
|
+
/**
|
|
1986
|
+
* S6c — resume remote audio the autoplay policy blocked. MUST run inside the person's click
|
|
1987
|
+
* (the gesture is what the browser checks). Optional: a driver without it never blocks.
|
|
1988
|
+
*/
|
|
1989
|
+
startAudio?(): Promise<void>;
|
|
1928
1990
|
}
|
|
1929
1991
|
type RoomDriverFactory = (handlers: RoomDriverHandlers) => MeetRoomDriver | Promise<MeetRoomDriver>;
|
|
1930
1992
|
/** Topics for the in-room control plane. One place, so senders cannot drift. */
|
|
@@ -2181,6 +2243,110 @@ declare function createRecordingController(options: RecordingControllerOptions):
|
|
|
2181
2243
|
/** The indicator's words. One definition, so no surface invents a softer one. */
|
|
2182
2244
|
declare function recordingLabel(state: RecordingState): string | null;
|
|
2183
2245
|
|
|
2246
|
+
/**
|
|
2247
|
+
* MS — THE MEDIA SUPERVISOR (CORE-DESIGN §3.3, step S6c).
|
|
2248
|
+
*
|
|
2249
|
+
* Owns the media regions of §3.2 that are about THIS person's devices and speakers:
|
|
2250
|
+
*
|
|
2251
|
+
* - **Permission per kind.** The browser's error alone cannot tell a person's Block from an
|
|
2252
|
+
* operating-system refusal or a stale device id (`NotAllowedError` is all three in Chrome), so
|
|
2253
|
+
* every refusal is classified against the Permissions API: `denied` there is the person's (or
|
|
2254
|
+
* the site's) Block; a refusal while the browser says `granted` is the operating system. A kind
|
|
2255
|
+
* whose permission is `denied` reads `unavailable:denied` even when nothing tried to open it —
|
|
2256
|
+
* a camera the browser will not hand over is not "off by choice".
|
|
2257
|
+
* - **Live device switching.** LiveKit falls back to the default for a lost MICROPHONE by itself
|
|
2258
|
+
* but MUTES a lost camera (client-sdk-js #2035). On every device change the supervisor checks
|
|
2259
|
+
* the devices in use against the devices present: a vanished camera moves to the next camera;
|
|
2260
|
+
* a vanished microphone is reported with the device LiveKit moved to; nothing left of a kind is
|
|
2261
|
+
* `unavailable:none`. Each is a notice — never a silent switch. A NEW device is offered, never
|
|
2262
|
+
* taken (a person mid-sentence does not want their mic to jump to a headset being charged).
|
|
2263
|
+
* - **Autoplay.** `audio_output` = `blocked` while the browser holds remote audio until a gesture;
|
|
2264
|
+
* `enableAudio()` runs inside the person's click; the check is repeated when the tab comes back.
|
|
2265
|
+
*
|
|
2266
|
+
* 🚨 NOTHING HERE CHANGES THE CALL PHASE (§3.1 invariant). Every outcome is region state.
|
|
2267
|
+
* 🚨 NO BROWSER GLOBAL IS TOUCHED HERE: the browser half is the `MediaPlatform` port (§3.5) —
|
|
2268
|
+
* `webMediaPlatform()` below is the web adapter; a React Native host passes its own.
|
|
2269
|
+
*/
|
|
2270
|
+
|
|
2271
|
+
type MediaKind = "microphone" | "camera";
|
|
2272
|
+
type BrowserFamily = "chrome" | "edge" | "firefox" | "safari" | "other";
|
|
2273
|
+
type OsFamily = "mac" | "windows" | "ios" | "android" | "linux" | "other";
|
|
2274
|
+
interface PlatformDevice {
|
|
2275
|
+
readonly deviceId: string;
|
|
2276
|
+
readonly kind: string;
|
|
2277
|
+
readonly label: string;
|
|
2278
|
+
}
|
|
2279
|
+
/** The slice of §3.5's `MeetPlatform` the media supervisor needs. */
|
|
2280
|
+
interface MediaPlatform {
|
|
2281
|
+
readonly browser: BrowserFamily;
|
|
2282
|
+
readonly os: OsFamily;
|
|
2283
|
+
/** The Permissions API reading, or `unknown` where the browser has none for this kind. */
|
|
2284
|
+
queryPermission(kind: MediaKind): Promise<PermissionReading>;
|
|
2285
|
+
/** Call `onChange` whenever the permission for `kind` changes. Returns the unsubscribe. */
|
|
2286
|
+
watchPermission(kind: MediaKind, onChange: (reading: PermissionReading) => void): () => void;
|
|
2287
|
+
listDevices(): Promise<readonly PlatformDevice[]>;
|
|
2288
|
+
/** The tab became visible again (autoplay is re-checked then). Returns the unsubscribe. */
|
|
2289
|
+
onVisible(callback: () => void): () => void;
|
|
2290
|
+
}
|
|
2291
|
+
/**
|
|
2292
|
+
* The region reason for a refused device, from the error AND the permission store.
|
|
2293
|
+
* Pure — the rules are the tests.
|
|
2294
|
+
*/
|
|
2295
|
+
declare function classifyDeviceFailure(error: {
|
|
2296
|
+
readonly code: string;
|
|
2297
|
+
readonly message: string;
|
|
2298
|
+
}, permission: PermissionReading): DeviceUnavailableReason;
|
|
2299
|
+
/** The contract notice code for an unusable device (HARNESS-CONTRACT §4). */
|
|
2300
|
+
declare function deviceNoticeCode(kind: MediaKind, reason: DeviceUnavailableReason): "mic-blocked" | "camera-blocked" | "device-lost";
|
|
2301
|
+
/**
|
|
2302
|
+
* The region reason this track is in, or null when the device is usable (on, or off by choice).
|
|
2303
|
+
* A kind the browser's permission store denies is `denied` even when nothing tried to open it.
|
|
2304
|
+
*/
|
|
2305
|
+
declare function deviceUnavailableReason(track: LocalTrackState, permission: PermissionReading): DeviceUnavailableReason | null;
|
|
2306
|
+
/** The short chip text — the skin's words may differ; the reason is the fact. */
|
|
2307
|
+
declare function deviceChipLabel(kind: MediaKind, reason: DeviceUnavailableReason): string;
|
|
2308
|
+
/**
|
|
2309
|
+
* THE REAL REMEDY, per browser and operating system: the steps a person actually follows. Short
|
|
2310
|
+
* lines (interface text is layout); the last step is always the Try again the screen offers.
|
|
2311
|
+
*/
|
|
2312
|
+
declare function deviceFixSteps(kind: MediaKind, reason: DeviceUnavailableReason, where: {
|
|
2313
|
+
readonly browser: BrowserFamily;
|
|
2314
|
+
readonly os: OsFamily;
|
|
2315
|
+
}): readonly string[];
|
|
2316
|
+
declare function detectBrowser(userAgent: string): BrowserFamily;
|
|
2317
|
+
declare function detectOs(userAgent: string, maxTouchPoints?: number): OsFamily;
|
|
2318
|
+
/** The browser adapter, or null outside a browser (SSR, a test, React Native without one). */
|
|
2319
|
+
declare function webMediaPlatform(): MediaPlatform | null;
|
|
2320
|
+
interface MediaSupervisorOptions {
|
|
2321
|
+
readonly store: MeetStore;
|
|
2322
|
+
readonly platform: MediaPlatform | null;
|
|
2323
|
+
/** The live room's driver, or null between rooms. */
|
|
2324
|
+
readonly driver: () => MeetRoomDriver | null;
|
|
2325
|
+
readonly report: (level: "info" | "warn" | "error", message: string, remedy?: string) => void;
|
|
2326
|
+
}
|
|
2327
|
+
interface MediaSupervisor {
|
|
2328
|
+
/** Begin watching permissions and visibility (idempotent). */
|
|
2329
|
+
start(): void;
|
|
2330
|
+
stop(): void;
|
|
2331
|
+
/** The `MediaUnavailable` for a refused device: the browser's words + the region reason. */
|
|
2332
|
+
unavailable(error: unknown, kind: MediaKind, operation: string): Promise<MediaUnavailable>;
|
|
2333
|
+
/** Driver handlers (wired by the engine). */
|
|
2334
|
+
onAudioPlayback(canPlay: boolean): void;
|
|
2335
|
+
onDevicesChanged(): void;
|
|
2336
|
+
onDeviceError(error: unknown, kind: "audioinput" | "videoinput" | null): void;
|
|
2337
|
+
/** The engine connected a room: remember which devices are in use now. */
|
|
2338
|
+
onConnected(): void;
|
|
2339
|
+
/** The room is gone: autoplay and device notices belong to the room. */
|
|
2340
|
+
onDisconnected(): void;
|
|
2341
|
+
/** "Enable sound" — call from inside the person's click. */
|
|
2342
|
+
enableAudio(): Promise<void>;
|
|
2343
|
+
/** Use the offered new device. */
|
|
2344
|
+
acceptOffer(): Promise<void>;
|
|
2345
|
+
dismissOffer(): void;
|
|
2346
|
+
dismissNotice(): void;
|
|
2347
|
+
}
|
|
2348
|
+
declare function createMediaSupervisor(options: MediaSupervisorOptions): MediaSupervisor;
|
|
2349
|
+
|
|
2184
2350
|
/**
|
|
2185
2351
|
* THE ROOM ENGINE — the object a host mounts once and never reasons about.
|
|
2186
2352
|
*
|
|
@@ -2259,6 +2425,11 @@ interface RoomEngineOptions {
|
|
|
2259
2425
|
* (default: `navigator.onLine`); `probe` = do our API and the media server answer (default:
|
|
2260
2426
|
* assume yes); `resume` = per-tab storage for the reload-after-offline marker (default: none).
|
|
2261
2427
|
*/
|
|
2428
|
+
/**
|
|
2429
|
+
* S6c — the media supervisor's platform port (permissions, device list, visibility). Default:
|
|
2430
|
+
* the browser's (`webMediaPlatform()`); `null` turns the supervisor's browser reads off.
|
|
2431
|
+
*/
|
|
2432
|
+
mediaPlatform?: MediaPlatform | null | undefined;
|
|
2262
2433
|
connection?: {
|
|
2263
2434
|
readonly network?: NetworkPort | undefined;
|
|
2264
2435
|
readonly probe?: ((serverUrl: string | null) => Promise<boolean>) | undefined;
|
|
@@ -2322,6 +2493,12 @@ interface RoomEngine {
|
|
|
2322
2493
|
supportsVideoEffects(): boolean;
|
|
2323
2494
|
/** Whether this browser can share a screen at all — the control is ABSENT where it cannot. */
|
|
2324
2495
|
supportsScreenShare(): boolean;
|
|
2496
|
+
/** S6c: "Enable sound" — resume remote audio the autoplay policy holds. Call inside the click. */
|
|
2497
|
+
enableAudio(): Promise<void>;
|
|
2498
|
+
/** S6c: switch to the device the supervisor offered (a new one was plugged in). */
|
|
2499
|
+
acceptDeviceOffer(): Promise<void>;
|
|
2500
|
+
dismissDeviceOffer(): void;
|
|
2501
|
+
dismissDeviceNotice(): void;
|
|
2325
2502
|
/** Choose the speaker (audio output) for this meeting. */
|
|
2326
2503
|
switchDevice(kind: "audioinput" | "videoinput" | "audiooutput", deviceId: string): Promise<void>;
|
|
2327
2504
|
pin(identity: ParticipantIdentity | null): void;
|
|
@@ -3593,8 +3770,12 @@ interface ObserveInput {
|
|
|
3593
3770
|
/** The row the consumer resolved, when the store has none yet (the guest lane). */
|
|
3594
3771
|
readonly meeting?: MeetingRecord | null | undefined;
|
|
3595
3772
|
}
|
|
3596
|
-
/**
|
|
3597
|
-
|
|
3773
|
+
/**
|
|
3774
|
+
* The store's device state → the contract's `camera` / `microphone` value (CORE-DESIGN §3.2).
|
|
3775
|
+
* The reason comes from the media supervisor (S6c), which reads the browser's permission store: a
|
|
3776
|
+
* kind the browser denies is `unavailable:denied` even when nothing tried to open it.
|
|
3777
|
+
*/
|
|
3778
|
+
declare function observedDevice(track: LocalTrackState, permission?: PermissionReading): string;
|
|
3598
3779
|
/**
|
|
3599
3780
|
* The phase the person is looking at: the store's phase, verbatim (CORE-DESIGN §3.1). The one
|
|
3600
3781
|
* derivation left is the ended meeting: a row that says it is over renders `ended` for anyone not
|
|
@@ -3611,6 +3792,6 @@ declare function observedQuality(quality: ConnectionQuality): string | null;
|
|
|
3611
3792
|
/** `[data-meet-participant]` attributes for one person's tile or roster row. */
|
|
3612
3793
|
declare function participantAttributes(p: MeetParticipant): Record<string, string>;
|
|
3613
3794
|
/** The listen-only notice's contract code, from why the microphone is off. */
|
|
3614
|
-
declare function microphoneNoticeCode(track: LocalTrackState): "mic-blocked" | "device-lost" | null;
|
|
3795
|
+
declare function microphoneNoticeCode(track: LocalTrackState, permission?: PermissionReading): "mic-blocked" | "device-lost" | null;
|
|
3615
3796
|
|
|
3616
|
-
export { ATTENDANCE_CSV_HEADER, AdmissionState, type AnnounceResult, type ApplyRoomEventArgs, type AskArgs, type AttendanceKind, type AttendanceRow, type AudioProcessing, 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_PAGE_SIZE, type DataTopic, type DeviceKind, type DeviceManager, type DeviceManagerOptions, type DeviceSnapshot, type DeviceStorage, 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, IDLE_MEDIA, 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 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 MediaUnavailable, type MeetAi, type MeetAiAnswer, type MeetAiOptions, type MeetAnswerCoverage, MeetApi, 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, PARTICIPANT_CAN_RECORD_ATTRIBUTE, PARTICIPANT_ROLE_ATTRIBUTE, PARTICIPANT_STANDING_ATTRIBUTE, ParticipantIdentity, ParticipantRole, ParticipantStanding, type PhaseEvent, type PhaseEventType, 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 Stage, type StageArgs, StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, TranscriptSegment, 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, clockPosition, computeStage, connectionPolicyFrom, countLabel, createCallCenter, createCallInviteHandler, createConnectionSupervisor, createDeviceManager, createInRoomClient, createLiveKitDriver, createMeetAi, createMeetRepository, createMeetStore, createMeetingInviteHandler, createMeetingRecordCache, createMeetingSession, createMemoryDeviceStorage, createReachabilityProbe, createReconnectPolicy, createRecordingController, createRoomEngine, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, 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, untranslatedLines, userTopic, wasRefused, wrapUpStatus };
|
|
3797
|
+
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_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, 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 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 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_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 Stage, type StageArgs, StageLayout, TABLES, TRANSCRIPTION_ATTRIBUTES, TRANSCRIPTION_TOPIC, type TokenClient, type TokenClientOptions, type TokenRequest, type TranscriptBlock, type TranscriptFormat, type TranscriptMatch, TranscriptSegment, 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, createTokenClient, createWebDeviceStorage, createWebEffectsStorage, createWebNetworkPort, createWebResumeStorage, createWebRoomTokenStorage, detectBrowser, detectOs, deviceChipLabel, deviceFixSteps, deviceNoticeCode, deviceUnavailableReason, displayNameFor, gridColumns, groupTranscript, guestRecordAccessExplanation, guestRecordAccessLabel, guestRecordAccessSetting, hasEnded, hostUserIds, httpUrlOf, invalidResponse, isGuestIdentity, isJoinRefusalReason, isListenOnly, isLivePhase, isNoteTaker, isRealName, isRefusedPhase, isRoomEventTopic, isUnannouncedDeparture, isWaitingPhase, learnName, learnNames, 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, untranslatedLines, userTopic, wasRefused, webMediaPlatform, wrapUpStatus };
|