@webex/contact-center 3.12.0-next.122 → 3.12.0-next.124

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.
@@ -62,12 +62,20 @@ function getTaskStateMachineConfig(uiControlConfig) {
62
62
  const currentAgentParticipantLeaveTransitions = () => [{
63
63
  guard: params => _guards.guards.didCurrentAgentLeaveMainInteraction(params) && _guards.guards.shouldWrapUp(params),
64
64
  target: _constants.TaskState.WRAPPING_UP,
65
- actions: ['updateTaskData', 'handleParticipantLeft', 'markEnded', 'clearConsultState', 'emitTaskParticipantLeft', 'emitTaskWrapup']
65
+ actions: ['updateTaskData', 'handleParticipantLeft', 'markEnded', 'clearConsultState', 'emitTaskParticipantLeft']
66
66
  }, {
67
67
  guard: _guards.guards.didCurrentAgentLeaveMainInteraction,
68
68
  target: _constants.TaskState.TERMINATED,
69
69
  actions: ['updateTaskData', 'handleParticipantLeft', 'markEnded', 'clearConsultState', 'emitTaskParticipantLeft', 'emitTaskEnd']
70
70
  }];
71
+ const exitConferenceSuccessTransitions = () => [{
72
+ guard: _guards.guards.shouldWrapUp,
73
+ target: _constants.TaskState.WRAPPING_UP,
74
+ actions: ['updateTaskData', 'markEnded', 'clearConsultState']
75
+ }, {
76
+ target: _constants.TaskState.TERMINATED,
77
+ actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd']
78
+ }];
71
79
  const currentAgentConsultEndTransitions = () => [{
72
80
  guard: params => _guards.guards.didCurrentAgentLeaveMainInteraction(params) && _guards.guards.shouldWrapUp(params),
73
81
  target: _constants.TaskState.WRAPPING_UP,
@@ -187,7 +195,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
187
195
  [_constants.TaskEvent.TASK_WRAPUP]: [{
188
196
  guard: _guards.guards.shouldWrapUp,
189
197
  target: _constants.TaskState.WRAPPING_UP,
190
- actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup']
198
+ actions: ['updateTaskData', 'markEnded']
191
199
  }, {
192
200
  target: _constants.TaskState.TERMINATED,
193
201
  actions: ['updateTaskData', 'markEnded', 'emitTaskEnd']
@@ -345,7 +353,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
345
353
  }],
346
354
  [_constants.TaskEvent.TASK_WRAPUP]: {
347
355
  target: _constants.TaskState.WRAPPING_UP,
348
- actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup']
356
+ actions: ['updateTaskData', 'markEnded']
349
357
  },
350
358
  [_constants.TaskEvent.OUTBOUND_FAILED]: [{
351
359
  guard: _guards.guards.shouldWrapUp,
@@ -360,7 +368,8 @@ function getTaskStateMachineConfig(uiControlConfig) {
360
368
  },
361
369
  [_constants.TaskEvent.RESUME_RECORDING]: {
362
370
  actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed']
363
- }
371
+ },
372
+ [_constants.TaskEvent.EXIT_CONFERENCE_SUCCESS]: exitConferenceSuccessTransitions()
364
373
  }
365
374
  },
366
375
  [_constants.TaskState.HOLD_INITIATING]: {
@@ -382,7 +391,11 @@ function getTaskStateMachineConfig(uiControlConfig) {
382
391
  }, {
383
392
  target: _constants.TaskState.TERMINATED,
384
393
  actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd']
385
- }]
394
+ }],
395
+ [_constants.TaskEvent.TASK_WRAPUP]: {
396
+ target: _constants.TaskState.WRAPPING_UP,
397
+ actions: ['updateTaskData', 'markEnded']
398
+ }
386
399
  }
387
400
  },
