@webex/contact-center 3.12.0-next.13 → 3.12.0-next.130

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 (312) hide show
  1. package/.sdd/manifest.json +884 -0
  2. package/AGENTS.md +94 -0
  3. package/ai-docs/ARCHITECTURE.md +168 -0
  4. package/ai-docs/CONTRACTS.md +53 -0
  5. package/ai-docs/GETTING_STARTED.md +168 -0
  6. package/ai-docs/GLOSSARY.md +43 -0
  7. package/ai-docs/README.md +138 -0
  8. package/ai-docs/REVIEW_CHECKLIST.md +41 -0
  9. package/ai-docs/RULES.md +444 -0
  10. package/ai-docs/SECURITY.md +52 -0
  11. package/ai-docs/SERVICE_STATE.md +52 -0
  12. package/ai-docs/SPEC_INDEX.md +65 -0
  13. package/ai-docs/adr/0001-spec-source-policy.md +55 -0
  14. package/ai-docs/adr/README.md +8 -0
  15. package/ai-docs/adr/_adr-template.md +31 -0
  16. package/ai-docs/contact-center-spec.md +382 -0
  17. package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
  18. package/ai-docs/features/contact-owner-change-refactor.md +78 -0
  19. package/ai-docs/features/generated-spec-conformance-fidelity-remediation/spec/feature-spec.md +117 -0
  20. package/ai-docs/features/residual-warning-coverage-completion/spec/feature-spec.md +203 -0
  21. package/ai-docs/features/validator-code-fidelity-drift-fix/spec/feature-spec.md +315 -0
  22. package/ai-docs/patterns/event-driven-patterns.md +485 -0
  23. package/ai-docs/patterns/testing-patterns.md +480 -0
  24. package/ai-docs/patterns/typescript-patterns.md +365 -0
  25. package/ai-docs/templates/README.md +102 -0
  26. package/ai-docs/templates/documentation/create-agents-md.md +240 -0
  27. package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
  28. package/ai-docs/templates/existing-service/bug-fix.md +254 -0
  29. package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
  30. package/ai-docs/templates/new-method/00-master.md +80 -0
  31. package/ai-docs/templates/new-method/01-requirements.md +232 -0
  32. package/ai-docs/templates/new-method/02-implementation.md +295 -0
  33. package/ai-docs/templates/new-method/03-tests.md +201 -0
  34. package/ai-docs/templates/new-method/04-validation.md +141 -0
  35. package/ai-docs/templates/new-service/00-master.md +109 -0
  36. package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
  37. package/ai-docs/templates/new-service/02-code-generation.md +346 -0
  38. package/ai-docs/templates/new-service/03-integration.md +178 -0
  39. package/ai-docs/templates/new-service/04-test-generation.md +205 -0
  40. package/ai-docs/templates/new-service/05-validation.md +145 -0
  41. package/dist/cc.js +971 -42
  42. package/dist/cc.js.map +1 -1
  43. package/dist/config.js +13 -0
  44. package/dist/config.js.map +1 -1
  45. package/dist/constants.js +31 -3
  46. package/dist/constants.js.map +1 -1
  47. package/dist/index.js +45 -15
  48. package/dist/index.js.map +1 -1
  49. package/dist/metrics/MetricsManager.js +16 -0
  50. package/dist/metrics/MetricsManager.js.map +1 -1
  51. package/dist/metrics/behavioral-events.js +205 -0
  52. package/dist/metrics/behavioral-events.js.map +1 -1
  53. package/dist/metrics/constants.js +48 -4
  54. package/dist/metrics/constants.js.map +1 -1
  55. package/dist/services/AddressBook.js +18 -15
  56. package/dist/services/AddressBook.js.map +1 -1
  57. package/dist/services/AnswerCallOnWebexService.js +202 -0
  58. package/dist/services/AnswerCallOnWebexService.js.map +1 -0
  59. package/dist/services/ApiAiAssistant.js +269 -9
  60. package/dist/services/ApiAiAssistant.js.map +1 -1
  61. package/dist/services/EntryPoint.js +46 -68
  62. package/dist/services/EntryPoint.js.map +1 -1
  63. package/dist/services/Queue.js +27 -22
  64. package/dist/services/Queue.js.map +1 -1
  65. package/dist/services/UserPreference.js +427 -0
  66. package/dist/services/UserPreference.js.map +1 -0
  67. package/dist/services/WebexCrossClientService.js +222 -0
  68. package/dist/services/WebexCrossClientService.js.map +1 -0
  69. package/dist/services/WxAppTelephonyMercurySync.js +108 -0
  70. package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
  71. package/dist/services/config/Util.js +11 -4
  72. package/dist/services/config/Util.js.map +1 -1
  73. package/dist/services/config/constants.js +41 -7
  74. package/dist/services/config/constants.js.map +1 -1
  75. package/dist/services/config/index.js +51 -0
  76. package/dist/services/config/index.js.map +1 -1
  77. package/dist/services/config/types.js +57 -12
  78. package/dist/services/config/types.js.map +1 -1
  79. package/dist/services/core/Err.js.map +1 -1
  80. package/dist/services/core/Utils.js +111 -32
  81. package/dist/services/core/Utils.js.map +1 -1
  82. package/dist/services/core/WebexRequest.js +6 -2
  83. package/dist/services/core/WebexRequest.js.map +1 -1
  84. package/dist/services/core/aqm-reqs.js +28 -14
  85. package/dist/services/core/aqm-reqs.js.map +1 -1
  86. package/dist/services/core/types.js.map +1 -1
  87. package/dist/services/core/websocket/WebSocketManager.js +2 -1
  88. package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
  89. package/dist/services/core/websocket/types.js.map +1 -1
  90. package/dist/services/index.js +1 -1
  91. package/dist/services/index.js.map +1 -1
  92. package/dist/services/task/Task.js +754 -0
  93. package/dist/services/task/Task.js.map +1 -0
  94. package/dist/services/task/TaskFactory.js +49 -0
  95. package/dist/services/task/TaskFactory.js.map +1 -0
  96. package/dist/services/task/TaskManager.js +1172 -521
  97. package/dist/services/task/TaskManager.js.map +1 -1
  98. package/dist/services/task/TaskUtils.js +211 -27
  99. package/dist/services/task/TaskUtils.js.map +1 -1
  100. package/dist/services/task/WebexCallingUtils.js +70 -0
  101. package/dist/services/task/WebexCallingUtils.js.map +1 -0
  102. package/dist/services/task/constants.js +12 -2
  103. package/dist/services/task/constants.js.map +1 -1
  104. package/dist/services/task/contact.js +29 -0
  105. package/dist/services/task/contact.js.map +1 -1
  106. package/dist/services/task/dialer.js +78 -0
  107. package/dist/services/task/dialer.js.map +1 -1
  108. package/dist/services/task/digital/Digital.js +78 -0
  109. package/dist/services/task/digital/Digital.js.map +1 -0
  110. package/dist/services/task/state-machine/TaskStateMachine.js +982 -0
  111. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
  112. package/dist/services/task/state-machine/actions.js +572 -0
  113. package/dist/services/task/state-machine/actions.js.map +1 -0
  114. package/dist/services/task/state-machine/constants.js +161 -0
  115. package/dist/services/task/state-machine/constants.js.map +1 -0
  116. package/dist/services/task/state-machine/guards.js +379 -0
  117. package/dist/services/task/state-machine/guards.js.map +1 -0
  118. package/dist/services/task/state-machine/index.js +53 -0
  119. package/dist/services/task/state-machine/index.js.map +1 -0
  120. package/dist/services/task/state-machine/types.js +54 -0
  121. package/dist/services/task/state-machine/types.js.map +1 -0
  122. package/dist/services/task/state-machine/uiControlsComputer.js +703 -0
  123. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
  124. package/dist/services/task/taskDataNormalizer.js +99 -0
  125. package/dist/services/task/taskDataNormalizer.js.map +1 -0
  126. package/dist/services/task/types.js +228 -5
  127. package/dist/services/task/types.js.map +1 -1
  128. package/dist/services/task/voice/Voice.js +1485 -0
  129. package/dist/services/task/voice/Voice.js.map +1 -0
  130. package/dist/services/task/voice/WebRTC.js +152 -0
  131. package/dist/services/task/voice/WebRTC.js.map +1 -0
  132. package/dist/services/task/voice/wxAppVoiceMethods.js +354 -0
  133. package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
  134. package/dist/services/wxAppDiagnosticLogging.js +122 -0
  135. package/dist/services/wxAppDiagnosticLogging.js.map +1 -0
  136. package/dist/services/wxAppTelephonyUtils.js +19 -0
  137. package/dist/services/wxAppTelephonyUtils.js.map +1 -0
  138. package/dist/types/cc.d.ts +193 -6
  139. package/dist/types/config.d.ts +13 -0
  140. package/dist/types/constants.d.ts +29 -1
  141. package/dist/types/index.d.ts +35 -8
  142. package/dist/types/metrics/MetricsManager.d.ts +6 -0
  143. package/dist/types/metrics/constants.d.ts +43 -1
  144. package/dist/types/services/AddressBook.d.ts +2 -1
  145. package/dist/types/services/AnswerCallOnWebexService.d.ts +38 -0
  146. package/dist/types/services/ApiAiAssistant.d.ts +56 -5
  147. package/dist/types/services/EntryPoint.d.ts +7 -5
  148. package/dist/types/services/Queue.d.ts +5 -3
  149. package/dist/types/services/UserPreference.d.ts +118 -0
  150. package/dist/types/services/WebexCrossClientService.d.ts +32 -0
  151. package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
  152. package/dist/types/services/config/constants.d.ts +34 -5
  153. package/dist/types/services/config/types.d.ts +197 -12
  154. package/dist/types/services/core/Err.d.ts +6 -0
  155. package/dist/types/services/core/Utils.d.ts +35 -13
  156. package/dist/types/services/core/WebexRequest.d.ts +1 -0
  157. package/dist/types/services/core/types.d.ts +2 -0
  158. package/dist/types/services/core/websocket/WebSocketManager.d.ts +1 -0
  159. package/dist/types/services/core/websocket/types.d.ts +1 -1
  160. package/dist/types/services/index.d.ts +1 -1
  161. package/dist/types/services/task/Task.d.ts +175 -0
  162. package/dist/types/services/task/TaskFactory.d.ts +13 -0
  163. package/dist/types/services/task/TaskUtils.d.ts +48 -2
  164. package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
  165. package/dist/types/services/task/constants.d.ts +10 -0
  166. package/dist/types/services/task/contact.d.ts +4 -0
  167. package/dist/types/services/task/dialer.d.ts +30 -0
  168. package/dist/types/services/task/digital/Digital.d.ts +22 -0
  169. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1442 -0
  170. package/dist/types/services/task/state-machine/actions.d.ts +10 -0
  171. package/dist/types/services/task/state-machine/constants.d.ts +107 -0
  172. package/dist/types/services/task/state-machine/guards.d.ts +103 -0
  173. package/dist/types/services/task/state-machine/index.d.ts +13 -0
  174. package/dist/types/services/task/state-machine/types.d.ts +277 -0
  175. package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
  176. package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
  177. package/dist/types/services/task/types.d.ts +680 -66
  178. package/dist/types/services/task/voice/Voice.d.ts +227 -0
  179. package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
  180. package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +55 -0
  181. package/dist/types/services/wxAppDiagnosticLogging.d.ts +51 -0
  182. package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
  183. package/dist/types/types.d.ts +205 -9
  184. package/dist/types/utils/PageCache.d.ts +20 -3
  185. package/dist/types/webex.d.ts +1 -0
  186. package/dist/types.js +162 -4
  187. package/dist/types.js.map +1 -1
  188. package/dist/utils/PageCache.js +19 -5
  189. package/dist/utils/PageCache.js.map +1 -1
  190. package/dist/webex.js +22 -2
  191. package/dist/webex.js.map +1 -1
  192. package/package.json +16 -12
  193. package/src/cc.ts +1289 -112
  194. package/src/config.ts +13 -0
  195. package/src/constants.ts +29 -1
  196. package/src/index.ts +36 -5
  197. package/src/metrics/MetricsManager.ts +16 -0
  198. package/src/metrics/ai-docs/AGENTS.md +350 -0
  199. package/src/metrics/ai-docs/ARCHITECTURE.md +338 -0
  200. package/src/metrics/ai-docs/metrics-spec.md +921 -0
  201. package/src/metrics/behavioral-events.ts +212 -0
  202. package/src/metrics/constants.ts +52 -4
  203. package/src/services/AddressBook.ts +17 -6
  204. package/src/services/AnswerCallOnWebexService.ts +239 -0
  205. package/src/services/ApiAiAssistant.ts +356 -9
  206. package/src/services/EntryPoint.ts +59 -60
  207. package/src/services/Queue.ts +29 -12
  208. package/src/services/UserPreference.ts +509 -0
  209. package/src/services/WebexCrossClientService.ts +293 -0
  210. package/src/services/WxAppTelephonyMercurySync.ts +142 -0
  211. package/src/services/agent/ai-docs/AGENTS.md +240 -0
  212. package/src/services/agent/ai-docs/ARCHITECTURE.md +304 -0
  213. package/src/services/agent/ai-docs/agent-spec.md +505 -0
  214. package/src/services/ai-docs/AGENTS.md +386 -0
  215. package/src/services/ai-docs/services-spec.md +505 -0
  216. package/src/services/config/Util.ts +12 -3
  217. package/src/services/config/ai-docs/AGENTS.md +255 -0
  218. package/src/services/config/ai-docs/ARCHITECTURE.md +426 -0
  219. package/src/services/config/ai-docs/config-spec.md +686 -0
  220. package/src/services/config/constants.ts +46 -6
  221. package/src/services/config/index.ts +65 -0
  222. package/src/services/config/types.ts +197 -13
  223. package/src/services/core/Err.ts +3 -0
  224. package/src/services/core/Utils.ts +127 -37
  225. package/src/services/core/WebexRequest.ts +3 -1
  226. package/src/services/core/ai-docs/AGENTS.md +381 -0
  227. package/src/services/core/ai-docs/ARCHITECTURE.md +698 -0
  228. package/src/services/core/ai-docs/core-spec.md +787 -0
  229. package/src/services/core/aqm-reqs.ts +30 -15
  230. package/src/services/core/types.ts +2 -0
  231. package/src/services/core/websocket/WebSocketManager.ts +2 -0
  232. package/src/services/core/websocket/types.ts +1 -1
  233. package/src/services/index.ts +1 -1
  234. package/src/services/task/Task.ts +908 -0
  235. package/src/services/task/TaskFactory.ts +60 -0
  236. package/src/services/task/TaskManager.ts +1419 -608
  237. package/src/services/task/TaskUtils.ts +303 -25
  238. package/src/services/task/WebexCallingUtils.ts +136 -0
  239. package/src/services/task/ai-docs/AGENTS.md +457 -0
  240. package/src/services/task/ai-docs/ARCHITECTURE.md +595 -0
  241. package/src/services/task/ai-docs/task-spec.md +1474 -0
  242. package/src/services/task/constants.ts +10 -0
  243. package/src/services/task/contact.ts +30 -0
  244. package/src/services/task/dialer.ts +80 -0
  245. package/src/services/task/digital/Digital.ts +97 -0
  246. package/src/services/task/state-machine/TaskStateMachine.ts +1320 -0
  247. package/src/services/task/state-machine/actions.ts +741 -0
  248. package/src/services/task/state-machine/ai-docs/AGENTS.md +460 -0
  249. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1156 -0
  250. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +2247 -0
  251. package/src/services/task/state-machine/constants.ts +172 -0
  252. package/src/services/task/state-machine/guards.ts +442 -0
  253. package/src/services/task/state-machine/index.ts +28 -0
  254. package/src/services/task/state-machine/types.ts +258 -0
  255. package/src/services/task/state-machine/uiControlsComputer.ts +1135 -0
  256. package/src/services/task/taskDataNormalizer.ts +137 -0
  257. package/src/services/task/types.ts +819 -70
  258. package/src/services/task/voice/Voice.ts +1851 -0
  259. package/src/services/task/voice/WebRTC.ts +191 -0
  260. package/src/services/task/voice/wxAppVoiceMethods.ts +516 -0
  261. package/src/services/wxAppDiagnosticLogging.ts +174 -0
  262. package/src/services/wxAppTelephonyUtils.ts +14 -0
  263. package/src/types.ts +262 -11
  264. package/src/utils/AGENTS.md +289 -0
  265. package/src/utils/PageCache.ts +38 -5
  266. package/src/utils/ai-docs/utils-spec.md +391 -0
  267. package/src/webex.js +10 -0
  268. package/test/unit/spec/cc.ts +2210 -119
  269. package/test/unit/spec/logger-proxy.ts +70 -0
  270. package/test/unit/spec/metrics/MetricsManager.ts +25 -0
  271. package/test/unit/spec/metrics/behavioral-events.ts +60 -0
  272. package/test/unit/spec/services/AddressBook.ts +37 -6
  273. package/test/unit/spec/services/AnswerCallOnWebexService.ts +264 -0
  274. package/test/unit/spec/services/ApiAiAssistant.ts +311 -21
  275. package/test/unit/spec/services/EntryPoint.ts +87 -40
  276. package/test/unit/spec/services/Queue.ts +123 -12
  277. package/test/unit/spec/services/UserPreference.ts +401 -0
  278. package/test/unit/spec/services/WebCallingService.ts +7 -1
  279. package/test/unit/spec/services/WebexCrossClientService.ts +467 -0
  280. package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +136 -0
  281. package/test/unit/spec/services/config/Util.ts +129 -0
  282. package/test/unit/spec/services/config/index.ts +97 -29
  283. package/test/unit/spec/services/core/Utils.ts +425 -8
  284. package/test/unit/spec/services/core/WebexRequest.ts +3 -1
  285. package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
  286. package/test/unit/spec/services/core/websocket/WebSocketManager.ts +66 -40
  287. package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
  288. package/test/unit/spec/services/task/Task.ts +745 -0
  289. package/test/unit/spec/services/task/TaskFactory.ts +99 -0
  290. package/test/unit/spec/services/task/TaskManager.ts +2518 -1494
  291. package/test/unit/spec/services/task/TaskUtils.ts +235 -0
  292. package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
  293. package/test/unit/spec/services/task/contact.ts +33 -0
  294. package/test/unit/spec/services/task/dialer.ts +190 -0
  295. package/test/unit/spec/services/task/digital/Digital.ts +105 -0
  296. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +4060 -0
  297. package/test/unit/spec/services/task/state-machine/guards.ts +839 -0
  298. package/test/unit/spec/services/task/state-machine/types.ts +18 -0
  299. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +3101 -0
  300. package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
  301. package/test/unit/spec/services/task/voice/Voice.ts +2061 -0
  302. package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
  303. package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +603 -0
  304. package/test/unit/spec/services/wxAppDiagnosticLogging.ts +143 -0
  305. package/test/unit/spec/wellnessSampleUtils.ts +288 -0
  306. package/umd/contact-center.min.js +2 -2
  307. package/umd/contact-center.min.js.map +1 -1
  308. package/dist/services/task/index.js +0 -1525
  309. package/dist/services/task/index.js.map +0 -1
  310. package/dist/types/services/task/index.d.ts +0 -650
  311. package/src/services/task/index.ts +0 -1801
  312. package/test/unit/spec/services/task/index.ts +0 -2184
