@webex/plugin-meetings 3.12.0-next.8 → 3.12.0-task-refactor.1

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 (201) hide show
  1. package/dist/annotation/index.js +5 -14
  2. package/dist/annotation/index.js.map +1 -1
  3. package/dist/breakouts/breakout.js +1 -1
  4. package/dist/breakouts/index.js +1 -1
  5. package/dist/config.js +2 -8
  6. package/dist/config.js.map +1 -1
  7. package/dist/constants.js +6 -29
  8. package/dist/constants.js.map +1 -1
  9. package/dist/hashTree/hashTreeParser.js +29 -1563
  10. package/dist/hashTree/hashTreeParser.js.map +1 -1
  11. package/dist/hashTree/types.js +3 -13
  12. package/dist/hashTree/types.js.map +1 -1
  13. package/dist/index.js +2 -11
  14. package/dist/index.js.map +1 -1
  15. package/dist/interceptors/index.js +0 -7
  16. package/dist/interceptors/index.js.map +1 -1
  17. package/dist/interceptors/locusRouteToken.js +5 -27
  18. package/dist/interceptors/locusRouteToken.js.map +1 -1
  19. package/dist/interpretation/index.js +2 -2
  20. package/dist/interpretation/index.js.map +1 -1
  21. package/dist/interpretation/siLanguage.js +1 -1
  22. package/dist/locus-info/controlsUtils.js +3 -7
  23. package/dist/locus-info/controlsUtils.js.map +1 -1
  24. package/dist/locus-info/index.js +247 -642
  25. package/dist/locus-info/index.js.map +1 -1
  26. package/dist/locus-info/selfUtils.js +0 -1
  27. package/dist/locus-info/selfUtils.js.map +1 -1
  28. package/dist/locus-info/types.js.map +1 -1
  29. package/dist/media/MediaConnectionAwaiter.js +1 -57
  30. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  31. package/dist/media/properties.js +2 -4
  32. package/dist/media/properties.js.map +1 -1
  33. package/dist/meeting/in-meeting-actions.js +1 -7
  34. package/dist/meeting/in-meeting-actions.js.map +1 -1
  35. package/dist/meeting/index.js +1036 -1481
  36. package/dist/meeting/index.js.map +1 -1
  37. package/dist/meeting/request.js +0 -50
  38. package/dist/meeting/request.js.map +1 -1
  39. package/dist/meeting/request.type.js.map +1 -1
  40. package/dist/meeting/util.js +3 -133
  41. package/dist/meeting/util.js.map +1 -1
  42. package/dist/meetings/index.js +59 -142
  43. package/dist/meetings/index.js.map +1 -1
  44. package/dist/meetings/util.js +7 -11
  45. package/dist/meetings/util.js.map +1 -1
  46. package/dist/member/index.js +0 -10
  47. package/dist/member/index.js.map +1 -1
  48. package/dist/member/util.js +0 -10
  49. package/dist/member/util.js.map +1 -1
  50. package/dist/metrics/constants.js +1 -7
  51. package/dist/metrics/constants.js.map +1 -1
  52. package/dist/multistream/mediaRequestManager.js +60 -9
  53. package/dist/multistream/mediaRequestManager.js.map +1 -1
  54. package/dist/multistream/remoteMediaManager.js +0 -11
  55. package/dist/multistream/remoteMediaManager.js.map +1 -1
  56. package/dist/multistream/sendSlotManager.js +2 -116
  57. package/dist/multistream/sendSlotManager.js.map +1 -1
  58. package/dist/reachability/clusterReachability.js +18 -171
  59. package/dist/reachability/clusterReachability.js.map +1 -1
  60. package/dist/reachability/index.js +11 -21
  61. package/dist/reachability/index.js.map +1 -1
  62. package/dist/reachability/reachabilityPeerConnection.js +1 -1
  63. package/dist/reachability/reachabilityPeerConnection.js.map +1 -1
  64. package/dist/reactions/reactions.type.js.map +1 -1
  65. package/dist/reconnection-manager/index.js +1 -0
  66. package/dist/reconnection-manager/index.js.map +1 -1
  67. package/dist/types/common/browser-detection.d.ts +0 -1
  68. package/dist/types/common/events/events-scope.d.ts +0 -1
  69. package/dist/types/common/events/events.d.ts +0 -1
  70. package/dist/types/config.d.ts +0 -5
  71. package/dist/types/constants.d.ts +1 -24
  72. package/dist/types/hashTree/hashTreeParser.d.ts +11 -260
  73. package/dist/types/hashTree/types.d.ts +0 -20
  74. package/dist/types/index.d.ts +0 -1
  75. package/dist/types/interceptors/index.d.ts +1 -2
  76. package/dist/types/interceptors/locusRouteToken.d.ts +0 -2
  77. package/dist/types/locus-info/index.d.ts +47 -68
  78. package/dist/types/locus-info/types.d.ts +12 -28
  79. package/dist/types/media/MediaConnectionAwaiter.d.ts +1 -10
  80. package/dist/types/media/properties.d.ts +1 -2
  81. package/dist/types/meeting/in-meeting-actions.d.ts +0 -6
  82. package/dist/types/meeting/index.d.ts +7 -86
  83. package/dist/types/meeting/request.d.ts +1 -16
  84. package/dist/types/meeting/request.type.d.ts +0 -5
  85. package/dist/types/meeting/util.d.ts +0 -31
  86. package/dist/types/meeting-info/util.d.ts +0 -1
  87. package/dist/types/meeting-info/utilv2.d.ts +0 -1
  88. package/dist/types/meetings/index.d.ts +2 -4
  89. package/dist/types/member/index.d.ts +0 -1
  90. package/dist/types/member/types.d.ts +4 -4
  91. package/dist/types/member/util.d.ts +0 -5
  92. package/dist/types/metrics/constants.d.ts +0 -6
  93. package/dist/types/multistream/mediaRequestManager.d.ts +23 -0
  94. package/dist/types/multistream/sendSlotManager.d.ts +1 -23
  95. package/dist/types/reachability/clusterReachability.d.ts +3 -30
  96. package/dist/types/reactions/reactions.type.d.ts +0 -1
  97. package/dist/types/recording-controller/util.d.ts +5 -5
  98. package/dist/types/roap/index.d.ts +1 -1
  99. package/dist/webinar/index.js +163 -438
  100. package/dist/webinar/index.js.map +1 -1
  101. package/package.json +24 -26
  102. package/src/annotation/index.ts +7 -27
  103. package/src/config.ts +0 -5
  104. package/src/constants.ts +1 -30
  105. package/src/hashTree/hashTreeParser.ts +25 -1523
  106. package/src/hashTree/types.ts +1 -24
  107. package/src/index.ts +1 -8
  108. package/src/interceptors/index.ts +1 -2
  109. package/src/interceptors/locusRouteToken.ts +5 -22
  110. package/src/interpretation/index.ts +2 -2
  111. package/src/locus-info/controlsUtils.ts +0 -17
  112. package/src/locus-info/index.ts +213 -707
  113. package/src/locus-info/selfUtils.ts +0 -1
  114. package/src/locus-info/types.ts +12 -27
  115. package/src/media/MediaConnectionAwaiter.ts +1 -41
  116. package/src/media/properties.ts +1 -3
  117. package/src/meeting/in-meeting-actions.ts +0 -12
  118. package/src/meeting/index.ts +84 -461
  119. package/src/meeting/request.ts +0 -42
  120. package/src/meeting/request.type.ts +0 -6
  121. package/src/meeting/util.ts +2 -160
  122. package/src/meetings/index.ts +60 -180
  123. package/src/meetings/util.ts +9 -10
  124. package/src/member/index.ts +0 -10
  125. package/src/member/util.ts +0 -12
  126. package/src/metrics/constants.ts +0 -7
  127. package/src/multistream/mediaRequestManager.ts +54 -4
  128. package/src/multistream/remoteMediaManager.ts +0 -13
  129. package/src/multistream/sendSlotManager.ts +3 -97
  130. package/src/reachability/clusterReachability.ts +27 -153
  131. package/src/reachability/index.ts +1 -15
  132. package/src/reachability/reachabilityPeerConnection.ts +1 -3
  133. package/src/reactions/reactions.type.ts +0 -1
  134. package/src/reconnection-manager/index.ts +1 -0
  135. package/src/webinar/index.ts +6 -265
  136. package/test/unit/spec/annotation/index.ts +7 -69
  137. package/test/unit/spec/interceptors/locusRouteToken.ts +0 -44
  138. package/test/unit/spec/locus-info/controlsUtils.js +1 -56
  139. package/test/unit/spec/locus-info/index.js +90 -1457
  140. package/test/unit/spec/media/MediaConnectionAwaiter.ts +1 -41
  141. package/test/unit/spec/media/properties.ts +3 -12
  142. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -8
  143. package/test/unit/spec/meeting/index.js +128 -981
  144. package/test/unit/spec/meeting/request.js +0 -70
  145. package/test/unit/spec/meeting/utils.js +26 -438
  146. package/test/unit/spec/meetings/index.js +33 -845
  147. package/test/unit/spec/meetings/utils.js +1 -51
  148. package/test/unit/spec/member/index.js +4 -28
  149. package/test/unit/spec/member/util.js +27 -65
  150. package/test/unit/spec/multistream/mediaRequestManager.ts +85 -2
  151. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -30
  152. package/test/unit/spec/multistream/sendSlotManager.ts +36 -135
  153. package/test/unit/spec/reachability/clusterReachability.ts +1 -125
  154. package/test/unit/spec/reachability/index.ts +3 -26
  155. package/test/unit/spec/reconnection-manager/index.js +8 -4
  156. package/test/unit/spec/webinar/index.ts +37 -534
  157. package/dist/aiEnableRequest/index.js +0 -184
  158. package/dist/aiEnableRequest/index.js.map +0 -1
  159. package/dist/aiEnableRequest/utils.js +0 -36
  160. package/dist/aiEnableRequest/utils.js.map +0 -1
  161. package/dist/hashTree/constants.js +0 -22
  162. package/dist/hashTree/constants.js.map +0 -1
  163. package/dist/hashTree/hashTree.js +0 -533
  164. package/dist/hashTree/hashTree.js.map +0 -1
  165. package/dist/hashTree/utils.js +0 -69
  166. package/dist/hashTree/utils.js.map +0 -1
  167. package/dist/interceptors/constant.js +0 -12
  168. package/dist/interceptors/constant.js.map +0 -1
  169. package/dist/interceptors/dataChannelAuthToken.js +0 -290
  170. package/dist/interceptors/dataChannelAuthToken.js.map +0 -1
  171. package/dist/interceptors/utils.js +0 -27
  172. package/dist/interceptors/utils.js.map +0 -1
  173. package/dist/types/aiEnableRequest/index.d.ts +0 -5
  174. package/dist/types/aiEnableRequest/utils.d.ts +0 -2
  175. package/dist/types/hashTree/constants.d.ts +0 -9
  176. package/dist/types/hashTree/hashTree.d.ts +0 -136
  177. package/dist/types/hashTree/utils.d.ts +0 -22
  178. package/dist/types/interceptors/constant.d.ts +0 -5
  179. package/dist/types/interceptors/dataChannelAuthToken.d.ts +0 -43
  180. package/dist/types/interceptors/utils.d.ts +0 -1
  181. package/dist/types/webinar/utils.d.ts +0 -6
  182. package/dist/webinar/utils.js +0 -25
  183. package/dist/webinar/utils.js.map +0 -1
  184. package/src/aiEnableRequest/README.md +0 -84
  185. package/src/aiEnableRequest/index.ts +0 -170
  186. package/src/aiEnableRequest/utils.ts +0 -25
  187. package/src/hashTree/constants.ts +0 -10
  188. package/src/hashTree/hashTree.ts +0 -480
  189. package/src/hashTree/utils.ts +0 -62
  190. package/src/interceptors/constant.ts +0 -6
  191. package/src/interceptors/dataChannelAuthToken.ts +0 -170
  192. package/src/interceptors/utils.ts +0 -16
  193. package/src/webinar/utils.ts +0 -16
  194. package/test/unit/spec/aiEnableRequest/index.ts +0 -981
  195. package/test/unit/spec/aiEnableRequest/utils.ts +0 -130
  196. package/test/unit/spec/hashTree/hashTree.ts +0 -721
  197. package/test/unit/spec/hashTree/hashTreeParser.ts +0 -3670
  198. package/test/unit/spec/hashTree/utils.ts +0 -140
  199. package/test/unit/spec/interceptors/dataChannelAuthToken.ts +0 -210
  200. package/test/unit/spec/interceptors/utils.ts +0 -75
  201. package/test/unit/spec/webinar/utils.ts +0 -39