388
401
  [_constants.TaskState.HELD]: {
@@ -457,7 +470,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
457
470
  // TODO: This may not be a valid transition, this needs to be checked as well
458
471
  [_constants.TaskEvent.TASK_WRAPUP]: {
459
472
  target: _constants.TaskState.WRAPPING_UP,
460
- actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup']
473
+ actions: ['updateTaskData', 'markEnded']
461
474
  },
462
475
  [_constants.TaskEvent.OUTBOUND_FAILED]: [{
463
476
  guard: _guards.guards.shouldWrapUp,
@@ -466,7 +479,8 @@ function getTaskStateMachineConfig(uiControlConfig) {
466
479
  }, {
467
480
  target: _constants.TaskState.TERMINATED,
468
481
  actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd']
469
- }]
482
+ }],
483
+ [_constants.TaskEvent.EXIT_CONFERENCE_SUCCESS]: exitConferenceSuccessTransitions()
470
484
  }
471
485
  },
472
486
  [_constants.TaskState.RESUME_INITIATING]: {
@@ -488,7 +502,11 @@ function getTaskStateMachineConfig(uiControlConfig) {
488
502
  }, {
489
503
  target: _constants.TaskState.TERMINATED,
490
504
  actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd']
491
- }]
505
+ }],
506
+ [_constants.TaskEvent.TASK_WRAPUP]: {
507
+ target: _constants.TaskState.WRAPPING_UP,
508
+ actions: ['updateTaskData', 'markEnded']
509
+ }
492
510
  }
493
511
  },
494
512
  [_constants.TaskState.CONSULT_INITIATING]: {
@@ -555,7 +573,11 @@ function getTaskStateMachineConfig(uiControlConfig) {
555
573
  }, {
556
574
  target: _constants.TaskState.TERMINATED,
557
575
  actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd']
558
- }]
576
+ }],
577
+ [_constants.TaskEvent.TASK_WRAPUP]: {
578
+ target: _constants.TaskState.WRAPPING_UP,
579
+ actions: ['updateTaskData', 'markEnded']
580
+ }
559
581
  }
560
582
  },
561
583
  [_constants.TaskState.CONSULTING]: {
@@ -697,7 +719,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
697
719
  [_constants.TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [{
698
720
  guard: _guards.guards.shouldWrapUp,
699
721
  target: _constants.TaskState.WRAPPING_UP,
700
- actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'handleTransferConferenceSuccess', 'clearTransferConferenceRequested', 'emitTaskWrapup']
722
+ actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'handleTransferConferenceSuccess', 'clearTransferConferenceRequested']
701
723
  }, {
702
724
  // Non-initiator (e.g. consultee receiving transfer) moves to CONFERENCING
703
725
  guard: params => !_guards.guards.isSelfConferenceTransferInitiator(params),
@@ -722,7 +744,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
722
744
  },
723
745
  [_constants.TaskEvent.TASK_WRAPUP]: {
724
746
  target: _constants.TaskState.WRAPPING_UP,
725
- actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup']
747
+ actions: ['updateTaskData', 'markEnded', 'clearConsultState']
726
748
  },
727
749
  [_constants.TaskEvent.OUTBOUND_FAILED]: [{
728
750
  guard: _guards.guards.shouldWrapUp,
@@ -775,7 +797,11 @@ function getTaskStateMachineConfig(uiControlConfig) {
775
797
  }, {
776
798
  target: _constants.TaskState.TERMINATED,
777
799
  actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd']
778
- }]
800
+ }],
801
+ [_constants.TaskEvent.TASK_WRAPUP]: {
802
+ target: _constants.TaskState.WRAPPING_UP,
803
+ actions: ['updateTaskData', 'markEnded']
804
+ }
779
805
  }
780
806
  },