@@ -1,6 +1,13 @@
1
1
  // making query params configurable for List Teams and List Aux Codes API
2
2
  export const DEFAULT_PAGE = 0;
3
3
 
4
+ /** Desktop Profile access levels for collaboration destination categories. */
5
+ export const COLLABORATION_ACCESS = {
6
+ ALL: 'ALL',
7
+ SPECIFIC: 'SPECIFIC',
8
+ NONE: 'NONE',
9
+ } as const;
10
+
4
11
  /**
5
12
  * Default page size for paginated API requests.
6
13
  * @type {number}
@@ -27,6 +34,12 @@ export const AGENT_STATE_AVAILABLE_ID = '0';
27
34
  */
28
35
  export const AGENT_STATE_AVAILABLE = 'Available';
29
36
 
37
+ /** System idle-code name reserved for Agent Wellness Break. */
38
+ export const WELLBEING_BREAK_IDLE_CODE = 'WellbeingBreak';
39
+
40
+ /** Backend sentinel indicating wellness-break reminders are enabled. @internal */
41
+ export const WELLNESS_BREAK_REMINDERS_ENABLED = 'ENABLED';
42
+
30
43
  /**
31
44
  * Description for the 'Available' agent state.
32
45
  * @type {string}
@@ -68,6 +81,7 @@ export const METHODS = {
68
81
  GET_URL_MAPPING: 'getURLMapping',
69
82
  GET_DIAL_PLAN_DATA: 'getDialPlanData',
70
83
  GET_AI_FEATURE_FLAGS: 'getAIFeatureFlags',
84
+ GET_WELLBEING_BREAK_IDLE_CODE: 'getWellbeingBreakIdleCode',
71
85
  GET_QUEUES: 'getQueues',
72
86
 
73
87
  // Util methods
@@ -168,6 +182,11 @@ export const endPointMap = {
168
182
  filter && filter.length > 0 ? `&filter=id=in=(${filter})` : ''
169
183
  }&attributes=${attributes}&desktopProfileFilter=true`,
170
184
 
185
+ /** Lists system idle codes without applying the agent Desktop Profile filter. */
186
+ systemIdleCodes: (orgId: string, page: number, pageSize: number) =>
187
+ `organization/${orgId}/v2/auxiliary-code?page=${page}&pageSize=${pageSize}` +
188
+ '&workType=IDLE_CODE&customFilter=isSystemCode==true&desktopProfileFilter=false',
189
+
171
190
  /**
172
191
  * Gets the endpoint for organization info.
173
192
  * @param orgId - Organization ID.
@@ -258,17 +277,14 @@ export const endPointMap = {
258
277
  queueList: (orgId: string, queryParams: string) =>
259
278
  `/organization/${orgId}/v2/contact-service-queue?${queryParams}`,
260
279
  /**
261
- * Gets the endpoint for entry points list with custom query parameters.
280
+ * Gets the desktop-profile-filtered dial-number mappings used by entry-point destination lists.
262
281
  * @param orgId - Organization ID.
263
282
  * @param queryParams - Query parameters string.
264
283
  * @returns The endpoint URL string.
265
- * @public
266
- * @example
267
- * const url = endPointMap.entryPointList('org123', 'page=0&pageSize=10');
268
284
  * @ignore
269
285
  */
