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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/.sdd/manifest.json +7 -5
  2. package/ai-docs/ARCHITECTURE.md +1 -1
  3. package/ai-docs/CONTRACTS.md +8 -3
  4. package/ai-docs/SECURITY.md +1 -1
  5. package/ai-docs/contact-center-spec.md +22 -4
  6. package/ai-docs/features/consult-transfer-list-policy/spec/feature-spec.md +362 -0
  7. package/dist/cc.js +544 -12
  8. package/dist/cc.js.map +1 -1
  9. package/dist/config.js +7 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/constants.js +10 -2
  12. package/dist/constants.js.map +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/metrics/MetricsManager.js +16 -0
  15. package/dist/metrics/MetricsManager.js.map +1 -1
  16. package/dist/metrics/behavioral-events.js +104 -0
  17. package/dist/metrics/behavioral-events.js.map +1 -1
  18. package/dist/metrics/constants.js +18 -0
  19. package/dist/metrics/constants.js.map +1 -1
  20. package/dist/services/AddressBook.js +18 -15
  21. package/dist/services/AddressBook.js.map +1 -1
  22. package/dist/services/AnswerCallOnWebexService.js +202 -0
  23. package/dist/services/AnswerCallOnWebexService.js.map +1 -0
  24. package/dist/services/EntryPoint.js +46 -68
  25. package/dist/services/EntryPoint.js.map +1 -1
  26. package/dist/services/Queue.js +27 -22
  27. package/dist/services/Queue.js.map +1 -1
  28. package/dist/services/WebexCrossClientService.js +222 -0
  29. package/dist/services/WebexCrossClientService.js.map +1 -0
  30. package/dist/services/WxAppTelephonyMercurySync.js +108 -0
  31. package/dist/services/WxAppTelephonyMercurySync.js.map +1 -0
  32. package/dist/services/config/Util.js +3 -0
  33. package/dist/services/config/Util.js.map +1 -1
  34. package/dist/services/config/constants.js +10 -6
  35. package/dist/services/config/constants.js.map +1 -1
  36. package/dist/services/config/types.js +4 -0
  37. package/dist/services/config/types.js.map +1 -1
  38. package/dist/services/core/Err.js.map +1 -1
  39. package/dist/services/core/WebexRequest.js +6 -2
  40. package/dist/services/core/WebexRequest.js.map +1 -1
  41. package/dist/services/core/aqm-reqs.js +28 -14
  42. package/dist/services/core/aqm-reqs.js.map +1 -1
  43. package/dist/services/core/types.js.map +1 -1
  44. package/dist/services/task/Task.js +73 -7
  45. package/dist/services/task/Task.js.map +1 -1
  46. package/dist/services/task/TaskFactory.js +8 -4
  47. package/dist/services/task/TaskFactory.js.map +1 -1
  48. package/dist/services/task/TaskManager.js +490 -21
  49. package/dist/services/task/TaskManager.js.map +1 -1
  50. package/dist/services/task/WebexCallingUtils.js +70 -0
  51. package/dist/services/task/WebexCallingUtils.js.map +1 -0
  52. package/dist/services/task/constants.js +4 -1
  53. package/dist/services/task/constants.js.map +1 -1
  54. package/dist/services/task/contact.js +29 -0
  55. package/dist/services/task/contact.js.map +1 -1
  56. package/dist/services/task/digital/Digital.js +3 -2
  57. package/dist/services/task/digital/Digital.js.map +1 -1
  58. package/dist/services/task/state-machine/TaskStateMachine.js +162 -53
  59. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
  60. package/dist/services/task/state-machine/actions.js +6 -1
  61. package/dist/services/task/state-machine/actions.js.map +1 -1
  62. package/dist/services/task/state-machine/guards.js +7 -10
  63. package/dist/services/task/state-machine/guards.js.map +1 -1
  64. package/dist/services/task/state-machine/types.js.map +1 -1
  65. package/dist/services/task/state-machine/uiControlsComputer.js +118 -18
  66. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
  67. package/dist/services/task/types.js +16 -1
  68. package/dist/services/task/types.js.map +1 -1
  69. package/dist/services/task/voice/Voice.js +456 -15
  70. package/dist/services/task/voice/Voice.js.map +1 -1
  71. package/dist/services/task/voice/WebRTC.js +4 -1
  72. package/dist/services/task/voice/WebRTC.js.map +1 -1
  73. package/dist/services/task/voice/wxAppVoiceMethods.js +354 -0
  74. package/dist/services/task/voice/wxAppVoiceMethods.js.map +1 -0
  75. package/dist/services/wxAppDiagnosticLogging.js +122 -0
  76. package/dist/services/wxAppDiagnosticLogging.js.map +1 -0
  77. package/dist/services/wxAppTelephonyUtils.js +19 -0
  78. package/dist/services/wxAppTelephonyUtils.js.map +1 -0
  79. package/dist/types/cc.d.ts +78 -4
  80. package/dist/types/config.d.ts +7 -0
  81. package/dist/types/constants.d.ts +8 -0
  82. package/dist/types/index.d.ts +3 -1
  83. package/dist/types/metrics/MetricsManager.d.ts +6 -0
  84. package/dist/types/metrics/constants.d.ts +17 -0
  85. package/dist/types/services/AddressBook.d.ts +2 -1
  86. package/dist/types/services/AnswerCallOnWebexService.d.ts +38 -0
  87. package/dist/types/services/EntryPoint.d.ts +7 -5
  88. package/dist/types/services/Queue.d.ts +5 -3
  89. package/dist/types/services/WebexCrossClientService.d.ts +32 -0
  90. package/dist/types/services/WxAppTelephonyMercurySync.d.ts +28 -0
  91. package/dist/types/services/config/constants.d.ts +8 -5
  92. package/dist/types/services/config/types.d.ts +17 -4
  93. package/dist/types/services/core/Err.d.ts +2 -0
  94. package/dist/types/services/core/WebexRequest.d.ts +1 -0
  95. package/dist/types/services/core/types.d.ts +2 -0
  96. package/dist/types/services/task/Task.d.ts +20 -2
  97. package/dist/types/services/task/TaskFactory.d.ts +2 -1
  98. package/dist/types/services/task/WebexCallingUtils.d.ts +11 -0
  99. package/dist/types/services/task/constants.d.ts +3 -0
  100. package/dist/types/services/task/contact.d.ts +4 -0
  101. package/dist/types/services/task/digital/Digital.d.ts +2 -2
  102. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +304 -56
  103. package/dist/types/services/task/state-machine/guards.d.ts +6 -5
  104. package/dist/types/services/task/state-machine/types.d.ts +9 -1
  105. package/dist/types/services/task/types.d.ts +81 -4
  106. package/dist/types/services/task/voice/Voice.d.ts +52 -9
  107. package/dist/types/services/task/voice/WebRTC.d.ts +2 -2
  108. package/dist/types/services/task/voice/wxAppVoiceMethods.d.ts +55 -0
  109. package/dist/types/services/wxAppDiagnosticLogging.d.ts +51 -0
  110. package/dist/types/services/wxAppTelephonyUtils.d.ts +5 -0
  111. package/dist/types/types.d.ts +14 -8
  112. package/dist/types/utils/PageCache.d.ts +20 -3
  113. package/dist/types.js +7 -2
  114. package/dist/types.js.map +1 -1
  115. package/dist/utils/PageCache.js +19 -5
  116. package/dist/utils/PageCache.js.map +1 -1
  117. package/dist/webex.js +1 -1
  118. package/package.json +8 -8
  119. package/src/cc.ts +657 -12
  120. package/src/config.ts +7 -0
  121. package/src/constants.ts +8 -0
  122. package/src/index.ts +2 -0
  123. package/src/metrics/MetricsManager.ts +16 -0
  124. package/src/metrics/ai-docs/metrics-spec.md +78 -10
  125. package/src/metrics/behavioral-events.ts +106 -0
  126. package/src/metrics/constants.ts +20 -0
  127. package/src/services/AddressBook.ts +17 -6
  128. package/src/services/AnswerCallOnWebexService.ts +239 -0
  129. package/src/services/EntryPoint.ts +59 -60
  130. package/src/services/Queue.ts +29 -12
  131. package/src/services/WebexCrossClientService.ts +293 -0
  132. package/src/services/WxAppTelephonyMercurySync.ts +142 -0
  133. package/src/services/agent/ai-docs/agent-spec.md +1 -0
  134. package/src/services/ai-docs/AGENTS.md +10 -10
  135. package/src/services/ai-docs/services-spec.md +6 -1
  136. package/src/services/config/Util.ts +3 -0
  137. package/src/services/config/ai-docs/AGENTS.md +1 -1
  138. package/src/services/config/ai-docs/ARCHITECTURE.md +2 -2
  139. package/src/services/config/ai-docs/config-spec.md +6 -0
  140. package/src/services/config/constants.ts +10 -6
  141. package/src/services/config/types.ts +16 -4
  142. package/src/services/core/Err.ts +1 -0
  143. package/src/services/core/WebexRequest.ts +3 -1
  144. package/src/services/core/ai-docs/core-spec.md +5 -1
  145. package/src/services/core/aqm-reqs.ts +30 -15
  146. package/src/services/core/types.ts +2 -0
  147. package/src/services/task/Task.ts +79 -8
  148. package/src/services/task/TaskFactory.ts +8 -3
  149. package/src/services/task/TaskManager.ts +716 -17
  150. package/src/services/task/WebexCallingUtils.ts +136 -0
  151. package/src/services/task/ai-docs/ARCHITECTURE.md +1 -0
  152. package/src/services/task/ai-docs/task-spec.md +156 -3
  153. package/src/services/task/constants.ts +3 -0
  154. package/src/services/task/contact.ts +30 -0
  155. package/src/services/task/digital/Digital.ts +4 -2
  156. package/src/services/task/state-machine/TaskStateMachine.ts +235 -81
  157. package/src/services/task/state-machine/actions.ts +5 -2
  158. package/src/services/task/state-machine/ai-docs/AGENTS.md +6 -4
  159. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +35 -16
  160. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +103 -33
  161. package/src/services/task/state-machine/guards.ts +7 -10
  162. package/src/services/task/state-machine/types.ts +16 -1
  163. package/src/services/task/state-machine/uiControlsComputer.ts +206 -32
  164. package/src/services/task/types.ts +114 -4
  165. package/src/services/task/voice/Voice.ts +595 -14
  166. package/src/services/task/voice/WebRTC.ts +5 -1
  167. package/src/services/task/voice/wxAppVoiceMethods.ts +516 -0
  168. package/src/services/wxAppDiagnosticLogging.ts +174 -0
  169. package/src/services/wxAppTelephonyUtils.ts +14 -0
  170. package/src/types.ts +33 -9
  171. package/src/utils/AGENTS.md +21 -10
  172. package/src/utils/PageCache.ts +38 -5
  173. package/src/utils/ai-docs/utils-spec.md +21 -11
  174. package/test/unit/spec/cc.ts +1522 -19
  175. package/test/unit/spec/metrics/MetricsManager.ts +25 -0
  176. package/test/unit/spec/metrics/behavioral-events.ts +60 -0
  177. package/test/unit/spec/services/AddressBook.ts +37 -6
  178. package/test/unit/spec/services/AnswerCallOnWebexService.ts +264 -0
  179. package/test/unit/spec/services/EntryPoint.ts +87 -40
  180. package/test/unit/spec/services/Queue.ts +123 -12
  181. package/test/unit/spec/services/WebexCrossClientService.ts +467 -0
  182. package/test/unit/spec/services/WxAppTelephonyMercurySync.ts +136 -0
  183. package/test/unit/spec/services/config/Util.ts +85 -0
  184. package/test/unit/spec/services/core/WebexRequest.ts +3 -1
  185. package/test/unit/spec/services/core/aqm-reqs.ts +113 -1
  186. package/test/unit/spec/services/task/Task.ts +274 -6
  187. package/test/unit/spec/services/task/TaskFactory.ts +39 -2
  188. package/test/unit/spec/services/task/TaskManager.ts +1717 -9
  189. package/test/unit/spec/services/task/WebexCallingUtils.ts +153 -0
  190. package/test/unit/spec/services/task/contact.ts +33 -0
  191. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +1485 -109
  192. package/test/unit/spec/services/task/state-machine/guards.ts +210 -8
  193. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +445 -7
  194. package/test/unit/spec/services/task/voice/Voice.ts +1412 -0
  195. package/test/unit/spec/services/task/voice/wxAppVoiceMethods.ts +603 -0
  196. package/test/unit/spec/services/wxAppDiagnosticLogging.ts +143 -0
  197. package/umd/contact-center.min.js +2 -2
  198. package/umd/contact-center.min.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_xstate","require","_constants","_actions","_guards","_TaskUtils","taskStateMachineSetup","setup","actors","types","context","events","getTaskStateMachineConfig","uiControlConfig","id","initial","TaskState","IDLE","createInitialContext","on","TaskEvent","RECORDING_STARTED","actions","CONTACT_UPDATED","CONTACT_OWNER_CHANGED","HYDRATE","CONSULT_CREATED","CONSULT_FAILED","states","guard","guards","isInteractionTerminated","target","WRAPPING_UP","isEpDnPendingConferenceMergeHydrate","CONFERENCING","isInteractionConsulting","CONSULTING","isInteractionHeld","HELD","isInteractionConnected","CONNECTED","isConferencingByParticipants","TASK_INCOMING","isCampaignReservationAccept","OFFERED","OUTBOUND_FAILED","TERMINATED","CONSULTING_ACTIVE","TASK_OFFERED","ASSIGN","isConsultingAssignment","RONA","TASK_WRAPUP","CONTACT_ENDED","ASSIGN_FAILED","INVITE_FAILED","shouldWrapUp","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","HOLD_FAILED","UNHOLD_FAILED","CONSULT_SUCCESS","consultFromConference","isPrimaryMediaOnHold","CTQ_CANCEL","isConferenceHoldParticipantFromEvent","consultCallHeld","cpd","callProcessingDetails","hasCustomerLeft","isTerminated","shouldWrapUpForThisAgent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","PARTICIPANT_LEAVE","params","didCurrentAgentLeaveConference","shouldDowngradeConferenceToConnected","TRANSFER_CONFERENCE","TRANSFER_CONFERENCE_SUCCESS","isSelfConferenceTransferInitiator","TRANSFER_CONFERENCE_FAILED","MERGE_TO_CONFERENCE","CONF_INITIATING","CONFERENCE_FAILED","EXIT_CONFERENCE_SUCCESS","isPassiveConferenceTransferObserver","CONFERENCE_END","exitingConference","mainCallId","getIsCustomerInCall","entry","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 * 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 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'],\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 target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\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 {\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', 'emitTaskWrapup'],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\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 },\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 actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\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', 'emitTaskWrapup'],\n },\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 },\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 {\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 },\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 {\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: ['updateTaskData'],\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 {\n guard: (params) =>\n guards.didCurrentAgentLeaveConference(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskWrapup',\n ],\n },\n {\n guard: guards.didCurrentAgentLeaveConference,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n {\n guard: (params) =>\n !guards.didCurrentAgentLeaveConference(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 'emitTaskWrapup',\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', 'emitTaskWrapup'],\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 {\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 },\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]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd'],\n },\n ],\n\n // Needed as all agents in conference get this event, hence we need to clear the consult state\n [TaskEvent.CONSULT_END]: [\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 {\n // Only the leaving agent should wrap up → WRAPPING_UP\n guard: (params) =>\n guards.didCurrentAgentLeaveConference(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskWrapup',\n ],\n },\n {\n // Only the leaving agent (no wrapup) → TERMINATED\n guard: guards.didCurrentAgentLeaveConference,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n {\n // Conference downgraded, customer present → CONNECTED\n guard: (params) =>\n !guards.didCurrentAgentLeaveConference(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 'emitTaskWrapup',\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', 'emitTaskWrapup'],\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', 'emitTaskWrapup'],\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 // 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":[]}
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":[]}
@@ -351,12 +351,17 @@ const actions = exports.actions = {
351
351
  consultInitiator: false
352
352
  }),
353
353
  setConsultDestination: (0, _xstate.assign)(({
354
+ context,
354
355
  event
355
356
  }) => {
356
357
  if (!event || event.type !== _constants.TaskEvent.CONSULT) {
357
358
  return {};
358
359
  }
359
- const taskData = getTaskDataFromEvent(event);
360
+
361
+ // CONSULT is a user action and does not carry taskData. Preserve the current interaction
362
+ // snapshot while recording the destination; replacing it with only destAgentId would remove
363
+ // the main-leg membership needed to correlate an immediately following lifecycle event.
364
+ const taskData = context.taskData;
360
365
  const consultDestinationType = 'destinationType' in event ? event.destinationType ?? null : null;
361
366
  const consultDestinationAgentId = ('destAgentId' in event ? event.destAgentId : null) ?? ('destination' in event ? event.destination : null) ?? null;
362
367
  return {