@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
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_xstate","require","_constants","_actions","_guards","_TaskUtils","taskStateMachineSetup","setup","actors","types","context","events","getTaskStateMachineConfig","uiControlConfig","currentAgentParticipantLeaveTransitions","guard","params","guards","didCurrentAgentLeaveMainInteraction","shouldWrapUp","target","TaskState","WRAPPING_UP","actions","TERMINATED","exitConferenceSuccessTransitions","currentAgentConsultEndTransitions","id","initial","IDLE","createInitialContext","on","TaskEvent","RECORDING_STARTED","CONTACT_UPDATED","CONTACT_OWNER_CHANGED","HYDRATE","CONSULT_CREATED","CONSULT_FAILED","states","isInteractionTerminated","isEpDnPendingConferenceMergeHydrate","CONFERENCING","isInteractionConsulting","CONSULTING","isInteractionHeld","HELD","isInteractionConnected","CONNECTED","isConferencingByParticipants","TASK_INCOMING","isCampaignReservationAccept","OFFERED","OUTBOUND_FAILED","CONSULTING_ACTIVE","TASK_OFFERED","ASSIGN","isConsultingAssignment","RONA","TASK_WRAPUP","CONTACT_ENDED","ASSIGN_FAILED","INVITE_FAILED","CAMPAIGN_PREVIEW_ACCEPT_FAILED","CAMPAIGN_PREVIEW_SKIP_FAILED","CAMPAIGN_PREVIEW_REMOVE_FAILED","OFFER_CONSULT","CONSULT_END","CONFERENCE_START","HOLD_INITIATED","HOLD_INITIATING","HOLD_SUCCESS","UNHOLD_INITIATED","RESUME_INITIATING","UNHOLD_SUCCESS","CONSULT","CONSULT_INITIATING","TRANSFER_SUCCESS","shouldWrapUpOrIsInitiator","TRANSFER_FAILED","event","consultInitiator","taskData","getTaskDataFromEvent","mainId","interaction","mainInteractionId","interactionId","Boolean","media","isHold","isCampaignPreviewContactEnded","conferenceInProgressFromEvent","PAUSE_RECORDING","RESUME_RECORDING","EXIT_CONFERENCE_SUCCESS","HOLD_FAILED","PARTICIPANT_LEAVE","UNHOLD_FAILED","CONSULT_SUCCESS","consultFromConference","isPrimaryMediaOnHold","CTQ_CANCEL","isConferenceHoldParticipantFromEvent","consultCallHeld","cpd","callProcessingDetails","hasCustomerLeft","isTerminated","shouldWrapUpForThisAgent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","shouldDowngradeConferenceToConnected","TRANSFER_CONFERENCE","TRANSFER_CONFERENCE_SUCCESS","isSelfConferenceTransferInitiator","TRANSFER_CONFERENCE_FAILED","MERGE_TO_CONFERENCE","CONF_INITIATING","CONFERENCE_FAILED","isPassiveConferenceTransferObserver","CONFERENCE_END","exitingConference","mainCallId","getIsCustomerInCall","entry","wrapUpRequired","WRAPUP_COMPLETE","COMPLETED","type","createTaskStateMachine","options","createMachine","provide"],"sources":["TaskStateMachine.ts"],"sourcesContent":["/**\n * Task State Machine Configuration\n *\n * This file defines the XState state machine configuration for contact center tasks.\n * It orchestrates state transitions, guards, and actions for task lifecycle management.\n *\n * GUARD FUNCTIONS: All guard logic is centralized in guards.ts for reusability and testing.\n * This file imports and uses those guards via the `guards` object.\n */\n\nimport {setup} from 'xstate';\nimport {TaskContext, TaskEventPayload, UIControlConfig, TaskActionsMap} from './types';\nimport {TaskState, TaskEvent} from './constants';\nimport {actions, createInitialContext} from './actions';\nimport {guards, shouldWrapUpForThisAgent, getTaskDataFromEvent} from './guards';\nimport {getIsCustomerInCall} from '../TaskUtils';\n\ntype TaskActionConfigMap = {[K in keyof typeof actions]: undefined};\n\nconst taskStateMachineSetup = setup<\n TaskContext,\n TaskEventPayload,\n Record<string, never>,\n Record<string, never>,\n TaskActionConfigMap\n>({\n actors: {},\n types: {\n context: {} as TaskContext,\n events: {} as TaskEventPayload,\n },\n});\n\n/**\n * Get task state machine configuration with UI control config\n * Defines all states, transitions, guards, and actions for task management\n *\n * @param uiControlConfig - UI control configuration\n * @returns State machine configuration object\n */\nexport function getTaskStateMachineConfig(uiControlConfig: UIControlConfig) {\n /**\n * Event mapping reference (CC WebSocket -> TaskEvent)\n *\n * AgentContactReserved -> TaskEvent.TASK_INCOMING\n * AgentOfferContact -> TaskEvent.TASK_OFFERED\n * AgentOfferConsult -> TaskEvent.OFFER_CONSULT\n * AgentConsulting -> TaskEvent.CONSULTING_ACTIVE\n * AgentConsultCreated -> TaskEvent.CONSULT_CREATED\n * AgentConsultTransferred -> TaskEvent.TRANSFER_SUCCESS\n * AgentContactAssigned -> TaskEvent.ASSIGN\n * AgentContactHeld -> TaskEvent.HOLD_SUCCESS\n * AgentContactUnheld -> TaskEvent.UNHOLD_SUCCESS\n * AgentConsultEnded -> TaskEvent.CONSULT_END\n * ParticipantLeftConference -> TaskEvent.PARTICIPANT_LEAVE\n * AgentContactEnded -> TaskEvent.CONTACT_ENDED\n * AgentWrapup -> TaskEvent.TASK_WRAPUP (wrapUpRequired)\n * AgentWrappedup -> TaskEvent.WRAPUP_COMPLETE\n *\n * (See TaskManager.mapEventToTaskStateMachineEvent for the full mapping table.)\n */\n // XState evaluates these guarded transition arrays in order. Each returned entry is a\n // complete transition with its own target and actions; sharing them keeps lifecycle-event\n // handling consistent across active states where ParticipantLeftConference can arrive.\n const currentAgentParticipantLeaveTransitions = () => [\n {\n guard: (params) =>\n guards.didCurrentAgentLeaveMainInteraction(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n ],\n },\n {\n guard: guards.didCurrentAgentLeaveMainInteraction,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n ];\n\n const exitConferenceSuccessTransitions = () => [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd'],\n },\n ];\n\n const currentAgentConsultEndTransitions = () => [\n {\n guard: (params) =>\n guards.didCurrentAgentLeaveMainInteraction(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskConsultEnd',\n 'emitTaskWrapup',\n ],\n },\n {\n guard: guards.didCurrentAgentLeaveMainInteraction,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskConsultEnd',\n 'emitTaskEnd',\n ],\n },\n ];\n\n return {\n id: 'taskStateMachine',\n initial: TaskState.IDLE,\n context: createInitialContext(uiControlConfig, TaskState.IDLE),\n on: {\n [TaskEvent.RECORDING_STARTED]: {\n actions: ['updateTaskData', 'emitTaskRecordingStarted'],\n },\n [TaskEvent.CONTACT_UPDATED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n [TaskEvent.CONTACT_OWNER_CHANGED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent', 'emitTaskHydrate'],\n },\n // HYDRATE: Update task data from AgentContact event\n // Note: State restoration with transitions is handled in IDLE state.\n // This root-level handler is for when task is already in another state (just updates data).\n [TaskEvent.HYDRATE]: {\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n // AgentConsultCreated from Stable Prod while already HELD/CONNECTED (external consult).\n // Child states do not handle CONSULT_CREATED; wire here so updateTaskData + setConsultInitiator run.\n [TaskEvent.CONSULT_CREATED]: {\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // AgentConsultFailed (RONA) while HELD/CONNECTED without passing through CONSULT_INITIATING.\n [TaskEvent.CONSULT_FAILED]: {\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n },\n states: {\n [TaskState.IDLE]: {\n on: {\n // HYDRATE: Restore state machine to correct state based on hydrated task data\n // This handles page refresh/reconnection scenarios where task needs to be restored\n // IMPORTANT: This MUST be in IDLE state (not root) because root-level events cannot\n // transition to child states in XState\n [TaskEvent.HYDRATE]: [\n {\n guard: guards.isInteractionTerminated,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskHydrate'],\n },\n {\n guard: guards.isEpDnPendingConferenceMergeHydrate,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionConsulting,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionHeld,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionConnected,\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isConferencingByParticipants,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n // Default: just update data, stay in IDLE\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n ],\n // AgentContactReserved (direct incoming/consult/transfer/outdial, or campaign preview accept)\n [TaskEvent.TASK_INCOMING]: [\n {\n guard: guards.isCampaignReservationAccept,\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskCampaignPreviewReservation'],\n },\n {\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskIncoming'],\n },\n ],\n\n // AgentOutboundFailed can arrive before TASK_INCOMING due to race conditions\n [TaskEvent.OUTBOUND_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n\n // EP-DN split-leg ordering can deliver AgentConsulting before HYDRATE/TASK_INCOMING.\n // Do not drop it in IDLE; bootstrap to CONSULTING using event taskData.\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n },\n },\n\n [TaskState.OFFERED]: {\n on: {\n // AgentContactOffer\n [TaskEvent.TASK_OFFERED]: {\n actions: ['updateTaskData', 'emitTaskOfferContact', 'requestAutoAnswer'],\n },\n // AgentContactAssigned\n [TaskEvent.ASSIGN]: [\n {\n guard: guards.isConsultingAssignment,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskConsultAccepted', 'emitTaskConsulting'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n ],\n // AgentOfferContactRONA\n [TaskEvent.RONA]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.TASK_WRAPUP]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n // This needs to be handled for all assign failed scenarios (contact, buddy)\n // [AgentContactAssignFailed, AgentCtqFailed, AgentBlindTransferFailed,\n // AgentVTeamTransferFailed, AgentConsultTransferFailed]\n [TaskEvent.ASSIGN_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.INVITE_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.CAMPAIGN_PREVIEW_ACCEPT_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewAcceptFailed'],\n },\n [TaskEvent.CAMPAIGN_PREVIEW_SKIP_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewSkipFailed'],\n },\n [TaskEvent.CAMPAIGN_PREVIEW_REMOVE_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewRemoveFailed'],\n },\n // AgentConsulting comes for received after the initial consult is accepted\n [TaskEvent.CONSULTING_ACTIVE]: [\n {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n ],\n // agentOfferConsult happens only on the receiver side of consult\n [TaskEvent.OFFER_CONSULT]: {\n actions: ['updateTaskData', 'emitTaskOfferConsult', 'requestAutoAnswer'],\n },\n // AgentConsultFailed - when consulted agent (Agent 2) doesn't answer (RONA or decline)\n // Clears the incoming consult notification by transitioning to TERMINATED\n [TaskEvent.CONSULT_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskReject'],\n },\n // AgentConsultEnded - when consult initiator (Agent 1) ends the consult before\n // the consulted agent (Agent 2) accepts. Clears the incoming notification.\n [TaskEvent.CONSULT_END]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n },\n },\n\n [TaskState.CONNECTED]: {\n on: {\n // AgentConsultConferenced / ParticipantJoinedConference can arrive while connected.\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n // AgentConsulting may arrive while machine is CONNECTED (EP-DN/event ordering).\n // Derive consultInitiator from payload so controls are set correctly.\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentContactAssigned can be resent after consult transfers; keep context in sync\n /* TODO: This transition needs to be checked if this is even needed as receiver will\n * be in Consult Accept state which can be consulting state and ASSIGNED will be only\n * for the receiver. So receuving ASSIGNED in Connected state is highly unlikely.\n */\n [TaskEvent.ASSIGN]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n // Click of hold button\n [TaskEvent.HOLD_INITIATED]: {\n target: TaskState.HOLD_INITIATING,\n },\n // Remote hold from another login session (multi-login)\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_INITIATED]: {\n target: TaskState.RESUME_INITIATING,\n },\n // Resume while machine is CONNECTED but main media is still on hold (stale state after consult RONA/decline).\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n // Click of the consult button\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination'],\n },\n // AgentConsultTransferred / AgentVTeamTransferred / AgentBlindTransferred\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n // Receiver goes to connected as he receives transferSuccess event\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n // AgentConsultEnded from Stable Prod while on connected leg (external end consult).\n [TaskEvent.CONSULT_END]: [\n ...currentAgentConsultEndTransitions(),\n {\n guard: ({context, event}) => {\n if (context.consultInitiator !== true) return false;\n const taskData = getTaskDataFromEvent(event);\n const mainId = taskData?.interaction?.mainInteractionId || taskData?.interactionId;\n\n return Boolean(mainId && taskData?.interaction?.media?.[mainId]?.isHold === true);\n },\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n guard: ({context}) => context.consultInitiator === true,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n ],\n // AgentContactEnded Event\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Campaign preview ContactEnded is terminal cleanup; never enter wrapup.\n guard: guards.isCampaignPreviewContactEnded,\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n {\n // Conference still active → CONFERENCING\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n // Agent should wrap up → WRAPPING_UP\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n [TaskEvent.EXIT_CONFERENCE_SUCCESS]: exitConferenceSuccessTransitions(),\n },\n },\n\n [TaskState.HOLD_INITIATING]: {\n on: {\n // AgentContactHeld Event\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n // AgentContactHoldFailed Event\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded'],\n },\n },\n },\n\n [TaskState.HELD]: {\n on: {\n // Conference can be merged while this agent is in held state after refresh/recovery.\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n // Click of the unhold button\n [TaskEvent.UNHOLD_INITIATED]: {\n target: TaskState.RESUME_INITIATING,\n },\n // Remote resume from another login session (multi-login)\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n // Click of the consult button\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination'],\n },\n // AgentConsulting while main leg is held (Task Refactor / Stable Prod consult accept).\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // TODO: This may not be a valid transition, need to be removed\n // AgentConsultTransferred / AgentVTeamTransferred / AgentBlindTransferred\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Campaign preview ContactEnded is terminal cleanup; never enter wrapup.\n guard: guards.isCampaignPreviewContactEnded,\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n {\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n // AgentConsultEnded from Stable Prod while main leg is held (external end consult).\n [TaskEvent.CONSULT_END]: [\n ...currentAgentConsultEndTransitions(),\n {actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd']},\n ],\n [TaskEvent.PARTICIPANT_LEAVE]: [\n ...currentAgentParticipantLeaveTransitions(),\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n // TODO: This may not be a valid transition, this needs to be checked as well\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.EXIT_CONFERENCE_SUCCESS]: exitConferenceSuccessTransitions(),\n },\n },\n\n [TaskState.RESUME_INITIATING]: {\n on: {\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n [TaskEvent.UNHOLD_FAILED]: {\n target: TaskState.HELD,\n },\n [TaskEvent.PARTICIPANT_LEAVE]: [\n ...currentAgentParticipantLeaveTransitions(),\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded'],\n },\n },\n },\n\n [TaskState.CONSULT_INITIATING]: {\n on: {\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n // AgentConsulting\n // NOTE: Don't set consultDestinationAgentJoined here - wait for CONSULTING_ACTIVE\n [TaskEvent.CONSULT_SUCCESS]: {\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // AgentConsulting (Task Refactor: AgentConsulting event, not CONSULT_SUCCESS)\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentConsultFailed, API Failures, AgentCtqFailed\n [TaskEvent.CONSULT_FAILED]: [\n {\n // Consult from conference → back to CONFERENCING\n guard: ({context}) => context.consultFromConference === true,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n ],\n // AgentCtqCancelled Event\n [TaskEvent.CTQ_CANCEL]: [\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n // AgentConsultEnded from Stable Prod during consult initiation (external end consult).\n [TaskEvent.CONSULT_END]: [\n ...currentAgentConsultEndTransitions(),\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n ],\n [TaskEvent.PARTICIPANT_LEAVE]: [\n ...currentAgentParticipantLeaveTransitions(),\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded'],\n },\n },\n },\n\n [TaskState.CONSULTING]: {\n on: {\n // AgentConsulting updates consulted agent arrival\n [TaskEvent.CONSULTING_ACTIVE]: {\n actions: [\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'updateTaskData',\n 'emitTaskConsulting',\n ],\n },\n\n // AgentConsultFailed (RONA / consultee declined) while the initiator is already in\n // CONSULTING (AgentConsulting arrived during ringing). Mirror CONSULT_INITIATING so the\n // initiator returns to their own leg (HELD when main is on hold, else CONNECTED) instead\n // of staying in CONSULTING. Without this, handleConsultFailed clears consultInitiator but\n // the machine stays in CONSULTING, so the trailing AgentConsultEnded falls through the\n // CONSULT_END \"consulted agent\" branch to TERMINATED and wrongly clears the task.\n [TaskEvent.CONSULT_FAILED]: [\n {\n guard: ({context}) => context.consultFromConference === true,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n ],\n\n // AgentConsultEnded\n [TaskEvent.CONSULT_END]: [\n ...currentAgentConsultEndTransitions(),\n {\n // Initiator returning to conference only while conference is still active.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n guards.conferenceInProgressFromEvent({context, event}),\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Conference consult ended after conference downgrade while main leg is held.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n context.consultFromConference === true &&\n !guards.conferenceInProgressFromEvent({context, event}) &&\n guards.isConferenceHoldParticipantFromEvent({context, event}),\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Conference consult ended after conference downgrade while main leg is connected.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n context.consultFromConference === true &&\n !guards.conferenceInProgressFromEvent({context, event}) &&\n !guards.isConferenceHoldParticipantFromEvent({context, event}),\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Initiator already switched back to the main/customer leg\n guard: ({context}) =>\n context.consultInitiator === true && context.consultCallHeld === true,\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Interaction terminated during consult (customer left) → WRAPPING_UP\n guard: ({context, event}) => {\n // if (context.consultInitiator !== true) return false;\n // const taskData = getTaskDataFromEvent(event);\n const taskData = getTaskDataFromEvent(event);\n const cpd = taskData?.interaction?.callProcessingDetails;\n if (cpd?.hasCustomerLeft !== 'true') return false;\n\n return (\n taskData?.interaction?.isTerminated === true &&\n shouldWrapUpForThisAgent(context, taskData)\n );\n },\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n {\n // Initiator (no conference) → HELD\n guard: ({context}) => context.consultInitiator === true,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskConsultEnd',\n 'emitTaskEnd',\n ],\n },\n ],\n\n // Switch between consult and main call (UI-driven toggle)\n [TaskEvent.SWITCH_TO_MAIN_CALL]: {\n actions: ['handleSwitchToMainCall', 'emitTaskSwitchCall'],\n },\n [TaskEvent.SWITCH_TO_CONSULT]: {\n actions: ['handleSwitchToConsult', 'emitTaskSwitchCall'],\n },\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n\n [TaskEvent.PARTICIPANT_LEAVE]: [\n ...currentAgentParticipantLeaveTransitions(),\n {\n guard: (params) =>\n !guards.didCurrentAgentLeaveMainInteraction(params) &&\n guards.shouldDowngradeConferenceToConnected(params),\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskConferenceEnded',\n ],\n },\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.TRANSFER_CONFERENCE]: {\n // Track that this agent initiated the conference transfer so we can\n // apply the correct lifecycle transition when success arrives.\n actions: ['setTransferConferenceRequested', 'emitTaskTransferConference'],\n },\n [TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n // Non-initiator (e.g. consultee receiving transfer) moves to CONFERENCING\n guard: (params) => !guards.isSelfConferenceTransferInitiator(params),\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskEnd',\n ],\n },\n ],\n [TaskEvent.TRANSFER_CONFERENCE_FAILED]: {\n actions: ['clearTransferConferenceRequested', 'emitTaskTransferConferenceFailed'],\n },\n\n // AgentContactAssigned - receiver side becomes connected to customer\n [TaskEvent.ASSIGN]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n // AgentContactEnded\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.MERGE_TO_CONFERENCE]: {\n target: TaskState.CONF_INITIATING,\n },\n // AgentConsultConferenced, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'handleConferenceStarted',\n 'clearConsultState',\n ],\n },\n },\n },\n\n [TaskState.CONF_INITIATING]: {\n on: {\n // AgentConsultConferenced, AgentConsultConferencing, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'handleConferenceStarted',\n 'clearConsultState',\n ],\n },\n // AgentConsultConferenceFailed\n [TaskEvent.CONFERENCE_FAILED]: {\n target: TaskState.CONSULTING,\n actions: ['handleConferenceFailed', 'emitTaskConferenceFailed'],\n },\n // AgentConsultEnded while conference is initiating (end call before conference completes)\n [TaskEvent.CONSULT_END]: [\n ...currentAgentConsultEndTransitions(),\n {\n guard: ({event}) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData?.interaction?.isTerminated === true;\n },\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded'],\n },\n },\n },\n\n [TaskState.CONFERENCING]: {\n on: {\n [TaskEvent.CONFERENCE_START]: {\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n [TaskEvent.EXIT_CONFERENCE_SUCCESS]: exitConferenceSuccessTransitions(),\n\n // Needed as all agents in conference get this event, hence we need to clear the consult state\n [TaskEvent.CONSULT_END]: [\n ...currentAgentConsultEndTransitions(),\n {\n guard: ({context, event}) => {\n const taskData = getTaskDataFromEvent(event);\n\n return (\n taskData?.interaction?.isTerminated === true &&\n shouldWrapUpForThisAgent(context, taskData)\n );\n },\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n\n [TaskEvent.HOLD_SUCCESS]: [\n {\n // Conference already downgraded (no other agents) and backend hold arrives.\n // Move to HELD so the UI renders resume action.\n guard: guards.shouldDowngradeConferenceToConnected,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n ],\n [TaskEvent.UNHOLD_SUCCESS]: [\n {\n // Conference already downgraded (no other agents) and backend unhold arrives.\n // Move to CONNECTED so hold action is available again.\n guard: guards.shouldDowngradeConferenceToConnected,\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'setHoldState',\n 'emitTaskResume',\n ],\n },\n {\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'setHoldState',\n 'emitTaskResume',\n ],\n },\n ],\n\n // Start a new consult from within an active conference\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination', 'setConsultFromConference'],\n },\n\n // AgentConsulting while still in conference (EP-DN/external ordering).\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n\n // Participant leaves - handle conference downgrade scenarios\n [TaskEvent.PARTICIPANT_LEAVE]: [\n ...currentAgentParticipantLeaveTransitions(),\n {\n // Conference downgraded, customer present → CONNECTED\n guard: (params) =>\n !guards.didCurrentAgentLeaveMainInteraction(params) &&\n guards.shouldDowngradeConferenceToConnected(params),\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskConferenceEnded',\n ],\n },\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n\n [TaskEvent.TRANSFER_CONFERENCE]: {\n actions: ['setTransferConferenceRequested', 'emitTaskTransferConference'],\n },\n [TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [\n {\n guard: guards.isPassiveConferenceTransferObserver,\n actions: [\n 'updateTaskData',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n guard: (params) => !guards.isSelfConferenceTransferInitiator(params),\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskEnd',\n ],\n },\n ],\n [TaskEvent.TRANSFER_CONFERENCE_FAILED]: {\n actions: ['clearTransferConferenceRequested', 'emitTaskTransferConferenceFailed'],\n },\n\n // Conference ends explicitly\n [TaskEvent.CONFERENCE_END]: [\n {\n // Agent who should wrap up → WRAPPING_UP\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState'],\n },\n {\n // Customer still in call → CONNECTED\n guard: ({context, event}) => {\n if (context.exitingConference === true) return false;\n const taskData = (event as any)?.taskData ?? context.taskData;\n if (!taskData?.interaction) return false;\n const mainCallId = taskData.interaction.mainInteractionId || taskData.interactionId;\n if (!mainCallId) return false;\n\n return getIsCustomerInCall(taskData.interaction, mainCallId);\n },\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConferenceEnded'],\n },\n {\n // Otherwise → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd'],\n },\n ],\n\n // CONTACT_ENDED in conference\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Conference still active → stay\n actions: ['updateTaskData', 'requestCleanup'],\n },\n ],\n\n [TaskEvent.CONSULT_FAILED]: {\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n\n [TaskEvent.TASK_WRAPUP]: {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n },\n },\n\n [TaskState.WRAPPING_UP]: {\n // Only emit wrapup event on entry - task:end should only be emitted when COMPLETED\n entry: ['emitTaskWrapup'],\n on: {\n // Late AgentWrapup after conference exit already entered WRAPPING_UP\n [TaskEvent.TASK_WRAPUP]: [\n {\n guard: ({context}) => context.taskData?.wrapUpRequired === true,\n actions: ['updateTaskData'],\n },\n {\n actions: ['updateTaskData', 'emitTaskWrapup'],\n },\n ],\n // AgentWrappedup Event\n [TaskEvent.WRAPUP_COMPLETE]: {\n target: TaskState.COMPLETED,\n actions: ['updateTaskData'],\n },\n },\n },\n\n [TaskState.COMPLETED]: {\n type: 'final' as const,\n entry: ['emitTaskWrappedup', 'cleanupResources'],\n },\n\n [TaskState.TERMINATED]: {\n type: 'final' as const,\n entry: ['cleanupResources'],\n },\n },\n };\n}\n\n/**\n * Create a task state machine instance using only the built-in actions.\n * The resulting machine is ready for most consumers that rely on the default\n * context mutators declared in actions.ts.\n *\n * @param uiControlConfig - UI control configuration\n * @returns StateMachine instance for task management\n */\nexport function createTaskStateMachine(\n uiControlConfig: UIControlConfig,\n options?: {actions?: Partial<TaskActionsMap>}\n) {\n return taskStateMachineSetup.createMachine(getTaskStateMachineConfig(uiControlConfig)).provide({\n actions: {\n ...actions,\n ...(options?.actions ?? {}),\n },\n });\n}\n\nexport type TaskStateMachine = ReturnType<typeof createTaskStateMachine>;\n"],"mappings":"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","ignoreList":[]}