@memberjunction/livekit-room-core 6.2.0-edge.3 → 6.2.0-edge.4

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.
Files changed (36) hide show
  1. package/README.md +32 -1
  2. package/dist/agent-avatar.d.ts +18 -0
  3. package/dist/agent-avatar.d.ts.map +1 -0
  4. package/dist/agent-avatar.js +25 -0
  5. package/dist/agent-avatar.js.map +1 -0
  6. package/dist/audio-meter.d.ts +24 -8
  7. package/dist/audio-meter.d.ts.map +1 -1
  8. package/dist/audio-meter.js +19 -8
  9. package/dist/audio-meter.js.map +1 -1
  10. package/dist/index.d.ts +5 -3
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/livekit-preview-room-controller.d.ts +162 -0
  15. package/dist/livekit-preview-room-controller.d.ts.map +1 -0
  16. package/dist/livekit-preview-room-controller.js +475 -0
  17. package/dist/livekit-preview-room-controller.js.map +1 -0
  18. package/dist/livekit-preview.d.ts +6 -1
  19. package/dist/livekit-preview.d.ts.map +1 -1
  20. package/dist/livekit-preview.js +6 -1
  21. package/dist/livekit-preview.js.map +1 -1
  22. package/dist/livekit-room-controller.d.ts +132 -11
  23. package/dist/livekit-room-controller.d.ts.map +1 -1
  24. package/dist/livekit-room-controller.js +174 -35
  25. package/dist/livekit-room-controller.js.map +1 -1
  26. package/dist/livekit-screen-share.d.ts +73 -0
  27. package/dist/livekit-screen-share.d.ts.map +1 -0
  28. package/dist/livekit-screen-share.js +137 -0
  29. package/dist/livekit-screen-share.js.map +1 -0
  30. package/dist/media-adapters.d.ts +26 -0
  31. package/dist/media-adapters.d.ts.map +1 -0
  32. package/dist/media-adapters.js +101 -0
  33. package/dist/media-adapters.js.map +1 -0
  34. package/dist/types.d.ts +78 -5
  35. package/dist/types.d.ts.map +1 -1
  36. package/package.json +4 -2
