@webex/contact-center 3.12.0-llmrefactor.1 → 3.12.0-llmrefactor.11

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 (198) hide show
  1. package/.sdd/manifest.json +7 -5
  2. package/ai-docs/ARCHITECTURE.md +1 -1
  3. package/ai-docs/CONTRACTS.md +8 -3
  4. package/ai-docs/SECURITY.md +1 -1
  5. package/ai-docs/contact-center-spec.md +22 -4
  6. package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
  7. package/dist/cc.js +544 -12
  8. package/dist/cc.js.map +1 -1
  9. package/dist/config.js +7 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +10 -2
  12. package/dist/constants.js.map +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/metrics/MetricsManager.js +16 -0
  15. package/dist/metrics/MetricsManager.js.map +1 -1
  16. package/dist/metrics/behavioral-events.js +104 -0
  17. package/dist/metrics/behavioral-events.js.map +1 -1
  18. package/dist/metrics/constants.js +18 -0
  19. package/dist/metrics/constants.js.map +1 -1
  20. package/dist/services/AddressBook.js +18 -15
  21. package/dist/services/AddressBook.js.map +1 -1
  22. package/dist/services/AnswerCallOnWebexService.js +202 -0
  23. package/dist/services/AnswerCallOnWebexService.js.map +1 -0
  24. package/dist/services/EntryPoint.js +46 -68
  25. package/dist/services/EntryPoint.js.map +1 -1
  26. package/dist/services/Queue.js +27 -22
  27. package/dist/services/Queue.js.map +1 -1
  28. package/dist/services/WebexCrossClientService.js +222 -0
  29. package/dist/services/WebexCrossClientService.js.map +1 -0
  30. package/dist/services/WxAppTelephonyMercurySync.js +108 -0
  31. package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
  32. package/dist/services/config/Util.js +3 -0
  33. package/dist/services/config/Util.js.map +1 -1
  34. package/dist/services/config/constants.js +10 -6
  35. package/dist/services/config/constants.js.map +1 -1
  36. package/dist/services/config/types.js +4 -0
  37. package/dist/services/config/types.js.map +1 -1
  38. package/dist/services/core/Err.js.map +1 -1
  39. package/dist/services/core/WebexRequest.js +6 -2
  40. package/dist/services/core/WebexRequest.js.map +1 -1
  41. package/dist/services/core/aqm-reqs.js +28 -14
  42. package/dist/services/core/aqm-reqs.js.map +1 -1
  43. package/dist/services/core/types.js.map +1 -1
  44. package/dist/services/task/Task.js +73 -7
  45. package/dist/services/task/Task.js.map +1 -1
  46. package/dist/services/task/TaskFactory.js +8 -4
  47. package/dist/services/task/TaskFactory.js.map +1 -1
  48. package/dist/services/task/TaskManager.js +490 -21
  49. package/dist/services/task/TaskManager.js.map +1 -1
  50. package/dist/services/task/WebexCallingUtils.js +70 -0
  51. package/dist/services/task/WebexCallingUtils.js.map +1 -0
  52. package/dist/services/task/constants.js +4 -1
  53. package/dist/services/task/constants.js.map +1 -1
  54. package/dist/services/task/contact.js +29 -0
  55. package/dist/services/task/contact.js.map +1 -1
  56. package/dist/services/task/digital/Digital.js +3 -2
  57. package/dist/services/task/digital/Digital.js.map +1 -1
  58. package/dist/services/task/state-machine/TaskStateMachine.js +162 -53
  59. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
  60. package/dist/services/task/state-machine/actions.js +6 -1
  61. package/dist/services/task/state-machine/actions.js.map +1 -1
  62. package/dist/services/task/state-machine/guards.js +7 -10
  63. package/dist/services/task/state-machine/guards.js.map +1 -1
  64. package/dist/services/task/state-machine/types.js.map +1 -1
  65. package/dist/services/task/state-machine/uiControlsComputer.js +118 -18
  66. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
  67. package/dist/services/task/types.js +16 -1
  68. package/dist/services/task/types.js.map +1 -1
  69. package/dist/services/task/voice/Voice.js +456 -15
  70. package/dist/services/task/voice/Voice.js.map +1 -1
  71. package/dist/services/task/voice/WebRTC.js +4 -1
  72. package/dist/services/task/voice/WebRTC.js.map +1 -1
  73. package/dist/services/task/voice/wxAppVoiceMethods.js +354 -0
  74. package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
  75. package/dist/services/wxAppDiagnosticLogging.js +122 -0
  76. package/dist/services/wxAppDiagnosticLogging.js.map +1 -0
  77. package/dist/services/wxAppTelephonyUtils.js +19 -0
  78. package/dist/services/wxAppTelephonyUtils.js.map +1 -0
  79. package/dist/types/cc.d.ts +78 -4
  80. package/dist/types/config.d.ts +7 -0
  81. package/dist/types/constants.d.ts +8 -0
  82. package/dist/types/index.d.ts +3 -1
  83. package/dist/types/metrics/MetricsManager.d.ts +6 -0
  84. package/dist/types/metrics/constants.d.ts +17 -0
  85. package/dist/types/services/AddressBook.d.ts +2 -1
  86. package/dist/types/services/AnswerCallOnWebexService.d.ts +38 -0
  87. package/dist/types/services/EntryPoint.d.ts +7 -5
  88. package/dist/types/services/Queue.d.ts +5 -3
  89. package/dist/types/services/WebexCrossClientService.d.ts +32 -0
  90. package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
  91. package/dist/types/services/config/constants.d.ts +8 -5
  92. package/dist/types/services/config/types.d.ts +17 -4
  93. package/dist/types/services/core/Err.d.ts +2 -0
  94. package/dist/types/services/core/WebexRequest.d.ts +1 -0
  95. package/dist/types/services/core/types.d.ts +2 -0
  96. package/dist/types/services/task/Task.d.ts +20 -2
  97. package/dist/types/services/task/TaskFactory.d.ts +2 -1
  98. package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
  99. package/dist/types/services/task/constants.d.ts +3 -0
  100. package/dist/types/services/task/contact.d.ts +4 -0
  101. package/dist/types/services/task/digital/Digital.d.ts +2 -2
  102. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +304 -56
  103. package/dist/types/services/task/state-machine/guards.d.ts +6 -5
  104. package/dist/types/services/task/state-machine/types.d.ts +9 -1
  105. package/dist/types/services/task/types.d.ts +81 -4
  106. package/dist/types/services/task/voice/Voice.d.ts +52 -9
  107. package/dist/types/services/task/voice/WebRTC.d.ts +2 -2
  108. package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +55 -0
  109. package/dist/types/services/wxAppDiagnosticLogging.d.ts +51 -0
  110. package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
  111. package/dist/types/types.d.ts +14 -8
  112. package/dist/types/utils/PageCache.d.ts +20 -3
  113. package/dist/types.js +7 -2
  114. package/dist/types.js.map +1 -1
  115. package/dist/utils/PageCache.js +19 -5
  116. package/dist/utils/PageCache.js.map +1 -1
  117. package/dist/webex.js +1 -1
  118. package/package.json +8 -8
  119. package/src/cc.ts +657 -12
  120. package/src/config.ts +7 -0
  121. package/src/constants.ts +8 -0
  122. package/src/index.ts +2 -0
  123. package/src/metrics/MetricsManager.ts +16 -0
  124. package/src/metrics/ai-docs/metrics-spec.md +78 -10
  125. package/src/metrics/behavioral-events.ts +106 -0
  126. package/src/metrics/constants.ts +20 -0
  127. package/src/services/AddressBook.ts +17 -6
  128. package/src/services/AnswerCallOnWebexService.ts +239 -0
  129. package/src/services/EntryPoint.ts +59 -60
  130. package/src/services/Queue.ts +29 -12
  131. package/src/services/WebexCrossClientService.ts +293 -0
  132. package/src/services/WxAppTelephonyMercurySync.ts +142 -0
  133. package/src/services/agent/ai-docs/agent-spec.md +1 -0
  134. package/src/services/ai-docs/AGENTS.md +10 -10
  135. package/src/services/ai-docs/services-spec.md +6 -1
  136. package/src/services/config/Util.ts +3 -0
  137. package/src/services/config/ai-docs/AGENTS.md +1 -1
  138. package/src/services/config/ai-docs/ARCHITECTURE.md +2 -2
  139. package/src/services/config/ai-docs/config-spec.md +6 -0
  140. package/src/services/config/constants.ts +10 -6
  141. package/src/services/config/types.ts +16 -4
  142. package/src/services/core/Err.ts +1 -0
  143. package/src/services/core/WebexRequest.ts +3 -1
  144. package/src/services/core/ai-docs/core-spec.md +5 -1
  145. package/src/services/core/aqm-reqs.ts +30 -15
  146. package/src/services/core/types.ts +2 -0
  147. package/src/services/task/Task.ts +79 -8
  148. package/src/services/task/TaskFactory.ts +8 -3
  149. package/src/services/task/TaskManager.ts +716 -17
  150. package/src/services/task/WebexCallingUtils.ts +136 -0
  151. package/src/services/task/ai-docs/ARCHITECTURE.md +1 -0
  152. package/src/services/task/ai-docs/task-spec.md +156 -3
  153. package/src/services/task/constants.ts +3 -0
  154. package/src/services/task/contact.ts +30 -0
  155. package/src/services/task/digital/Digital.ts +4 -2
  156. package/src/services/task/state-machine/TaskStateMachine.ts +235 -81
  157. package/src/services/task/state-machine/actions.ts +5 -2
  158. package/src/services/task/state-machine/ai-docs/AGENTS.md +6 -4
  159. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +35 -16
  160. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +103 -33
  161. package/src/services/task/state-machine/guards.ts +7 -10
  162. package/src/services/task/state-machine/types.ts +16 -1
  163. package/src/services/task/state-machine/uiControlsComputer.ts +206 -32
  164. package/src/services/task/types.ts +114 -4
  165. package/src/services/task/voice/Voice.ts +595 -14
  166. package/src/services/task/voice/WebRTC.ts +5 -1
  167. package/src/services/task/voice/wxAppVoiceMethods.ts +516 -0
  168. package/src/services/wxAppDiagnosticLogging.ts +174 -0
  169. package/src/services/wxAppTelephonyUtils.ts +14 -0
  170. package/src/types.ts +33 -9
  171. package/src/utils/AGENTS.md +21 -10
  172. package/src/utils/PageCache.ts +38 -5
  173. package/src/utils/ai-docs/utils-spec.md +21 -11
  174. package/test/unit/spec/cc.ts +1522 -19
  175. package/test/unit/spec/metrics/MetricsManager.ts +25 -0
  176. package/test/unit/spec/metrics/behavioral-events.ts +60 -0
  177. package/test/unit/spec/services/AddressBook.ts +37 -6
  178. package/test/unit/spec/services/AnswerCallOnWebexService.ts +264 -0
  179. package/test/unit/spec/services/EntryPoint.ts +87 -40
  180. package/test/unit/spec/services/Queue.ts +123 -12
  181. package/test/unit/spec/services/WebexCrossClientService.ts +467 -0
  182. package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +136 -0
  183. package/test/unit/spec/services/config/Util.ts +85 -0
  184. package/test/unit/spec/services/core/WebexRequest.ts +3 -1
  185. package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
  186. package/test/unit/spec/services/task/Task.ts +274 -6
  187. package/test/unit/spec/services/task/TaskFactory.ts +39 -2
  188. package/test/unit/spec/services/task/TaskManager.ts +1717 -9
  189. package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
  190. package/test/unit/spec/services/task/contact.ts +33 -0
  191. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +1485 -109
  192. package/test/unit/spec/services/task/state-machine/guards.ts +210 -8
  193. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +445 -7
  194. package/test/unit/spec/services/task/voice/Voice.ts +1412 -0
  195. package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +603 -0
  196. package/test/unit/spec/services/wxAppDiagnosticLogging.ts +143 -0
  197. package/umd/contact-center.min.js +2 -2
  198. package/umd/contact-center.min.js.map +1 -1
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
8
+ var _constants = require("../constants");
9
+ var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"));
10
+ var _constants2 = require("../metrics/constants");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ const WEBEX_CROSS_CLIENT_FILE = 'WebexCrossClientService';
13
+ const DEFAULT_CROSS_CLIENT_STATE_TTL = 900;
14
+ const EXPIRATION_OFFSET_MS = 60_000;
15
+ /** Must match Agent Desktop usersub publish — Webex App reads `wxcc` cross-client state. */
16
+ const DEFAULT_APP_NAME = 'wxcc';
17
+ const REFRESH_RETRY_DELAY_MS = 30_000;
18
+ const MAX_REFRESH_RETRIES = 3;
19
+ /**
20
+ * Publishes usersub cross-client state so Webex App suppresses native calling toasts (WXCC-6026).
21
+ */
22
+ class WebexCrossClientService {
23
+ answerCallsState = false;
24
+ appName = DEFAULT_APP_NAME;
25
+ /** Incremented on teardown/disable to ignore stale refresh timer callbacks. */
26
+ refreshGeneration = 0;
27
+ /** Monotonic id for usersub publish metrics timers; stale publishes cancel only their own timer. */
28
+ usersubPublishMetricsId = 0;
29
+ constructor(webex) {
30
+ this.webex = webex;
31
+ }
32
+ extractDeviceIdFromUrl(url) {
33
+ const match = url.match(/\/devices\/([^/?]+)/);
34
+ return match ? match[1] : '';
35
+ }
36
+ getDeviceUrl() {
37
+ return this.webex.internal.device?.url;
38
+ }
39
+ clearRefreshTimer() {
40
+ if (this.refreshTimer) {
41
+ clearTimeout(this.refreshTimer);
42
+ this.refreshTimer = undefined;
43
+ }
44
+ if (this.refreshRetryTimer) {
45
+ clearTimeout(this.refreshRetryTimer);
46
+ this.refreshRetryTimer = undefined;
47
+ }
48
+ }
49
+ scheduleRefreshRetry(userId, ttl, scheduledGeneration, retryAttempt) {
50
+ if (retryAttempt >= MAX_REFRESH_RETRIES || scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {
51
+ return;
52
+ }
53
+ this.refreshRetryTimer = setTimeout(async () => {
54
+ if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {
55
+ return;
56
+ }
57
+ try {
58
+ await this.setManageWebexCallingInWxcc(true, {
59
+ userId,
60
+ ttl,
61
+ appName: this.appName
62
+ });
63
+ } catch (error) {
64
+ _loggerProxy.default.error(`WebexCrossClientService refresh retry failed: ${error}`, {
65
+ module: WEBEX_CROSS_CLIENT_FILE,
66
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC
67
+ });
68
+ this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, retryAttempt + 1);
69
+ }
70
+ }, REFRESH_RETRY_DELAY_MS);
71
+ }
72
+ startRefreshTimer(userId, ttl) {
73
+ this.clearRefreshTimer();
74
+ if (!this.answerCallsState) {
75
+ return;
76
+ }
77
+ const refreshTime = ttl * 1000 - EXPIRATION_OFFSET_MS;
78
+ const scheduledGeneration = this.refreshGeneration;
79
+ this.refreshTimer = setTimeout(async () => {
80
+ if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {
81
+ return;
82
+ }
83
+ try {
84
+ await this.setManageWebexCallingInWxcc(true, {
85
+ userId,
86
+ ttl,
87
+ appName: this.appName
88
+ });
89
+ } catch (error) {
90
+ _loggerProxy.default.error(`WebexCrossClientService refresh failed: ${error}`, {
91
+ module: WEBEX_CROSS_CLIENT_FILE,
92
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC
93
+ });
94
+ this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, 0);
95
+ }
96
+ }, refreshTime);
97
+ }
98
+ publishCrossClientState(users, ttl, composition, logContext) {
99
+ const body = {
100
+ users,
101
+ compositions: [{
102
+ type: 'cross-client-state',
103
+ ttl,
104
+ composition
105
+ }]
106
+ };
107
+ return this.webex.request({
108
+ method: 'POST',
109
+ service: 'usersub',
110
+ resource: 'publish',
111
+ body
112
+ }).then(response => response?.body).catch(error => {
113
+ _loggerProxy.default.error(`WebexCrossClientService.${logContext} failed: ${error}`, {
114
+ module: WEBEX_CROSS_CLIENT_FILE,
115
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC
116
+ });
117
+ return Promise.reject(error);
118
+ });
119
+ }
120
+ async setManageWebexCallingInWxcc(enable, options) {
121
+ const operationGeneration = this.refreshGeneration;
122
+ const userId = options?.userId ?? this.webex.internal.device?.userId;
123
+ const ttl = options?.ttl ?? DEFAULT_CROSS_CLIENT_STATE_TTL;
124
+ const appName = options?.appName ?? DEFAULT_APP_NAME;
125
+ const trackPublishMetrics = options?.trackPublishMetrics ?? false;
126
+ this.appName = appName;
127
+ if (!userId) {
128
+ const error = 'User ID is unavailable for cross-client publish';
129
+ this.trackUsersubPreflightFailure(enable, 'user_id_unavailable', error, trackPublishMetrics);
130
+ throw new Error(error);
131
+ }
132
+ const deviceUrl = this.getDeviceUrl();
133
+ if (!deviceUrl) {
134
+ const error = 'Device URL is unavailable for cross-client publish';
135
+ this.trackUsersubPreflightFailure(enable, 'device_url_unavailable', error, trackPublishMetrics);
136
+ throw new Error(error);
137
+ }
138
+ const composition = {
139
+ devices: [{
140
+ deviceId: this.extractDeviceIdFromUrl(deviceUrl),
141
+ appName,
142
+ state: {
143
+ 'answer-calls-on-wxcc': enable
144
+ }
145
+ }]
146
+ };
147
+ const metricsManager = _MetricsManager.default.getInstance();
148
+ const usersubPublishEventKeys = [_constants2.METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_SUCCESS, _constants2.METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED];
149
+ let publishMetricsId = 0;
150
+ if (trackPublishMetrics) {
151
+ this.usersubPublishMetricsId += 1;
152
+ publishMetricsId = this.usersubPublishMetricsId;
153
+ metricsManager.timeEvent(usersubPublishEventKeys);
154
+ }
155
+ try {
156
+ await this.publishCrossClientState([userId], ttl, composition, 'setManageWebexCallingInWxcc');
157
+ } catch (error) {
158
+ if (trackPublishMetrics) {
159
+ if (operationGeneration !== this.refreshGeneration) {
160
+ if (publishMetricsId === this.usersubPublishMetricsId) {
161
+ metricsManager.cancelTimedEvent(usersubPublishEventKeys);
162
+ }
163
+ } else {
164
+ metricsManager.trackEvent(_constants2.METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED, {
165
+ enableWxBetterTogether: enable,
166
+ error: error instanceof Error ? error.toString() : String(error)
167
+ }, ['operational', 'behavioral']);
168
+ }
169
+ }
170
+ throw error;
171
+ }
172
+ if (operationGeneration !== this.refreshGeneration) {
173
+ if (trackPublishMetrics && publishMetricsId === this.usersubPublishMetricsId) {
174
+ metricsManager.cancelTimedEvent(usersubPublishEventKeys);
175
+ }
176
+ return;
177
+ }
178
+ this.answerCallsState = enable;
179
+ if (enable) {
180
+ this.startRefreshTimer(userId, ttl);
181
+ } else {
182
+ this.refreshGeneration += 1;
183
+ this.clearRefreshTimer();
184
+ }
185
+ if (trackPublishMetrics) {
186
+ metricsManager.trackEvent(_constants2.METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_SUCCESS, {
187
+ enableWxBetterTogether: enable
188
+ }, ['operational', 'behavioral']);
189
+ }
190
+ _loggerProxy.default.info(`Cross-client answer-calls-on-wxcc set to ${enable}`, {
191
+ module: WEBEX_CROSS_CLIENT_FILE,
192
+ method: _constants.METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,
193
+ data: {
194
+ appName,
195
+ deviceId: this.extractDeviceIdFromUrl(deviceUrl),
196
+ ttl
197
+ }
198
+ });
199
+ }
200
+ trackUsersubPreflightFailure(enable, skipReason, error, trackPublishMetrics) {
201
+ if (!trackPublishMetrics) {
202
+ return;
203
+ }
204
+ _MetricsManager.default.getInstance().trackEvent(_constants2.METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED, {
205
+ enableWxBetterTogether: enable,
206
+ skipReason,
207
+ error
208
+ }, ['operational', 'behavioral']);
209
+ }
210
+ teardown() {
211
+ this.refreshGeneration += 1;
212
+ this.clearRefreshTimer();
213
+ this.answerCallsState = false;
214
+ }
215
+
216
+ /** Whether usersub `answer-calls-on-wxcc: true` was successfully published this session. */
217
+ isAnswerCallsStateActive() {
218
+ return this.answerCallsState;
219
+ }
220
+ }
221
+ exports.default = WebexCrossClientService;
222
+ //# sourceMappingURL=WebexCrossClientService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","_MetricsManager","_constants2","e","__esModule","default","WEBEX_CROSS_CLIENT_FILE","DEFAULT_CROSS_CLIENT_STATE_TTL","EXPIRATION_OFFSET_MS","DEFAULT_APP_NAME","REFRESH_RETRY_DELAY_MS","MAX_REFRESH_RETRIES","WebexCrossClientService","answerCallsState","appName","refreshGeneration","usersubPublishMetricsId","constructor","webex","extractDeviceIdFromUrl","url","match","getDeviceUrl","internal","device","clearRefreshTimer","refreshTimer","clearTimeout","undefined","refreshRetryTimer","scheduleRefreshRetry","userId","ttl","scheduledGeneration","retryAttempt","setTimeout","setManageWebexCallingInWxcc","error","LoggerProxy","module","method","METHODS","SET_MANAGE_WEBEX_CALLING_IN_WXCC","startRefreshTimer","refreshTime","publishCrossClientState","users","composition","logContext","body","compositions","type","request","service","resource","then","response","catch","Promise","reject","enable","options","operationGeneration","trackPublishMetrics","trackUsersubPreflightFailure","Error","deviceUrl","devices","deviceId","state","metricsManager","MetricsManager","getInstance","usersubPublishEventKeys","METRIC_EVENT_NAMES","WXAPP_USERSUB_PUBLISH_SUCCESS","WXAPP_USERSUB_PUBLISH_FAILED","publishMetricsId","timeEvent","cancelTimedEvent","trackEvent","enableWxBetterTogether","toString","String","info","data","skipReason","teardown","isAnswerCallsStateActive","exports"],"sources":["WebexCrossClientService.ts"],"sourcesContent":["import LoggerProxy from '../logger-proxy';\nimport {METHODS} from '../constants';\nimport {WebexSDK} from '../types';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\nconst WEBEX_CROSS_CLIENT_FILE = 'WebexCrossClientService';\nconst DEFAULT_CROSS_CLIENT_STATE_TTL = 900;\nconst EXPIRATION_OFFSET_MS = 60_000;\n/** Must match Agent Desktop usersub publish — Webex App reads `wxcc` cross-client state. */\nconst DEFAULT_APP_NAME = 'wxcc';\nconst REFRESH_RETRY_DELAY_MS = 30_000;\nconst MAX_REFRESH_RETRIES = 3;\n\ntype RefreshTimer = ReturnType<typeof setTimeout>;\n\n/**\n * Publishes usersub cross-client state so Webex App suppresses native calling toasts (WXCC-6026).\n */\nexport default class WebexCrossClientService {\n private webex: WebexSDK;\n private refreshTimer?: RefreshTimer;\n private refreshRetryTimer?: RefreshTimer;\n private answerCallsState = false;\n private appName = DEFAULT_APP_NAME;\n /** Incremented on teardown/disable to ignore stale refresh timer callbacks. */\n private refreshGeneration = 0;\n /** Monotonic id for usersub publish metrics timers; stale publishes cancel only their own timer. */\n private usersubPublishMetricsId = 0;\n\n constructor(webex: WebexSDK) {\n this.webex = webex;\n }\n\n private extractDeviceIdFromUrl(url: string): string {\n const match = url.match(/\\/devices\\/([^/?]+)/);\n\n return match ? match[1] : '';\n }\n\n private getDeviceUrl(): string | undefined {\n return this.webex.internal.device?.url;\n }\n\n private clearRefreshTimer(): void {\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n this.refreshTimer = undefined;\n }\n\n if (this.refreshRetryTimer) {\n clearTimeout(this.refreshRetryTimer);\n this.refreshRetryTimer = undefined;\n }\n }\n\n private scheduleRefreshRetry(\n userId: string,\n ttl: number,\n scheduledGeneration: number,\n retryAttempt: number\n ): void {\n if (\n retryAttempt >= MAX_REFRESH_RETRIES ||\n scheduledGeneration !== this.refreshGeneration ||\n !this.answerCallsState\n ) {\n return;\n }\n\n this.refreshRetryTimer = setTimeout(async () => {\n if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {\n return;\n }\n\n try {\n await this.setManageWebexCallingInWxcc(true, {userId, ttl, appName: this.appName});\n } catch (error) {\n LoggerProxy.error(`WebexCrossClientService refresh retry failed: ${error}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n });\n this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, retryAttempt + 1);\n }\n }, REFRESH_RETRY_DELAY_MS);\n }\n\n private startRefreshTimer(userId: string, ttl: number): void {\n this.clearRefreshTimer();\n\n if (!this.answerCallsState) {\n return;\n }\n\n const refreshTime = ttl * 1000 - EXPIRATION_OFFSET_MS;\n const scheduledGeneration = this.refreshGeneration;\n this.refreshTimer = setTimeout(async () => {\n if (scheduledGeneration !== this.refreshGeneration || !this.answerCallsState) {\n return;\n }\n\n try {\n await this.setManageWebexCallingInWxcc(true, {userId, ttl, appName: this.appName});\n } catch (error) {\n LoggerProxy.error(`WebexCrossClientService refresh failed: ${error}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n });\n this.scheduleRefreshRetry(userId, ttl, scheduledGeneration, 0);\n }\n }, refreshTime);\n }\n\n private publishCrossClientState(\n users: string[],\n ttl: number,\n composition: Record<string, unknown>,\n logContext: string\n ): Promise<unknown> {\n const body = {\n users,\n compositions: [\n {\n type: 'cross-client-state',\n ttl,\n composition,\n },\n ],\n };\n\n return this.webex\n .request({\n method: 'POST',\n service: 'usersub',\n resource: 'publish',\n body,\n })\n .then((response: {body?: unknown}) => response?.body)\n .catch((error: unknown) => {\n LoggerProxy.error(`WebexCrossClientService.${logContext} failed: ${error}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n });\n\n return Promise.reject(error);\n });\n }\n\n public async setManageWebexCallingInWxcc(\n enable: boolean,\n options?: {userId?: string; ttl?: number; appName?: string; trackPublishMetrics?: boolean}\n ): Promise<void> {\n const operationGeneration = this.refreshGeneration;\n const userId = options?.userId ?? this.webex.internal.device?.userId;\n const ttl = options?.ttl ?? DEFAULT_CROSS_CLIENT_STATE_TTL;\n const appName = options?.appName ?? DEFAULT_APP_NAME;\n const trackPublishMetrics = options?.trackPublishMetrics ?? false;\n this.appName = appName;\n\n if (!userId) {\n const error = 'User ID is unavailable for cross-client publish';\n this.trackUsersubPreflightFailure(enable, 'user_id_unavailable', error, trackPublishMetrics);\n throw new Error(error);\n }\n\n const deviceUrl = this.getDeviceUrl();\n if (!deviceUrl) {\n const error = 'Device URL is unavailable for cross-client publish';\n this.trackUsersubPreflightFailure(\n enable,\n 'device_url_unavailable',\n error,\n trackPublishMetrics\n );\n throw new Error(error);\n }\n\n const composition = {\n devices: [\n {\n deviceId: this.extractDeviceIdFromUrl(deviceUrl),\n appName,\n state: {\n 'answer-calls-on-wxcc': enable,\n },\n },\n ],\n };\n\n const metricsManager = MetricsManager.getInstance();\n const usersubPublishEventKeys = [\n METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_SUCCESS,\n METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED,\n ];\n\n let publishMetricsId = 0;\n if (trackPublishMetrics) {\n this.usersubPublishMetricsId += 1;\n publishMetricsId = this.usersubPublishMetricsId;\n metricsManager.timeEvent(usersubPublishEventKeys);\n }\n\n try {\n await this.publishCrossClientState([userId], ttl, composition, 'setManageWebexCallingInWxcc');\n } catch (error) {\n if (trackPublishMetrics) {\n if (operationGeneration !== this.refreshGeneration) {\n if (publishMetricsId === this.usersubPublishMetricsId) {\n metricsManager.cancelTimedEvent(usersubPublishEventKeys);\n }\n } else {\n metricsManager.trackEvent(\n METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED,\n {\n enableWxBetterTogether: enable,\n error: error instanceof Error ? error.toString() : String(error),\n },\n ['operational', 'behavioral']\n );\n }\n }\n\n throw error;\n }\n\n if (operationGeneration !== this.refreshGeneration) {\n if (trackPublishMetrics && publishMetricsId === this.usersubPublishMetricsId) {\n metricsManager.cancelTimedEvent(usersubPublishEventKeys);\n }\n\n return;\n }\n\n this.answerCallsState = enable;\n\n if (enable) {\n this.startRefreshTimer(userId, ttl);\n } else {\n this.refreshGeneration += 1;\n this.clearRefreshTimer();\n }\n\n if (trackPublishMetrics) {\n metricsManager.trackEvent(\n METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_SUCCESS,\n {enableWxBetterTogether: enable},\n ['operational', 'behavioral']\n );\n }\n\n LoggerProxy.info(`Cross-client answer-calls-on-wxcc set to ${enable}`, {\n module: WEBEX_CROSS_CLIENT_FILE,\n method: METHODS.SET_MANAGE_WEBEX_CALLING_IN_WXCC,\n data: {\n appName,\n deviceId: this.extractDeviceIdFromUrl(deviceUrl),\n ttl,\n },\n });\n }\n\n private trackUsersubPreflightFailure(\n enable: boolean,\n skipReason: 'user_id_unavailable' | 'device_url_unavailable',\n error: string,\n trackPublishMetrics: boolean\n ): void {\n if (!trackPublishMetrics) {\n return;\n }\n\n MetricsManager.getInstance().trackEvent(\n METRIC_EVENT_NAMES.WXAPP_USERSUB_PUBLISH_FAILED,\n {\n enableWxBetterTogether: enable,\n skipReason,\n error,\n },\n ['operational', 'behavioral']\n );\n }\n\n public teardown(): void {\n this.refreshGeneration += 1;\n this.clearRefreshTimer();\n this.answerCallsState = false;\n }\n\n /** Whether usersub `answer-calls-on-wxcc: true` was successfully published this session. */\n public isAnswerCallsStateActive(): boolean {\n return this.answerCallsState;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,eAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAAwD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAExD,MAAMG,uBAAuB,GAAG,yBAAyB;AACzD,MAAMC,8BAA8B,GAAG,GAAG;AAC1C,MAAMC,oBAAoB,GAAG,MAAM;AACnC;AACA,MAAMC,gBAAgB,GAAG,MAAM;AAC/B,MAAMC,sBAAsB,GAAG,MAAM;AACrC,MAAMC,mBAAmB,GAAG,CAAC;AAI7B;AACA;AACA;AACe,MAAMC,uBAAuB,CAAC;EAInCC,gBAAgB,GAAG,KAAK;EACxBC,OAAO,GAAGL,gBAAgB;EAClC;EACQM,iBAAiB,GAAG,CAAC;EAC7B;EACQC,uBAAuB,GAAG,CAAC;EAEnCC,WAAWA,CAACC,KAAe,EAAE;IAC3B,IAAI,CAACA,KAAK,GAAGA,KAAK;EACpB;EAEQC,sBAAsBA,CAACC,GAAW,EAAU;IAClD,MAAMC,KAAK,GAAGD,GAAG,CAACC,KAAK,CAAC,qBAAqB,CAAC;IAE9C,OAAOA,KAAK,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;EAC9B;EAEQC,YAAYA,CAAA,EAAuB;IACzC,OAAO,IAAI,CAACJ,KAAK,CAACK,QAAQ,CAACC,MAAM,EAAEJ,GAAG;EACxC;EAEQK,iBAAiBA,CAAA,EAAS;IAChC,IAAI,IAAI,CAACC,YAAY,EAAE;MACrBC,YAAY,CAAC,IAAI,CAACD,YAAY,CAAC;MAC/B,IAAI,CAACA,YAAY,GAAGE,SAAS;IAC/B;IAEA,IAAI,IAAI,CAACC,iBAAiB,EAAE;MAC1BF,YAAY,CAAC,IAAI,CAACE,iBAAiB,CAAC;MACpC,IAAI,CAACA,iBAAiB,GAAGD,SAAS;IACpC;EACF;EAEQE,oBAAoBA,CAC1BC,MAAc,EACdC,GAAW,EACXC,mBAA2B,EAC3BC,YAAoB,EACd;IACN,IACEA,YAAY,IAAIvB,mBAAmB,IACnCsB,mBAAmB,KAAK,IAAI,CAAClB,iBAAiB,IAC9C,CAAC,IAAI,CAACF,gBAAgB,EACtB;MACA;IACF;IAEA,IAAI,CAACgB,iBAAiB,GAAGM,UAAU,CAAC,YAAY;MAC9C,IAAIF,mBAAmB,KAAK,IAAI,CAAClB,iBAAiB,IAAI,CAAC,IAAI,CAACF,gBAAgB,EAAE;QAC5E;MACF;MAEA,IAAI;QACF,MAAM,IAAI,CAACuB,2BAA2B,CAAC,IAAI,EAAE;UAACL,MAAM;UAAEC,GAAG;UAAElB,OAAO,EAAE,IAAI,CAACA;QAAO,CAAC,CAAC;MACpF,CAAC,CAAC,OAAOuB,KAAK,EAAE;QACdC,oBAAW,CAACD,KAAK,CAAC,iDAAiDA,KAAK,EAAE,EAAE;UAC1EE,MAAM,EAAEjC,uBAAuB;UAC/BkC,MAAM,EAAEC,kBAAO,CAACC;QAClB,CAAC,CAAC;QACF,IAAI,CAACZ,oBAAoB,CAACC,MAAM,EAAEC,GAAG,EAAEC,mBAAmB,EAAEC,YAAY,GAAG,CAAC,CAAC;MAC/E;IACF,CAAC,EAAExB,sBAAsB,CAAC;EAC5B;EAEQiC,iBAAiBA,CAACZ,MAAc,EAAEC,GAAW,EAAQ;IAC3D,IAAI,CAACP,iBAAiB,CAAC,CAAC;IAExB,IAAI,CAAC,IAAI,CAACZ,gBAAgB,EAAE;MAC1B;IACF;IAEA,MAAM+B,WAAW,GAAGZ,GAAG,GAAG,IAAI,GAAGxB,oBAAoB;IACrD,MAAMyB,mBAAmB,GAAG,IAAI,CAAClB,iBAAiB;IAClD,IAAI,CAACW,YAAY,GAAGS,UAAU,CAAC,YAAY;MACzC,IAAIF,mBAAmB,KAAK,IAAI,CAAClB,iBAAiB,IAAI,CAAC,IAAI,CAACF,gBAAgB,EAAE;QAC5E;MACF;MAEA,IAAI;QACF,MAAM,IAAI,CAACuB,2BAA2B,CAAC,IAAI,EAAE;UAACL,MAAM;UAAEC,GAAG;UAAElB,OAAO,EAAE,IAAI,CAACA;QAAO,CAAC,CAAC;MACpF,CAAC,CAAC,OAAOuB,KAAK,EAAE;QACdC,oBAAW,CAACD,KAAK,CAAC,2CAA2CA,KAAK,EAAE,EAAE;UACpEE,MAAM,EAAEjC,uBAAuB;UAC/BkC,MAAM,EAAEC,kBAAO,CAACC;QAClB,CAAC,CAAC;QACF,IAAI,CAACZ,oBAAoB,CAACC,MAAM,EAAEC,GAAG,EAAEC,mBAAmB,EAAE,CAAC,CAAC;MAChE;IACF,CAAC,EAAEW,WAAW,CAAC;EACjB;EAEQC,uBAAuBA,CAC7BC,KAAe,EACfd,GAAW,EACXe,WAAoC,EACpCC,UAAkB,EACA;IAClB,MAAMC,IAAI,GAAG;MACXH,KAAK;MACLI,YAAY,EAAE,CACZ;QACEC,IAAI,EAAE,oBAAoB;QAC1BnB,GAAG;QACHe;MACF,CAAC;IAEL,CAAC;IAED,OAAO,IAAI,CAAC7B,KAAK,CACdkC,OAAO,CAAC;MACPZ,MAAM,EAAE,MAAM;MACda,OAAO,EAAE,SAAS;MAClBC,QAAQ,EAAE,SAAS;MACnBL;IACF,CAAC,CAAC,CACDM,IAAI,CAAEC,QAA0B,IAAKA,QAAQ,EAAEP,IAAI,CAAC,CACpDQ,KAAK,CAAEpB,KAAc,IAAK;MACzBC,oBAAW,CAACD,KAAK,CAAC,2BAA2BW,UAAU,YAAYX,KAAK,EAAE,EAAE;QAC1EE,MAAM,EAAEjC,uBAAuB;QAC/BkC,MAAM,EAAEC,kBAAO,CAACC;MAClB,CAAC,CAAC;MAEF,OAAOgB,OAAO,CAACC,MAAM,CAACtB,KAAK,CAAC;IAC9B,CAAC,CAAC;EACN;EAEA,MAAaD,2BAA2BA,CACtCwB,MAAe,EACfC,OAA0F,EAC3E;IACf,MAAMC,mBAAmB,GAAG,IAAI,CAAC/C,iBAAiB;IAClD,MAAMgB,MAAM,GAAG8B,OAAO,EAAE9B,MAAM,IAAI,IAAI,CAACb,KAAK,CAACK,QAAQ,CAACC,MAAM,EAAEO,MAAM;IACpE,MAAMC,GAAG,GAAG6B,OAAO,EAAE7B,GAAG,IAAIzB,8BAA8B;IAC1D,MAAMO,OAAO,GAAG+C,OAAO,EAAE/C,OAAO,IAAIL,gBAAgB;IACpD,MAAMsD,mBAAmB,GAAGF,OAAO,EAAEE,mBAAmB,IAAI,KAAK;IACjE,IAAI,CAACjD,OAAO,GAAGA,OAAO;IAEtB,IAAI,CAACiB,MAAM,EAAE;MACX,MAAMM,KAAK,GAAG,iDAAiD;MAC/D,IAAI,CAAC2B,4BAA4B,CAACJ,MAAM,EAAE,qBAAqB,EAAEvB,KAAK,EAAE0B,mBAAmB,CAAC;MAC5F,MAAM,IAAIE,KAAK,CAAC5B,KAAK,CAAC;IACxB;IAEA,MAAM6B,SAAS,GAAG,IAAI,CAAC5C,YAAY,CAAC,CAAC;IACrC,IAAI,CAAC4C,SAAS,EAAE;MACd,MAAM7B,KAAK,GAAG,oDAAoD;MAClE,IAAI,CAAC2B,4BAA4B,CAC/BJ,MAAM,EACN,wBAAwB,EACxBvB,KAAK,EACL0B,mBACF,CAAC;MACD,MAAM,IAAIE,KAAK,CAAC5B,KAAK,CAAC;IACxB;IAEA,MAAMU,WAAW,GAAG;MAClBoB,OAAO,EAAE,CACP;QACEC,QAAQ,EAAE,IAAI,CAACjD,sBAAsB,CAAC+C,SAAS,CAAC;QAChDpD,OAAO;QACPuD,KAAK,EAAE;UACL,sBAAsB,EAAET;QAC1B;MACF,CAAC;IAEL,CAAC;IAED,MAAMU,cAAc,GAAGC,uBAAc,CAACC,WAAW,CAAC,CAAC;IACnD,MAAMC,uBAAuB,GAAG,CAC9BC,8BAAkB,CAACC,6BAA6B,EAChDD,8BAAkB,CAACE,4BAA4B,CAChD;IAED,IAAIC,gBAAgB,GAAG,CAAC;IACxB,IAAId,mBAAmB,EAAE;MACvB,IAAI,CAAC/C,uBAAuB,IAAI,CAAC;MACjC6D,gBAAgB,GAAG,IAAI,CAAC7D,uBAAuB;MAC/CsD,cAAc,CAACQ,SAAS,CAACL,uBAAuB,CAAC;IACnD;IAEA,IAAI;MACF,MAAM,IAAI,CAAC5B,uBAAuB,CAAC,CAACd,MAAM,CAAC,EAAEC,GAAG,EAAEe,WAAW,EAAE,6BAA6B,CAAC;IAC/F,CAAC,CAAC,OAAOV,KAAK,EAAE;MACd,IAAI0B,mBAAmB,EAAE;QACvB,IAAID,mBAAmB,KAAK,IAAI,CAAC/C,iBAAiB,EAAE;UAClD,IAAI8D,gBAAgB,KAAK,IAAI,CAAC7D,uBAAuB,EAAE;YACrDsD,cAAc,CAACS,gBAAgB,CAACN,uBAAuB,CAAC;UAC1D;QACF,CAAC,MAAM;UACLH,cAAc,CAACU,UAAU,CACvBN,8BAAkB,CAACE,4BAA4B,EAC/C;YACEK,sBAAsB,EAAErB,MAAM;YAC9BvB,KAAK,EAAEA,KAAK,YAAY4B,KAAK,GAAG5B,KAAK,CAAC6C,QAAQ,CAAC,CAAC,GAAGC,MAAM,CAAC9C,KAAK;UACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;QACH;MACF;MAEA,MAAMA,KAAK;IACb;IAEA,IAAIyB,mBAAmB,KAAK,IAAI,CAAC/C,iBAAiB,EAAE;MAClD,IAAIgD,mBAAmB,IAAIc,gBAAgB,KAAK,IAAI,CAAC7D,uBAAuB,EAAE;QAC5EsD,cAAc,CAACS,gBAAgB,CAACN,uBAAuB,CAAC;MAC1D;MAEA;IACF;IAEA,IAAI,CAAC5D,gBAAgB,GAAG+C,MAAM;IAE9B,IAAIA,MAAM,EAAE;MACV,IAAI,CAACjB,iBAAiB,CAACZ,MAAM,EAAEC,GAAG,CAAC;IACrC,CAAC,MAAM;MACL,IAAI,CAACjB,iBAAiB,IAAI,CAAC;MAC3B,IAAI,CAACU,iBAAiB,CAAC,CAAC;IAC1B;IAEA,IAAIsC,mBAAmB,EAAE;MACvBO,cAAc,CAACU,UAAU,CACvBN,8BAAkB,CAACC,6BAA6B,EAChD;QAACM,sBAAsB,EAAErB;MAAM,CAAC,EAChC,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;IACH;IAEAtB,oBAAW,CAAC8C,IAAI,CAAC,4CAA4CxB,MAAM,EAAE,EAAE;MACrErB,MAAM,EAAEjC,uBAAuB;MAC/BkC,MAAM,EAAEC,kBAAO,CAACC,gCAAgC;MAChD2C,IAAI,EAAE;QACJvE,OAAO;QACPsD,QAAQ,EAAE,IAAI,CAACjD,sBAAsB,CAAC+C,SAAS,CAAC;QAChDlC;MACF;IACF,CAAC,CAAC;EACJ;EAEQgC,4BAA4BA,CAClCJ,MAAe,EACf0B,UAA4D,EAC5DjD,KAAa,EACb0B,mBAA4B,EACtB;IACN,IAAI,CAACA,mBAAmB,EAAE;MACxB;IACF;IAEAQ,uBAAc,CAACC,WAAW,CAAC,CAAC,CAACQ,UAAU,CACrCN,8BAAkB,CAACE,4BAA4B,EAC/C;MACEK,sBAAsB,EAAErB,MAAM;MAC9B0B,UAAU;MACVjD;IACF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;EACH;EAEOkD,QAAQA,CAAA,EAAS;IACtB,IAAI,CAACxE,iBAAiB,IAAI,CAAC;IAC3B,IAAI,CAACU,iBAAiB,CAAC,CAAC;IACxB,IAAI,CAACZ,gBAAgB,GAAG,KAAK;EAC/B;;EAEA;EACO2E,wBAAwBA,CAAA,EAAY;IACzC,OAAO,IAAI,CAAC3E,gBAAgB;EAC9B;AACF;AAAC4E,OAAA,CAAApF,OAAA,GAAAO,uBAAA","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.TELEPHONY_CALL_UNMUTED = exports.TELEPHONY_CALL_MUTED = void 0;
7
+ var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
8
+ var _constants = require("../constants");
9
+ var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"));
10
+ var _constants2 = require("../metrics/constants");
11
+ var _wxAppDiagnosticLogging = require("./wxAppDiagnosticLogging");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const WXAPP_TELEPHONY_MERCURY_SYNC_FILE = 'WxAppTelephonyMercurySync';
14
+ const TELEPHONY_CALL_MUTED = exports.TELEPHONY_CALL_MUTED = 'event:telephony_calls.muted';
15
+ const TELEPHONY_CALL_UNMUTED = exports.TELEPHONY_CALL_UNMUTED = 'event:telephony_calls.unmuted';
16
+ /**
17
+ * Subscribes to Mercury telephony mute/unmute events for wxApp thick-client sync (AD parity).
18
+ */
19
+ class WxAppTelephonyMercurySync {
20
+ constructor(webex) {
21
+ this.webex = webex;
22
+ }
23
+ decodeBase64(value) {
24
+ try {
25
+ return atob(value);
26
+ } catch {
27
+ return value;
28
+ }
29
+ }
30
+ handleMuteStateEvent = (agentId, event) => {
31
+ const {
32
+ actorId,
33
+ callId,
34
+ muted
35
+ } = event?.data ?? {};
36
+ if (!actorId || !callId || muted === undefined) {
37
+ (0, _wxAppDiagnosticLogging.logWxAppMercuryMuteSync)({
38
+ phase: 'dropped',
39
+ dropReason: 'missing_mercury_event_fields'
40
+ });
41
+ return;
42
+ }
43
+ const decodedActorId = this.decodeBase64(actorId);
44
+ const decodedCallId = this.decodeBase64(callId);
45
+ if (!decodedActorId.endsWith(agentId)) {
46
+ (0, _wxAppDiagnosticLogging.logWxAppMercuryMuteSync)({
47
+ phase: 'dropped',
48
+ muted,
49
+ callIdSuffix: (0, _wxAppDiagnosticLogging.callIdSuffix)(decodedCallId),
50
+ dropReason: 'actor_id_mismatch'
51
+ });
52
+ return;
53
+ }
54
+ (0, _wxAppDiagnosticLogging.logWxAppMercuryMuteSync)({
55
+ phase: 'received',
56
+ muted,
57
+ callIdSuffix: (0, _wxAppDiagnosticLogging.callIdSuffix)(decodedCallId)
58
+ });
59
+ this.muteChangeHandler?.(decodedCallId, muted);
60
+ };
61
+ subscribe(agentId, onMuteChange) {
62
+ this.unsubscribe();
63
+ const mercury = this.webex.internal.mercury;
64
+ if (!mercury) {
65
+ _loggerProxy.default.error('Mercury is unavailable for wxApp mute sync', {
66
+ module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,
67
+ method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
68
+ });
69
+ _MetricsManager.default.getInstance().trackEvent(_constants2.METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_FAILED, {
70
+ error: 'Mercury is unavailable for wxApp mute sync'
71
+ }, ['operational', 'behavioral']);
72
+ return;
73
+ }
74
+ this.subscribedAgentId = agentId;
75
+ this.muteChangeHandler = onMuteChange;
76
+ this.boundMuteHandler = event => {
77
+ this.handleMuteStateEvent(agentId, event);
78
+ };
79
+ this.boundUnmuteHandler = event => {
80
+ this.handleMuteStateEvent(agentId, event);
81
+ };
82
+ mercury.on(TELEPHONY_CALL_MUTED, this.boundMuteHandler);
83
+ mercury.on(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);
84
+ _MetricsManager.default.getInstance().trackEvent(_constants2.METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_SUCCESS, {}, ['operational', 'behavioral']);
85
+ _loggerProxy.default.info('Subscribed to wxApp telephony Mercury mute sync', {
86
+ module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,
87
+ method: _constants.METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY
88
+ });
89
+ }
90
+ unsubscribe() {
91
+ const mercury = this.webex.internal.mercury;
92
+ if (mercury && this.boundMuteHandler) {
93
+ mercury.off(TELEPHONY_CALL_MUTED, this.boundMuteHandler);
94
+ }
95
+ if (mercury && this.boundUnmuteHandler) {
96
+ mercury.off(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);
97
+ }
98
+ this.subscribedAgentId = undefined;
99
+ this.muteChangeHandler = undefined;
100
+ this.boundMuteHandler = undefined;
101
+ this.boundUnmuteHandler = undefined;
102
+ }
103
+ isSubscribed() {
104
+ return Boolean(this.subscribedAgentId && this.muteChangeHandler);
105
+ }
106
+ }
107
+ exports.default = WxAppTelephonyMercurySync;
108
+ //# sourceMappingURL=WxAppTelephonyMercurySync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_loggerProxy","_interopRequireDefault","require","_constants","_MetricsManager","_constants2","_wxAppDiagnosticLogging","e","__esModule","default","WXAPP_TELEPHONY_MERCURY_SYNC_FILE","TELEPHONY_CALL_MUTED","exports","TELEPHONY_CALL_UNMUTED","WxAppTelephonyMercurySync","constructor","webex","decodeBase64","value","atob","handleMuteStateEvent","agentId","event","actorId","callId","muted","data","undefined","logWxAppMercuryMuteSync","phase","dropReason","decodedActorId","decodedCallId","endsWith","callIdSuffix","muteChangeHandler","subscribe","onMuteChange","unsubscribe","mercury","internal","LoggerProxy","error","module","method","METHODS","SYNC_WXAPP_MUTE_FROM_MERCURY","MetricsManager","getInstance","trackEvent","METRIC_EVENT_NAMES","WXAPP_MERCURY_SUBSCRIBE_FAILED","subscribedAgentId","boundMuteHandler","boundUnmuteHandler","on","WXAPP_MERCURY_SUBSCRIBE_SUCCESS","info","off","isSubscribed","Boolean"],"sources":["WxAppTelephonyMercurySync.ts"],"sourcesContent":["import LoggerProxy from '../logger-proxy';\nimport {METHODS} from '../constants';\nimport {WebexSDK} from '../types';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {callIdSuffix, logWxAppMercuryMuteSync} from './wxAppDiagnosticLogging';\n\nconst WXAPP_TELEPHONY_MERCURY_SYNC_FILE = 'WxAppTelephonyMercurySync';\n\nexport const TELEPHONY_CALL_MUTED = 'event:telephony_calls.muted';\nexport const TELEPHONY_CALL_UNMUTED = 'event:telephony_calls.unmuted';\n\nexport type UpdatedCallMuteStateEvent = {\n data: {\n actorId: string;\n callId: string;\n muted: boolean;\n };\n};\n\ntype MuteChangeHandler = (callId: string, muted: boolean) => void;\n\n/**\n * Subscribes to Mercury telephony mute/unmute events for wxApp thick-client sync (AD parity).\n */\nexport default class WxAppTelephonyMercurySync {\n private webex: WebexSDK;\n private subscribedAgentId?: string;\n private muteChangeHandler?: MuteChangeHandler;\n private boundMuteHandler?: (event: UpdatedCallMuteStateEvent) => void;\n private boundUnmuteHandler?: (event: UpdatedCallMuteStateEvent) => void;\n\n constructor(webex: WebexSDK) {\n this.webex = webex;\n }\n\n private decodeBase64(value: string): string {\n try {\n return atob(value);\n } catch {\n return value;\n }\n }\n\n private handleMuteStateEvent = (agentId: string, event: UpdatedCallMuteStateEvent): void => {\n const {actorId, callId, muted} = event?.data ?? {};\n if (!actorId || !callId || muted === undefined) {\n logWxAppMercuryMuteSync({\n phase: 'dropped',\n dropReason: 'missing_mercury_event_fields',\n });\n\n return;\n }\n\n const decodedActorId = this.decodeBase64(actorId);\n const decodedCallId = this.decodeBase64(callId);\n\n if (!decodedActorId.endsWith(agentId)) {\n logWxAppMercuryMuteSync({\n phase: 'dropped',\n muted,\n callIdSuffix: callIdSuffix(decodedCallId),\n dropReason: 'actor_id_mismatch',\n });\n\n return;\n }\n\n logWxAppMercuryMuteSync({\n phase: 'received',\n muted,\n callIdSuffix: callIdSuffix(decodedCallId),\n });\n\n this.muteChangeHandler?.(decodedCallId, muted);\n };\n\n public subscribe(agentId: string, onMuteChange: MuteChangeHandler): void {\n this.unsubscribe();\n\n const mercury = this.webex.internal.mercury;\n if (!mercury) {\n LoggerProxy.error('Mercury is unavailable for wxApp mute sync', {\n module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,\n method: METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY,\n });\n\n MetricsManager.getInstance().trackEvent(\n METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_FAILED,\n {error: 'Mercury is unavailable for wxApp mute sync'},\n ['operational', 'behavioral']\n );\n\n return;\n }\n\n this.subscribedAgentId = agentId;\n this.muteChangeHandler = onMuteChange;\n\n this.boundMuteHandler = (event: UpdatedCallMuteStateEvent) => {\n this.handleMuteStateEvent(agentId, event);\n };\n this.boundUnmuteHandler = (event: UpdatedCallMuteStateEvent) => {\n this.handleMuteStateEvent(agentId, event);\n };\n\n mercury.on(TELEPHONY_CALL_MUTED, this.boundMuteHandler);\n mercury.on(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);\n\n MetricsManager.getInstance().trackEvent(\n METRIC_EVENT_NAMES.WXAPP_MERCURY_SUBSCRIBE_SUCCESS,\n {},\n ['operational', 'behavioral']\n );\n\n LoggerProxy.info('Subscribed to wxApp telephony Mercury mute sync', {\n module: WXAPP_TELEPHONY_MERCURY_SYNC_FILE,\n method: METHODS.SYNC_WXAPP_MUTE_FROM_MERCURY,\n });\n }\n\n public unsubscribe(): void {\n const mercury = this.webex.internal.mercury;\n\n if (mercury && this.boundMuteHandler) {\n mercury.off(TELEPHONY_CALL_MUTED, this.boundMuteHandler);\n }\n if (mercury && this.boundUnmuteHandler) {\n mercury.off(TELEPHONY_CALL_UNMUTED, this.boundUnmuteHandler);\n }\n\n this.subscribedAgentId = undefined;\n this.muteChangeHandler = undefined;\n this.boundMuteHandler = undefined;\n this.boundUnmuteHandler = undefined;\n }\n\n public isSubscribed(): boolean {\n return Boolean(this.subscribedAgentId && this.muteChangeHandler);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -184,6 +184,9 @@ function parseAgentConfigs(profileData) {
184
184
  callVariablesSuppressed: tenantData.callVariablesSuppressed,