@@ -1,27 +1,17 @@
1
1
  import { HtMeta } from '../hashTree/types';
2
- export type LocusFullState = {
3
- active: boolean;
4
- count: number;
5
- lastActive: string;
6
- locked: boolean;
7
- sessionId: string;
8
- seessionIds: string[];
9
- startTime: number;
10
- state: string;
11
- type: string;
12
- };
13
- export type Links = {
14
- services: Record<'breakout' | 'record', {
15
- url: string;
16
- }>;
17
- resources: Record<'webcastInstance' | 'visibleDataSets', {
18
- url: string;
19
- }>;
20
- };
21
2
  export type LocusDTO = {
22
3
  controls?: any;
23
- embeddedApps?: any[];
24
- fullState?: LocusFullState;
4
+ fullState?: {
5
+ active: boolean;
6
+ count: number;
7
+ lastActive: string;
8
+ locked: boolean;
9
+ sessionId: string;
10
+ seessionIds: string[];
11
+ startTime: number;
12
+ state: string;
13
+ type: string;
14
+ };
25
15
  host?: {
26
16
  id: string;
27
17
  incomingCallProtocols: any[];
@@ -33,9 +23,8 @@ export type LocusDTO = {
33
23
  info?: any;
34
24
  jsSdkMeta?: {
35
25
  removedParticipantIds: string[];
36
- forceReplaceMembers?: boolean;
37
26
  };
38
- links?: Links;
27
+ links?: any;
39
28
  mediaShares?: any[];
40
29
  meetings?: any[];
41
30
  participants: any[];
@@ -54,8 +43,3 @@ export type LocusDTO = {
54
43
  syncUrl?: string;
55
44
  url?: string;
56
45
  };
57
- export type ReplacesInfo = {
58
- locusUrl: string;
59
- replacedAt: string;
60
- sessionId: string;
61
- };
@@ -1,6 +1,5 @@
1
1
  export interface MediaConnectionAwaiterProps {
2
2
  webrtcMediaConnection: any;
3
- correlationId: string;
4
3
  }
5
4
  /**
6
5
  * @class MediaConnectionAwaiter
@@ -11,7 +10,6 @@ export default class MediaConnectionAwaiter {
11
10
  private defer;
12
11
  private retried;
13
12
  private iceConnected;
14
- private correlationId;
15
13
  private onTimeoutCallback;
16
14
  private peerConnectionStateCallback;
17
15
  private iceConnectionStateCallback;
@@ -19,7 +17,7 @@ export default class MediaConnectionAwaiter {
19
17
  /**
20
18
  * @param {MediaConnectionAwaiterProps} mediaConnectionAwaiterProps
21
19
  */
22
- constructor({ webrtcMediaConnection, correlationId }: MediaConnectionAwaiterProps);
20
+ constructor({ webrtcMediaConnection }: MediaConnectionAwaiterProps);
23
21
  /**
24
22
  * Returns true if the connection is connected, false otherwise.
25
23
  *
@@ -68,13 +66,6 @@ export default class MediaConnectionAwaiter {
68
66
  * @returns {void}
69
67
  */
70
68
  iceGatheringStateHandler(): void;
71
- /**
72
- * sends a metric with some additional info that might help debugging
73
- * issues where browser doesn't update the RTCPeerConnection's iceConnectionState or connectionState
74
- *
75
- * @returns {void}
76
- */
77
- sendMetric(): Promise<void>;
78
69
  /**
79
70
  * Function called when the timeout is reached.
80
71
  *
@@ -93,10 +93,9 @@ export default class MediaProperties {
93
93
  /**
94
94
  * Waits for the webrtc media connection to be connected.
95
95
  *
96
- * @param {string} correlationId
97
96
  * @returns {Promise<void>}
98
97
  */
99
- waitForMediaConnectionConnected(correlationId: string): Promise<void>;
98
+ waitForMediaConnectionConnected(): Promise<void>;
100
99
  /**
101
100
  * Returns ICE transport information:
102
101
  * - selectedCandidatePairChanges - number of times the selected candidate pair was changed, it should be at least 1 for successful connections
@@ -28,7 +28,6 @@ interface IInMeetingActions {
28
28
  canLowerAllHands?: boolean;
29
29
  canLowerSomeoneElsesHand?: boolean;
30
30
  bothLeaveAndEndMeetingAvailable?: boolean;
31
- requireHostEndMeetingBeforeLeave?: boolean;
32
31
  canEnableClosedCaption?: boolean;
33
32
  canStartTranscribing?: boolean;
34
33
  canStopTranscribing?: boolean;
@@ -113,8 +112,6 @@ interface IInMeetingActions {
113
112
  canMoveToLobby?: boolean;
114
113
  canEnablePollingQA?: boolean;
115
114
  canDisablePollingQA?: boolean;
116
- canAttendeeRequestAiAssistantEnabled?: boolean;
117
- isAttendeeRequestAiAssistantDeclinedAll?: boolean;
118
115
  }
119
116
  /**
120
117
  * @class InMeetingActions
@@ -143,7 +140,6 @@ export default class InMeetingActions implements IInMeetingActions {
143
140
  canLowerAllHands: any;
144
141
  canLowerSomeoneElsesHand: any;
145
142
  bothLeaveAndEndMeetingAvailable: any;
146
- requireHostEndMeetingBeforeLeave: any;
147
143
  canEnableClosedCaption: any;
148
144
  canStartTranscribing: any;
149
145
  canStopTranscribing: any;
@@ -228,8 +224,6 @@ export default class InMeetingActions implements IInMeetingActions {
228
224
  canMoveToLobby: any;
229
225
  canEnablePollingQA: any;
230
226
  canDisablePollingQA: any;
231
- canAttendeeRequestAiAssistantEnabled: any;
232
- isAttendeeRequestAiAssistantDeclinedAll: any;
233
227
  /**
234
228
  * Returns all meeting action options
235
229
  * @returns {Object}
@@ -1,9 +1,7 @@
1
- /// <reference types="node" />
2
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
3
2
  import { ClientEvent, ClientEventLeaveReason } from '@webex/internal-plugin-metrics';
4
- import type { ClientEvent as RawClientEvent } from '@webex/event-dictionary-ts';
3
+ import { ClientEvent as RawClientEvent } from '@webex/event-dictionary-ts';
5
4
  import { MediaType, StatsAnalyzer, NetworkQualityMonitor, StatsMonitor } from '@webex/internal-media-core';
6
- import { DataChannelTokenType } from '@webex/internal-plugin-llm';
7
5
  import { LocalStream, LocalCameraStream, LocalDisplayStream, LocalSystemAudioStream, LocalMicrophoneStream } from '@webex/media-helpers';
8
6
  import Roap, { type TurnDiscoverySkipReason } from '../roap/index';
9
7
  import { type TurnServerInfo } from '../roap/types';
@@ -24,7 +22,7 @@ import { LocusMediaRequest } from './locusMediaRequest';
24
22
  import { BrbState } from './brbState';
25
23
  import { SetStageOptions } from './request.type';
26
24
  import { Invitee } from './type';
27
- import { DataSet, HashTreeMessage, Metadata } from '../hashTree/hashTreeParser';
25
+ import { DataSet } from '../hashTree/hashTreeParser';
28
26
  import { LocusDTO } from '../locus-info/types';
29
27
  export type CaptionData = {
30
28
  id: string;
@@ -71,7 +69,6 @@ export type AddMediaOptions = {
71
69
  remoteMediaManagerConfig?: RemoteMediaManagerConfiguration;
72
70
  bundlePolicy?: BundlePolicy;
73
71
  allowMediaInLobby?: boolean;
74
- allowPublishMediaInLobby?: boolean;
75
72
  additionalMediaOptions?: AdditionalMediaOptions;
76
73
  };
77
74
  export type AdditionalMediaOptions = {
@@ -348,16 +345,6 @@ type FetchMeetingInfoParams = {
348
345
  * @property {number} networkQualityScore - {1|0} 1 indicates acceptable uplink 0 indicates unacceptable uplink based on threshold
349
346
  * @memberof Meeting
350
347
  */
351
- /**
352
- * Stores an event so all events can be later retrieved via a console command for debugging.
353
- * @param {string} type
354
- * @param {Object} data
355
- * @returns {void}
356
- */
357
- export declare function storeEventForDebugging(type: string, data: {
358
- eventType: any;
359
- stateElementsMessage?: HashTreeMessage;
360
- }): void;
361
348
  /**
362
349
  * @description Meeting is the crux of the plugin
363
350
  * @export
@@ -370,7 +357,6 @@ export default class Meeting extends StatelessWebexPlugin {
370
357
  breakouts: any;
371
358
  simultaneousInterpretation: any;
372
359
  annotation: any;
373
- aiEnableRequest: any;
374
360
  webinar: any;
375
361
  conversationUrl: string;
376
362
  callStateForMetrics: CallStateForMetrics;
@@ -418,10 +404,6 @@ export default class Meeting extends StatelessWebexPlugin {
418
404
  keepAliveTimerId: NodeJS.Timeout;
419
405
  lastVideoLayoutInfo: any;
420
406
  locusInfo: any;
421
- isUserUnadmitted?: boolean;
422
- joinedWith?: any;
423
- selfId?: string;
424
- roles: any[];
425
407
  locusMediaRequest?: LocusMediaRequest;
426
408
  mediaProperties: MediaProperties;
427
409
  mediaRequestManagers: {
@@ -455,6 +437,7 @@ export default class Meeting extends StatelessWebexPlugin {
455
437
  endCallInitJoinReq: any;
456
438
  endJoinReqResp: any;
457
439
  endLocalSDPGenRemoteSDPRecvDelay: any;
440
+ joinedWith: any;
458
441
  locusId: any;
459
442
  startCallInitJoinReq: any;
460
443
  startJoinReqResp: any;
@@ -469,11 +452,12 @@ export default class Meeting extends StatelessWebexPlugin {
469
452
  permissionTokenReceivedLocalTime: number;
470
453
  resourceId: any;
471
454
  resourceUrl: string;
455
+ selfId: string;
472
456
  state: any;
473
457
  localAudioStreamMuteStateHandler: () => void;
474
458
  localVideoStreamMuteStateHandler: () => void;
475
459
  localOutputTrackChangeHandler: () => void;
476
- localConstraintsChangeHandler: () => void;
460
+ roles: any[];
477
461
  environment: string;
478
462
  namespace: string;
479
463
  allowMediaInLobby: boolean;
@@ -505,7 +489,6 @@ export default class Meeting extends StatelessWebexPlugin {
505
489
  private uploadLogsTimer?;
506
490
  private logUploadIntervalIndex;
507
491
  private mediaServerIp;
508
- private llmHealthCheckTimer?;
509
492
  /**
510
493
  * @param {Object} attrs
511
494
  * @param {Object} options
@@ -1075,7 +1058,6 @@ export default class Meeting extends StatelessWebexPlugin {
1075
1058
  host: object;
1076
1059
  selfId: string;
1077
1060
  dataSets: DataSet[];
1078
- metadata: Metadata;
1079
1061
  }): void;
1080
1062
  /**
1081
1063
  * Upload logs for the current meeting
@@ -1318,11 +1300,6 @@ export default class Meeting extends StatelessWebexPlugin {
1318
1300
  * @returns{void}
1319
1301
  */
1320
1302
  private triggerStopReceivingTranscriptionEvent;
1321
- /**
1322
- * Restores LLM subchannel subscriptions after reconnect when captions are active.
1323
- * @returns {void}
1324
- */
1325
- private restoreLLMSubscriptionsIfNeeded;
1326
1303
  /**
1327
1304
  * This is a callback for the LLM event that is triggered when it comes online
1328
1305
  * This method in turn will trigger an event to the developers that the LLM is connected
@@ -1344,48 +1321,10 @@ export default class Meeting extends StatelessWebexPlugin {
1344
1321
  * Scenario D: Joining any other way (sip, pstn, conversationUrl, link just need to specify resourceId)
1345
1322
  */
1346
1323
  join(options?: any): Promise<any>;
1347
- /** starts a timer that after a few minutes checks if
1348
- * the LLM connection is connected, if not it sends a metric
1349
- * @private
1350
- * @returns {void}
1351
- */
1352
- private startLLMHealthCheckTimer;
1353
- /**
1354
- * Clears the LLM health check timer
1355
- * @private
1356
- * @returns {void}
1357
- */
1358
- private clearLLMHealthCheckTimer;
1359
- /**
1360
- * Disconnects and cleans up the default LLM session listeners/timers.
1361
- * @param {Object} options
1362
- * @param {boolean} [options.removeOnlineListener=true] removes the one-time online listener
1363
- * @param {boolean} [options.throwOnError=true] rethrows disconnect errors when true
1364
- * @returns {Promise<void>}
1365
- */
1366
- private cleanupLLMConneciton;
1367
- /**
1368
- * Clears all data channel tokens stored in LLM.
1369
- * Called during meeting cleanup to ensure stale tokens are not reused.
1370
- * @returns {void}
1371
- */
1372
- clearDataChannelToken(): void;
1373
- /**
1374
- * Saves the data channel tokens from the join response into LLM so that
1375
- * updateLLMConnection / updatePSDataChannel don't need to fetch them from locusInfo.
1376
- * @param {Object} join - The parsed join response (from MeetingUtil.parseLocusJoin)
1377
- * @returns {void}
1378
- */
1379
- saveDataChannelToken(join: any): void;
1380
- /**
1381
- * Ensures default-session data channel token exists after lobby admission.
1382
- * Some lobby users do not receive a token until they are admitted.
1383
- * @returns {Promise<boolean>} true when a new token is fetched and cached
1384
- */
1385
- private ensureDefaultDatachannelTokenAfterAdmit;
1386
1324
  /**
1387
1325
  * Connects to low latency mercury and reconnects if the address has changed
1388
1326
  * It will also disconnect if called when the meeting has ended
1327
+ * @param {String} datachannelUrl
1389
1328
  * @returns {Promise}
1390
1329
  */
1391
1330
  updateLLMConnection(): Promise<any>;
@@ -1956,7 +1895,7 @@ export default class Meeting extends StatelessWebexPlugin {
1956
1895
  * @public
1957
1896
  * @memberof Meeting
1958
1897
  */
1959
- clearMeetingData: () => Promise<void>;
1898
+ clearMeetingData: () => void;
1960
1899
  /**
1961
1900
  * starts keepAlives being sent
1962
1901
  * @returns {void}
@@ -2134,23 +2073,5 @@ export default class Meeting extends StatelessWebexPlugin {
2134
2073
  * @memberof Meetings
2135
2074
  */
2136
2075
  cancelSipCallOut(participantId: string): Promise<any>;
2137
- /**
2138
- * Method to get new data
2139
- * @returns {Promise}
2140
- */
2141
- refreshDataChannelToken(): Promise<{
2142
- body: {
2143
- datachannelToken: any;
2144
- dataChannelTokenType: DataChannelTokenType;
2145
- };
2146
- }>;
2147
- /**
2148
- * Determines the current data channel token type based on the meeting state.
2149
- *
2150
- * variant should be used when connecting to the LLM data channel.
2151
- *
2152
- * @returns {DataChannelTokenType} The token type representing the current session mode.
2153
- */
2154
- getDataChannelTokenType(): DataChannelTokenType;
2155
2076
  }
2156
2077
  export {};
@@ -1,5 +1,5 @@
1
1
  import { StatelessWebexPlugin } from '@webex/webex-core';
2
- import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions, SynchronizeVideoLayout, fetchDataChannelTokenOptions } from './request.type';
2
+ import { SendReactionOptions, BrbOptions, ToggleReactionsOptions, PostMeetingDataConsentOptions, SynchronizeVideoLayout } from './request.type';
3
3
  import { AnnotationInfo } from '../annotation/annotation.types';
4
4
  import { ClientMediaPreferences } from '../reachability/reachability.types';
5
5
  /**
@@ -364,19 +364,4 @@ export default class MeetingRequest extends StatelessWebexPlugin {
364
364
  * @returns {Promise} The API response
365
365
  */
366
366
  cancelSipCallOut(participantId: any): Promise<any>;
367
- /**
368
- * Sends a request to retrieve the datachannel authorization token for a participant.
369
- *
370
- * For regular meeting data channel:
371
- * GET /locus/api/v1/loci/{uuid:lid}/participant/{uuid:pid}/datachannel/token
372
- *
373
- * For practice session data channel:
374
- * GET /locus/api/v1/loci/{uuid:lid}/participant/{uuid:pid}/practiceSession/datachannel/token
375
- *
376
- * @param {string} locusUrl - The locus url.
377
- * @param {string} requestingParticipantId - The participant UUID.
378
- * @param {boolean} [isPracticeSession=false] - Whether to get the practice session token.
379
- * @returns {Promise<{datachannelToken: string}>}
380
- */
381
- fetchDatachannelToken({ locusUrl, requestingParticipantId, isPracticeSession, }: fetchDataChannelTokenOptions): Promise<any>;
382
367
  }
@@ -94,9 +94,4 @@ export type SetStageVideoLayout = {
94
94
  export type UnsetStageVideoLayout = {
95
95
  overrideDefault: false;
96
96
  };
97
- export type fetchDataChannelTokenOptions = {
98
- locusUrl: string;
99
- requestingParticipantId: string;
100
- isPracticeSession: boolean;
101
- };
102
97
  export type SynchronizeVideoLayout = SetStageVideoLayout | UnsetStageVideoLayout;
@@ -2,34 +2,6 @@ import { LocalCameraStream, LocalMicrophoneStream } from '@webex/media-helpers';
2
2
  import { SELF_POLICY, IP_VERSION } from '../constants';
3
3
  declare const MeetingUtil: {
4
4
  parseLocusJoin: (response: any) => any;
5
- /**
6
- * Sanitizes a WebSocket URL by extracting only protocol, host, and pathname
7
- * Returns concatenated protocol + host + pathname for safe logging
8
- * Note: This is used for logging only; URL matching uses partial matching via _urlsPartiallyMatch
9
- * @param {string} urlString - The URL to sanitize
10
- * @returns {string} Sanitized URL or empty string if parsing fails
11
- */
12
- sanitizeWebSocketUrl: (urlString: string) => string;
13
- /**
14
- * Checks if two URLs partially match using an endsWith approach
15
- * Combines host and pathname, then checks if one ends with the other
16
- * This handles cases where one URL goes through a proxy (e.g., /webproxy/) while the other is direct
17
- * @param {string} url1 - First URL to compare
18
- * @param {string} url2 - Second URL to compare
19
- * @returns {boolean} True if one URL path ends with the other (partial match), false otherwise
20
- */
21
- _urlsPartiallyMatch: (url1: string, url2: string) => boolean;
22
- /**
23
- * Gets socket URL information for metrics, including whether the socket URLs match
24
- * Uses partial matching to handle proxy URLs (e.g., URLs with /webproxy/ prefix)
25
- * @param {Object} webex - The webex instance
26
- * @returns {Object} Object with hasMismatchedSocket, mercurySocketUrl, and deviceSocketUrl properties
27
- */
28
- getSocketUrlInfo: (webex: any) => {
29
- hasMismatchedSocket: boolean;
30
- mercurySocketUrl: string;
31
- deviceSocketUrl: string;
32
- };
33
5
  remoteUpdateAudioVideo: (meeting: any, audioMuted?: boolean, videoMuted?: boolean) => any;
34
6
  hasOwner: (info: any) => any;
35
7
  isOwnerSelf: (owner: any, selfId: any) => boolean;
@@ -87,7 +59,6 @@ declare const MeetingUtil: {
87
59
  canUserLowerAllHands: (displayHints: any) => any;
88
60
  canUserLowerSomeoneElsesHand: (displayHints: any) => any;
89
61
  bothLeaveAndEndMeetingAvailable: (displayHints: any) => any;
90
- requireHostEndMeetingBeforeLeave: (displayHints: any) => any;
91
62
  canManageBreakout: (displayHints: any) => any;
92
63
  canStartBreakout: (displayHints: any) => boolean;
93
64
  canBroadcastMessageToBreakout: (displayHints: any, policies?: {}) => boolean;
@@ -144,8 +115,6 @@ declare const MeetingUtil: {
144
115
  updateLocusFromApiResponse: (meeting: any, response: any) => any;
145
116
  generateBuildLocusDeltaRequestOptions: (originalMeeting: any) => (originalOptions: any) => any;
146
117
  generateLocusDeltaRequest: (originalMeeting: any) => (originalOptions: any) => any;
147
- canAttendeeRequestAiAssistantEnabled: (displayHints?: any[], roles?: any[]) => boolean;
148
- attendeeRequestAiAssistantDeclinedAll: (displayHints?: any[]) => boolean;
149
118
  selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => boolean;
150
119
  parseInterpretationInfo: (meeting: any, meetingInfo: any) => void;
151
120
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import url from 'url';
3
2
  import { DESTINATION_TYPE } from '../constants';
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import url from 'url';
3
2
  import { DESTINATION_TYPE } from '../constants';
4
3
  /**
@@ -95,8 +95,6 @@ export default class Meetings extends WebexPlugin {
95
95
  preferredWebexSite: any;
96
96
  reachability: Reachability;
97
97
  registered: any;
98
- registrationPromise: Promise<void>;
99
- unregistrationPromise: Promise<void>;
100
98
  request: any;
101
99
  geoHintInfo: any;
102
100
  meetingInfo: any;
@@ -152,7 +150,7 @@ export default class Meetings extends WebexPlugin {
152
150
  */
153
151
  private handleLocusEvent;
154
152
  /**
155
- * handles locus events through mercury that are not roap or approval request events
153
+ * handles locus events through mercury that are not roap
156
154
  * @param {Object} envelope
157
155
  * @param {Object} envelope.data
158
156
  * @param {String} envelope.data.eventType
@@ -289,7 +287,7 @@ export default class Meetings extends WebexPlugin {
289
287
  * @public
290
288
  * @memberof Meetings
291
289
  */
292
- unregister(): Promise<void>;
290
+ unregister(): any;
293
291
  /**
294
292
  * Creates a noise reduction effect
295
293
  *
@@ -6,7 +6,6 @@ export type MemberId = string;
6
6
  export default class Member {
7
7
  associatedUser: MemberId | null;
8
8
  associatedUsers: Set<MemberId>;
9
- canApproveAIEnablement: boolean;
10
9
  canReclaimHost: boolean;
11
10
  id: MemberId;
12
11
  isAudioMuted: any;
@@ -13,10 +13,10 @@ export type ServerRoleShape = {
13
13
  hasRole: boolean;
14
14
  };
15
15
  export declare enum MediaStatus {
16
- RECVONLY = "RECVONLY",
17
- SENDONLY = "SENDONLY",
18
- SENDRECV = "SENDRECV",
19
- INACTIVE = "INACTIVE",
16
+ RECVONLY = "RECVONLY",// participant only receiving and not sending
17
+ SENDONLY = "SENDONLY",// participant only sending and not receiving
18
+ SENDRECV = "SENDRECV",// participant both sending and receiving
19
+ INACTIVE = "INACTIVE",// participant is not connected to media source
20
20
  UNKNOWN = "UNKNOWN"
21
21
  }
22
22
  export interface IMediaStatus {
@@ -5,11 +5,6 @@ declare const MemberUtil: {
5
5
  * @returns {Boolean}
6
6
  */
7
7
  canReclaimHost: (participant: any) => any;
8
- /**
9
- * @param {Object} participant - The locus participant object.
10
- * @returns {Boolean}
11
- */
12
- canApproveAIEnablement: (participant: any) => boolean;
13
8
  /**
14
9
  * @param {Object} participant - The locus participant object.
15
10
  * @returns {[ServerRoleShape]}
@@ -19,7 +19,6 @@ declare const BEHAVIORAL_METRICS: {
19
19
  GET_DISPLAY_MEDIA_FAILURE: string;
20
20
  JOIN_WITH_MEDIA_FAILURE: string;
21
21
  LLM_CONNECTION_AFTER_JOIN_FAILURE: string;
22
- LLM_HEALTHCHECK_FAILURE: string;
23
22
  RECEIVE_TRANSCRIPTION_AFTER_JOIN_FAILURE: string;
24
23
  DISCONNECT_DUE_TO_INACTIVITY: string;
25
24
  MEETING_MEDIA_INACTIVE: string;
@@ -87,10 +86,5 @@ declare const BEHAVIORAL_METRICS: {
87
86
  MEDIA_ISSUE_DETECTED: string;
88
87
  LOCUS_CLASSIC_VS_HASH_TREE_MISMATCH: string;
89
88
  LOCUS_HASH_TREE_UNSUPPORTED_OPERATION: string;
90
- MEDIA_STILL_NOT_CONNECTED: string;
91
- DEPRECATED_SET_CODEC_PARAMETERS_USED: string;
92
- DEPRECATED_DELETE_CODEC_PARAMETERS_USED: string;
93
- SET_CUSTOM_CODEC_PARAMETERS_USED: string;
94
- MARK_CUSTOM_CODEC_PARAMETERS_FOR_DELETION_USED: string;
95
89
  };
96
90
  export { BEHAVIORAL_METRICS as default };
@@ -50,12 +50,29 @@ export declare class MediaRequestManager {
50
50
  private degradationPreferences;
51
51
  private sourceUpdateListener;
52
52
  private debouncedSourceUpdateListener;
53
+ private previousStreamRequests;
53
54
  private trimRequestsToNumOfSources;
54
55
  private numTotalSources;
55
56
  private numLiveSources;
56
57
  constructor(sendMediaRequestsCallback: SendMediaRequestsCallback, options: Options);
57
58
  setDegradationPreferences(degradationPreferences: DegradationPreferences): void;
58
59
  private getDegradedClientRequests;
60
+ /**
61
+ * Returns true if two stream requests are the same, false otherwise.
62
+ *
63
+ * @param {StreamRequest} streamRequestA - Stream request A for comparison.
64
+ * @param {StreamRequest} streamRequestB - Stream request B for comparison.
65
+ * @returns {boolean} - Whether they are equal.
66
+ */
67
+ isEqual(streamRequestA: StreamRequest, streamRequestB: StreamRequest): boolean;
68
+ /**
69
+ * Compares new stream requests to previous ones and determines
70
+ * if they are the same.
71
+ *
72
+ * @param {StreamRequest[]} newRequests - Array with new requests.
73
+ * @returns {boolean} - True if they are equal, false otherwise.
74
+ */
75
+ private checkIsNewRequestsEqualToPrev;
59
76
  /**
60
77
  * Returns the maxPayloadBitsPerSecond per Stream
61
78
  *
@@ -77,6 +94,12 @@ export declare class MediaRequestManager {
77
94
  * @returns {number} maxMbps
78
95
  */
79
96
  private getH264MaxMbps;
97
+ /**
98
+ * Clears the previous stream requests.
99
+ *
100
+ * @returns {void}
101
+ */
102
+ clearPreviousRequests(): void;
80
103
  /** Modifies the passed in clientRequests and makes sure that in total they don't ask
81
104
  * for more streams than there are available.
82
105
  *
@@ -1,4 +1,4 @@
1
- import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState, MediaCodecMimeType, CodecParameters } from '@webex/internal-media-core';
1
+ import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup, StreamState } from '@webex/internal-media-core';
2
2
  /**
3
3
  * This class is used to manage the sendSlots for the given media types.
4
4
  */
@@ -69,8 +69,6 @@ export default class SendSlotManager {
69
69
  */
70
70
  setActive(mediaType: MediaType, active?: boolean): void;
71
71
  /**
72
- * @deprecated Use {@link setCustomCodecParameters} instead, which requires specifying the codec MIME type.
73
- *
74
72
  * This method is used to set the codec parameters for the sendSlot of the given mediaType
75
73
  * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
76
74
  * @param {Object} codecParameters
@@ -80,32 +78,12 @@ export default class SendSlotManager {
80
78
  [key: string]: string | undefined;
81
79
  }): Promise<void>;
82
80
  /**
83
- * @deprecated Use {@link markCustomCodecParametersForDeletion} instead, which requires specifying the codec MIME type.
84
- *
85
81
  * This method is used to delete the codec parameters for the sendSlot of the given mediaType
86
82
  * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
87
83
  * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
88
84
  * @returns {Promise<void>}
89
85
  */
90
86
  deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void>;
91
- /**
92
- * Sets custom codec parameters for the sendSlot of the given mediaType, scoped to a specific codec MIME type.
93
- * Delegates to WCME's setCustomCodecParameters API.
94
- * @param {MediaType} mediaType MediaType of the sendSlot
95
- * @param {MediaCodecMimeType} codecMimeType The codec MIME type to apply parameters to (e.g. OPUS, H264, AV1)
96
- * @param {CodecParameters} parameters Key-value pairs of codec parameters to set
97
- * @returns {Promise<void>}
98
- */
99
- setCustomCodecParameters(mediaType: MediaType, codecMimeType: MediaCodecMimeType, parameters: CodecParameters): Promise<void>;
100
- /**
101
- * Marks custom codec parameters for deletion on the sendSlot of the given mediaType, scoped to a specific codec MIME type.
102
- * Delegates to WCME's markCustomCodecParametersForDeletion API.
103
- * @param {MediaType} mediaType MediaType of the sendSlot
104
- * @param {MediaCodecMimeType} codecMimeType The codec MIME type whose parameters should be deleted (e.g. OPUS, H264, AV1)
105
- * @param {string[]} parameters Array of parameter keys to delete
106
- * @returns {Promise<void>}
107
- */
108
- markCustomCodecParametersForDeletion(mediaType: MediaType, codecMimeType: MediaCodecMimeType, parameters: string[]): Promise<void>;
109
87
  /**
110
88
  * This method is used to reset the SendSlotsManager by deleting all the sendSlots
111
89
  * @returns {undefined}
@@ -23,53 +23,26 @@ export declare const Events: {
23
23
  export type Events = Enum<typeof Events>;
24
24
  /**
25
25
  * A class that handles reachability checks for a single cluster.
26
- * Creates and orchestrates ReachabilityPeerConnection instance(s).
26
+ * Creates and orchestrates a ReachabilityPeerConnection instance.
27
27
  * Listens to events and emits them to consumers.
28
- *
29
- * When enablePerUdpUrlReachability is true:
30
- * - Creates one ReachabilityPeerConnection for each UDP URL
31
- * - Creates one ReachabilityPeerConnection for all TCP and TLS URLs together
32
- * Otherwise:
33
- * - Creates a single ReachabilityPeerConnection for all URLs
34
28
  */
35
29
  export declare class ClusterReachability extends EventsScope {
36
30
  private reachabilityPeerConnection;
37
- private reachabilityPeerConnectionsForUdp;
38
31
  readonly isVideoMesh: boolean;
39
32
  readonly name: any;
40
33
  readonly reachedSubnets: Set<string>;
41
- private enablePerUdpUrlReachability;
42
- private udpResultEmitted;
43
34
  /**
44
35
  * Constructor for ClusterReachability
45
36
  * @param {string} name cluster name
46
37
  * @param {ClusterNode} clusterInfo information about the media cluster
47
- * @param {boolean} enablePerUdpUrlReachability whether to create separate peer connections per UDP URL
48
38
  */
49
- constructor(name: string, clusterInfo: ClusterNode, enablePerUdpUrlReachability?: boolean);
39
+ constructor(name: string, clusterInfo: ClusterNode);
50
40
  /**
51
- * Initializes a single ReachabilityPeerConnection for all protocols
52
- * @param {ClusterNode} clusterInfo information about the media cluster
53
- * @returns {void}
54
- */
55
- private initializeSingleReachabilityPeerConnection;
56
- /**
57
- * Initializes per-URL UDP reachability checks:
58
- * - One ReachabilityPeerConnection per UDP URL
59
- * - One ReachabilityPeerConnection for all TCP and TLS URLs together
60
- * @param {ClusterNode} clusterInfo information about the media cluster
61
- * @returns {void}
62
- */
63
- private initializePerUdpUrlReachabilityCheck;
64
- /**
65
- * Sets up event listeners for a ReachabilityPeerConnection instance
66
- * @param {ReachabilityPeerConnection} rpc the ReachabilityPeerConnection instance
67
- * @param {boolean} isUdpPerUrl whether this is a per-URL UDP instance
41
+ * Sets up event listeners for the ReachabilityPeerConnection instance
68
42
  * @returns {void}
69
43
  */
70
44
  private setupReachabilityPeerConnectionEventListeners;
71
45
  /**
72
- * Gets the aggregated reachability result for this cluster.
73
46
  * @returns {ClusterReachabilityResult} reachability result for this cluster
74
47
  */
75
48
  getResult(): ClusterReachabilityResult;