270
- entryPointList: (orgId: string, queryParams: string) =>
271
- `/organization/${orgId}/v2/entry-point?${queryParams}`,
286
+ entryPointDialNumberList: (orgId: string, queryParams: string) =>
287
+ `/organization/${orgId}/v3/dial-number?${queryParams}`,
272
288
  /**
273
289
  * Gets the endpoint for address book entries with custom query parameters.
274
290
  * @param orgId - Organization ID.
@@ -298,4 +314,28 @@ export const endPointMap = {
298
314
  `organization/${orgId}/v2/outdial-ani/${outdialANI}/entry${
299
315
  queryParams ? `?${queryParams}` : ''
300
316
  }`,
317
+
318
+ /**
319
+ * Gets the endpoint for user preference by user ID.
320
+ * @param orgId - Organization ID.
321
+ * @param userId - User ID.
322
+ * @returns The endpoint URL string.
323
+ * @public
324
+ * @example
325
+ * const url = endPointMap.userPreference('org123', 'user456');
326
+ * @ignore
327
+ */
328
+ userPreference: (orgId: string, userId: string) =>
329
+ `organization/${orgId}/user-preference/${userId}`,
330
+
331
+ /**
332
+ * Gets the endpoint for creating user preference.
333
+ * @param orgId - Organization ID.
334
+ * @returns The endpoint URL string.
335
+ * @public
336
+ * @example
337
+ * const url = endPointMap.userPreferenceCreate('org123');
338
+ * @ignore
339
+ */
340
+ userPreferenceCreate: (orgId: string) => `organization/${orgId}/user-preference`,
301
341
  };