@@ -0,0 +1,475 @@
1
+ /**
2
+ * @fileoverview {@link LiveKitPreviewRoomController}: a meeting room that needs no LiveKit server, for trying the room
3
+ * UI. Your camera, microphone and screen share are real; everyone else is simulated, and nothing is sent anywhere.
4
+ *
5
+ * - **You.** Your camera and microphone run on the shared `MediaPreview` (as a lobby's do), on the camera-and-microphone
6
+ * controller the host provides. Your tile shows your camera and your microphone's level. Sharing your screen opens
7
+ * the browser's picker, as in a real room.
8
+ * - **Everyone else.** The people in the options (by default an agent and three participants) are in the room from the
9
+ * start, without cameras, and take turns speaking, so the speaking ring, the active speaker and the meters move.
10
+ * - **What the agent sees.** The simulated agent watches (unless `AgentWatches` is off), so the room offers the
11
+ * "Let the agent see" choice; {@link LiveKitPreviewRoomController.SetAgentVision} records yours at once, where a
12
+ * meeting records it through the server. A simulated person can allow it too (Ada does, by default).
13
+ * - **Not simulated.** Nobody else sends chat or whiteboard messages, joins or leaves, or shares a screen; noise
14
+ * filtering and background effects are unavailable.
15
+ *
16
+ * It implements {@link ILiveKitRoomController}, so `mj-livekit-room` runs on it unchanged, provided through
17
+ * `LIVEKIT_ROOM_CONTROLLER_FACTORY`.
18
+ *
19
+ * @module @memberjunction/livekit-room-core
20
+ */
21
+ import { Participant } from 'livekit-client';
22
+ import { BehaviorSubject, skip } from 'rxjs';
23
+ import { LocalMediaController, MediaPreview, RequestDisplayCapture, } from '@memberjunction/ai-realtime-client/media';
24
+ import { LiveKitRoomEventBus } from './events.js';
25
+ import { ToDisplayCaptureOptions } from './livekit-screen-share.js';
26
+ import { ToMediaDeviceKind } from './media-adapters.js';
27
+ /** The people in a preview room unless the options name others: an agent and three participants. */
28
+ export const LIVEKIT_PREVIEW_PEOPLE = [
29
+ { Identity: 'preview-sage', DisplayName: 'Sage', Role: 'agent' },
30
+ { Identity: 'preview-ada', DisplayName: 'Ada', Role: 'participant', AgentCanSee: true },
31
+ { Identity: 'preview-bo', DisplayName: 'Bo', Role: 'participant' },
32
+ { Identity: 'preview-cy', DisplayName: 'Cy', Role: 'participant' },
33
+ ];
34
+ /** The preview room's name, as the room's header shows it. */
35
+ export const LIVEKIT_PREVIEW_ROOM_NAME = 'Preview room';
36
+ /** Your identity in a preview room. */
37
+ export const LIVEKIT_PREVIEW_LOCAL_IDENTITY = 'preview-you';
38
+ const DEFAULT_TURN_MS = 4000;
39
+ /** A meeting room with no server: see the file header. */
40
+ export class LiveKitPreviewRoomController {
41
+ constructor(options = {}) {
42
+ this.state = new BehaviorSubject(initialState());
43
+ this.session = null;
44
+ this.localMedia = options.LocalMedia ?? (() => new LocalMediaController());
45
+ this.people = options.People ?? LIVEKIT_PREVIEW_PEOPLE;
46
+ this.turnMs = options.TurnMs ?? DEFAULT_TURN_MS;
47
+ this.requestShare = options.RequestScreenShare ?? RequestDisplayCapture;
48
+ this.meterFor = options.MeterFor;
49
+ this.agentWatches = options.AgentWatches ?? true;
50
+ this.Events = options.EventBus ?? new LiveKitRoomEventBus();
51
+ }
52
+ /** The room-state snapshot: the current value on subscribe, then every change. */
53
+ get State$() {
54
+ return this.state.asObservable();
55
+ }
56
+ /** The current room-state snapshot. */
57
+ get State() {
58
+ return this.state.value;
59
+ }
60
+ /** The current connection status. */
61
+ get Status() {
62
+ return this.state.value.Status;
63
+ }
64
+ // ── Joining and leaving ─────────────────────────────────────────────────────────
65
+ /**
66
+ * Joins the preview room: starts your microphone and camera as the options say, on the devices they name, then
67
+ * shows the simulated people, the first one speaking.
68
+ *
69
+ * @param serverUrl Reported to `beforeConnect` handlers; nothing connects to it.
70
+ * @param _token Ignored: there is no server to present it to.
71
+ * @param options Your name, the media you start with, and the devices.
72
+ */
73
+ async Connect(serverUrl, _token, options = {}) {
74
+ const before = this.Events.Emit('beforeConnect', { ServerUrl: serverUrl, Options: options, Cancel: false });
75
+ if (before.Cancel) {
76
+ return;
77
+ }
78
+ if (this.session) {
79
+ await this.Disconnect(false);
80
+ }
81
+ this.patchState({ Status: 'connecting', DisconnectReason: undefined });
82
+ const session = this.openSession(before.Options);
83
+ this.session = session;
84
+ await this.startMedia(session, before.Options);
85
+ if (this.session !== session) {
86
+ return; // left while the devices were starting
87
+ }
88
+ this.beginSession(session);
89
+ this.Events.Emit('connected', { State: this.State });
90
+ }
91
+ /**
92
+ * Leaves the room and frees your devices. A user-initiated leave raises a cancelable `beforeDisconnect` first.
93
+ *
94
+ * @returns `false` when a `beforeDisconnect` handler canceled it.
95
+ */
96
+ async Disconnect(userInitiated = true) {
97
+ if (userInitiated && this.Events.Emit('beforeDisconnect', { UserInitiated: true, Cancel: false }).Cancel) {
98
+ return false;
99
+ }
100
+ const session = this.session;
101
+ this.session = null;
102
+ if (session) {
103
+ closeSession(session);
104
+ }
105
+ this.patchState({ ...initialState(), Status: 'disconnected', DisconnectReason: session ? 'client-initiated' : undefined });
106
+ if (session) {
107
+ this.Events.Emit('disconnected', { Reason: 'client-initiated' });
108
+ }
109
+ return true;
110
+ }
111
+ /** Leaves the room, frees your devices, completes {@link State$} and clears the event bus. */
112
+ Dispose() {
113
+ void this.Disconnect(false);
114
+ this.state.complete();
115
+ this.Events.Clear();
116
+ }
117
+ // ── Your microphone, camera and screen ──────────────────────────────────────────
118
+ /** Turns your microphone on or off. */
119
+ async SetMicrophoneEnabled(enabled) {
120
+ await this.toggleLocalMedia('microphone', enabled);
121
+ }
122
+ /** Turns your camera on or off. */
123
+ async SetCameraEnabled(enabled) {
124
+ await this.toggleLocalMedia('camera', enabled);
125
+ }
126
+ /**
127
+ * Starts or stops sharing. `request` is the kind of surface the browser's picker offers first, or the share's
128
+ * options: one panel of the page to share alone (`Panel`), with its name (`PanelLabel`).
129
+ */
130
+ async SetScreenShareEnabled(enabled, request) {
131
+ await this.toggleLocalMedia('screen', enabled, request);
132
+ }
133
+ /** Toggles your microphone and resolves the new state. */
134
+ async ToggleMicrophone() {
135
+ const next = !this.State.LocalMedia.MicrophoneEnabled;
136
+ await this.SetMicrophoneEnabled(next);
137
+ return next;
138
+ }
139
+ /** Toggles your camera and resolves the new state. */
140
+ async ToggleCamera() {
141
+ const next = !this.State.LocalMedia.CameraEnabled;
142
+ await this.SetCameraEnabled(next);
143
+ return next;
144
+ }
145
+ /** Toggles sharing your screen and resolves the new state. */
146
+ async ToggleScreenShare() {
147
+ const next = !this.State.LocalMedia.ScreenShareEnabled;
148
+ await this.SetScreenShareEnabled(next);
149
+ return next;
150
+ }
151
+ /** Shares something else: stops the current share, then opens the browser's picker again, with `request` as above. */
152
+ async ChangeScreenShare(request) {
153
+ if (this.State.LocalMedia.ScreenShareEnabled) {
154
+ await this.SetScreenShareEnabled(false);
155
+ }
156
+ await this.SetScreenShareEnabled(true, request);
157
+ }
158
+ /**
159
+ * Records whether you let agents see your camera and shared screen, as a meeting's server would, and raises
160
+ * `localMediaChanged`. Outside the room it does nothing.
161
+ */
162
+ SetAgentVision(on) {
163
+ const session = this.session;
164
+ if (!session || session.AgentVisionOn === on) {
165
+ return;
166
+ }
167
+ session.AgentVisionOn = on;
168
+ this.rebuildState();
169
+ this.Events.Emit('localMediaChanged', this.State.LocalMedia);
170
+ }
171
+ // ── What the preview does not simulate ──────────────────────────────────────────
172
+ /**
173
+ * Raises the cancelable `beforeSendData`; nobody else is in the room to receive the message. Resolves `true` unless a
174
+ * handler canceled it or you are not in the room.
175
+ */
176
+ async SendData(text, topic) {
177
+ if (!this.session) {
178
+ return false;
179
+ }
180
+ return !this.Events.Emit('beforeSendData', { Text: text, Topic: topic, Cancel: false }).Cancel;
181
+ }
182
+ /** Nothing to do: the simulated people make no sound, so the browser never blocks it. */
183
+ async StartAudio() {
184
+ return;
185
+ }
186
+ /** Not available in the preview room. */
187
+ async SetNoiseFilterEnabled(_enabled) {
188
+ return false;
189
+ }
190
+ /** Not available in the preview room. */
191
+ async SetBackgroundEffect(_effect) {
192
+ return false;
193
+ }
194
+ // ── Devices ─────────────────────────────────────────────────────────────────────
195
+ /** Your microphones or cameras, while you are in the room. There are no speakers to pick: nothing plays. */
196
+ async ListDevices(kind) {
197
+ const mediaKind = ToMediaDeviceKind(kind);
198
+ const devices = this.session?.Media.State.Devices ?? [];
199
+ return devices.filter((d) => d.Kind === mediaKind).map((d) => ({ DeviceId: d.DeviceID, Label: d.Label, Kind: kind }));
200
+ }
201
+ /** The microphone or camera in use (or chosen), or `null` for speakers and outside the room. */
202
+ GetActiveDeviceId(kind) {
203
+ const choices = this.session?.Media.State.Choices;
204
+ if (!choices) {
205
+ return null;
206
+ }
207
+ const mediaKind = ToMediaDeviceKind(kind);
208
+ return mediaKind === 'camera' ? choices.CameraDeviceID : mediaKind === 'microphone' ? choices.MicrophoneDeviceID : null;
209
+ }
210
+ /** Moves your microphone or camera to another device; raises the cancelable `beforeDeviceSwitch` first. */
211
+ async SwitchDevice(kind, deviceId) {
212
+ const session = this.session;
213
+ if (!session) {
214
+ return;
215
+ }
216
+ const before = this.Events.Emit('beforeDeviceSwitch', { Kind: kind, DeviceId: deviceId, Cancel: false });
217
+ if (before.Cancel) {
218
+ return;
219
+ }
220
+ await session.Media.SelectDevice({ Kind: ToMediaDeviceKind(kind), DeviceID: before.DeviceId });
221
+ }
222
+ // ── internals: the session ──────────────────────────────────────────────────────
223
+ /** A new session: your media (not started yet) and a bare participant for you and each person. */
224
+ openSession(options) {
225
+ const media = new MediaPreview(this.localMedia(), {
226
+ MicrophoneOn: options.EnableMicrophone ?? true,
227
+ CameraOn: options.EnableCamera ?? false,
228
+ MeterFor: this.meterFor,
229
+ });
230
+ const displayName = options.DisplayName ?? 'You';
231
+ return {
232
+ Media: media,
233
+ MediaWatch: null,
234
+ DisplayName: displayName,
235
+ Local: new Participant(`PA_${LIVEKIT_PREVIEW_LOCAL_IDENTITY}`, LIVEKIT_PREVIEW_LOCAL_IDENTITY, displayName),
236
+ Others: this.people.map((p) => new Participant(`PA_${p.Identity}`, p.Identity, p.DisplayName)),
237
+ Speaker: this.people.length > 0 ? 0 : -1,
238
+ Turns: null,
239
+ Share: null,
240
+ AgentVisionOn: false,
241
+ };
242
+ }
243
+ /** Starts your microphone and camera, on the devices the options name. */
244
+ async startMedia(session, options) {
245
+ if (options.MicrophoneDeviceId) {
246
+ await session.Media.SelectDevice({ Kind: 'microphone', DeviceID: options.MicrophoneDeviceId });
247
+ }
248
+ if (options.CameraDeviceId) {
249
+ await session.Media.SelectDevice({ Kind: 'camera', DeviceID: options.CameraDeviceId });
250
+ }
251
+ await session.Media.Start();
252
+ }
253
+ /** Shows the room, reports a kind that failed to start, follows your media from here on, and starts the turns. */
254
+ beginSession(session) {
255
+ this.rebuildState();
256
+ this.reportFailure(session, 'microphone');
257
+ this.reportFailure(session, 'camera');
258
+ session.MediaWatch = session.Media.State$.pipe(skip(1)).subscribe(() => this.rebuildState());
259
+ if (this.people.length > 0) {
260
+ session.Turns = setInterval(() => this.nextTurn(session), this.turnMs);
261
+ }
262
+ }
263
+ /** Passes the turn to the next person. */
264
+ nextTurn(session) {
265
+ if (this.session !== session) {
266
+ return;
267
+ }
268
+ session.Speaker = (session.Speaker + 1) % this.people.length;
269
+ this.rebuildState();
270
+ const speakers = this.State.Remote.filter((p) => p.IsSpeaking);
271
+ this.Events.Emit('activeSpeakersChanged', { Identities: speakers.map((p) => p.Identity), Speakers: speakers });
272
+ }
273
+ /** Turns a kind on or off, raising the cancelable `beforeMediaToggle` first and `localMediaChanged` after. */
274
+ async toggleLocalMedia(kind, enabled, screenRequest) {
275
+ const session = this.session;
276
+ if (!session) {
277
+ return;
278
+ }
279
+ if (this.Events.Emit('beforeMediaToggle', { Kind: kind, Enabled: enabled, Cancel: false }).Cancel) {
280
+ return;
281
+ }
282
+ if (kind === 'screen') {
283
+ await this.setSharing(session, enabled, screenRequest);
284
+ }
285
+ else {
286
+ await this.setCapturing(session, kind, enabled);
287
+ }
288
+ if (this.session === session) {
289
+ this.rebuildState();
290
+ this.Events.Emit('localMediaChanged', this.State.LocalMedia);
291
+ }
292
+ }
293
+ /** Turns your microphone or camera on or off; a start that fails is reported as a device error. */
294
+ async setCapturing(session, kind, on) {
295
+ if (kind === 'camera') {
296
+ await session.Media.SetCameraOn(on);
297
+ }
298
+ else {
299
+ await session.Media.SetMicrophoneOn(on);
300
+ }
301
+ if (on) {
302
+ this.reportFailure(session, kind);
303
+ }
304
+ }
305
+ /** Starts sharing through the browser's picker, or stops. Cancelling the picker leaves you not sharing. */
306
+ async setSharing(session, on, request) {
307
+ if (!on) {
308
+ stopSharing(session);
309
+ return;
310
+ }
311
+ if (session.Share) {
312
+ return;
313
+ }
314
+ const result = await this.requestShare(ToDisplayCaptureOptions(request));
315
+ if (result.Status === 'failed') {
316
+ this.emitError('device', 'Failed to enable screen.', result.Message, { Media: 'screen', Change: 'on' });
317
+ }
318
+ else if (result.Status === 'started') {
319
+ this.keepShare(session, result.Capture);
320
+ }
321
+ }
322
+ /** Keeps a share that started, and follows it ending in the browser ("Stop sharing"). */
323
+ keepShare(session, capture) {
324
+ if (this.session !== session) {
325
+ capture.Stop(); // left while the picker was open
326
+ return;
327
+ }
328
+ const share = { Capture: capture, Source: { Kind: 'stream', Stream: capture.Stream }, StopWatching: null };
329
+ session.Share = share;
330
+ share.StopWatching = capture.OnEnded(() => this.onShareEnded(session, share));
331
+ }
332
+ /** The browser ended your share: the room stops showing it. */
333
+ onShareEnded(session, share) {
334
+ if (session.Share !== share) {
335
+ return;
336
+ }
337
+ session.Share = null;
338
+ if (this.session === session) {
339
+ this.rebuildState();
340
+ this.Events.Emit('localMediaChanged', this.State.LocalMedia);
341
+ }
342
+ }
343
+ /** Reports a kind whose capture failed to turn on as a device error. */
344
+ reportFailure(session, kind) {
345
+ const track = kind === 'camera' ? session.Media.State.Camera : session.Media.State.Microphone;
346
+ if (track.Status === 'failed') {
347
+ this.emitError('device', `Failed to enable ${kind}.`, track.Message, { Media: kind, Change: 'on' });
348
+ }
349
+ }
350
+ // ── internals: state ────────────────────────────────────────────────────────────
351
+ /** Rebuilds the room's state from the session and emits it. */
352
+ rebuildState() {
353
+ const session = this.session;
354
+ if (!session) {
355
+ return;
356
+ }
357
+ const media = session.Media.State;
358
+ const watching = this.agentWatches;
359
+ const remote = this.people.map((person, index) => personView(session, person, index, watching));
360
+ this.patchState({
361
+ Status: 'connected',
362
+ RoomName: LIVEKIT_PREVIEW_ROOM_NAME,
363
+ Local: localView(session, media, watching),
364
+ Remote: remote,
365
+ ActiveSpeakerIdentities: remote.filter((p) => p.IsSpeaking).map((p) => p.Identity),
366
+ LocalMedia: localMediaState(session, media),
367
+ AgentWatching: watching,
368
+ });
369
+ }
370
+ /** Pushes a partial update onto the state, emits it, and fires `stateChanged`. */
371
+ patchState(patch) {
372
+ const next = { ...this.state.value, ...patch };
373
+ this.state.next(next);
374
+ this.Events.Emit('stateChanged', next);
375
+ }
376
+ /** Emits a room error; the preview's are device errors, each naming its device (`Device`). */
377
+ emitError(kind, message, cause, device) {
378
+ this.Events.Emit('error', { Kind: kind, Message: message, Cause: cause, Device: device });
379
+ }
380
+ }
381
+ /** Your view: your camera and share from the browser, and your microphone's level. */
382
+ function localView(session, media, watching) {
383
+ const camera = media.CameraSource;
384
+ const screen = session.Share?.Source ?? null;
385
+ return {
386
+ Identity: LIVEKIT_PREVIEW_LOCAL_IDENTITY,
387
+ DisplayName: session.DisplayName,
388
+ IsLocal: true,
389
+ Role: 'participant',
390
+ IsSpeaking: false,
391
+ AudioLevel: 0,
392
+ HasAudio: media.Microphone.Status === 'on',
393
+ HasVideo: camera !== null,
394
+ IsScreenSharing: screen !== null,
395
+ ConnectionQuality: 'excellent',
396
+ AgentCanSee: session.AgentVisionOn && watching,
397
+ Raw: session.Local,
398
+ Media: {
399
+ Video: { ...(camera ? { camera } : {}), ...(screen ? { screen } : {}) },
400
+ GetAudioLevel: session.Media.ReadMicrophoneLevel,
401
+ },
402
+ };
403
+ }
404
+ /** A simulated person's view: no camera, and a speaking level while it is their turn. */
405
+ function personView(session, person, index, watching) {
406
+ const speaking = index === session.Speaker;
407
+ return {
408
+ Identity: person.Identity,
409
+ DisplayName: person.DisplayName,
410
+ IsLocal: false,
411
+ Role: person.Role,
412
+ IsSpeaking: speaking,
413
+ AudioLevel: speaking ? speechLevel(Date.now()) : 0,
414
+ HasAudio: true,
415
+ HasVideo: false,
416
+ IsScreenSharing: false,
417
+ ConnectionQuality: 'excellent',
418
+ AgentCanSee: person.AgentCanSee === true && watching,
419
+ Raw: session.Others[index],
420
+ Media: { GetAudioLevel: speaking ? () => speechLevel(Date.now()) : () => 0 },
421
+ };
422
+ }
423
+ /** What you are publishing, as the room's controls show it: while you share, what it is, and a shared panel's name. */
424
+ function localMediaState(session, media) {
425
+ const share = session.Share;
426
+ const panelLabel = share?.Capture.PanelLabel;
427
+ return {
428
+ MicrophoneEnabled: media.Microphone.Status === 'on',
429
+ CameraEnabled: media.Camera.Status === 'on',
430
+ ScreenShareEnabled: share !== null,
431
+ ...(share ? { ScreenShareSurface: share.Capture.Surface } : {}),
432
+ ...(panelLabel ? { ScreenSharePanelLabel: panelLabel } : {}),
433
+ AgentVisionOn: session.AgentVisionOn,
434
+ };
435
+ }
436
+ /** A level that rises and falls like speech, 0.15 to 0.65. */
437
+ function speechLevel(now) {
438
+ return 0.15 + 0.35 * Math.abs(Math.sin(now / 170)) + 0.15 * Math.abs(Math.sin(now / 53));
439
+ }
440
+ /** Stops your share, without reporting it as ended by the browser. */
441
+ function stopSharing(session) {
442
+ const share = session.Share;
443
+ if (!share) {
444
+ return;
445
+ }
446
+ session.Share = null;
447
+ share.StopWatching?.();
448
+ share.Capture.Stop();
449
+ }
450
+ /** Stops the turns and your share, and frees your devices. */
451
+ function closeSession(session) {
452
+ if (session.Turns) {
453
+ clearInterval(session.Turns);
454
+ }
455
+ stopSharing(session);
456
+ session.MediaWatch?.unsubscribe();
457
+ session.Media.Dispose();
458
+ }
459
+ /** The state before joining and after leaving: nobody in the room. */
460
+ function initialState() {
461
+ return {
462
+ Status: 'idle',
463
+ RoomName: undefined,
464
+ Local: undefined,
465
+ Remote: [],
466
+ ActiveSpeakerIdentities: [],
467
+ LocalMedia: { MicrophoneEnabled: false, CameraEnabled: false, ScreenShareEnabled: false },
468
+ AudioPlaybackBlocked: false,
469
+ NoiseFilterEnabled: false,
470
+ BackgroundEffect: { Kind: 'none' },
471
+ E2EEEnabled: false,
472
+ AgentWatching: false,
473
+ };
474
+ }
475
+ //# sourceMappingURL=livekit-preview-room-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livekit-preview-room-controller.js","sourceRoot":"","sources":["../src/livekit-preview-room-controller.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,12 @@
7
7
  * @module @memberjunction/livekit-room-core