781
807
  [_constants.TaskState.CONFERENCING]: {
@@ -783,14 +809,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
783
809
  [_constants.TaskEvent.CONFERENCE_START]: {
784
810
  actions: ['updateTaskData', 'syncTaskDataFromEvent', 'clearConsultState', 'emitTaskConferenceStarted']
785
811
  },
786
- [_constants.TaskEvent.EXIT_CONFERENCE_SUCCESS]: [{
787
- guard: _guards.guards.shouldWrapUp,
788
- target: _constants.TaskState.WRAPPING_UP,
789
- actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup']
790
- }, {
791
- target: _constants.TaskState.TERMINATED,
792
- actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd']
793
- }],
812
+ [_constants.TaskEvent.EXIT_CONFERENCE_SUCCESS]: exitConferenceSuccessTransitions(),
794
813
  // Needed as all agents in conference get this event, hence we need to clear the consult state
795
814
  [_constants.TaskEvent.CONSULT_END]: [...currentAgentConsultEndTransitions(), {
796
815
  guard: ({
@@ -851,7 +870,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
851
870
  }, {
852
871
  guard: _guards.guards.shouldWrapUp,
853
872
  target: _constants.TaskState.WRAPPING_UP,
854
- actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'handleTransferConferenceSuccess', 'clearTransferConferenceRequested', 'emitTaskWrapup']
873
+ actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'handleTransferConferenceSuccess', 'clearTransferConferenceRequested']
855
874
  }, {
856
875
  guard: params => !_guards.guards.isSelfConferenceTransferInitiator(params),
857
876
  target: _constants.TaskState.CONFERENCING,
@@ -868,7 +887,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
868
887
  // Agent who should wrap up → WRAPPING_UP
869
888
  guard: _guards.guards.shouldWrapUp,
870
889
  target: _constants.TaskState.WRAPPING_UP,
871
- actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup']
890
+ actions: ['updateTaskData', 'markEnded', 'clearConsultState']
872
891
  }, {
873
892
  // Customer still in call → CONNECTED
874
893
  guard: ({
@@ -900,7 +919,7 @@ function getTaskStateMachineConfig(uiControlConfig) {
900
919
  [_constants.TaskEvent.TASK_WRAPUP]: {
901
920
  guard: _guards.guards.shouldWrapUp,
902
921
  target: _constants.TaskState.WRAPPING_UP,
903
- actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup']
922
+ actions: ['updateTaskData', 'markEnded', 'clearConsultState']
904
923
  },
905
924
  [_constants.TaskEvent.OUTBOUND_FAILED]: [{
906
925
  guard: _guards.guards.shouldWrapUp,
@@ -916,6 +935,15 @@ function getTaskStateMachineConfig(uiControlConfig) {
916
935
  // Only emit wrapup event on entry - task:end should only be emitted when COMPLETED
917
936
  entry: ['emitTaskWrapup'],
918
937
  on: {
938
+ // Late AgentWrapup after conference exit already entered WRAPPING_UP
939
+ [_constants.TaskEvent.TASK_WRAPUP]: [{
940
+ guard: ({
941
+ context
942
+ }) => context.taskData?.wrapUpRequired === true,
943
+ actions: ['updateTaskData']
944
+ }, {
945
+ actions: ['updateTaskData', 'emitTaskWrapup']
946
+ }],
919
947
  // AgentWrappedup Event
920
948
  [_constants.TaskEvent.WRAPUP_COMPLETE]: {
921
949
  target: _constants.TaskState.COMPLETED,
@@ -1 +1 @@
1
- {"version":3,"names":["_xstate","require","_constants","_actions","_guards","_TaskUtils","taskStateMachineSetup","setup","actors","types","context","events","getTaskStateMachineConfig","uiControlConfig","currentAgentParticipantLeaveTransitions","guard","params","guards","didCurrentAgentLeaveMainInteraction","shouldWrapUp","target","TaskState","WRAPPING_UP","actions","TERMINATED","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","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","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 * 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 'emitTaskWrapup',\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 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', 'emitTaskWrapup'],\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', 'emitTaskWrapup'],\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 },\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 },\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', 'emitTaskWrapup'],\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.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 },\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 },\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 '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.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 },\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 ...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 '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 [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 // 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":[]}