@@ -23,6 +23,7 @@ import {
23
23
  OutdialAniEntriesResponse,
24
24
  OutdialAniParams,
25
25
  AIFeatureFlagsResponse,
26
+ Entity,
26
27
  } from './types';
27
28
  import WebexRequest from '../core/WebexRequest';
28
29
  import {WCC_API_GATEWAY} from '../constants';
@@ -34,6 +35,7 @@ import {
34
35
  DEFAULT_PAGE_SIZE,
35
36
  endPointMap,
36
37
  METHODS,
38
+ WELLBEING_BREAK_IDLE_CODE,
37
39
  } from './constants';
38
40
 
39
41
  /**
@@ -470,6 +472,69 @@ export default class AgentConfigService {
470
472
  }
471
473
  }
472
474
 
475
+ /**
476
+ * Retrieves the exact system-managed WellbeingBreak idle code.
477
+ * This query intentionally bypasses Desktop Profile filtering so the system code does not
478
+ * need to appear in the normal agent-selectable idle-code list.
479
+ * @param orgId - Organization identifier
480
+ * @returns The normalized WellbeingBreak entity
481
+ * @throws When the request fails or the exact system code is unavailable
482
+ * @internal
483
+ */
484
+ public async getWellbeingBreakIdleCode(orgId: string): Promise<Entity> {
485
+ LoggerProxy.info('Fetching WellbeingBreak system idle code', {
486
+ module: CONFIG_FILE_NAME,
487
+ method: METHODS.GET_WELLBEING_BREAK_IDLE_CODE,
488
+ });
489
+
490
+ try {
491
+ let page = DEFAULT_PAGE;
492
+ let totalPages = 1;
493
+
494
+ do {
495
+ // Pagination is intentionally sequential so the lookup can stop as soon as the code is found.
496
+ // eslint-disable-next-line no-await-in-loop
497
+ const response = await this.webexReq.request({
498
+ service: WCC_API_GATEWAY,
499
+ resource: endPointMap.systemIdleCodes(orgId, page, DEFAULT_PAGE_SIZE),
500
+ method: HTTP_METHODS.GET,
501
+ });
502
+
503
+ if (response.statusCode !== 200) {
504
+ throw new Error(`API call failed with ${response.statusCode}`);
505
+ }
506
+
507
+ const result = response.body as ListAuxCodesResponse;
508
+ const wellbeingCode = result.data?.find(
509
+ (code) =>
510
+ code.active === true &&
511
+ code.isSystemCode === true &&
512
+ code.name === WELLBEING_BREAK_IDLE_CODE
513
+ );
514
+
515
+ if (wellbeingCode) {
516
+ return {
517
+ id: wellbeingCode.id,
518
+ name: wellbeingCode.name,
519
+ isSystem: true,
520
+ isDefault: wellbeingCode.defaultCode,
521
+ };
522
+ }
523
+
524
+ totalPages = result.meta?.totalPages ?? 1;
525
+ page += 1;
526
+ } while (page < totalPages);
527
+
528
+ throw new Error('WELLBEING_BREAK_IDLE_CODE_NOT_FOUND');
529
+ } catch (error) {
530
+ LoggerProxy.error(`getWellbeingBreakIdleCode API call failed with ${error}`, {
531
+ module: CONFIG_FILE_NAME,
532
+ method: METHODS.GET_WELLBEING_BREAK_IDLE_CODE,
533
+ });
534
+ throw error;
535
+ }
536
+ }
537
+
473
538
  /**
474
539
  * Fetches the site data for the given orgId and siteId.
475
540
  * @ignore
@@ -1,4 +1,5 @@
1
1
  import * as Agent from '../agent/types';
2
+ import {COLLABORATION_ACCESS} from './constants';
2
3
 
3
4
  /**
4
5
  * Generic type for converting a const enum object into a union type of its values
@@ -6,6 +7,9 @@ import * as Agent from '../agent/types';
6
7
  */