185
185
  agentDbId: userData.dbId,
186
186
  allowConsultToQueue: agentProfileData.consultToQueue,
187
+ accessQueue: agentProfileData.accessQueue,
188
+ accessEntryPoint: agentProfileData.accessEntryPoint,
189
+ accessBuddyTeam: agentProfileData.accessBuddyTeam,
187
190
  agentPersonalStatsEnabled: agentProfileData.viewableStatistics ? agentProfileData.viewableStatistics.agentStats : false,
188
191
  addressBookId: agentProfileData.addressBookId,
189
192
  outdialANIId: agentProfileData.outdialANIId,
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_types","getUrlMapping","urlMappings","name","mappedUrl","find","mapping","url","getMsftConfig","agentProfileData","showUserDetailsMS","stateSynchronizationMS","getWebexConfig","showUserDetailsWebex","stateSynchronizationWebex","getDefaultAgentDN","agentDNValidation","getFilteredDialplanEntries","dialPlanData","profileDialPlans","dialPlanEntries","forEach","dailPlan","includes","id","filteredPlan","regex","regularExpression","prefix","strippedChars","push","getFilterAuxCodes","auxCodes","type","specificCodes","filteredAuxCodes","auxCode","workTypeCode","active","length","isSystem","isSystemCode","isDefault","defaultCode","getDefaultWrapUpCode","wrapUpReasonList","c","parseAgentConfigs","profileData","userData","teamData","tenantData","orgInfoData","orgSettingsData","urlMapping","aiFeatureFlags","tenantDataTimeout","timeoutDesktopInactivityEnabled","timeoutDesktopInactivityMins","inactivityTimeoutTimer","timeoutDesktopInactivityCustomEnabled","wrapupCodes","WRAP_UP_CODE","accessWrapUpCode","wrapUpCodes","idleCodes","IDLE_CODE","accessIdleCode","defaultWrapUpData","aiFeature","data","undefined","finalData","teams","defaultDn","deafultDialledNumber","forceDefaultDn","forceDefaultDnForAgent","regexUS","dnDefaultRegex","regexOther","dnOtherRegex","agentId","ciUserId","agentName","firstName","lastName","agentMailId","email","agentProfileID","agentProfileId","autoAnswer","dialPlan","dialPlanEnabled","dialPlanEntity","dialPlans","multimediaProfileId","skillProfileId","siteId","enterpriseId","tenantId","tenantTimezone","timezone","environment","privacyShieldVisible","organizationIdleCodes","idleCodesAccess","wrapUpData","wrapUpProps","autoWrapup","autoWrapUp","autoWrapupInterval","autoWrapAfterSeconds","lastAgentRoute","lastAgentRouting","wrapUpCodeAccess","allowCancelAutoWrapup","allowAutoWrapUpExtension","defaultWrapupCode","isOutboundEnabledForTenant","outdialEnabled","isOutboundEnabledForAgent","isAdhocDialingEnabled","isAgentAvailableAfterOutdial","agentAvailableAfterOutdial","outDialEp","outdialEntryPointId","isCampaignManagementEnabled","campaignManagerEnabled","isEndTaskEnabled","endCallEnabled","isEndConsultEnabled","endConsultEnabled","callVariablesSuppressed","agentDbId","dbId","allowConsultToQueue","consultToQueue","agentPersonalStatsEnabled","viewableStatistics","agentStats","addressBookId","outdialANIId","analyserUserId","acqueonApiUrl","acqueonConsoleUrl","isTimeoutDesktopInactivityEnabled","loginVoiceOptions","webRtcEnabled","maskSensitiveData","microsoftConfig","webexConfig","lostConnectionRecoveryTimeout","LOST_CONNECTION_RECOVERY_TIMEOUT"],"sources":["Util.ts"],"sourcesContent":["import {LOST_CONNECTION_RECOVERY_TIMEOUT} from '../core/constants';\nimport {\n AgentResponse,\n AuxCode,\n AuxCodeType,\n DesktopProfileResponse,\n DialPlanEntity,\n Entity,\n IDLE_CODE,\n OrgInfo,\n OrgSettings,\n Profile,\n Team,\n TenantData,\n URLMapping,\n WRAP_UP_CODE,\n AIFeatureFlagsResponse,\n AIFeatureFlags,\n} from './types';\n\n/**\n * Get the URL mapping for the given name\n * @param {Array<URLMapping>} urlMappings\n * @param {string} name\n * @returns {string}\n */\nconst getUrlMapping = (urlMappings: Array<URLMapping>, name: string) => {\n const mappedUrl = urlMappings.find((mapping) => mapping.name === name)?.url;\n\n return mappedUrl || '';\n};\n\n/**\n * Get the MSFT and Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getMsftConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsMS: agentProfileData.showUserDetailsMS ?? false,\n stateSynchronizationMS: agentProfileData.stateSynchronizationMS ?? false,\n };\n};\n\n/**\n * Get the Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getWebexConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsWebex: agentProfileData.showUserDetailsWebex ?? false,\n stateSynchronizationWebex: agentProfileData.stateSynchronizationWebex ?? false,\n };\n};\n\n/**\n * Get the default agent DN\n * @param {string} agentDNValidation\n * @returns {boolean}\n */\nconst getDefaultAgentDN = (agentDNValidation: string) => {\n return agentDNValidation === 'PROVISIONED_VALUE';\n};\n\n/**\n * Get the filtered dialplan entries\n * @param {Array<DialPlanEntity>} dialPlanData\n * @param {Array<string>} profileDialPlans\n * @returns {Array<Entity>}\n */\nconst getFilteredDialplanEntries = (dialPlanData: DialPlanEntity[], profileDialPlans: string[]) => {\n const dialPlanEntries = [];\n dialPlanData.forEach((dailPlan: DialPlanEntity) => {\n if (profileDialPlans.includes(dailPlan.id)) {\n const filteredPlan = {\n regex: dailPlan.regularExpression,\n prefix: dailPlan.prefix,\n strippedChars: dailPlan.strippedChars,\n name: dailPlan.name,\n };\n dialPlanEntries.push(filteredPlan);\n }\n });\n\n return dialPlanEntries;\n};\n\n/**\n * Get the filtered aux codes\n * @param {Array<AuxCode>} auxCodes\n * @param {AuxCodeType} type\n * @param {Array<string>} specificCodes\n * @returns {Array<Entity>}\n */\nconst getFilterAuxCodes = (\n auxCodes: Array<AuxCode>,\n type: AuxCodeType,\n specificCodes: string[]\n) => {\n const filteredAuxCodes: Array<Entity> = [];\n auxCodes.forEach((auxCode: AuxCode) => {\n if (\n auxCode.workTypeCode === type &&\n auxCode.active &&\n (specificCodes.length === 0 || specificCodes.includes(auxCode.id))\n ) {\n filteredAuxCodes.push({\n id: auxCode.id,\n name: auxCode.name,\n isSystem: auxCode.isSystemCode,\n isDefault: auxCode.defaultCode,\n });\n }\n });\n\n return filteredAuxCodes;\n};\n\n/**\n * Get the default wrapup code\n * @param {Array<Entity>} wrapUpReasonList\n * @returns {Entity}\n */\nfunction getDefaultWrapUpCode(wrapUpReasonList: Entity[]) {\n return wrapUpReasonList?.find((c: Entity) => c.isDefault);\n}\n\n/**\n * Parse the agent configurations\n * @param {Object} profileData\n * @returns {Profile}\n */\nfunction parseAgentConfigs(profileData: {\n userData: AgentResponse;\n teamData: Team[];\n tenantData: TenantData;\n orgInfoData: OrgInfo;\n auxCodes: AuxCode[];\n orgSettingsData: OrgSettings;\n agentProfileData: DesktopProfileResponse;\n dialPlanData: DialPlanEntity[];\n urlMapping: URLMapping[];\n multimediaProfileId: string;\n aiFeatureFlags: AIFeatureFlagsResponse;\n}): Profile {\n const {\n userData,\n teamData,\n tenantData,\n orgInfoData,\n auxCodes,\n orgSettingsData,\n agentProfileData,\n dialPlanData,\n urlMapping,\n aiFeatureFlags,\n } = profileData;\n\n const tenantDataTimeout = tenantData.timeoutDesktopInactivityEnabled\n ? tenantData.timeoutDesktopInactivityMins\n : null;\n const inactivityTimeoutTimer = agentProfileData.timeoutDesktopInactivityCustomEnabled\n ? agentProfileData.timeoutDesktopInactivityMins\n : tenantDataTimeout;\n\n const wrapupCodes = getFilterAuxCodes(\n auxCodes,\n WRAP_UP_CODE,\n agentProfileData.accessWrapUpCode === 'ALL' ? [] : agentProfileData.wrapUpCodes\n );\n\n const idleCodes = getFilterAuxCodes(\n auxCodes,\n IDLE_CODE,\n agentProfileData.accessIdleCode === 'ALL' ? [] : agentProfileData.idleCodes\n );\n\n idleCodes.push({\n id: '0',\n name: 'Available',\n isSystem: false,\n isDefault: false,\n }); // pushing available state to idle codes\n\n const defaultWrapUpData = getDefaultWrapUpCode(wrapupCodes);\n const aiFeature: AIFeatureFlags | undefined =\n aiFeatureFlags?.data?.length > 0 ? aiFeatureFlags.data[0] : undefined;\n\n const finalData = {\n teams: teamData,\n defaultDn: userData.deafultDialledNumber,\n forceDefaultDn: tenantData.forceDefaultDn,\n forceDefaultDnForAgent: getDefaultAgentDN(agentProfileData.agentDNValidation),\n regexUS: tenantData.dnDefaultRegex,\n regexOther: tenantData.dnOtherRegex,\n agentId: userData.ciUserId,\n agentName: `${userData.firstName} ${userData.lastName}`,\n agentMailId: userData.email,\n agentProfileID: userData.agentProfileId,\n autoAnswer: agentProfileData.autoAnswer,\n dialPlan: agentProfileData.dialPlanEnabled\n ? {\n type: 'adhocDial',\n dialPlanEntity: getFilteredDialplanEntries(dialPlanData, agentProfileData.dialPlans),\n }\n : undefined,\n multimediaProfileId: profileData.multimediaProfileId,\n skillProfileId: userData.skillProfileId ? userData.skillProfileId : null,\n siteId: userData.siteId,\n enterpriseId: orgInfoData.tenantId,\n tenantTimezone: orgInfoData.timezone,\n environment: orgInfoData.environment,\n privacyShieldVisible: tenantData.privacyShieldVisible,\n organizationIdleCodes: [], // TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),\n idleCodesAccess: agentProfileData.accessIdleCode as 'ALL' | 'SPECIFIC',\n idleCodes,\n wrapupCodes,\n wrapUpData: {\n wrapUpProps: {\n autoWrapup: agentProfileData.autoWrapUp,\n autoWrapupInterval: agentProfileData.autoWrapAfterSeconds,\n lastAgentRoute: agentProfileData.lastAgentRouting,\n wrapUpCodeAccess: agentProfileData.accessWrapUpCode,\n wrapUpReasonList: wrapupCodes,\n allowCancelAutoWrapup: agentProfileData.allowAutoWrapUpExtension,\n },\n },\n defaultWrapupCode: defaultWrapUpData?.id ?? '',\n isOutboundEnabledForTenant: tenantData.outdialEnabled,\n isOutboundEnabledForAgent: agentProfileData.outdialEnabled,\n isAdhocDialingEnabled: agentProfileData.dialPlanEnabled,\n isAgentAvailableAfterOutdial: agentProfileData.agentAvailableAfterOutdial,\n outDialEp: agentProfileData.outdialEntryPointId,\n isCampaignManagementEnabled: orgSettingsData.campaignManagerEnabled,\n isEndTaskEnabled: tenantData.endCallEnabled,\n isEndConsultEnabled: tenantData.endConsultEnabled,\n callVariablesSuppressed: tenantData.callVariablesSuppressed,\n agentDbId: userData.dbId,\n allowConsultToQueue: agentProfileData.consultToQueue,\n agentPersonalStatsEnabled: agentProfileData.viewableStatistics\n ? agentProfileData.viewableStatistics.agentStats\n : false,\n addressBookId: agentProfileData.addressBookId,\n outdialANIId: agentProfileData.outdialANIId,\n analyserUserId: userData.id,\n\n urlMappings: {\n acqueonApiUrl: getUrlMapping(urlMapping, 'ACQUEON_API_URL'),\n acqueonConsoleUrl: getUrlMapping(urlMapping, 'ACQUEON_CONSOLE_URL'),\n },\n isTimeoutDesktopInactivityEnabled: tenantData.timeoutDesktopInactivityEnabled,\n timeoutDesktopInactivityMins: inactivityTimeoutTimer,\n loginVoiceOptions: agentProfileData.loginVoiceOptions ?? [],\n webRtcEnabled: orgSettingsData.webRtcEnabled,\n maskSensitiveData: orgSettingsData.maskSensitiveData\n ? orgSettingsData.maskSensitiveData\n : false,\n microsoftConfig: getMsftConfig(agentProfileData),\n webexConfig: getWebexConfig(agentProfileData),\n lostConnectionRecoveryTimeout:\n tenantData.lostConnectionRecoveryTimeout || LOST_CONNECTION_RECOVERY_TIMEOUT,\n aiFeature,\n };\n\n return finalData;\n}\n\nexport {parseAgentConfigs};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_types","getUrlMapping","urlMappings","name","mappedUrl","find","mapping","url","getMsftConfig","agentProfileData","showUserDetailsMS","stateSynchronizationMS","getWebexConfig","showUserDetailsWebex","stateSynchronizationWebex","getDefaultAgentDN","agentDNValidation","getFilteredDialplanEntries","dialPlanData","profileDialPlans","dialPlanEntries","forEach","dailPlan","includes","id","filteredPlan","regex","regularExpression","prefix","strippedChars","push","getFilterAuxCodes","auxCodes","type","specificCodes","filteredAuxCodes","auxCode","workTypeCode","active","length","isSystem","isSystemCode","isDefault","defaultCode","getDefaultWrapUpCode","wrapUpReasonList","c","parseAgentConfigs","profileData","userData","teamData","tenantData","orgInfoData","orgSettingsData","urlMapping","aiFeatureFlags","tenantDataTimeout","timeoutDesktopInactivityEnabled","timeoutDesktopInactivityMins","inactivityTimeoutTimer","timeoutDesktopInactivityCustomEnabled","wrapupCodes","WRAP_UP_CODE","accessWrapUpCode","wrapUpCodes","idleCodes","IDLE_CODE","accessIdleCode","defaultWrapUpData","aiFeature","data","undefined","finalData","teams","defaultDn","deafultDialledNumber","forceDefaultDn","forceDefaultDnForAgent","regexUS","dnDefaultRegex","regexOther","dnOtherRegex","agentId","ciUserId","agentName","firstName","lastName","agentMailId","email","agentProfileID","agentProfileId","autoAnswer","dialPlan","dialPlanEnabled","dialPlanEntity","dialPlans","multimediaProfileId","skillProfileId","siteId","enterpriseId","tenantId","tenantTimezone","timezone","environment","privacyShieldVisible","organizationIdleCodes","idleCodesAccess","wrapUpData","wrapUpProps","autoWrapup","autoWrapUp","autoWrapupInterval","autoWrapAfterSeconds","lastAgentRoute","lastAgentRouting","wrapUpCodeAccess","allowCancelAutoWrapup","allowAutoWrapUpExtension","defaultWrapupCode","isOutboundEnabledForTenant","outdialEnabled","isOutboundEnabledForAgent","isAdhocDialingEnabled","isAgentAvailableAfterOutdial","agentAvailableAfterOutdial","outDialEp","outdialEntryPointId","isCampaignManagementEnabled","campaignManagerEnabled","isEndTaskEnabled","endCallEnabled","isEndConsultEnabled","endConsultEnabled","callVariablesSuppressed","agentDbId","dbId","allowConsultToQueue","consultToQueue","accessQueue","accessEntryPoint","accessBuddyTeam","agentPersonalStatsEnabled","viewableStatistics","agentStats","addressBookId","outdialANIId","analyserUserId","acqueonApiUrl","acqueonConsoleUrl","isTimeoutDesktopInactivityEnabled","loginVoiceOptions","webRtcEnabled","maskSensitiveData","microsoftConfig","webexConfig","lostConnectionRecoveryTimeout","LOST_CONNECTION_RECOVERY_TIMEOUT"],"sources":["Util.ts"],"sourcesContent":["import {LOST_CONNECTION_RECOVERY_TIMEOUT} from '../core/constants';\nimport {\n AgentResponse,\n AuxCode,\n AuxCodeType,\n DesktopProfileResponse,\n DialPlanEntity,\n Entity,\n IDLE_CODE,\n OrgInfo,\n OrgSettings,\n Profile,\n Team,\n TenantData,\n URLMapping,\n WRAP_UP_CODE,\n AIFeatureFlagsResponse,\n AIFeatureFlags,\n} from './types';\n\n/**\n * Get the URL mapping for the given name\n * @param {Array<URLMapping>} urlMappings\n * @param {string} name\n * @returns {string}\n */\nconst getUrlMapping = (urlMappings: Array<URLMapping>, name: string) => {\n const mappedUrl = urlMappings.find((mapping) => mapping.name === name)?.url;\n\n return mappedUrl || '';\n};\n\n/**\n * Get the MSFT and Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getMsftConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsMS: agentProfileData.showUserDetailsMS ?? false,\n stateSynchronizationMS: agentProfileData.stateSynchronizationMS ?? false,\n };\n};\n\n/**\n * Get the Webex configuration\n * @param {DesktopProfileResponse} agentProfileData\n * @returns {Object}\n */\nconst getWebexConfig = (agentProfileData: DesktopProfileResponse) => {\n return {\n showUserDetailsWebex: agentProfileData.showUserDetailsWebex ?? false,\n stateSynchronizationWebex: agentProfileData.stateSynchronizationWebex ?? false,\n };\n};\n\n/**\n * Get the default agent DN\n * @param {string} agentDNValidation\n * @returns {boolean}\n */\nconst getDefaultAgentDN = (agentDNValidation: string) => {\n return agentDNValidation === 'PROVISIONED_VALUE';\n};\n\n/**\n * Get the filtered dialplan entries\n * @param {Array<DialPlanEntity>} dialPlanData\n * @param {Array<string>} profileDialPlans\n * @returns {Array<Entity>}\n */\nconst getFilteredDialplanEntries = (dialPlanData: DialPlanEntity[], profileDialPlans: string[]) => {\n const dialPlanEntries = [];\n dialPlanData.forEach((dailPlan: DialPlanEntity) => {\n if (profileDialPlans.includes(dailPlan.id)) {\n const filteredPlan = {\n regex: dailPlan.regularExpression,\n prefix: dailPlan.prefix,\n strippedChars: dailPlan.strippedChars,\n name: dailPlan.name,\n };\n dialPlanEntries.push(filteredPlan);\n }\n });\n\n return dialPlanEntries;\n};\n\n/**\n * Get the filtered aux codes\n * @param {Array<AuxCode>} auxCodes\n * @param {AuxCodeType} type\n * @param {Array<string>} specificCodes\n * @returns {Array<Entity>}\n */\nconst getFilterAuxCodes = (\n auxCodes: Array<AuxCode>,\n type: AuxCodeType,\n specificCodes: string[]\n) => {\n const filteredAuxCodes: Array<Entity> = [];\n auxCodes.forEach((auxCode: AuxCode) => {\n if (\n auxCode.workTypeCode === type &&\n auxCode.active &&\n (specificCodes.length === 0 || specificCodes.includes(auxCode.id))\n ) {\n filteredAuxCodes.push({\n id: auxCode.id,\n name: auxCode.name,\n isSystem: auxCode.isSystemCode,\n isDefault: auxCode.defaultCode,\n });\n }\n });\n\n return filteredAuxCodes;\n};\n\n/**\n * Get the default wrapup code\n * @param {Array<Entity>} wrapUpReasonList\n * @returns {Entity}\n */\nfunction getDefaultWrapUpCode(wrapUpReasonList: Entity[]) {\n return wrapUpReasonList?.find((c: Entity) => c.isDefault);\n}\n\n/**\n * Parse the agent configurations\n * @param {Object} profileData\n * @returns {Profile}\n */\nfunction parseAgentConfigs(profileData: {\n userData: AgentResponse;\n teamData: Team[];\n tenantData: TenantData;\n orgInfoData: OrgInfo;\n auxCodes: AuxCode[];\n orgSettingsData: OrgSettings;\n agentProfileData: DesktopProfileResponse;\n dialPlanData: DialPlanEntity[];\n urlMapping: URLMapping[];\n multimediaProfileId: string;\n aiFeatureFlags: AIFeatureFlagsResponse;\n}): Profile {\n const {\n userData,\n teamData,\n tenantData,\n orgInfoData,\n auxCodes,\n orgSettingsData,\n agentProfileData,\n dialPlanData,\n urlMapping,\n aiFeatureFlags,\n } = profileData;\n\n const tenantDataTimeout = tenantData.timeoutDesktopInactivityEnabled\n ? tenantData.timeoutDesktopInactivityMins\n : null;\n const inactivityTimeoutTimer = agentProfileData.timeoutDesktopInactivityCustomEnabled\n ? agentProfileData.timeoutDesktopInactivityMins\n : tenantDataTimeout;\n\n const wrapupCodes = getFilterAuxCodes(\n auxCodes,\n WRAP_UP_CODE,\n agentProfileData.accessWrapUpCode === 'ALL' ? [] : agentProfileData.wrapUpCodes\n );\n\n const idleCodes = getFilterAuxCodes(\n auxCodes,\n IDLE_CODE,\n agentProfileData.accessIdleCode === 'ALL' ? [] : agentProfileData.idleCodes\n );\n\n idleCodes.push({\n id: '0',\n name: 'Available',\n isSystem: false,\n isDefault: false,\n }); // pushing available state to idle codes\n\n const defaultWrapUpData = getDefaultWrapUpCode(wrapupCodes);\n const aiFeature: AIFeatureFlags | undefined =\n aiFeatureFlags?.data?.length > 0 ? aiFeatureFlags.data[0] : undefined;\n\n const finalData = {\n teams: teamData,\n defaultDn: userData.deafultDialledNumber,\n forceDefaultDn: tenantData.forceDefaultDn,\n forceDefaultDnForAgent: getDefaultAgentDN(agentProfileData.agentDNValidation),\n regexUS: tenantData.dnDefaultRegex,\n regexOther: tenantData.dnOtherRegex,\n agentId: userData.ciUserId,\n agentName: `${userData.firstName} ${userData.lastName}`,\n agentMailId: userData.email,\n agentProfileID: userData.agentProfileId,\n autoAnswer: agentProfileData.autoAnswer,\n dialPlan: agentProfileData.dialPlanEnabled\n ? {\n type: 'adhocDial',\n dialPlanEntity: getFilteredDialplanEntries(dialPlanData, agentProfileData.dialPlans),\n }\n : undefined,\n multimediaProfileId: profileData.multimediaProfileId,\n skillProfileId: userData.skillProfileId ? userData.skillProfileId : null,\n siteId: userData.siteId,\n enterpriseId: orgInfoData.tenantId,\n tenantTimezone: orgInfoData.timezone,\n environment: orgInfoData.environment,\n privacyShieldVisible: tenantData.privacyShieldVisible,\n organizationIdleCodes: [], // TODO: for supervisor, getOrgFilteredIdleCodes(auxCodes, false),\n idleCodesAccess: agentProfileData.accessIdleCode as 'ALL' | 'SPECIFIC',\n idleCodes,\n wrapupCodes,\n wrapUpData: {\n wrapUpProps: {\n autoWrapup: agentProfileData.autoWrapUp,\n autoWrapupInterval: agentProfileData.autoWrapAfterSeconds,\n lastAgentRoute: agentProfileData.lastAgentRouting,\n wrapUpCodeAccess: agentProfileData.accessWrapUpCode,\n wrapUpReasonList: wrapupCodes,\n allowCancelAutoWrapup: agentProfileData.allowAutoWrapUpExtension,\n },\n },\n defaultWrapupCode: defaultWrapUpData?.id ?? '',\n isOutboundEnabledForTenant: tenantData.outdialEnabled,\n isOutboundEnabledForAgent: agentProfileData.outdialEnabled,\n isAdhocDialingEnabled: agentProfileData.dialPlanEnabled,\n isAgentAvailableAfterOutdial: agentProfileData.agentAvailableAfterOutdial,\n outDialEp: agentProfileData.outdialEntryPointId,\n isCampaignManagementEnabled: orgSettingsData.campaignManagerEnabled,\n isEndTaskEnabled: tenantData.endCallEnabled,\n isEndConsultEnabled: tenantData.endConsultEnabled,\n callVariablesSuppressed: tenantData.callVariablesSuppressed,\n agentDbId: userData.dbId,\n allowConsultToQueue: agentProfileData.consultToQueue,\n accessQueue: agentProfileData.accessQueue,\n accessEntryPoint: agentProfileData.accessEntryPoint,\n accessBuddyTeam: agentProfileData.accessBuddyTeam,\n agentPersonalStatsEnabled: agentProfileData.viewableStatistics\n ? agentProfileData.viewableStatistics.agentStats\n : false,\n addressBookId: agentProfileData.addressBookId,\n outdialANIId: agentProfileData.outdialANIId,\n analyserUserId: userData.id,\n\n urlMappings: {\n acqueonApiUrl: getUrlMapping(urlMapping, 'ACQUEON_API_URL'),\n acqueonConsoleUrl: getUrlMapping(urlMapping, 'ACQUEON_CONSOLE_URL'),\n },\n isTimeoutDesktopInactivityEnabled: tenantData.timeoutDesktopInactivityEnabled,\n timeoutDesktopInactivityMins: inactivityTimeoutTimer,\n loginVoiceOptions: agentProfileData.loginVoiceOptions ?? [],\n webRtcEnabled: orgSettingsData.webRtcEnabled,\n maskSensitiveData: orgSettingsData.maskSensitiveData\n ? orgSettingsData.maskSensitiveData\n : false,\n microsoftConfig: getMsftConfig(agentProfileData),\n webexConfig: getWebexConfig(agentProfileData),\n lostConnectionRecoveryTimeout:\n tenantData.lostConnectionRecoveryTimeout || LOST_CONNECTION_RECOVERY_TIMEOUT,\n aiFeature,\n };\n\n return finalData;\n}\n\nexport {parseAgentConfigs};\n"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.endPointMap = exports.METHODS = exports.DEFAULT_PAGE_SIZE = exports.DEFAULT_PAGE = exports.DEFAULT_AUXCODE_ATTRIBUTES = exports.AGENT_STATE_AVAILABLE_ID = exports.AGENT_STATE_AVAILABLE_DESCRIPTION = exports.AGENT_STATE_AVAILABLE = void 0;
6
+ exports.endPointMap = exports.METHODS = exports.DEFAULT_PAGE_SIZE = exports.DEFAULT_PAGE = exports.DEFAULT_AUXCODE_ATTRIBUTES = exports.COLLABORATION_ACCESS = exports.AGENT_STATE_AVAILABLE_ID = exports.AGENT_STATE_AVAILABLE_DESCRIPTION = exports.AGENT_STATE_AVAILABLE = void 0;
7
7
  // making query params configurable for List Teams and List Aux Codes API
8
8
  const DEFAULT_PAGE = exports.DEFAULT_PAGE = 0;
9
9
 
10
+ /** Desktop Profile access levels for collaboration destination categories. */
11
+ const COLLABORATION_ACCESS = exports.COLLABORATION_ACCESS = {
12
+ ALL: 'ALL',
13
+ SPECIFIC: 'SPECIFIC',
14
+ NONE: 'NONE'
15
+ };
16
+
10
17
  /**
11
18
  * Default page size for paginated API requests.
12
19
  * @type {number}
@@ -229,16 +236,13 @@ const endPointMap = exports.endPointMap = {
229
236
  */
230
237
  queueList: (orgId, queryParams) => `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,
231
238
  /**
232
- * Gets the endpoint for entry points list with custom query parameters.
239
+ * Gets the desktop-profile-filtered dial-number mappings used by entry-point destination lists.
233
240
  * @param orgId - Organization ID.
234
241
  * @param queryParams - Query parameters string.
235
242
  * @returns The endpoint URL string.
236
- * @public
237
- * @example
238
- * const url = endPointMap.entryPointList('org123', 'page=0&pageSize=10');
239
243
  * @ignore
240
244
  */
241
- entryPointList: (orgId, queryParams) => `/organization/${orgId}/v2/entry-point?${queryParams}`,
245
+ entryPointDialNumberList: (orgId, queryParams) => `/organization/${orgId}/v3/dial-number?${queryParams}`,
242
246
  /**
243
247
  * Gets the endpoint for address book entries with custom query parameters.
244
248
  * @param orgId - Organization ID.
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_PAGE","exports","DEFAULT_PAGE_SIZE","AGENT_STATE_AVAILABLE_ID","AGENT_STATE_AVAILABLE","AGENT_STATE_AVAILABLE_DESCRIPTION","DEFAULT_AUXCODE_ATTRIBUTES","METHODS","GET_AGENT_CONFIG","GET_USER_USING_CI","GET_DESKTOP_PROFILE_BY_ID","GET_MULTIMEDIA_PROFILE_BY_ID","GET_LIST_OF_TEAMS","GET_ALL_TEAMS","GET_LIST_OF_AUX_CODES","GET_ALL_AUX_CODES","GET_SITE_INFO","GET_ORG_INFO","GET_ORGANIZATION_SETTING","GET_TENANT_DATA","GET_URL_MAPPING","GET_DIAL_PLAN_DATA","GET_AI_FEATURE_FLAGS","GET_QUEUES","PARSE_AGENT_CONFIGS","GET_URL_MAPPING_UTIL","GET_MSFT_CONFIG","GET_WEBEX_CONFIG","GET_DEFAULT_AGENT_DN","GET_FILTERED_DIALPLAN_ENTRIES","GET_FILTER_AUX_CODES","GET_DEFAULT_WRAP_UP_CODE","endPointMap","userByCI","orgId","agentId","desktopProfile","desktopProfileId","multimediaProfile","multimediaProfileId","listTeams","page","pageSize","filter","length","listAuxCodes","attributes","orgInfo","orgSettings","siteInfo","siteId","tenantData","urlMapping","dialPlan","aiFeature","queueList","queryParams","entryPointList","addressBookEntries","addressBookId","outdialAniEntries","outdialANI","userPreference","userId","userPreferenceCreate"],"sources":["constants.ts"],"sourcesContent":["// making query params configurable for List Teams and List Aux Codes API\nexport const DEFAULT_PAGE = 0;\n\n/**\n * Default page size for paginated API requests.\n * @type {number}\n * @public\n * @example\n * const pageSize = DEFAULT_PAGE_SIZE; // 100\n * @ignore\n */\nexport const DEFAULT_PAGE_SIZE = 100;\n\n/**\n * Agent state ID for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_ID = '0';\n\n/**\n * Agent state label for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE = 'Available';\n\n/**\n * Description for the 'Available' agent state.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_DESCRIPTION = 'Agent is available to receive calls';\n\n/**\n * Default attributes for auxiliary code API requests.\n * @type {string[]}\n * @public\n * @ignore\n */\nexport const DEFAULT_AUXCODE_ATTRIBUTES = [\n 'id',\n 'isSystemCode',\n 'name',\n 'defaultCode',\n 'workTypeCode',\n 'active',\n];\n\n// Method names for config services\nexport const METHODS = {\n // AgentConfigService methods\n GET_AGENT_CONFIG: 'getAgentConfig',\n GET_USER_USING_CI: 'getUserUsingCI',\n GET_DESKTOP_PROFILE_BY_ID: 'getDesktopProfileById',\n GET_MULTIMEDIA_PROFILE_BY_ID: 'getMultimediaProfileById',\n GET_LIST_OF_TEAMS: 'getListOfTeams',\n GET_ALL_TEAMS: 'getAllTeams',\n GET_LIST_OF_AUX_CODES: 'getListOfAuxCodes',\n GET_ALL_AUX_CODES: 'getAllAuxCodes',\n GET_SITE_INFO: 'getSiteInfo',\n GET_ORG_INFO: 'getOrgInfo',\n GET_ORGANIZATION_SETTING: 'getOrganizationSetting',\n GET_TENANT_DATA: 'getTenantData',\n GET_URL_MAPPING: 'getURLMapping',\n GET_DIAL_PLAN_DATA: 'getDialPlanData',\n GET_AI_FEATURE_FLAGS: 'getAIFeatureFlags',\n GET_QUEUES: 'getQueues',\n\n // Util methods\n PARSE_AGENT_CONFIGS: 'parseAgentConfigs',\n GET_URL_MAPPING_UTIL: 'getUrlMapping',\n GET_MSFT_CONFIG: 'getMsftConfig',\n GET_WEBEX_CONFIG: 'getWebexConfig',\n GET_DEFAULT_AGENT_DN: 'getDefaultAgentDN',\n GET_FILTERED_DIALPLAN_ENTRIES: 'getFilteredDialplanEntries',\n GET_FILTER_AUX_CODES: 'getFilterAuxCodes',\n GET_DEFAULT_WRAP_UP_CODE: 'getDefaultWrapUpCode',\n};\n\n/**\n * Maps API endpoint names to functions that generate endpoint URLs for various organization resources.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n */\nexport const endPointMap = {\n /**\n * Gets the endpoint for a user by CI user ID.\n * @param orgId - Organization ID.\n * @param agentId - Agent ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n * @ignore\n */\n userByCI: (orgId: string, agentId: string) =>\n `organization/${orgId}/user/by-ci-user-id/${agentId}`,\n\n /**\n * Gets the endpoint for a desktop profile.\n * @param orgId - Organization ID.\n * @param desktopProfileId - Desktop profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.desktopProfile('org123', 'profile789');\n * @ignore\n */\n desktopProfile: (orgId: string, desktopProfileId: string) =>\n `organization/${orgId}/agent-profile/${desktopProfileId}`,\n\n /**\n * Gets the endpoint for a multimedia profile.\n * @param orgId - Organization ID.\n * @param multimediaProfileId - Multimedia profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.multimediaProfile('org123', 'multi456');\n * @ignore\n */\n multimediaProfile: (orgId: string, multimediaProfileId: string) =>\n `organization/${orgId}/multimedia-profile/${multimediaProfileId}`,\n\n /**\n * Gets the endpoint for listing teams with optional filters.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of team IDs to filter.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listTeams('org123', 0, 100, ['team1', 'team2']);\n * @ignore\n */\n listTeams: (orgId: string, page: number, pageSize: number, filter: string[]) =>\n `organization/${orgId}/v2/team?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }`,\n\n /**\n * Gets the endpoint for listing auxiliary codes with optional filters and attributes.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of auxiliary code IDs to filter.\n * @param attributes - Array of attribute names to include.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listAuxCodes('org123', 0, 100, ['aux1'], ['id', 'name']);\n * @ignore\n */\n listAuxCodes: (\n orgId: string,\n page: number,\n pageSize: number,\n filter: string[],\n attributes: string[]\n ) =>\n `organization/${orgId}/v2/auxiliary-code?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }&attributes=${attributes}&desktopProfileFilter=true`,\n\n /**\n * Gets the endpoint for organization info.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgInfo('org123');\n * @ignore\n */\n orgInfo: (orgId: string) => `organization/${orgId}`,\n\n /**\n * Gets the endpoint for organization settings.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgSettings('org123');\n * @ignore\n */\n orgSettings: (orgId: string) => `organization/${orgId}/v2/organization-setting?agentView=true`,\n\n /**\n * Gets the endpoint for site info.\n * @param orgId - Organization ID.\n * @param siteId - Site ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.siteInfo('org123', 'site456');\n * @ignore\n */\n siteInfo: (orgId: string, siteId: string) => `organization/${orgId}/site/${siteId}`,\n\n /**\n * Gets the endpoint for tenant configuration data.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.tenantData('org123');\n * @ignore\n */\n tenantData: (orgId: string) => `organization/${orgId}/v2/tenant-configuration?agentView=true`,\n\n /**\n * Gets the endpoint for organization URL mapping.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.urlMapping('org123');\n * @ignore\n */\n urlMapping: (orgId: string) => `organization/${orgId}/v2/org-url-mapping?sort=name,ASC`,\n\n /**\n * Gets the endpoint for dial plan.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.dialPlan('org123');\n * @ignore\n */\n dialPlan: (orgId: string) => `organization/${orgId}/dial-plan?agentView=true`,\n /**\n * Gets the endpoint for listing AI feature flags.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.aiFeatureFlags('org123');\n * @ignore\n */\n aiFeature: (orgId: string) => `organization/${orgId}/v2/ai-feature?page=0&pageSize=100`,\n\n /**\n * Gets the endpoint for the queue list with custom query parameters.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.queueList('org123', 'page=0&pageSize=10');\n * @ignore\n */\n queueList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,\n /**\n * Gets the endpoint for entry points list with custom query parameters.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.entryPointList('org123', 'page=0&pageSize=10');\n * @ignore\n */\n entryPointList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v2/entry-point?${queryParams}`,\n /**\n * Gets the endpoint for address book entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param addressBookId - Address book ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.addressBookEntries('org123', 'book456', 'page=0&pageSize=10');\n * @ignore\n */\n addressBookEntries: (orgId: string, addressBookId: string, queryParams: string) =>\n `/organization/${orgId}/v2/address-book/${addressBookId}/entry?${queryParams}`,\n\n /**\n * Gets the endpoint for outdial ANI entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param outdialANI - Outdial ANI ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.outdialAniEntries('org123', 'ani456', 'page=0&pageSize=10');\n * @ignore\n */\n outdialAniEntries: (orgId: string, outdialANI: string, queryParams: string) =>\n `organization/${orgId}/v2/outdial-ani/${outdialANI}/entry${\n queryParams ? `?${queryParams}` : ''\n }`,\n\n /**\n * Gets the endpoint for user preference by user ID.\n * @param orgId - Organization ID.\n * @param userId - User ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreference('org123', 'user456');\n * @ignore\n */\n userPreference: (orgId: string, userId: string) =>\n `organization/${orgId}/user-preference/${userId}`,\n\n /**\n * Gets the endpoint for creating user preference.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreferenceCreate('org123');\n * @ignore\n */\n userPreferenceCreate: (orgId: string) => `organization/${orgId}/user-preference`,\n};\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,CAAC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,GAAG;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,wBAAwB,GAAAF,OAAA,CAAAE,wBAAA,GAAG,GAAG;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAG,WAAW;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iCAAiC,GAAAJ,OAAA,CAAAI,iCAAA,GAAG,qCAAqC;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,0BAA0B,GAAAL,OAAA,CAAAK,0BAAA,GAAG,CACxC,IAAI,EACJ,cAAc,EACd,MAAM,EACN,aAAa,EACb,cAAc,EACd,QAAQ,CACT;;AAED;AACO,MAAMC,OAAO,GAAAN,OAAA,CAAAM,OAAA,GAAG;EACrB;EACAC,gBAAgB,EAAE,gBAAgB;EAClCC,iBAAiB,EAAE,gBAAgB;EACnCC,yBAAyB,EAAE,uBAAuB;EAClDC,4BAA4B,EAAE,0BAA0B;EACxDC,iBAAiB,EAAE,gBAAgB;EACnCC,aAAa,EAAE,aAAa;EAC5BC,qBAAqB,EAAE,mBAAmB;EAC1CC,iBAAiB,EAAE,gBAAgB;EACnCC,aAAa,EAAE,aAAa;EAC5BC,YAAY,EAAE,YAAY;EAC1BC,wBAAwB,EAAE,wBAAwB;EAClDC,eAAe,EAAE,eAAe;EAChCC,eAAe,EAAE,eAAe;EAChCC,kBAAkB,EAAE,iBAAiB;EACrCC,oBAAoB,EAAE,mBAAmB;EACzCC,UAAU,EAAE,WAAW;EAEvB;EACAC,mBAAmB,EAAE,mBAAmB;EACxCC,oBAAoB,EAAE,eAAe;EACrCC,eAAe,EAAE,eAAe;EAChCC,gBAAgB,EAAE,gBAAgB;EAClCC,oBAAoB,EAAE,mBAAmB;EACzCC,6BAA6B,EAAE,4BAA4B;EAC3DC,oBAAoB,EAAE,mBAAmB;EACzCC,wBAAwB,EAAE;AAC5B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAA/B,OAAA,CAAA+B,WAAA,GAAG;EACzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,QAAQ,EAAEA,CAACC,KAAa,EAAEC,OAAe,KACvC,gBAAgBD,KAAK,uBAAuBC,OAAO,EAAE;EAEvD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,cAAc,EAAEA,CAACF,KAAa,EAAEG,gBAAwB,KACtD,gBAAgBH,KAAK,kBAAkBG,gBAAgB,EAAE;EAE3D;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,iBAAiB,EAAEA,CAACJ,KAAa,EAAEK,mBAA2B,KAC5D,gBAAgBL,KAAK,uBAAuBK,mBAAmB,EAAE;EAEnE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,SAAS,EAAEA,CAACN,KAAa,EAAEO,IAAY,EAAEC,QAAgB,EAAEC,MAAgB,KACzE,gBAAgBT,KAAK,iBAAiBO,IAAI,aAAaC,QAAQ,GAC7DC,MAAM,IAAIA,MAAM,CAACC,MAAM,GAAG,CAAC,GAAG,kBAAkBD,MAAM,GAAG,GAAG,EAAE,EAC9D;EAEJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,YAAY,EAAEA,CACZX,KAAa,EACbO,IAAY,EACZC,QAAgB,EAChBC,MAAgB,EAChBG,UAAoB,KAEpB,gBAAgBZ,KAAK,2BAA2BO,IAAI,aAAaC,QAAQ,GACvEC,MAAM,IAAIA,MAAM,CAACC,MAAM,GAAG,CAAC,GAAG,kBAAkBD,MAAM,GAAG,GAAG,EAAE,eACjDG,UAAU,4BAA4B;EAEvD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,OAAO,EAAGb,KAAa,IAAK,gBAAgBA,KAAK,EAAE;EAEnD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEc,WAAW,EAAGd,KAAa,IAAK,gBAAgBA,KAAK,yCAAyC;EAE9F;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEe,QAAQ,EAAEA,CAACf,KAAa,EAAEgB,MAAc,KAAK,gBAAgBhB,KAAK,SAASgB,MAAM,EAAE;EAEnF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAGjB,KAAa,IAAK,gBAAgBA,KAAK,yCAAyC;EAE7F;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEkB,UAAU,EAAGlB,KAAa,IAAK,gBAAgBA,KAAK,mCAAmC;EAEvF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEmB,QAAQ,EAAGnB,KAAa,IAAK,gBAAgBA,KAAK,2BAA2B;EAC7E;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEoB,SAAS,EAAGpB,KAAa,IAAK,gBAAgBA,KAAK,oCAAoC;EAEvF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEqB,SAAS,EAAEA,CAACrB,KAAa,EAAEsB,WAAmB,KAC5C,iBAAiBtB,KAAK,6BAA6BsB,WAAW,EAAE;EAClE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,cAAc,EAAEA,CAACvB,KAAa,EAAEsB,WAAmB,KACjD,iBAAiBtB,KAAK,mBAAmBsB,WAAW,EAAE;EACxD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,kBAAkB,EAAEA,CAACxB,KAAa,EAAEyB,aAAqB,EAAEH,WAAmB,KAC5E,iBAAiBtB,KAAK,oBAAoByB,aAAa,UAAUH,WAAW,EAAE;EAEhF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEI,iBAAiB,EAAEA,CAAC1B,KAAa,EAAE2B,UAAkB,EAAEL,WAAmB,KACxE,gBAAgBtB,KAAK,mBAAmB2B,UAAU,SAChDL,WAAW,GAAG,IAAIA,WAAW,EAAE,GAAG,EAAE,EACpC;EAEJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEM,cAAc,EAAEA,CAAC5B,KAAa,EAAE6B,MAAc,KAC5C,gBAAgB7B,KAAK,oBAAoB6B,MAAM,EAAE;EAEnD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,oBAAoB,EAAG9B,KAAa,IAAK,gBAAgBA,KAAK;AAChE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_PAGE","exports","COLLABORATION_ACCESS","ALL","SPECIFIC","NONE","DEFAULT_PAGE_SIZE","AGENT_STATE_AVAILABLE_ID","AGENT_STATE_AVAILABLE","AGENT_STATE_AVAILABLE_DESCRIPTION","DEFAULT_AUXCODE_ATTRIBUTES","METHODS","GET_AGENT_CONFIG","GET_USER_USING_CI","GET_DESKTOP_PROFILE_BY_ID","GET_MULTIMEDIA_PROFILE_BY_ID","GET_LIST_OF_TEAMS","GET_ALL_TEAMS","GET_LIST_OF_AUX_CODES","GET_ALL_AUX_CODES","GET_SITE_INFO","GET_ORG_INFO","GET_ORGANIZATION_SETTING","GET_TENANT_DATA","GET_URL_MAPPING","GET_DIAL_PLAN_DATA","GET_AI_FEATURE_FLAGS","GET_QUEUES","PARSE_AGENT_CONFIGS","GET_URL_MAPPING_UTIL","GET_MSFT_CONFIG","GET_WEBEX_CONFIG","GET_DEFAULT_AGENT_DN","GET_FILTERED_DIALPLAN_ENTRIES","GET_FILTER_AUX_CODES","GET_DEFAULT_WRAP_UP_CODE","endPointMap","userByCI","orgId","agentId","desktopProfile","desktopProfileId","multimediaProfile","multimediaProfileId","listTeams","page","pageSize","filter","length","listAuxCodes","attributes","orgInfo","orgSettings","siteInfo","siteId","tenantData","urlMapping","dialPlan","aiFeature","queueList","queryParams","entryPointDialNumberList","addressBookEntries","addressBookId","outdialAniEntries","outdialANI","userPreference","userId","userPreferenceCreate"],"sources":["constants.ts"],"sourcesContent":["// making query params configurable for List Teams and List Aux Codes API\nexport const DEFAULT_PAGE = 0;\n\n/** Desktop Profile access levels for collaboration destination categories. */\nexport const COLLABORATION_ACCESS = {\n ALL: 'ALL',\n SPECIFIC: 'SPECIFIC',\n NONE: 'NONE',\n} as const;\n\n/**\n * Default page size for paginated API requests.\n * @type {number}\n * @public\n * @example\n * const pageSize = DEFAULT_PAGE_SIZE; // 100\n * @ignore\n */\nexport const DEFAULT_PAGE_SIZE = 100;\n\n/**\n * Agent state ID for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_ID = '0';\n\n/**\n * Agent state label for 'Available'.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE = 'Available';\n\n/**\n * Description for the 'Available' agent state.\n * @type {string}\n * @public\n * @ignore\n */\nexport const AGENT_STATE_AVAILABLE_DESCRIPTION = 'Agent is available to receive calls';\n\n/**\n * Default attributes for auxiliary code API requests.\n * @type {string[]}\n * @public\n * @ignore\n */\nexport const DEFAULT_AUXCODE_ATTRIBUTES = [\n 'id',\n 'isSystemCode',\n 'name',\n 'defaultCode',\n 'workTypeCode',\n 'active',\n];\n\n// Method names for config services\nexport const METHODS = {\n // AgentConfigService methods\n GET_AGENT_CONFIG: 'getAgentConfig',\n GET_USER_USING_CI: 'getUserUsingCI',\n GET_DESKTOP_PROFILE_BY_ID: 'getDesktopProfileById',\n GET_MULTIMEDIA_PROFILE_BY_ID: 'getMultimediaProfileById',\n GET_LIST_OF_TEAMS: 'getListOfTeams',\n GET_ALL_TEAMS: 'getAllTeams',\n GET_LIST_OF_AUX_CODES: 'getListOfAuxCodes',\n GET_ALL_AUX_CODES: 'getAllAuxCodes',\n GET_SITE_INFO: 'getSiteInfo',\n GET_ORG_INFO: 'getOrgInfo',\n GET_ORGANIZATION_SETTING: 'getOrganizationSetting',\n GET_TENANT_DATA: 'getTenantData',\n GET_URL_MAPPING: 'getURLMapping',\n GET_DIAL_PLAN_DATA: 'getDialPlanData',\n GET_AI_FEATURE_FLAGS: 'getAIFeatureFlags',\n GET_QUEUES: 'getQueues',\n\n // Util methods\n PARSE_AGENT_CONFIGS: 'parseAgentConfigs',\n GET_URL_MAPPING_UTIL: 'getUrlMapping',\n GET_MSFT_CONFIG: 'getMsftConfig',\n GET_WEBEX_CONFIG: 'getWebexConfig',\n GET_DEFAULT_AGENT_DN: 'getDefaultAgentDN',\n GET_FILTERED_DIALPLAN_ENTRIES: 'getFilteredDialplanEntries',\n GET_FILTER_AUX_CODES: 'getFilterAuxCodes',\n GET_DEFAULT_WRAP_UP_CODE: 'getDefaultWrapUpCode',\n};\n\n/**\n * Maps API endpoint names to functions that generate endpoint URLs for various organization resources.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n */\nexport const endPointMap = {\n /**\n * Gets the endpoint for a user by CI user ID.\n * @param orgId - Organization ID.\n * @param agentId - Agent ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userByCI('org123', 'agent456');\n * @ignore\n */\n userByCI: (orgId: string, agentId: string) =>\n `organization/${orgId}/user/by-ci-user-id/${agentId}`,\n\n /**\n * Gets the endpoint for a desktop profile.\n * @param orgId - Organization ID.\n * @param desktopProfileId - Desktop profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.desktopProfile('org123', 'profile789');\n * @ignore\n */\n desktopProfile: (orgId: string, desktopProfileId: string) =>\n `organization/${orgId}/agent-profile/${desktopProfileId}`,\n\n /**\n * Gets the endpoint for a multimedia profile.\n * @param orgId - Organization ID.\n * @param multimediaProfileId - Multimedia profile ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.multimediaProfile('org123', 'multi456');\n * @ignore\n */\n multimediaProfile: (orgId: string, multimediaProfileId: string) =>\n `organization/${orgId}/multimedia-profile/${multimediaProfileId}`,\n\n /**\n * Gets the endpoint for listing teams with optional filters.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of team IDs to filter.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listTeams('org123', 0, 100, ['team1', 'team2']);\n * @ignore\n */\n listTeams: (orgId: string, page: number, pageSize: number, filter: string[]) =>\n `organization/${orgId}/v2/team?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }`,\n\n /**\n * Gets the endpoint for listing auxiliary codes with optional filters and attributes.\n * @param orgId - Organization ID.\n * @param page - Page number.\n * @param pageSize - Page size.\n * @param filter - Array of auxiliary code IDs to filter.\n * @param attributes - Array of attribute names to include.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.listAuxCodes('org123', 0, 100, ['aux1'], ['id', 'name']);\n * @ignore\n */\n listAuxCodes: (\n orgId: string,\n page: number,\n pageSize: number,\n filter: string[],\n attributes: string[]\n ) =>\n `organization/${orgId}/v2/auxiliary-code?page=${page}&pageSize=${pageSize}${\n filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''\n }&attributes=${attributes}&desktopProfileFilter=true`,\n\n /**\n * Gets the endpoint for organization info.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgInfo('org123');\n * @ignore\n */\n orgInfo: (orgId: string) => `organization/${orgId}`,\n\n /**\n * Gets the endpoint for organization settings.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.orgSettings('org123');\n * @ignore\n */\n orgSettings: (orgId: string) => `organization/${orgId}/v2/organization-setting?agentView=true`,\n\n /**\n * Gets the endpoint for site info.\n * @param orgId - Organization ID.\n * @param siteId - Site ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.siteInfo('org123', 'site456');\n * @ignore\n */\n siteInfo: (orgId: string, siteId: string) => `organization/${orgId}/site/${siteId}`,\n\n /**\n * Gets the endpoint for tenant configuration data.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.tenantData('org123');\n * @ignore\n */\n tenantData: (orgId: string) => `organization/${orgId}/v2/tenant-configuration?agentView=true`,\n\n /**\n * Gets the endpoint for organization URL mapping.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.urlMapping('org123');\n * @ignore\n */\n urlMapping: (orgId: string) => `organization/${orgId}/v2/org-url-mapping?sort=name,ASC`,\n\n /**\n * Gets the endpoint for dial plan.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.dialPlan('org123');\n * @ignore\n */\n dialPlan: (orgId: string) => `organization/${orgId}/dial-plan?agentView=true`,\n /**\n * Gets the endpoint for listing AI feature flags.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.aiFeatureFlags('org123');\n * @ignore\n */\n aiFeature: (orgId: string) => `organization/${orgId}/v2/ai-feature?page=0&pageSize=100`,\n\n /**\n * Gets the endpoint for the queue list with custom query parameters.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.queueList('org123', 'page=0&pageSize=10');\n * @ignore\n */\n queueList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,\n /**\n * Gets the desktop-profile-filtered dial-number mappings used by entry-point destination lists.\n * @param orgId - Organization ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @ignore\n */\n entryPointDialNumberList: (orgId: string, queryParams: string) =>\n `/organization/${orgId}/v3/dial-number?${queryParams}`,\n /**\n * Gets the endpoint for address book entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param addressBookId - Address book ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.addressBookEntries('org123', 'book456', 'page=0&pageSize=10');\n * @ignore\n */\n addressBookEntries: (orgId: string, addressBookId: string, queryParams: string) =>\n `/organization/${orgId}/v2/address-book/${addressBookId}/entry?${queryParams}`,\n\n /**\n * Gets the endpoint for outdial ANI entries with custom query parameters.\n * @param orgId - Organization ID.\n * @param outdialANI - Outdial ANI ID.\n * @param queryParams - Query parameters string.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.outdialAniEntries('org123', 'ani456', 'page=0&pageSize=10');\n * @ignore\n */\n outdialAniEntries: (orgId: string, outdialANI: string, queryParams: string) =>\n `organization/${orgId}/v2/outdial-ani/${outdialANI}/entry${\n queryParams ? `?${queryParams}` : ''\n }`,\n\n /**\n * Gets the endpoint for user preference by user ID.\n * @param orgId - Organization ID.\n * @param userId - User ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreference('org123', 'user456');\n * @ignore\n */\n userPreference: (orgId: string, userId: string) =>\n `organization/${orgId}/user-preference/${userId}`,\n\n /**\n * Gets the endpoint for creating user preference.\n * @param orgId - Organization ID.\n * @returns The endpoint URL string.\n * @public\n * @example\n * const url = endPointMap.userPreferenceCreate('org123');\n * @ignore\n */\n userPreferenceCreate: (orgId: string) => `organization/${orgId}/user-preference`,\n};\n"],"mappings":";;;;;;AAAA;AACO,MAAMA,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,CAAC;;AAE7B;AACO,MAAME,oBAAoB,GAAAD,OAAA,CAAAC,oBAAA,GAAG;EAClCC,GAAG,EAAE,KAAK;EACVC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iBAAiB,GAAAL,OAAA,CAAAK,iBAAA,GAAG,GAAG;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,wBAAwB,GAAAN,OAAA,CAAAM,wBAAA,GAAG,GAAG;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,qBAAqB,GAAAP,OAAA,CAAAO,qBAAA,GAAG,WAAW;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iCAAiC,GAAAR,OAAA,CAAAQ,iCAAA,GAAG,qCAAqC;;AAEtF;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,0BAA0B,GAAAT,OAAA,CAAAS,0BAAA,GAAG,CACxC,IAAI,EACJ,cAAc,EACd,MAAM,EACN,aAAa,EACb,cAAc,EACd,QAAQ,CACT;;AAED;AACO,MAAMC,OAAO,GAAAV,OAAA,CAAAU,OAAA,GAAG;EACrB;EACAC,gBAAgB,EAAE,gBAAgB;EAClCC,iBAAiB,EAAE,gBAAgB;EACnCC,yBAAyB,EAAE,uBAAuB;EAClDC,4BAA4B,EAAE,0BAA0B;EACxDC,iBAAiB,EAAE,gBAAgB;EACnCC,aAAa,EAAE,aAAa;EAC5BC,qBAAqB,EAAE,mBAAmB;EAC1CC,iBAAiB,EAAE,gBAAgB;EACnCC,aAAa,EAAE,aAAa;EAC5BC,YAAY,EAAE,YAAY;EAC1BC,wBAAwB,EAAE,wBAAwB;EAClDC,eAAe,EAAE,eAAe;EAChCC,eAAe,EAAE,eAAe;EAChCC,kBAAkB,EAAE,iBAAiB;EACrCC,oBAAoB,EAAE,mBAAmB;EACzCC,UAAU,EAAE,WAAW;EAEvB;EACAC,mBAAmB,EAAE,mBAAmB;EACxCC,oBAAoB,EAAE,eAAe;EACrCC,eAAe,EAAE,eAAe;EAChCC,gBAAgB,EAAE,gBAAgB;EAClCC,oBAAoB,EAAE,mBAAmB;EACzCC,6BAA6B,EAAE,4BAA4B;EAC3DC,oBAAoB,EAAE,mBAAmB;EACzCC,wBAAwB,EAAE;AAC5B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAAnC,OAAA,CAAAmC,WAAA,GAAG;EACzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,QAAQ,EAAEA,CAACC,KAAa,EAAEC,OAAe,KACvC,gBAAgBD,KAAK,uBAAuBC,OAAO,EAAE;EAEvD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,cAAc,EAAEA,CAACF,KAAa,EAAEG,gBAAwB,KACtD,gBAAgBH,KAAK,kBAAkBG,gBAAgB,EAAE;EAE3D;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,iBAAiB,EAAEA,CAACJ,KAAa,EAAEK,mBAA2B,KAC5D,gBAAgBL,KAAK,uBAAuBK,mBAAmB,EAAE;EAEnE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,SAAS,EAAEA,CAACN,KAAa,EAAEO,IAAY,EAAEC,QAAgB,EAAEC,MAAgB,KACzE,gBAAgBT,KAAK,iBAAiBO,IAAI,aAAaC,QAAQ,GAC7DC,MAAM,IAAIA,MAAM,CAACC,MAAM,GAAG,CAAC,GAAG,kBAAkBD,MAAM,GAAG,GAAG,EAAE,EAC9D;EAEJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,YAAY,EAAEA,CACZX,KAAa,EACbO,IAAY,EACZC,QAAgB,EAChBC,MAAgB,EAChBG,UAAoB,KAEpB,gBAAgBZ,KAAK,2BAA2BO,IAAI,aAAaC,QAAQ,GACvEC,MAAM,IAAIA,MAAM,CAACC,MAAM,GAAG,CAAC,GAAG,kBAAkBD,MAAM,GAAG,GAAG,EAAE,eACjDG,UAAU,4BAA4B;EAEvD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,OAAO,EAAGb,KAAa,IAAK,gBAAgBA,KAAK,EAAE;EAEnD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEc,WAAW,EAAGd,KAAa,IAAK,gBAAgBA,KAAK,yCAAyC;EAE9F;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEe,QAAQ,EAAEA,CAACf,KAAa,EAAEgB,MAAc,KAAK,gBAAgBhB,KAAK,SAASgB,MAAM,EAAE;EAEnF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAGjB,KAAa,IAAK,gBAAgBA,KAAK,yCAAyC;EAE7F;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEkB,UAAU,EAAGlB,KAAa,IAAK,gBAAgBA,KAAK,mCAAmC;EAEvF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEmB,QAAQ,EAAGnB,KAAa,IAAK,gBAAgBA,KAAK,2BAA2B;EAC7E;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEoB,SAAS,EAAGpB,KAAa,IAAK,gBAAgBA,KAAK,oCAAoC;EAEvF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEqB,SAAS,EAAEA,CAACrB,KAAa,EAAEsB,WAAmB,KAC5C,iBAAiBtB,KAAK,6BAA6BsB,WAAW,EAAE;EAClE;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,wBAAwB,EAAEA,CAACvB,KAAa,EAAEsB,WAAmB,KAC3D,iBAAiBtB,KAAK,mBAAmBsB,WAAW,EAAE;EACxD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,kBAAkB,EAAEA,CAACxB,KAAa,EAAEyB,aAAqB,EAAEH,WAAmB,KAC5E,iBAAiBtB,KAAK,oBAAoByB,aAAa,UAAUH,WAAW,EAAE;EAEhF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEI,iBAAiB,EAAEA,CAAC1B,KAAa,EAAE2B,UAAkB,EAAEL,WAAmB,KACxE,gBAAgBtB,KAAK,mBAAmB2B,UAAU,SAChDL,WAAW,GAAG,IAAIA,WAAW,EAAE,GAAG,EAAE,EACpC;EAEJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEM,cAAc,EAAEA,CAAC5B,KAAa,EAAE6B,MAAc,KAC5C,gBAAgB7B,KAAK,oBAAoB6B,MAAM,EAAE;EAEnD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,oBAAoB,EAAG9B,KAAa,IAAK,gBAAgBA,KAAK;AAChE,CAAC","ignoreList":[]}
@@ -9,6 +9,8 @@ exports.WRAP_UP_CODE = exports.IDLE_CODE = exports.CC_TASK_EVENTS = exports.CC_E
9
9
  * @internal
10
10
  */
11
11
 
12
+ /** Desktop Profile access level for a collaboration destination category. */
13
+
12
14
  /**
13
15
  * Events emitted on task objects
14
16
  * @enum {string}
@@ -60,6 +62,8 @@ const CC_TASK_EVENTS = exports.CC_TASK_EVENTS = {
60
62
  PARTICIPANT_LEFT_CONFERENCE: 'ParticipantLeftConference',
61
63
  /** Event emitted when participant leaving conference fails */
62
64
  PARTICIPANT_LEFT_CONFERENCE_FAILED: 'ParticipantLeftConferenceFailed',
65
+ /** Event emitted when dropping another conference participant fails */
66
+ PARTICIPANT_DROP_CONFERENCE_FAILED: 'ParticipantDropConferenceFailed',
63
67
  /** Event emitted when consultation conference end fails */
64
68
  AGENT_CONSULT_CONFERENCE_END_FAILED: 'AgentConsultConferenceEndFailed',
65
69
  /** Event emitted when conference is successfully transferred */