8
8
  */
9
9
  import { type LocalAudioTrack, type LocalVideoTrack } from 'livekit-client';
10
- /** A live, room-free media preview for a PreJoin screen. */
10
+ /**
11
+ * A live, room-free media preview for a PreJoin screen.
12
+ *
13
+ * @deprecated Use `MediaPreview` from `@memberjunction/ai-realtime-client/media`, on a `LocalMediaController`: the
14
+ * shared lobby preview the meeting room now runs, with the shared microphone meter and a controller a test can fake.
15
+ */
11
16
  export declare class LiveKitMediaPreview {
12
17
  private videoTrack;
13
18
  private audioTrack;
@@ -1 +1 @@
1
- {"version":3,"file":"livekit-preview.d.ts","sourceRoot":"","sources":["../src/livekit-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAgD,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE1H,4DAA4D;AAC5D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,YAAY,CAA6B;IAEjD,mDAAmD;IACnD,IAAW,UAAU,IAAI,eAAe,GAAG,IAAI,CAE9C;IAED;;;;;OAKG;IACU,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAMpE;;;;;OAKG;IACU,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOpE;;OAEG;IACI,YAAY,IAAI,MAAM;IAa7B,qCAAqC;IACxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvC,iEAAiE;IACpD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvC,sEAAsE;IACzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,gFAAgF;IAChF,OAAO,CAAC,iBAAiB;CAW1B"}
1
+ {"version":3,"file":"livekit-preview.d.ts","sourceRoot":"","sources":["../src/livekit-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAgD,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE1H;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,YAAY,CAA6B;IAEjD,mDAAmD;IACnD,IAAW,UAAU,IAAI,eAAe,GAAG,IAAI,CAE9C;IAED;;;;;OAKG;IACU,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAMpE;;;;;OAKG;IACU,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOpE;;OAEG;IACI,YAAY,IAAI,MAAM;IAa7B,qCAAqC;IACxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvC,iEAAiE;IACpD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvC,sEAAsE;IACzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,gFAAgF;IAChF,OAAO,CAAC,iBAAiB;CAW1B"}
@@ -7,7 +7,12 @@
7
7
  * @module @memberjunction/livekit-room-core
8
8
  */
9
9
  import { createLocalAudioTrack, createLocalVideoTrack } from 'livekit-client';
10
- /** A live, room-free media preview for a PreJoin screen. */
10
+ /**
11
+ * A live, room-free media preview for a PreJoin screen.
12
+ *
13
+ * @deprecated Use `MediaPreview` from `@memberjunction/ai-realtime-client/media`, on a `LocalMediaController`: the
14
+ * shared lobby preview the meeting room now runs, with the shared microphone meter and a controller a test can fake.
15
+ */
11
16
  export class LiveKitMediaPreview {
12
17
  constructor() {
13
18
  this.videoTrack = null;
@@ -1 +1 @@
1
- {"version":3,"file":"livekit-preview.js","sourceRoot":"","sources":["../src/livekit-preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"livekit-preview.js","sourceRoot":"","sources":["../src/livekit-preview.ts"],"names":[],"mappings":"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"}