7
8
  type Enum<T extends Record<string, unknown>> = T[keyof T];
8
9
 
10
+ /** Desktop Profile access level for a collaboration destination category. */
11
+ export type CollaborationAccess = Enum<typeof COLLABORATION_ACCESS>;
12
+
9
13
  /**
10
14
  * Events emitted on task objects
11
15
  * @enum {string}
@@ -57,6 +61,8 @@ export const CC_TASK_EVENTS = {
57
61
  PARTICIPANT_LEFT_CONFERENCE: 'ParticipantLeftConference',
58
62
  /** Event emitted when participant leaving conference fails */
59
63
  PARTICIPANT_LEFT_CONFERENCE_FAILED: 'ParticipantLeftConferenceFailed',
64
+ /** Event emitted when dropping another conference participant fails */
65
+ PARTICIPANT_DROP_CONFERENCE_FAILED: 'ParticipantDropConferenceFailed',
60
66
  /** Event emitted when consultation conference end fails */
61
67
  AGENT_CONSULT_CONFERENCE_END_FAILED: 'AgentConsultConferenceEndFailed',
62
68
  /** Event emitted when conference is successfully transferred */
@@ -65,6 +71,8 @@ export const CC_TASK_EVENTS = {
65
71
  AGENT_CONFERENCE_TRANSFER_FAILED: 'AgentConferenceTransferFailed',
66
72
  /** Event emitted for post-call activity by participant */
67
73
  PARTICIPANT_POST_CALL_ACTIVITY: 'ParticipantPostCallActivity',
74
+ /** Event emitted when consulted participant is being moved/transferred */
75
+ CONSULTED_PARTICIPANT_MOVING: 'ConsultedParticipantMoving',
68
76
  /** Event emitted when contact is blind transferred */
69
77
  AGENT_BLIND_TRANSFERRED: 'AgentBlindTransferred',
70
78
  /** Event emitted when blind transfer fails */
@@ -81,6 +89,8 @@ export const CC_TASK_EVENTS = {
81
89
  AGENT_CONSULT_TRANSFER_FAILED: 'AgentConsultTransferFailed',
82
90
  /** Event emitted when contact recording is paused */
83
91
  CONTACT_RECORDING_PAUSED: 'ContactRecordingPaused',
92
+ /** Event emitted when contact recording is started */
93
+ CONTACT_RECORDING_STARTED: 'ContactRecordingStarted',
84
94
  /** Event emitted when pausing contact recording fails */
85
95
  CONTACT_RECORDING_PAUSE_FAILED: 'ContactRecordingPauseFailed',
86
96
  /** Event emitted when contact recording is resumed */
@@ -91,6 +101,10 @@ export const CC_TASK_EVENTS = {
91
101
  CONTACT_ENDED: 'ContactEnded',
92
102
  /** Event emitted when contact is merged */
93
103
  CONTACT_MERGED: 'ContactMerged',
104
+ /** Event emitted when contact payload is updated (routing updates) */
105
+ CONTACT_UPDATED: 'ContactUpdated',
106
+ /** Event emitted when contact owner changes */
107
+ CONTACT_OWNER_CHANGED: 'ContactOwnerChanged',
94
108
  /** Event emitted when ending contact fails */
95
109
  AGENT_CONTACT_END_FAILED: 'AgentContactEndFailed',
96
110
  /** Event emitted when agent enters wrap-up state */
@@ -117,15 +131,26 @@ export const CC_TASK_EVENTS = {
117
131
  CAMPAIGN_CONTACT_UPDATED: 'CampaignContactUpdated',
118
132
  /** Event emitted when accepting a campaign preview contact fails */
119
133
  CAMPAIGN_PREVIEW_ACCEPT_FAILED: 'CampaignPreviewAcceptFailed',
134
+ /** Event emitted when skipping a campaign preview contact fails */
135
+ CAMPAIGN_PREVIEW_SKIP_FAILED: 'CampaignPreviewSkipFailed',
136
+ /** Event emitted when removing a campaign preview contact fails */
137
+ CAMPAIGN_PREVIEW_REMOVE_FAILED: 'CampaignPreviewRemoveFailed',
120
138
  /** Event emitted when a real-time transcript chunk is received */
121
139
  REAL_TIME_TRANSCRIPTION: 'REAL_TIME_TRANSCRIPTION',
140
+ /** Event emitted when an AI assistant suggested response is available */
141
+ SUGGESTED_RESPONSE: 'SUGGESTED_RESPONSE',
142
+ /** Event emitted when backend acknowledges it is listening for more context */
143
+ SUGGESTED_RESPONSE_ACKNOWLEDGE: 'SUGGESTED_RESPONSE_ACKNOWLEDGE',
144
+ /** Event emitted when a mid-call summary is available */
145
+ MID_CALL_SUMMARY: 'MID_CALL_SUMMARY',
146
+ /** Event emitted when a post-call summary is available */
147
+ POST_CALL_SUMMARY: 'POST_CALL_SUMMARY',
122
148
  } as const;
123
149
 
124
150
  /**
125
151
  * Events emitted on Contact Center agent operations
126
152
  * @enum {string}
127
- * @private
128
- * @ignore
153
+ * @public
129
154
  */
130
155
  export const CC_AGENT_EVENTS = {
131
156
  /** Welcome event when agent connects to websocket/backend */
@@ -164,6 +189,8 @@ export const CC_AGENT_EVENTS = {
164
189
  AGENT_BUDDY_AGENTS_RETRIEVE_FAILED: 'BuddyAgentsRetrieveFailed',
165
190
  /** Event emitted when contact is reserved for agent */
166
191
  AGENT_CONTACT_RESERVED: 'AgentContactReserved',
192
+ /** Agent-level Agent Wellness Break notification */
193
+ WELLNESS_BREAK: 'WellnessBreak',
167
194
  } as const;
168
195
 
169
196
  /**
@@ -185,6 +212,15 @@ export type WelcomeEvent = {
185
212
  agentId: string;
186
213
  };
187
214
 
215
+ /**
216
+ * Available login options for voice channel access
217
+ * 'AGENT_DN' - Login using agent's DN
218
+ * 'EXTENSION' - Login using extension number
219
+ * 'BROWSER' - Login using browser-based WebRTC
220
+ * @public
221
+ */
222
+ export type LoginOption = 'AGENT_DN' | 'EXTENSION' | 'BROWSER';
223
+
188
224
  /**
189
225
  * Response type for welcome events which can be either success or error
190
226
  * @public
@@ -275,14 +311,40 @@ export type AgentResponse = {
275
311
 
276
312
  /**
277
313
  * The default dialed number of the agent.
314
+ * Note: The API returns this field as "deafultDialledNumber" (with typo).
278
315
  */
279
- defaultDialledNumber?: string;
316
+ deafultDialledNumber?: string;
280
317
  };
281
318
 
282
319
  /**
283
320
  * Represents the response from getDesktopProfileById method.
284
321
  */
285
322
  export type DesktopProfileResponse = {
323
+ /**
324
+ * Unique identifier of the agent profile configuration.
325
+ */
326
+ id: string;
327
+
328
+ /**
329
+ * Display name for the agent profile.
330
+ */
331
+ name: string;
332
+
333
+ /**
334
+ * Description of the agent profile.
335
+ */
336
+ description: string;
337
+
338
+ /**
339
+ * Parent entity type for the profile (for example ORGANIZATION).
340
+ */
341
+ parentType: string;
342
+
343
+ /**
344
+ * Indicates whether screen pop is enabled.
345
+ */
346
+ screenPopup: boolean;
347
+
286
348
  /**
287
349
  * Represents the voice options of an agent.
288
350
  */
@@ -323,6 +385,11 @@ export type DesktopProfileResponse = {
323
385
  */
324
386
  autoWrapUp: boolean;
325
387
 
388
+ /**
389
+ * Whether the agent personal greeting is enabled.
390
+ */
391
+ agentPersonalGreeting: boolean;
392
+
326
393
  /**
327
394
  * Auto answer allowed.
328
395
  */
@@ -343,6 +410,36 @@ export type DesktopProfileResponse = {
343
410
  */
344
411
  allowAutoWrapUpExtension: boolean;
345
412
 
413
+ /**
414
+ * Access control for queues assigned to the agent (ALL, SPECIFIC, or NONE).
415
+ */
416
+ accessQueue: CollaborationAccess;
417
+
418
+ /**
419
+ * Queue identifiers available to the agent when access is SPECIFIC.
420
+ */
421
+ queues: string[];
422
+
423
+ /**
424
+ * Access control for entry points assigned to the agent.
425
+ */
426
+ accessEntryPoint: CollaborationAccess;
427
+
428
+ /**
429
+ * Entry point identifiers available to the agent when access is SPECIFIC.
430
+ */
431
+ entryPoints: string[];
432
+
433
+ /**
434
+ * Access control for buddy teams assigned to the agent.
435
+ */
436
+ accessBuddyTeam: CollaborationAccess;
437
+
438
+ /**
439
+ * Buddy team identifiers available to the agent when access is SPECIFIC.
440
+ */
441
+ buddyTeams: string[];
442
+
346
443
  /**
347
444
  * Outdial enabled for the agent.
348
445
  */
@@ -386,6 +483,11 @@ export type DesktopProfileResponse = {
386
483
  */
387
484
  agentDNValidation: string;
388
485
 
486
+ /**
487
+ * Additional DN validation criteria configured for the agent.
488
+ */
489
+ agentDNValidationCriterions: string[];
490
+
389
491
  /**
390
492
  * Dial plans of the agent.
391
493
  */
@@ -420,6 +522,31 @@ export type DesktopProfileResponse = {
420
522
  * State synchronization in Webex enabled or not.
421
523
  */
422
524
  stateSynchronizationWebex: boolean;
525
+
526
+ /**
527
+ * Threshold rules configured for the agent profile.
528
+ */
529
+ thresholdRules: Array<Record<string, string | number>>;
530
+
531
+ /**
532
+ * Whether the agent profile is currently active.
533
+ */
534
+ active: boolean;
535
+
536
+ /**
537
+ * Whether this profile is the system default.
538
+ */
539
+ systemDefault: boolean;
540
+
541
+ /**
542
+ * Timestamp when the profile was created.
543
+ */
544
+ createdTime: number;
545
+
546
+ /**
547
+ * Timestamp when the profile was last updated.
548
+ */
549
+ lastUpdatedTime: number;
423
550
  };
424
551
 
425
552
  /**
@@ -603,6 +730,8 @@ export type OrgSettings = {
603
730
  maskSensitiveData: boolean;
604
731
  /** Whether campaign manager features are enabled */
605
732
  campaignManagerEnabled: boolean;
733
+ /** Number of AI Assistant licenses assigned to the organization */
734
+ aiAssistantQuantity?: number | null;
606
735
  };
607
736
 
608
737
  /**
@@ -866,15 +995,6 @@ export type WrapupData = {
866
995
  };
867
996
  };
868
997
 
869
- /**
870
- * Available login options for voice channel access
871
- * 'AGENT_DN' - Login using agent's DN
872
- * 'EXTENSION' - Login using extension number
873
- * 'BROWSER' - Login using browser-based WebRTC
874
- * @public
875
- */
876
- export type LoginOption = 'AGENT_DN' | 'EXTENSION' | 'BROWSER';
877
-
878
998
  /**
879
999
  * Team configuration information
880
1000
  * @public
@@ -1047,7 +1167,7 @@ export type Profile = {
1047
1167
  /** Outbound entry point */
1048
1168
  outDialEp: string;
1049
1169
  /** Whether ending calls is enabled */
1050
- isEndCallEnabled: boolean;
1170
+ isEndTaskEnabled: boolean;
1051
1171
  /** Whether ending consultations is enabled */
1052
1172
  isEndConsultEnabled: boolean;
1053
1173
  /** Optional lifecycle manager URL */
@@ -1058,6 +1178,12 @@ export type Profile = {
1058
1178
  agentAnalyzerId?: string;
1059
1179
  /** Whether consult to queue is allowed */
1060
1180
  allowConsultToQueue: boolean;
1181
+ /** Access control for queues on Desktop Profile Collaboration tab */
1182
+ accessQueue?: CollaborationAccess;
1183
+ /** Access control for entry points on Desktop Profile Collaboration tab */
1184
+ accessEntryPoint?: CollaborationAccess;
1185
+ /** Access control for buddy teams on Desktop Profile Collaboration tab */
1186
+ accessBuddyTeam?: CollaborationAccess;
1061
1187
  /** Additional campaign manager information */
1062
1188
  campaignManagerAdditionalInfo?: string;
1063
1189
  /** Whether personal statistics are enabled */
@@ -1122,6 +1248,12 @@ export type Profile = {
1122
1248
  lastIdleCodeChangeTimestamp?: number;
1123
1249
  /** AI feature flags resolved from organization config */
1124
1250
  aiFeature?: AIFeatureFlags;
1251
+ /**
1252
+ * Whether Agent Wellness Break is effectively enabled for this profile.
1253
+ * This combines the organization wellbeing configuration with AI Assistant licensing;
1254
+ * Server-side rollout remains enforced by the backend configuration and notification delivery.
1255
+ */
1256
+ isWellnessBreakEnabled?: boolean;
1125
1257
  };
1126
1258
 
1127
1259
  /**
@@ -1183,3 +1315,55 @@ export type OutdialAniParams = {
1183
1315
  /** Comma-separated list of attributes to include in response (optional) */
1184
1316
  attributes?: string;
1185
1317
  };
1318
+
1319
+ /**
1320
+ * User preference data structure
1321
+ * @public
1322
+ */
1323
+ export type UserPreference = {
1324
+ /** Unique identifier for the user preference */
1325
+ id: string;
1326
+ /** Organization ID */
1327
+ organizationId: string;
1328
+ /** User ID (CI user ID) */
1329
+ userId: string;
1330
+ /** User preference data as key-value pairs */
1331
+ preferences: Record<string, unknown>;
1332
+ /** Timestamp when this preference was created (Unix timestamp in milliseconds) */
1333
+ createdTime?: number;
1334
+ /** Timestamp when this preference was last updated (Unix timestamp in milliseconds) */
1335
+ lastUpdatedTime?: number;
1336
+ };
1337
+
1338
+ /**
1339
+ * Request payload for creating user preferences
1340
+ * @public
1341
+ */
1342
+ export type CreateUserPreferenceRequest = {
1343
+ /** User ID (CI user ID) */
1344
+ userId: string;
1345
+ /** Desktop preference data as a JSON string (required) */
1346
+ desktopPreference: string;
1347
+ };
1348
+
1349
+ /**
1350
+ * Request payload for updating user preferences
1351
+ * @public
1352
+ */
1353
+ export type UpdateUserPreferenceRequest = {
1354
+ /** Desktop preference data as a JSON string (required) */
1355
+ desktopPreference: string;
1356
+ };
1357
+
1358
+ /**
1359
+ * Query parameters for fetching user preferences
1360
+ * @public
1361
+ */
1362
+ export type GetUserPreferenceParams = {
1363
+ /** User ID to fetch preferences for. Defaults to current user's CI user ID. */
1364
+ userId?: string;
1365
+ /** Page number (0-indexed). Default: 0 */
1366
+ page?: number;
1367
+ /** Number of items per page. Default: 100 */
1368
+ pageSize?: number;
1369
+ };
@@ -30,6 +30,7 @@ export type TaskErrorIds =
30
30
  | {'Service.aqm.err.trackingId': {trackingId: string}}
31
31
  | {'Service.aqm.task.consultAccept': Failure}
32
32
  | {'Service.aqm.task.consultConference': Failure}
33
+ | {'Service.aqm.task.dropConferenceParticipant': Failure}
33
34
  | {'Service.aqm.task.consultEnd': Failure}
34
35
  | {'Service.aqm.task.cancelCtq': Failure}
35
36
  | {'Service.aqm.task.hold': Failure}
@@ -39,6 +40,8 @@ export type TaskErrorIds =
39
40
  | {'Service.aqm.task.resumeRecording': Failure}
40
41
  | {'Service.aqm.dialer.startOutdial': Failure}
41
42
  | {'Service.aqm.dialer.acceptPreviewContact': Failure}
43
+ | {'Service.aqm.dialer.skipPreviewContact': Failure}
44
+ | {'Service.aqm.dialer.removePreviewContact': Failure}
42
45
  | {'Service.reqs.generic.failure': {trackingId: string}};
43
46
 
44
47
  export type ReqError =