@webex/contact-center 3.12.0-task-refactor.3 → 3.12.0-task-refactor.5
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.
- package/dist/services/task/TaskManager.js +9 -2
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/state-machine/TaskStateMachine.js +51 -9
- package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
- package/dist/services/task/state-machine/actions.js +11 -6
- package/dist/services/task/state-machine/actions.js.map +1 -1
- package/dist/services/task/state-machine/constants.js +20 -1
- package/dist/services/task/state-machine/constants.js.map +1 -1
- package/dist/services/task/state-machine/guards.js +27 -8
- package/dist/services/task/state-machine/guards.js.map +1 -1
- package/dist/services/task/state-machine/uiControlsComputer.js +45 -12
- package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
- package/dist/services/task/types.js.map +1 -1
- package/dist/services/task/voice/Voice.js +16 -5
- package/dist/services/task/voice/Voice.js.map +1 -1
- package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +52 -4
- package/dist/types/services/task/state-machine/constants.d.ts +13 -0
- package/dist/types/services/task/state-machine/guards.d.ts +6 -1
- package/dist/types/services/task/types.d.ts +2 -0
- package/dist/types/services/task/voice/Voice.d.ts +18 -17
- package/dist/webex.js +1 -1
- package/package.json +1 -1
- package/src/services/task/TaskManager.ts +9 -3
- package/src/services/task/state-machine/TaskStateMachine.ts +79 -10
- package/src/services/task/state-machine/actions.ts +19 -10
- package/src/services/task/state-machine/constants.ts +19 -0
- package/src/services/task/state-machine/guards.ts +34 -7
- package/src/services/task/state-machine/uiControlsComputer.ts +45 -17
- package/src/services/task/types.ts +2 -0
- package/src/services/task/voice/Voice.ts +20 -11
- package/test/unit/spec/services/task/TaskManager.ts +26 -0
- package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +164 -0
- package/test/unit/spec/services/task/state-machine/guards.ts +103 -0
- package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +237 -1
- package/test/unit/spec/services/task/voice/Voice.ts +24 -0
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_xstate","require","_constants","_actions","_guards","_TaskUtils","taskStateMachineSetup","setup","actors","types","context","events","getTaskStateMachineConfig","uiControlConfig","id","initial","TaskState","IDLE","createInitialContext","on","TaskEvent","RECORDING_STARTED","actions","CONTACT_UPDATED","CONTACT_OWNER_CHANGED","HYDRATE","states","guard","guards","isInteractionTerminated","target","WRAPPING_UP","isInteractionConsulting","CONSULTING","isInteractionHeld","HELD","isInteractionConnected","CONNECTED","isConferencingByParticipants","CONFERENCING","TASK_INCOMING","OFFERED","CONSULTING_ACTIVE","TASK_OFFERED","ASSIGN","isConsultingAssignment","RONA","TERMINATED","TASK_WRAPUP","CONTACT_ENDED","ASSIGN_FAILED","INVITE_FAILED","OUTBOUND_FAILED","shouldWrapUp","OFFER_CONSULT","CONSULT_FAILED","CONSULT_END","HOLD_INITIATED","HOLD_INITIATING","HOLD_SUCCESS","CONSULT","CONSULT_INITIATING","TRANSFER_SUCCESS","shouldWrapUpOrIsInitiator","TRANSFER_FAILED","conferenceInProgressFromEvent","PAUSE_RECORDING","RESUME_RECORDING","HOLD_FAILED","UNHOLD_INITIATED","RESUME_INITIATING","UNHOLD_SUCCESS","UNHOLD_FAILED","CONSULT_SUCCESS","consultFromConference","isPrimaryMediaOnHold","CTQ_CANCEL","event","consultInitiator","consultCallHeld","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","TRANSFER_CONFERENCE","TRANSFER_CONFERENCE_SUCCESS","transferConferenceRequested","TRANSFER_CONFERENCE_FAILED","MERGE_TO_CONFERENCE","CONF_INITIATING","CONFERENCE_START","CONFERENCE_FAILED","EXIT_CONFERENCE_SUCCESS","PARTICIPANT_LEAVE","params","didCurrentAgentLeaveConference","shouldDowngradeConferenceToConnected","CONFERENCE_END","exitingConference","taskData","interaction","mainCallId","mainInteractionId","interactionId","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} from './guards';\nimport {getIsCustomerInCall} from '../TaskUtils';\n\ntype TaskActionConfigMap = {[K in keyof typeof actions]: undefined};\n\nconst taskStateMachineSetup = setup<\n TaskContext,\n TaskEventPayload,\n Record<string, never>,\n Record<string, never>,\n TaskActionConfigMap\n>({\n actors: {},\n types: {\n context: {} as TaskContext,\n events: {} as TaskEventPayload,\n },\n});\n\n/**\n * Get task state machine configuration with UI control config\n * Defines all states, transitions, guards, and actions for task management\n *\n * @param uiControlConfig - UI control configuration\n * @returns State machine configuration object\n */\nexport function getTaskStateMachineConfig(uiControlConfig: UIControlConfig) {\n /**\n * Event mapping reference (CC WebSocket -> TaskEvent)\n *\n * AgentContactReserved -> TaskEvent.TASK_INCOMING\n * AgentOfferContact -> TaskEvent.TASK_OFFERED\n * AgentOfferConsult -> TaskEvent.OFFER_CONSULT\n * AgentConsulting -> TaskEvent.CONSULTING_ACTIVE\n * AgentConsultCreated -> TaskEvent.CONSULT_CREATED\n * AgentConsultTransferred -> TaskEvent.TRANSFER_SUCCESS\n * AgentContactAssigned -> TaskEvent.ASSIGN\n * AgentContactHeld -> TaskEvent.HOLD_SUCCESS\n * AgentContactUnheld -> TaskEvent.UNHOLD_SUCCESS\n * AgentConsultEnded -> TaskEvent.CONSULT_END\n * AgentContactEnded -> TaskEvent.CONTACT_ENDED\n * AgentWrapup -> TaskEvent.TASK_WRAPUP (wrapUpRequired)\n * AgentWrappedup -> TaskEvent.WRAPUP_COMPLETE\n *\n * (See TaskManager.mapEventToTaskStateMachineEvent for the full mapping table.)\n */\n return {\n id: 'taskStateMachine',\n initial: TaskState.IDLE,\n context: createInitialContext(uiControlConfig, TaskState.IDLE),\n on: {\n [TaskEvent.RECORDING_STARTED]: {\n actions: ['updateTaskData', 'emitTaskRecordingStarted'],\n },\n [TaskEvent.CONTACT_UPDATED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n [TaskEvent.CONTACT_OWNER_CHANGED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n // HYDRATE: Update task data from AgentContact event\n // Note: State restoration with transitions is handled in IDLE state.\n // This root-level handler is for when task is already in another state (just updates data).\n [TaskEvent.HYDRATE]: {\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n },\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.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 (applicable for direct incoming/consult/transfer/outdial)\n [TaskEvent.TASK_INCOMING]: {\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskIncoming'],\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 'updateTaskData',\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n },\n },\n\n [TaskState.OFFERED]: {\n on: {\n // AgentContactOffer\n [TaskEvent.TASK_OFFERED]: {\n actions: ['updateTaskData', 'emitTaskOfferContact', 'requestAutoAnswer'],\n },\n // AgentContactAssigned\n [TaskEvent.ASSIGN]: [\n {\n guard: guards.isConsultingAssignment,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskConsultAccepted', 'emitTaskConsulting'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n ],\n // AgentOfferContactRONA\n [TaskEvent.RONA]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n // This needs to be handled for all assign failed scenarios (contact, buddy)\n // [AgentContactAssignFailed, AgentCtqFailed, AgentBlindTransferFailed,\n // AgentVTeamTransferFailed, AgentConsultTransferFailed]\n [TaskEvent.ASSIGN_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.INVITE_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskReject'],\n },\n ],\n // AgentConsulting comes for received after the initial consult is accepted\n [TaskEvent.CONSULTING_ACTIVE]: [\n {\n target: TaskState.CONSULTING,\n actions: [\n 'updateTaskData',\n 'setConsultAgentJoined',\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', 'emitTaskReject'],\n },\n },\n },\n\n [TaskState.CONNECTED]: {\n on: {\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 'updateTaskData',\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentContactAssigned can be resent after consult transfers; keep context in sync\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 // 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 // AgentContactEnded Event\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Conference still active → CONFERENCING\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n // Agent should wrap up → WRAPPING_UP\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n },\n },\n\n [TaskState.HOLD_INITIATING]: {\n on: {\n // AgentContactHeld Event\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n // AgentContactHoldFailed Event\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData'],\n },\n },\n },\n\n [TaskState.HELD]: {\n on: {\n // 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 // 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 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 // TODO: This may not be a valid transition, this needs to be checked as well\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n },\n },\n\n [TaskState.RESUME_INITIATING]: {\n on: {\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n [TaskEvent.UNHOLD_FAILED]: {\n target: TaskState.HELD,\n },\n },\n },\n\n [TaskState.CONSULT_INITIATING]: {\n on: {\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n // AgentConsulting\n // NOTE: Don't set consultDestinationAgentJoined here - wait for CONSULTING_ACTIVE\n [TaskEvent.CONSULT_SUCCESS]: {\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // 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 },\n },\n\n [TaskState.CONSULTING]: {\n on: {\n // AgentConsulting updates consulted agent arrival\n [TaskEvent.CONSULTING_ACTIVE]: {\n actions: [\n 'updateTaskData',\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'emitTaskConsulting',\n ],\n },\n\n // AgentConsultEnded\n [TaskEvent.CONSULT_END]: [\n {\n // Initiator returning to conference (flag set OR backend still shows conference)\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n (context.consultFromConference === true ||\n guards.conferenceInProgressFromEvent({context, event})),\n target: TaskState.CONFERENCING,\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 // Initiator (no conference) → HELD\n guard: ({context}) => context.consultInitiator === true,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData'],\n },\n ],\n\n // Switch between consult and main call (UI-driven toggle)\n [TaskEvent.SWITCH_TO_MAIN_CALL]: {\n actions: ['handleSwitchToMainCall', 'emitTaskSwitchCall'],\n },\n [TaskEvent.SWITCH_TO_CONSULT]: {\n actions: ['handleSwitchToConsult', 'emitTaskSwitchCall'],\n },\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n\n [TaskEvent.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: ({context}) => context.transferConferenceRequested !== true,\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 // Non-initiator (consulted agent) stays in CONFERENCING\n guard: ({context}) => !context.consultInitiator,\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskEnd',\n ],\n },\n ],\n [TaskEvent.TRANSFER_CONFERENCE_FAILED]: {\n actions: ['clearTransferConferenceRequested', 'emitTaskTransferConferenceFailed'],\n },\n\n // AgentContactAssigned - receiver side becomes connected to customer\n [TaskEvent.ASSIGN]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n // AgentContactEnded\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n [TaskEvent.MERGE_TO_CONFERENCE]: {\n target: TaskState.CONF_INITIATING,\n },\n // AgentConsultConferenced, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: ['handleConferenceStarted', 'clearConsultState'],\n },\n },\n },\n\n [TaskState.CONF_INITIATING]: {\n on: {\n // AgentConsultConferenced, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: ['handleConferenceStarted'],\n },\n // AgentConsultConferenceFailed\n [TaskEvent.CONFERENCE_FAILED]: {\n target: TaskState.CONSULTING,\n actions: ['handleConferenceFailed', 'emitTaskConferenceFailed'],\n },\n },\n },\n\n [TaskState.CONFERENCING]: {\n on: {\n [TaskEvent.CONFERENCE_START]: {\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConferenceStarted'],\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 actions: ['updateTaskData', 'clearConsultState'],\n },\n\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\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 // Participant leaves - handle conference downgrade scenarios\n [TaskEvent.PARTICIPANT_LEAVE]: [\n {\n // Only the leaving agent should wrap up → WRAPPING_UP\n guard: (params) =>\n guards.didCurrentAgentLeaveConference(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskWrapup',\n ],\n },\n {\n // Only the leaving agent (no wrapup) → TERMINATED\n guard: guards.didCurrentAgentLeaveConference,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n {\n // Conference downgraded, customer present → CONNECTED\n guard: (params) =>\n !guards.didCurrentAgentLeaveConference(params) &&\n guards.shouldDowngradeConferenceToConnected(params),\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskConferenceEnded',\n ],\n },\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n\n [TaskEvent.TRANSFER_CONFERENCE]: {\n actions: ['setTransferConferenceRequested', 'emitTaskTransferConference'],\n },\n [TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [\n {\n // Not initiated by this agent → just refresh backend state.\n guard: ({context}) => context.transferConferenceRequested !== true,\n actions: [\n 'updateTaskData',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\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 },\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","id","initial","TaskState","IDLE","createInitialContext","on","TaskEvent","RECORDING_STARTED","actions","CONTACT_UPDATED","CONTACT_OWNER_CHANGED","HYDRATE","states","guard","guards","isInteractionTerminated","target","WRAPPING_UP","isInteractionConsulting","CONSULTING","isInteractionHeld","HELD","isInteractionConnected","CONNECTED","isConferencingByParticipants","CONFERENCING","TASK_INCOMING","OFFERED","OUTBOUND_FAILED","TERMINATED","CONSULTING_ACTIVE","TASK_OFFERED","ASSIGN","isConsultingAssignment","RONA","TASK_WRAPUP","CONTACT_ENDED","ASSIGN_FAILED","INVITE_FAILED","shouldWrapUp","OFFER_CONSULT","CONSULT_FAILED","CONSULT_END","HOLD_INITIATED","HOLD_INITIATING","HOLD_SUCCESS","CONSULT","CONSULT_INITIATING","TRANSFER_SUCCESS","shouldWrapUpOrIsInitiator","TRANSFER_FAILED","conferenceInProgressFromEvent","PAUSE_RECORDING","RESUME_RECORDING","HOLD_FAILED","UNHOLD_INITIATED","RESUME_INITIATING","UNHOLD_SUCCESS","UNHOLD_FAILED","CONSULT_SUCCESS","consultFromConference","isPrimaryMediaOnHold","CTQ_CANCEL","event","consultInitiator","consultCallHeld","taskData","getTaskDataFromEvent","cpd","interaction","callProcessingDetails","hasCustomerLeft","shouldWrapUpForThisAgent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","TRANSFER_CONFERENCE","TRANSFER_CONFERENCE_SUCCESS","transferConferenceRequested","TRANSFER_CONFERENCE_FAILED","MERGE_TO_CONFERENCE","CONF_INITIATING","CONFERENCE_START","CONFERENCE_FAILED","isTerminated","EXIT_CONFERENCE_SUCCESS","PARTICIPANT_LEAVE","params","didCurrentAgentLeaveConference","shouldDowngradeConferenceToConnected","CONFERENCE_END","exitingConference","mainCallId","mainInteractionId","interactionId","getIsCustomerInCall","entry","WRAPUP_COMPLETE","COMPLETED","type","createTaskStateMachine","options","createMachine","provide"],"sources":["TaskStateMachine.ts"],"sourcesContent":["/**\n * Task State Machine Configuration\n *\n * This file defines the XState state machine configuration for contact center tasks.\n * It orchestrates state transitions, guards, and actions for task lifecycle management.\n *\n * GUARD FUNCTIONS: All guard logic is centralized in guards.ts for reusability and testing.\n * This file imports and uses those guards via the `guards` object.\n */\n\nimport {setup} from 'xstate';\nimport {TaskContext, TaskEventPayload, UIControlConfig, TaskActionsMap} from './types';\nimport {TaskState, TaskEvent} from './constants';\nimport {actions, createInitialContext} from './actions';\nimport {guards, shouldWrapUpForThisAgent, getTaskDataFromEvent} from './guards';\nimport {getIsCustomerInCall} from '../TaskUtils';\n\ntype TaskActionConfigMap = {[K in keyof typeof actions]: undefined};\n\nconst taskStateMachineSetup = setup<\n TaskContext,\n TaskEventPayload,\n Record<string, never>,\n Record<string, never>,\n TaskActionConfigMap\n>({\n actors: {},\n types: {\n context: {} as TaskContext,\n events: {} as TaskEventPayload,\n },\n});\n\n/**\n * Get task state machine configuration with UI control config\n * Defines all states, transitions, guards, and actions for task management\n *\n * @param uiControlConfig - UI control configuration\n * @returns State machine configuration object\n */\nexport function getTaskStateMachineConfig(uiControlConfig: UIControlConfig) {\n /**\n * Event mapping reference (CC WebSocket -> TaskEvent)\n *\n * AgentContactReserved -> TaskEvent.TASK_INCOMING\n * AgentOfferContact -> TaskEvent.TASK_OFFERED\n * AgentOfferConsult -> TaskEvent.OFFER_CONSULT\n * AgentConsulting -> TaskEvent.CONSULTING_ACTIVE\n * AgentConsultCreated -> TaskEvent.CONSULT_CREATED\n * AgentConsultTransferred -> TaskEvent.TRANSFER_SUCCESS\n * AgentContactAssigned -> TaskEvent.ASSIGN\n * AgentContactHeld -> TaskEvent.HOLD_SUCCESS\n * AgentContactUnheld -> TaskEvent.UNHOLD_SUCCESS\n * AgentConsultEnded -> TaskEvent.CONSULT_END\n * AgentContactEnded -> TaskEvent.CONTACT_ENDED\n * AgentWrapup -> TaskEvent.TASK_WRAPUP (wrapUpRequired)\n * AgentWrappedup -> TaskEvent.WRAPUP_COMPLETE\n *\n * (See TaskManager.mapEventToTaskStateMachineEvent for the full mapping table.)\n */\n return {\n id: 'taskStateMachine',\n initial: TaskState.IDLE,\n context: createInitialContext(uiControlConfig, TaskState.IDLE),\n on: {\n [TaskEvent.RECORDING_STARTED]: {\n actions: ['updateTaskData', 'emitTaskRecordingStarted'],\n },\n [TaskEvent.CONTACT_UPDATED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n [TaskEvent.CONTACT_OWNER_CHANGED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n // HYDRATE: Update task data from AgentContact event\n // Note: State restoration with transitions is handled in IDLE state.\n // This root-level handler is for when task is already in another state (just updates data).\n [TaskEvent.HYDRATE]: {\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n },\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.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 (applicable for direct incoming/consult/transfer/outdial)\n [TaskEvent.TASK_INCOMING]: {\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskIncoming'],\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 'updateTaskData',\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n },\n },\n\n [TaskState.OFFERED]: {\n on: {\n // AgentContactOffer\n [TaskEvent.TASK_OFFERED]: {\n actions: ['updateTaskData', 'emitTaskOfferContact', 'requestAutoAnswer'],\n },\n // AgentContactAssigned\n [TaskEvent.ASSIGN]: [\n {\n guard: guards.isConsultingAssignment,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskConsultAccepted', 'emitTaskConsulting'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n ],\n // AgentOfferContactRONA\n [TaskEvent.RONA]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n // This needs to be handled for all assign failed scenarios (contact, buddy)\n // [AgentContactAssignFailed, AgentCtqFailed, AgentBlindTransferFailed,\n // AgentVTeamTransferFailed, AgentConsultTransferFailed]\n [TaskEvent.ASSIGN_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.INVITE_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n // AgentConsulting comes for received after the initial consult is accepted\n [TaskEvent.CONSULTING_ACTIVE]: [\n {\n target: TaskState.CONSULTING,\n actions: [\n 'updateTaskData',\n 'setConsultAgentJoined',\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', 'emitTaskReject'],\n },\n },\n },\n\n [TaskState.CONNECTED]: {\n on: {\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 'updateTaskData',\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentContactAssigned can be resent after consult transfers; keep context in sync\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 // 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 // AgentContactEnded Event\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Conference still active → CONFERENCING\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n // Agent should wrap up → WRAPPING_UP\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n },\n },\n\n [TaskState.HOLD_INITIATING]: {\n on: {\n // AgentContactHeld Event\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n // AgentContactHoldFailed Event\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData'],\n },\n },\n },\n\n [TaskState.HELD]: {\n on: {\n // 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 // 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 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 // TODO: This may not be a valid transition, this needs to be checked as well\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n },\n },\n\n [TaskState.RESUME_INITIATING]: {\n on: {\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n [TaskEvent.UNHOLD_FAILED]: {\n target: TaskState.HELD,\n },\n },\n },\n\n [TaskState.CONSULT_INITIATING]: {\n on: {\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n // AgentConsulting\n // NOTE: Don't set consultDestinationAgentJoined here - wait for CONSULTING_ACTIVE\n [TaskEvent.CONSULT_SUCCESS]: {\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // 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 },\n },\n\n [TaskState.CONSULTING]: {\n on: {\n // AgentConsulting updates consulted agent arrival\n [TaskEvent.CONSULTING_ACTIVE]: {\n actions: [\n 'updateTaskData',\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'emitTaskConsulting',\n ],\n },\n\n // AgentConsultEnded\n [TaskEvent.CONSULT_END]: [\n {\n // Initiator returning to conference (flag set OR backend still shows conference)\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n (context.consultFromConference === true ||\n guards.conferenceInProgressFromEvent({context, event})),\n target: TaskState.CONFERENCING,\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 // Customer left during consult → WRAPPING_UP\n guard: ({context, event}) => {\n const taskData = getTaskDataFromEvent(event);\n const cpd = taskData?.interaction?.callProcessingDetails;\n if (cpd?.hasCustomerLeft !== 'true') return false;\n\n return shouldWrapUpForThisAgent(context, taskData);\n },\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n {\n // Initiator (no conference) → HELD\n guard: ({context}) => context.consultInitiator === true,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData'],\n },\n ],\n\n // Switch between consult and main call (UI-driven toggle)\n [TaskEvent.SWITCH_TO_MAIN_CALL]: {\n actions: ['handleSwitchToMainCall', 'emitTaskSwitchCall'],\n },\n [TaskEvent.SWITCH_TO_CONSULT]: {\n actions: ['handleSwitchToConsult', 'emitTaskSwitchCall'],\n },\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n\n [TaskEvent.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: ({context}) => context.transferConferenceRequested !== true,\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 // Non-initiator (consulted agent) stays in CONFERENCING\n guard: ({context}) => !context.consultInitiator,\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskEnd',\n ],\n },\n ],\n [TaskEvent.TRANSFER_CONFERENCE_FAILED]: {\n actions: ['clearTransferConferenceRequested', 'emitTaskTransferConferenceFailed'],\n },\n\n // AgentContactAssigned - receiver side becomes connected to customer\n [TaskEvent.ASSIGN]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n // AgentContactEnded\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n [TaskEvent.MERGE_TO_CONFERENCE]: {\n target: TaskState.CONF_INITIATING,\n },\n // AgentConsultConferenced, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'handleConferenceStarted',\n 'clearConsultState',\n ],\n },\n },\n },\n\n [TaskState.CONF_INITIATING]: {\n on: {\n // AgentConsultConferenced, AgentConsultConferencing, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'handleConferenceStarted',\n 'clearConsultState',\n ],\n },\n // AgentConsultConferenceFailed\n [TaskEvent.CONFERENCE_FAILED]: {\n target: TaskState.CONSULTING,\n actions: ['handleConferenceFailed', 'emitTaskConferenceFailed'],\n },\n // AgentConsultEnded while conference is initiating (end call before conference completes)\n [TaskEvent.CONSULT_END]: [\n {\n guard: ({event}) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData?.interaction?.isTerminated === true;\n },\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n },\n },\n\n [TaskState.CONFERENCING]: {\n on: {\n [TaskEvent.CONFERENCE_START]: {\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n [TaskEvent.EXIT_CONFERENCE_SUCCESS]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd'],\n },\n ],\n\n // Needed as all agents in conference get this event, hence we need to clear the consult state\n [TaskEvent.CONSULT_END]: [\n {\n guard: ({context, event}) => {\n const taskData = getTaskDataFromEvent(event);\n\n return (\n taskData?.interaction?.isTerminated === true &&\n shouldWrapUpForThisAgent(context, taskData)\n );\n },\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_SUCCESS]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent', 'setHoldState', 'emitTaskResume'],\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 // Participant leaves - handle conference downgrade scenarios\n [TaskEvent.PARTICIPANT_LEAVE]: [\n {\n // Only the leaving agent should wrap up → WRAPPING_UP\n guard: (params) =>\n guards.didCurrentAgentLeaveConference(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskWrapup',\n ],\n },\n {\n // Only the leaving agent (no wrapup) → TERMINATED\n guard: guards.didCurrentAgentLeaveConference,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n {\n // Conference downgraded, customer present → CONNECTED\n guard: (params) =>\n !guards.didCurrentAgentLeaveConference(params) &&\n guards.shouldDowngradeConferenceToConnected(params),\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskConferenceEnded',\n ],\n },\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n\n [TaskEvent.TRANSFER_CONFERENCE]: {\n actions: ['setTransferConferenceRequested', 'emitTaskTransferConference'],\n },\n [TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [\n {\n // Not initiated by this agent → just refresh backend state.\n guard: ({context}) => context.transferConferenceRequested !== true,\n actions: [\n 'updateTaskData',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\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 },\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":[]}
|
|
@@ -9,6 +9,7 @@ exports.updateUIControls = updateUIControls;
|
|
|
9
9
|
var _xstate = require("xstate");
|
|
10
10
|
var _constants = require("./constants");
|
|
11
11
|
var _uiControlsComputer = require("./uiControlsComputer");
|
|
12
|
+
var _guards = require("./guards");
|
|
12
13
|
/**
|
|
13
14
|
* Task State Machine Actions - Action implementations executed during state transitions
|
|
14
15
|
*/
|
|
@@ -57,22 +58,26 @@ const deriveTaskDataUpdates = (context, taskData) => taskData ? (() => {
|
|
|
57
58
|
taskData,
|
|
58
59
|
...deriveRecordingState(taskData)
|
|
59
60
|
};
|
|
61
|
+
const selfAgentId = context.uiControlConfig.agentId ?? taskData?.agentId;
|
|
62
|
+
const consultingActive = taskData?.interaction?.state === _constants.INTERACTION_STATE.CONSULTING || (0, _guards.hasActiveConsultInPostCall)(taskData, selfAgentId);
|
|
60
63
|
if (taskData.destAgentId) {
|
|
61
|
-
|
|
64
|
+
const isEpDnWithStoredId = context.consultDestinationType === 'entryPoint' && context.consultDestinationAgentId;
|
|
65
|
+
if (!isEpDnWithStoredId) {
|
|
66
|
+
updates.consultDestinationAgentId = taskData.destAgentId;
|
|
67
|
+
}
|
|
62
68
|
}
|
|
63
|
-
if (
|
|
69
|
+
if (consultingActive && taskData.destinationType) {
|
|
64
70
|
updates.consultDestinationType = taskData.destinationType;
|
|
65
71
|
}
|
|
66
72
|
if (!context.consultInitiator) {
|
|
67
|
-
const selfAgentId = context.uiControlConfig.agentId ?? taskData?.agentId;
|
|
68
73
|
const consultInitiator = determineConsultInitiator(taskData, selfAgentId);
|
|
69
74
|
if (consultInitiator !== undefined) {
|
|
70
75
|
updates.consultInitiator = consultInitiator;
|
|
71
|
-
} else if (
|
|
76
|
+
} else if (consultingActive && taskData.isConsulted === false) {
|
|
72
77
|
updates.consultInitiator = true;
|
|
73
78
|
}
|
|
74
79
|
}
|
|
75
|
-
if (taskData.interaction
|
|
80
|
+
if (consultingActive && taskData.interaction) {
|
|
76
81
|
if (!context.consultDestinationAgentJoined) {
|
|
77
82
|
const hasJoinedConsultee = Boolean(taskData.interaction.participants && Object.values(taskData.interaction.participants).some(p => p?.isConsulted === true && !p?.hasLeft));
|
|
78
83
|
const cpd = taskData.interaction?.callProcessingDetails;
|
|
@@ -186,7 +191,7 @@ const actions = exports.actions = {
|
|
|
186
191
|
}
|
|
187
192
|
const taskData = getTaskDataFromEvent(event);
|
|
188
193
|
const consultDestinationType = 'destinationType' in event ? event.destinationType ?? null : null;
|
|
189
|
-
const consultDestinationAgentId = 'destAgentId' in event ? event.destAgentId
|
|
194
|
+
const consultDestinationAgentId = ('destAgentId' in event ? event.destAgentId : null) ?? ('destination' in event ? event.destination : null) ?? null;
|
|
190
195
|
return {
|
|
191
196
|
consultDestinationType,
|
|
192
197
|
consultDestinationAgentId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_xstate","require","_constants","_uiControlsComputer","determineConsultInitiator","taskData","selfAgentId","undefined","consultingAgentId","isConsulted","deriveRecordingState","callProcessingDetails","interaction","update","recordingStarted","recordInProgress","isPaused","recordingControlsAvailable","recordingInProgress","deriveTaskDataUpdates","context","updates","destAgentId","consultDestinationAgentId","state","destinationType","consultDestinationType","consultInitiator","uiControlConfig","agentId","consultDestinationAgentJoined","hasJoinedConsultee","Boolean","participants","Object","values","some","p","hasLeft","cpd","backendSaysJoined","hasEpDnParticipant","pType","effectiveConsultInitiator","consultMediaId","consultMediaResourceId","consultMedia","media","find","m","mType","consultCallHeld","isHold","getTaskDataFromEvent","event","createInitialContext","initialState","TaskState","IDLE","baseContext","exitingConference","consultFromConference","transferConferenceRequested","uiControls","getDefaultUIControls","computeUIControls","updateUIControls","currentState","assign","actions","exports","initializeTask","updateTaskData","setConsultInitiator","type","TaskEvent","CONSULT","handleConsultFailed","handleConferenceStarted","setConsultDestination","setConsultFromConference","forceConsultInitiator","setConsultAgentJoined","CONSULTING_ACTIVE","eventValue","setRecordingState","PAUSE_RECORDING","RESUME_RECORDING","clearConsultState","setTransferConferenceRequested","clearTransferConferenceRequested","setConsultCallHeld","clearConsultCallHeld","handleSwitchToMainCall","handleSwitchToConsult","handleConferenceFailed","handleParticipantLeft","setExitingConference","handleTransferConferenceSuccess","setHoldState","HOLD_SUCCESS","UNHOLD_SUCCESS","mediaResourceId","mediaEntry","updatedMedia","isConsultMedia","markEnded","requestAutoAnswer","requestCleanup","cleanupResources","emitTaskIncoming","emitTaskHydrate","emitTaskOfferContact","emitTaskAssigned","emitTaskHold","emitTaskResume","emitTaskEnd","emitTaskOfferConsult","emitTaskConsultCreated","emitTaskConsulting","emitTaskConsultAccepted","emitTaskConsultEnd","emitTaskReject","emitTaskWrapup","emitTaskRecordingStarted","emitTaskRecordingPaused","emitTaskRecordingResumed","emitTaskWrappedup","emitTaskParticipantLeft","emitTaskConferenceStarted","emitTaskConferenceEnded","emitTaskExitConference","emitTaskTransferConference","emitTaskSwitchCall","emitTaskConferenceFailed","emitTaskTransferConferenceFailed","emitTaskOutdialFailed"],"sources":["actions.ts"],"sourcesContent":["/**\n * Task State Machine Actions - Action implementations executed during state transitions\n */\n\nimport {assign} from 'xstate';\nimport {\n TaskContext,\n TaskEventPayload,\n UIControlConfig,\n TaskActionsMap,\n TaskActionArgs,\n RecordingStateUpdate,\n} from './types';\nimport {TaskEvent, TaskState} from './constants';\nimport {DestinationType, TaskData} from '../types';\nimport {computeUIControls, getDefaultUIControls} from './uiControlsComputer';\n\nconst determineConsultInitiator = (\n taskData: TaskData | undefined,\n selfAgentId: string | undefined\n): boolean | undefined => {\n if (!selfAgentId) return undefined;\n\n if (taskData?.consultingAgentId) {\n return taskData.consultingAgentId === selfAgentId;\n }\n\n if (taskData?.isConsulted === true) return false;\n\n return undefined;\n};\n\nconst deriveRecordingState = (taskData?: TaskData | null): RecordingStateUpdate => {\n const callProcessingDetails = taskData?.interaction?.callProcessingDetails;\n\n if (!callProcessingDetails) {\n return {};\n }\n\n const update: RecordingStateUpdate = {};\n const {recordingStarted, recordInProgress, isPaused} = callProcessingDetails as {\n recordingStarted?: boolean;\n recordInProgress?: boolean;\n isPaused?: boolean;\n };\n\n if (recordingStarted !== undefined) {\n update.recordingControlsAvailable = recordingStarted;\n if (!recordingStarted) {\n update.recordingInProgress = false;\n }\n }\n\n if (recordInProgress !== undefined) {\n update.recordingControlsAvailable = recordInProgress || recordingStarted || false;\n update.recordingInProgress = recordInProgress;\n }\n\n if (\n update.recordingControlsAvailable === undefined &&\n update.recordingInProgress === undefined &&\n recordingStarted\n ) {\n update.recordingControlsAvailable = true;\n update.recordingInProgress = true;\n }\n\n if (isPaused !== undefined) {\n update.recordingControlsAvailable = true;\n update.recordingInProgress = !isPaused;\n }\n\n return update;\n};\n\nconst deriveTaskDataUpdates = (context: TaskContext, taskData: TaskData | undefined) =>\n taskData\n ? (() => {\n const updates: Partial<TaskContext> = {\n taskData,\n ...deriveRecordingState(taskData),\n };\n\n if (taskData.destAgentId) {\n updates.consultDestinationAgentId = taskData.destAgentId;\n }\n if (taskData.interaction?.state === 'consulting' && taskData.destinationType) {\n updates.consultDestinationType = taskData.destinationType as DestinationType;\n }\n\n if (!context.consultInitiator) {\n const selfAgentId = context.uiControlConfig.agentId ?? taskData?.agentId;\n const consultInitiator = determineConsultInitiator(taskData, selfAgentId);\n if (consultInitiator !== undefined) {\n updates.consultInitiator = consultInitiator;\n } else if (\n taskData.interaction?.state === 'consulting' &&\n taskData.isConsulted === false\n ) {\n updates.consultInitiator = true;\n }\n }\n\n if (taskData.interaction?.state === 'consulting') {\n if (!context.consultDestinationAgentJoined) {\n const hasJoinedConsultee = Boolean(\n taskData.interaction.participants &&\n Object.values(taskData.interaction.participants).some(\n (p: any) => p?.isConsulted === true && !p?.hasLeft\n )\n );\n const cpd = taskData.interaction?.callProcessingDetails;\n const backendSaysJoined = cpd?.consultDestinationAgentJoined === 'true';\n if (hasJoinedConsultee || backendSaysJoined)\n updates.consultDestinationAgentJoined = true;\n }\n\n if (!context.consultDestinationType && !updates.consultDestinationType) {\n const hasEpDnParticipant = Boolean(\n taskData.interaction.participants &&\n Object.values(taskData.interaction.participants).some(\n (p: any) => p?.pType === 'EP-DN' && !p?.hasLeft\n )\n );\n if (hasEpDnParticipant) updates.consultDestinationType = 'entryPoint' as any;\n }\n\n const effectiveConsultInitiator = updates.consultInitiator ?? context.consultInitiator;\n if (effectiveConsultInitiator) {\n const consultMediaId = taskData.consultMediaResourceId;\n const consultMedia: any = consultMediaId\n ? taskData.interaction.media?.[consultMediaId]\n : Object.values(taskData.interaction.media ?? {}).find(\n (m: any) => m?.mType === 'consult'\n );\n if (consultMedia) {\n updates.consultCallHeld = Boolean(consultMedia.isHold);\n }\n }\n }\n\n return updates;\n })()\n : {};\n\nconst getTaskDataFromEvent = (event?: TaskEventPayload): TaskData | undefined =>\n event && typeof event === 'object' ? (event as any).taskData : undefined;\n\nexport function createInitialContext(\n uiControlConfig: UIControlConfig,\n initialState: TaskState = TaskState.IDLE\n): TaskContext {\n const baseContext: TaskContext = {\n taskData: null,\n consultInitiator: false,\n exitingConference: false,\n consultFromConference: false,\n transferConferenceRequested: false,\n consultDestinationType: null,\n consultDestinationAgentId: null,\n consultDestinationAgentJoined: false,\n consultCallHeld: false,\n recordingControlsAvailable: false,\n recordingInProgress: false,\n uiControlConfig,\n uiControls: getDefaultUIControls(),\n };\n\n baseContext.uiControls = computeUIControls(initialState, baseContext);\n\n return baseContext;\n}\n\nexport function updateUIControls(currentState: TaskState) {\n return assign(({context}: TaskActionArgs) => ({\n uiControls: computeUIControls(currentState, context),\n }));\n}\n\nexport const actions: TaskActionsMap = {\n initializeTask: assign(({context, event}: {context: TaskContext; event: TaskEventPayload}) => {\n return {\n consultInitiator: false,\n exitingConference: false,\n consultDestinationType: null,\n consultDestinationAgentJoined: false,\n ...deriveTaskDataUpdates(context, getTaskDataFromEvent(event)),\n };\n }),\n\n /**\n * Update task data from ASSIGN event\n */\n updateTaskData: assign(({context, event}: TaskActionArgs) => {\n return deriveTaskDataUpdates(context, getTaskDataFromEvent(event));\n }),\n\n /**\n * Set consult initiator flag\n *\n * IMPORTANT: This action is called for CONSULT (user action) and CONSULT_CREATED (backend event).\n * For CONSULT (user action): The user explicitly clicked Consult, so they ARE the initiator.\n * For CONSULT_CREATED (backend event): Check taskData.isConsulted to determine if this agent\n * is the initiator. If isConsulted === true, this is Agent B (the consulted party), NOT the initiator.\n *\n * This prevents all agents in a conference from becoming consultInitiator when one agent\n * starts a new consult.\n */\n setConsultInitiator: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n if (event.type === TaskEvent.CONSULT) return {consultInitiator: true};\n\n const selfAgentId = taskData?.agentId;\n const consultInitiator = determineConsultInitiator(taskData, selfAgentId);\n if (consultInitiator === true) return {consultInitiator: true};\n if (consultInitiator === false) return {consultInitiator: false};\n\n return {};\n }),\n\n handleConsultFailed: assign({consultDestinationAgentJoined: false, consultInitiator: false}),\n handleConferenceStarted: assign({consultInitiator: false}),\n\n setConsultDestination: assign(({event}: TaskActionArgs) => {\n if (!event || event.type !== TaskEvent.CONSULT) {\n return {};\n }\n\n const taskData = getTaskDataFromEvent(event);\n const consultDestinationType =\n 'destinationType' in event ? event.destinationType ?? null : null;\n const consultDestinationAgentId = 'destAgentId' in event ? event.destAgentId ?? null : null;\n\n return {\n consultDestinationType,\n consultDestinationAgentId,\n consultDestinationAgentJoined: false,\n consultFromConference: false,\n taskData: {\n ...taskData,\n destAgentId: consultDestinationAgentId,\n },\n };\n }),\n\n setConsultFromConference: assign({consultFromConference: true}),\n\n forceConsultInitiator: assign({consultInitiator: true}),\n\n setConsultAgentJoined: assign(\n ({context, event}: {context: TaskContext; event: TaskEventPayload}) => {\n if (context.consultDestinationAgentJoined) {\n return {};\n }\n\n if (\n !event ||\n event.type !== TaskEvent.CONSULTING_ACTIVE ||\n !('consultDestinationAgentJoined' in event)\n ) {\n return {};\n }\n\n const eventValue = (event as {consultDestinationAgentJoined: boolean})\n .consultDestinationAgentJoined;\n\n return eventValue ? {consultDestinationAgentJoined: true} : {};\n }\n ),\n\n setRecordingState: assign(({event}: TaskActionArgs) => {\n if (!event || !('type' in event)) {\n return {};\n }\n\n if (event.type === TaskEvent.PAUSE_RECORDING) {\n return {\n recordingControlsAvailable: true,\n recordingInProgress: false,\n };\n }\n if (event.type === TaskEvent.RESUME_RECORDING) {\n return {\n recordingControlsAvailable: true,\n recordingInProgress: true,\n };\n }\n\n return {};\n }),\n\n clearConsultState: assign({\n consultDestinationType: null,\n consultDestinationAgentId: null,\n consultDestinationAgentJoined: false,\n consultInitiator: false,\n exitingConference: false,\n consultCallHeld: false,\n consultFromConference: false,\n transferConferenceRequested: false,\n }),\n\n setTransferConferenceRequested: assign({transferConferenceRequested: true}),\n clearTransferConferenceRequested: assign({transferConferenceRequested: false}),\n\n setConsultCallHeld: assign({consultCallHeld: true}),\n clearConsultCallHeld: assign({consultCallHeld: false}),\n handleSwitchToMainCall: assign({consultCallHeld: true}),\n handleSwitchToConsult: assign({consultCallHeld: false}),\n\n handleConferenceFailed: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n handleParticipantLeft: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n\n setExitingConference: assign({exitingConference: true}),\n\n handleTransferConferenceSuccess: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n\n setHoldState: assign(({context, event}: TaskActionArgs) => {\n if (\n !event ||\n (event.type !== TaskEvent.HOLD_SUCCESS && event.type !== TaskEvent.UNHOLD_SUCCESS)\n ) {\n return {};\n }\n\n const mediaResourceId =\n 'mediaResourceId' in event\n ? (event as {mediaResourceId?: string}).mediaResourceId\n : undefined;\n\n if (!mediaResourceId) {\n return {};\n }\n\n const interaction = context.taskData?.interaction;\n const mediaEntry = interaction?.media?.[mediaResourceId];\n\n if (!interaction || !mediaEntry) {\n return {};\n }\n\n const updatedMedia = {\n ...interaction.media,\n [mediaResourceId]: {\n ...mediaEntry,\n isHold: event.type === TaskEvent.HOLD_SUCCESS,\n },\n };\n\n const updates: Partial<TaskContext> = {\n taskData: {\n ...(context.taskData as TaskData),\n interaction: {\n ...interaction,\n media: updatedMedia,\n },\n },\n };\n\n const consultMediaId = context.taskData?.consultMediaResourceId;\n const isConsultMedia = consultMediaId\n ? mediaResourceId === consultMediaId\n : mediaEntry?.mType === 'consult';\n\n if (isConsultMedia && context.consultInitiator) {\n updates.consultCallHeld = event.type === TaskEvent.HOLD_SUCCESS;\n }\n\n return updates;\n }),\n\n markEnded: assign(() => ({\n recordingControlsAvailable: false,\n recordingInProgress: false,\n })),\n\n requestAutoAnswer: () => undefined,\n requestCleanup: () => undefined,\n cleanupResources: () => undefined,\n\n // Event emitters - placeholders overridden by consumers\n emitTaskIncoming: () => undefined,\n emitTaskHydrate: () => undefined,\n emitTaskOfferContact: () => undefined,\n emitTaskAssigned: () => undefined,\n emitTaskHold: () => undefined,\n emitTaskResume: () => undefined,\n emitTaskEnd: () => undefined,\n emitTaskOfferConsult: () => undefined,\n emitTaskConsultCreated: () => undefined,\n emitTaskConsulting: () => undefined,\n emitTaskConsultAccepted: () => undefined,\n emitTaskConsultEnd: () => undefined,\n emitTaskReject: () => undefined,\n emitTaskWrapup: () => undefined,\n emitTaskRecordingStarted: () => undefined,\n emitTaskRecordingPaused: () => undefined,\n emitTaskRecordingResumed: () => undefined,\n emitTaskWrappedup: () => undefined,\n emitTaskParticipantLeft: () => undefined,\n emitTaskConferenceStarted: () => undefined,\n emitTaskConferenceEnded: () => undefined,\n emitTaskExitConference: () => undefined,\n emitTaskTransferConference: () => undefined,\n emitTaskSwitchCall: () => undefined,\n emitTaskConferenceFailed: () => undefined,\n emitTaskTransferConferenceFailed: () => undefined,\n emitTaskOutdialFailed: () => undefined,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_xstate","require","_constants","_uiControlsComputer","_guards","determineConsultInitiator","taskData","selfAgentId","undefined","consultingAgentId","isConsulted","deriveRecordingState","callProcessingDetails","interaction","update","recordingStarted","recordInProgress","isPaused","recordingControlsAvailable","recordingInProgress","deriveTaskDataUpdates","context","updates","uiControlConfig","agentId","consultingActive","state","INTERACTION_STATE","CONSULTING","hasActiveConsultInPostCall","destAgentId","isEpDnWithStoredId","consultDestinationType","consultDestinationAgentId","destinationType","consultInitiator","consultDestinationAgentJoined","hasJoinedConsultee","Boolean","participants","Object","values","some","p","hasLeft","cpd","backendSaysJoined","hasEpDnParticipant","pType","effectiveConsultInitiator","consultMediaId","consultMediaResourceId","consultMedia","media","find","m","mType","consultCallHeld","isHold","getTaskDataFromEvent","event","createInitialContext","initialState","TaskState","IDLE","baseContext","exitingConference","consultFromConference","transferConferenceRequested","uiControls","getDefaultUIControls","computeUIControls","updateUIControls","currentState","assign","actions","exports","initializeTask","updateTaskData","setConsultInitiator","type","TaskEvent","CONSULT","handleConsultFailed","handleConferenceStarted","setConsultDestination","destination","setConsultFromConference","forceConsultInitiator","setConsultAgentJoined","CONSULTING_ACTIVE","eventValue","setRecordingState","PAUSE_RECORDING","RESUME_RECORDING","clearConsultState","setTransferConferenceRequested","clearTransferConferenceRequested","setConsultCallHeld","clearConsultCallHeld","handleSwitchToMainCall","handleSwitchToConsult","handleConferenceFailed","handleParticipantLeft","setExitingConference","handleTransferConferenceSuccess","setHoldState","HOLD_SUCCESS","UNHOLD_SUCCESS","mediaResourceId","mediaEntry","updatedMedia","isConsultMedia","markEnded","requestAutoAnswer","requestCleanup","cleanupResources","emitTaskIncoming","emitTaskHydrate","emitTaskOfferContact","emitTaskAssigned","emitTaskHold","emitTaskResume","emitTaskEnd","emitTaskOfferConsult","emitTaskConsultCreated","emitTaskConsulting","emitTaskConsultAccepted","emitTaskConsultEnd","emitTaskReject","emitTaskWrapup","emitTaskRecordingStarted","emitTaskRecordingPaused","emitTaskRecordingResumed","emitTaskWrappedup","emitTaskParticipantLeft","emitTaskConferenceStarted","emitTaskConferenceEnded","emitTaskExitConference","emitTaskTransferConference","emitTaskSwitchCall","emitTaskConferenceFailed","emitTaskTransferConferenceFailed","emitTaskOutdialFailed"],"sources":["actions.ts"],"sourcesContent":["/**\n * Task State Machine Actions - Action implementations executed during state transitions\n */\n\nimport {assign} from 'xstate';\nimport {\n TaskContext,\n TaskEventPayload,\n UIControlConfig,\n TaskActionsMap,\n TaskActionArgs,\n RecordingStateUpdate,\n} from './types';\nimport {TaskEvent, TaskState, INTERACTION_STATE} from './constants';\nimport {DestinationType, TaskData} from '../types';\nimport {computeUIControls, getDefaultUIControls} from './uiControlsComputer';\nimport {hasActiveConsultInPostCall} from './guards';\n\nconst determineConsultInitiator = (\n taskData: TaskData | undefined,\n selfAgentId: string | undefined\n): boolean | undefined => {\n if (!selfAgentId) return undefined;\n\n if (taskData?.consultingAgentId) {\n return taskData.consultingAgentId === selfAgentId;\n }\n\n if (taskData?.isConsulted === true) return false;\n\n return undefined;\n};\n\nconst deriveRecordingState = (taskData?: TaskData | null): RecordingStateUpdate => {\n const callProcessingDetails = taskData?.interaction?.callProcessingDetails;\n\n if (!callProcessingDetails) {\n return {};\n }\n\n const update: RecordingStateUpdate = {};\n const {recordingStarted, recordInProgress, isPaused} = callProcessingDetails as {\n recordingStarted?: boolean;\n recordInProgress?: boolean;\n isPaused?: boolean;\n };\n\n if (recordingStarted !== undefined) {\n update.recordingControlsAvailable = recordingStarted;\n if (!recordingStarted) {\n update.recordingInProgress = false;\n }\n }\n\n if (recordInProgress !== undefined) {\n update.recordingControlsAvailable = recordInProgress || recordingStarted || false;\n update.recordingInProgress = recordInProgress;\n }\n\n if (\n update.recordingControlsAvailable === undefined &&\n update.recordingInProgress === undefined &&\n recordingStarted\n ) {\n update.recordingControlsAvailable = true;\n update.recordingInProgress = true;\n }\n\n if (isPaused !== undefined) {\n update.recordingControlsAvailable = true;\n update.recordingInProgress = !isPaused;\n }\n\n return update;\n};\n\nconst deriveTaskDataUpdates = (context: TaskContext, taskData: TaskData | undefined) =>\n taskData\n ? (() => {\n const updates: Partial<TaskContext> = {\n taskData,\n ...deriveRecordingState(taskData),\n };\n\n const selfAgentId = context.uiControlConfig.agentId ?? taskData?.agentId;\n const consultingActive =\n taskData?.interaction?.state === INTERACTION_STATE.CONSULTING ||\n hasActiveConsultInPostCall(taskData, selfAgentId);\n\n if (taskData.destAgentId) {\n const isEpDnWithStoredId =\n context.consultDestinationType === 'entryPoint' && context.consultDestinationAgentId;\n if (!isEpDnWithStoredId) {\n updates.consultDestinationAgentId = taskData.destAgentId;\n }\n }\n if (consultingActive && taskData.destinationType) {\n updates.consultDestinationType = taskData.destinationType as DestinationType;\n }\n\n if (!context.consultInitiator) {\n const consultInitiator = determineConsultInitiator(taskData, selfAgentId);\n if (consultInitiator !== undefined) {\n updates.consultInitiator = consultInitiator;\n } else if (consultingActive && taskData.isConsulted === false) {\n updates.consultInitiator = true;\n }\n }\n\n if (consultingActive && taskData.interaction) {\n if (!context.consultDestinationAgentJoined) {\n const hasJoinedConsultee = Boolean(\n taskData.interaction.participants &&\n Object.values(taskData.interaction.participants).some(\n (p: any) => p?.isConsulted === true && !p?.hasLeft\n )\n );\n const cpd = taskData.interaction?.callProcessingDetails;\n const backendSaysJoined = cpd?.consultDestinationAgentJoined === 'true';\n if (hasJoinedConsultee || backendSaysJoined)\n updates.consultDestinationAgentJoined = true;\n }\n\n if (!context.consultDestinationType && !updates.consultDestinationType) {\n const hasEpDnParticipant = Boolean(\n taskData.interaction.participants &&\n Object.values(taskData.interaction.participants).some(\n (p: any) => p?.pType === 'EP-DN' && !p?.hasLeft\n )\n );\n if (hasEpDnParticipant) updates.consultDestinationType = 'entryPoint' as any;\n }\n\n const effectiveConsultInitiator = updates.consultInitiator ?? context.consultInitiator;\n if (effectiveConsultInitiator) {\n const consultMediaId = taskData.consultMediaResourceId;\n const consultMedia: any = consultMediaId\n ? taskData.interaction.media?.[consultMediaId]\n : Object.values(taskData.interaction.media ?? {}).find(\n (m: any) => m?.mType === 'consult'\n );\n if (consultMedia) {\n updates.consultCallHeld = Boolean(consultMedia.isHold);\n }\n }\n }\n\n return updates;\n })()\n : {};\n\nconst getTaskDataFromEvent = (event?: TaskEventPayload): TaskData | undefined =>\n event && typeof event === 'object' ? (event as any).taskData : undefined;\n\nexport function createInitialContext(\n uiControlConfig: UIControlConfig,\n initialState: TaskState = TaskState.IDLE\n): TaskContext {\n const baseContext: TaskContext = {\n taskData: null,\n consultInitiator: false,\n exitingConference: false,\n consultFromConference: false,\n transferConferenceRequested: false,\n consultDestinationType: null,\n consultDestinationAgentId: null,\n consultDestinationAgentJoined: false,\n consultCallHeld: false,\n recordingControlsAvailable: false,\n recordingInProgress: false,\n uiControlConfig,\n uiControls: getDefaultUIControls(),\n };\n\n baseContext.uiControls = computeUIControls(initialState, baseContext);\n\n return baseContext;\n}\n\nexport function updateUIControls(currentState: TaskState) {\n return assign(({context}: TaskActionArgs) => ({\n uiControls: computeUIControls(currentState, context),\n }));\n}\n\nexport const actions: TaskActionsMap = {\n initializeTask: assign(({context, event}: {context: TaskContext; event: TaskEventPayload}) => {\n return {\n consultInitiator: false,\n exitingConference: false,\n consultDestinationType: null,\n consultDestinationAgentJoined: false,\n ...deriveTaskDataUpdates(context, getTaskDataFromEvent(event)),\n };\n }),\n\n /**\n * Update task data from ASSIGN event\n */\n updateTaskData: assign(({context, event}: TaskActionArgs) => {\n return deriveTaskDataUpdates(context, getTaskDataFromEvent(event));\n }),\n\n /**\n * Set consult initiator flag\n *\n * IMPORTANT: This action is called for CONSULT (user action) and CONSULT_CREATED (backend event).\n * For CONSULT (user action): The user explicitly clicked Consult, so they ARE the initiator.\n * For CONSULT_CREATED (backend event): Check taskData.isConsulted to determine if this agent\n * is the initiator. If isConsulted === true, this is Agent B (the consulted party), NOT the initiator.\n *\n * This prevents all agents in a conference from becoming consultInitiator when one agent\n * starts a new consult.\n */\n setConsultInitiator: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n if (event.type === TaskEvent.CONSULT) return {consultInitiator: true};\n\n const selfAgentId = taskData?.agentId;\n const consultInitiator = determineConsultInitiator(taskData, selfAgentId);\n if (consultInitiator === true) return {consultInitiator: true};\n if (consultInitiator === false) return {consultInitiator: false};\n\n return {};\n }),\n\n handleConsultFailed: assign({consultDestinationAgentJoined: false, consultInitiator: false}),\n handleConferenceStarted: assign({consultInitiator: false}),\n\n setConsultDestination: assign(({event}: TaskActionArgs) => {\n if (!event || event.type !== TaskEvent.CONSULT) {\n return {};\n }\n\n const taskData = getTaskDataFromEvent(event);\n const consultDestinationType =\n 'destinationType' in event ? event.destinationType ?? null : null;\n const consultDestinationAgentId =\n ('destAgentId' in event ? event.destAgentId : null) ??\n ('destination' in event ? (event as any).destination : null) ??\n null;\n\n return {\n consultDestinationType,\n consultDestinationAgentId,\n consultDestinationAgentJoined: false,\n consultFromConference: false,\n taskData: {\n ...taskData,\n destAgentId: consultDestinationAgentId,\n },\n };\n }),\n\n setConsultFromConference: assign({consultFromConference: true}),\n\n forceConsultInitiator: assign({consultInitiator: true}),\n\n setConsultAgentJoined: assign(\n ({context, event}: {context: TaskContext; event: TaskEventPayload}) => {\n if (context.consultDestinationAgentJoined) {\n return {};\n }\n\n if (\n !event ||\n event.type !== TaskEvent.CONSULTING_ACTIVE ||\n !('consultDestinationAgentJoined' in event)\n ) {\n return {};\n }\n\n const eventValue = (event as {consultDestinationAgentJoined: boolean})\n .consultDestinationAgentJoined;\n\n return eventValue ? {consultDestinationAgentJoined: true} : {};\n }\n ),\n\n setRecordingState: assign(({event}: TaskActionArgs) => {\n if (!event || !('type' in event)) {\n return {};\n }\n\n if (event.type === TaskEvent.PAUSE_RECORDING) {\n return {\n recordingControlsAvailable: true,\n recordingInProgress: false,\n };\n }\n if (event.type === TaskEvent.RESUME_RECORDING) {\n return {\n recordingControlsAvailable: true,\n recordingInProgress: true,\n };\n }\n\n return {};\n }),\n\n clearConsultState: assign({\n consultDestinationType: null,\n consultDestinationAgentId: null,\n consultDestinationAgentJoined: false,\n consultInitiator: false,\n exitingConference: false,\n consultCallHeld: false,\n consultFromConference: false,\n transferConferenceRequested: false,\n }),\n\n setTransferConferenceRequested: assign({transferConferenceRequested: true}),\n clearTransferConferenceRequested: assign({transferConferenceRequested: false}),\n\n setConsultCallHeld: assign({consultCallHeld: true}),\n clearConsultCallHeld: assign({consultCallHeld: false}),\n handleSwitchToMainCall: assign({consultCallHeld: true}),\n handleSwitchToConsult: assign({consultCallHeld: false}),\n\n handleConferenceFailed: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n handleParticipantLeft: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n\n setExitingConference: assign({exitingConference: true}),\n\n handleTransferConferenceSuccess: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n\n setHoldState: assign(({context, event}: TaskActionArgs) => {\n if (\n !event ||\n (event.type !== TaskEvent.HOLD_SUCCESS && event.type !== TaskEvent.UNHOLD_SUCCESS)\n ) {\n return {};\n }\n\n const mediaResourceId =\n 'mediaResourceId' in event\n ? (event as {mediaResourceId?: string}).mediaResourceId\n : undefined;\n\n if (!mediaResourceId) {\n return {};\n }\n\n const interaction = context.taskData?.interaction;\n const mediaEntry = interaction?.media?.[mediaResourceId];\n\n if (!interaction || !mediaEntry) {\n return {};\n }\n\n const updatedMedia = {\n ...interaction.media,\n [mediaResourceId]: {\n ...mediaEntry,\n isHold: event.type === TaskEvent.HOLD_SUCCESS,\n },\n };\n\n const updates: Partial<TaskContext> = {\n taskData: {\n ...(context.taskData as TaskData),\n interaction: {\n ...interaction,\n media: updatedMedia,\n },\n },\n };\n\n const consultMediaId = context.taskData?.consultMediaResourceId;\n const isConsultMedia = consultMediaId\n ? mediaResourceId === consultMediaId\n : mediaEntry?.mType === 'consult';\n\n if (isConsultMedia && context.consultInitiator) {\n updates.consultCallHeld = event.type === TaskEvent.HOLD_SUCCESS;\n }\n\n return updates;\n }),\n\n markEnded: assign(() => ({\n recordingControlsAvailable: false,\n recordingInProgress: false,\n })),\n\n requestAutoAnswer: () => undefined,\n requestCleanup: () => undefined,\n cleanupResources: () => undefined,\n\n // Event emitters - placeholders overridden by consumers\n emitTaskIncoming: () => undefined,\n emitTaskHydrate: () => undefined,\n emitTaskOfferContact: () => undefined,\n emitTaskAssigned: () => undefined,\n emitTaskHold: () => undefined,\n emitTaskResume: () => undefined,\n emitTaskEnd: () => undefined,\n emitTaskOfferConsult: () => undefined,\n emitTaskConsultCreated: () => undefined,\n emitTaskConsulting: () => undefined,\n emitTaskConsultAccepted: () => undefined,\n emitTaskConsultEnd: () => undefined,\n emitTaskReject: () => undefined,\n emitTaskWrapup: () => undefined,\n emitTaskRecordingStarted: () => undefined,\n emitTaskRecordingPaused: () => undefined,\n emitTaskRecordingResumed: () => undefined,\n emitTaskWrappedup: () => undefined,\n emitTaskParticipantLeft: () => undefined,\n emitTaskConferenceStarted: () => undefined,\n emitTaskConferenceEnded: () => undefined,\n emitTaskExitConference: () => undefined,\n emitTaskTransferConference: () => undefined,\n emitTaskSwitchCall: () => undefined,\n emitTaskConferenceFailed: () => undefined,\n emitTaskTransferConferenceFailed: () => undefined,\n emitTaskOutdialFailed: () => undefined,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.TaskState = exports.TaskEvent = exports.PARTICIPANT_TYPE = exports.MEDIA_TYPE_MAIN_CALL = exports.MEDIA_TYPE_CONSULT = exports.MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = void 0;
|
|
6
|
+
exports.TaskState = exports.TaskEvent = exports.PARTICIPANT_TYPE = exports.MEDIA_TYPE_MAIN_CALL = exports.MEDIA_TYPE_CONSULT = exports.MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = exports.INTERACTION_STATE = exports.CONSULT_STATE = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* Constants for the task state machine.
|
|
9
9
|
* These enums define the allowed states, events, and built-in action identifiers.
|
|
@@ -39,6 +39,25 @@ const MEDIA_TYPE_CONSULT = exports.MEDIA_TYPE_CONSULT = 'consult';
|
|
|
39
39
|
/** Media type for main calls */
|
|
40
40
|
const MEDIA_TYPE_MAIN_CALL = exports.MEDIA_TYPE_MAIN_CALL = 'mainCall';
|
|
41
41
|
|
|
42
|
+
// ============================================
|
|
43
|
+
// Backend Interaction State Constants
|
|
44
|
+
// ============================================
|
|
45
|
+
|
|
46
|
+
/** Backend interaction state values (from server payloads) */
|
|
47
|
+
const INTERACTION_STATE = exports.INTERACTION_STATE = {
|
|
48
|
+
CONSULTING: 'consulting',
|
|
49
|
+
POST_CALL: 'post_call',
|
|
50
|
+
CONFERENCE: 'conference',
|
|
51
|
+
CONNECTED: 'connected',
|
|
52
|
+
NEW: 'new'
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/** Backend participant consultState values */
|
|
56
|
+
const CONSULT_STATE = exports.CONSULT_STATE = {
|
|
57
|
+
CONSULTING: 'consulting',
|
|
58
|
+
CONFERENCING: 'conferencing'
|
|
59
|
+
};
|
|
60
|
+
|
|
42
61
|
// ============================================
|
|
43
62
|
// State Machine Enums
|
|
44
63
|
// ============================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE","exports","PARTICIPANT_TYPE","CUSTOMER","SUPERVISOR","VVA","MEDIA_TYPE_CONSULT","MEDIA_TYPE_MAIN_CALL","TaskState","TaskEvent"],"sources":["constants.ts"],"sourcesContent":["/**\n * Constants for the task state machine.\n * These enums define the allowed states, events, and built-in action identifiers.\n */\n\n// ============================================\n// Conference Constants\n// ============================================\n\n/**\n * Maximum number of participants allowed in a multi-party conference.\n * Max 7 counted agents + 1 customer.\n */\nexport const MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = 7;\n\n// ============================================\n// Participant Type Constants\n// ============================================\n\n/** Participant types for conference filtering */\nexport const PARTICIPANT_TYPE = {\n CUSTOMER: 'Customer',\n SUPERVISOR: 'Supervisor',\n VVA: 'VVA',\n} as const;\n\nexport type ParticipantType = (typeof PARTICIPANT_TYPE)[keyof typeof PARTICIPANT_TYPE];\n\n// ============================================\n// Media Type Constants\n// ============================================\n\n/** Media type for consult calls */\nexport const MEDIA_TYPE_CONSULT = 'consult';\n\n/** Media type for main calls */\nexport const MEDIA_TYPE_MAIN_CALL = 'mainCall';\n\n// ============================================\n// State Machine Enums\n// ============================================\n\nexport enum TaskState {\n IDLE = 'IDLE',\n OFFERED = 'OFFERED',\n CONNECTED = 'CONNECTED',\n\n // Intermediate states for async operations\n HOLD_INITIATING = 'HOLD_INITIATING',\n HELD = 'HELD',\n RESUME_INITIATING = 'RESUME_INITIATING',\n CONSULT_INITIATING = 'CONSULT_INITIATING',\n CONSULTING = 'CONSULTING',\n CONF_INITIATING = 'CONF_INITIATING',\n\n CONFERENCING = 'CONFERENCING',\n WRAPPING_UP = 'WRAPPING_UP',\n COMPLETED = 'COMPLETED',\n TERMINATED = 'TERMINATED',\n\n // NOT IMPLEMENTED: MPC (Multi-Party Conference) states\n CONSULT_INITIATED = 'CONSULT_INITIATED',\n CONSULT_COMPLETED = 'CONSULT_COMPLETED',\n // NOT IMPLEMENTED: Post-call state (isWxccPostCallEnabled feature flag)\n POST_CALL = 'POST_CALL',\n // NOT IMPLEMENTED: Parked state\n PARKED = 'PARKED',\n // NOT IMPLEMENTED: Monitoring/Supervisory states\n MONITORING = 'MONITORING',\n}\n\nexport enum TaskEvent {\n TASK_INCOMING = 'TASK_INCOMING',\n TASK_OFFERED = 'TASK_OFFERED',\n\n // Offer events\n OFFER_CONSULT = 'OFFER_CONSULT',\n HYDRATE = 'HYDRATE',\n\n // Internal \"data refresh\" events\n CONTACT_UPDATED = 'CONTACT_UPDATED',\n CONTACT_OWNER_CHANGED = 'CONTACT_OWNER_CHANGED',\n\n // Assignment events\n ASSIGN = 'ASSIGN',\n\n // Hold/Resume events\n HOLD_SUCCESS = 'HOLD_SUCCESS',\n HOLD_FAILED = 'HOLD_FAILED',\n UNHOLD_SUCCESS = 'UNHOLD_SUCCESS',\n UNHOLD_FAILED = 'UNHOLD_FAILED',\n HOLD_INITIATED = 'HOLD_INITIATED',\n UNHOLD_INITIATED = 'UNHOLD_INITIATED',\n\n // Consult events\n CONSULT = 'CONSULT',\n CONSULT_SUCCESS = 'CONSULT_SUCCESS',\n CONSULT_CREATED = 'CONSULT_CREATED',\n CONSULTING_ACTIVE = 'CONSULTING_ACTIVE',\n CONSULT_END = 'CONSULT_END',\n CONSULT_FAILED = 'CONSULT_FAILED',\n\n // Conference events\n MERGE_TO_CONFERENCE = 'MERGE_TO_CONFERENCE',\n CONFERENCE_START = 'CONFERENCE_START',\n CONFERENCE_FAILED = 'CONFERENCE_FAILED',\n CONFERENCE_END = 'CONFERENCE_END',\n TRANSFER_CONFERENCE = 'TRANSFER_CONFERENCE',\n TRANSFER_CONFERENCE_SUCCESS = 'TRANSFER_CONFERENCE_SUCCESS',\n TRANSFER_CONFERENCE_FAILED = 'TRANSFER_CONFERENCE_FAILED',\n PARTICIPANT_LEAVE = 'PARTICIPANT_LEAVE',\n EXIT_CONFERENCE = 'EXIT_CONFERENCE',\n EXIT_CONFERENCE_SUCCESS = 'EXIT_CONFERENCE_SUCCESS',\n EXIT_CONFERENCE_FAILED = 'EXIT_CONFERENCE_FAILED',\n\n // Recording events\n RECORDING_STARTED = 'RECORDING_STARTED',\n PAUSE_RECORDING = 'PAUSE_RECORDING',\n RESUME_RECORDING = 'RESUME_RECORDING',\n\n // Transfer events\n TRANSFER_SUCCESS = 'TRANSFER_SUCCESS',\n TRANSFER_FAILED = 'TRANSFER_FAILED',\n\n // Wrapup events\n WRAPUP_COMPLETE = 'WRAPUP_COMPLETE',\n\n // End events\n TASK_WRAPUP = 'TASK_WRAPUP',\n RONA = 'RONA', // Ring On No Answer\n CONTACT_ENDED = 'CONTACT_ENDED',\n\n // Failure events\n ASSIGN_FAILED = 'ASSIGN_FAILED',\n INVITE_FAILED = 'INVITE_FAILED',\n OUTBOUND_FAILED = 'OUTBOUND_FAILED',\n\n // Switch events (toggle between consult and main call)\n SWITCH_TO_MAIN_CALL = 'SWITCH_TO_MAIN_CALL',\n SWITCH_TO_CONSULT = 'SWITCH_TO_CONSULT',\n\n // Accept/Decline (WebRTC)\n ACCEPT = 'ACCEPT',\n DECLINE = 'DECLINE',\n END = 'END',\n\n // Queue events\n CTQ_CANCEL = 'CTQ_CANCEL', // Cancel To Queue\n CTQ_CANCEL_FAILED = 'CTQ_CANCEL_FAILED',\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAMA,yCAAyC,GAAAC,OAAA,CAAAD,yCAAA,GAAG,CAAC;;AAE1D;AACA;AACA;;AAEA;AACO,MAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG;EAC9BC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,GAAG,EAAE;AACP,CAAU;AAIV;AACA;AACA;;AAEA;AACO,MAAMC,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAG,SAAS;;AAE3C;AACO,MAAMC,oBAAoB,GAAAN,OAAA,CAAAM,oBAAA,GAAG,UAAU;;AAE9C;AACA;AACA;AAAA,IAEYC,SAAS,
|
|
1
|
+
{"version":3,"names":["MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE","exports","PARTICIPANT_TYPE","CUSTOMER","SUPERVISOR","VVA","MEDIA_TYPE_CONSULT","MEDIA_TYPE_MAIN_CALL","INTERACTION_STATE","CONSULTING","POST_CALL","CONFERENCE","CONNECTED","NEW","CONSULT_STATE","CONFERENCING","TaskState","TaskEvent"],"sources":["constants.ts"],"sourcesContent":["/**\n * Constants for the task state machine.\n * These enums define the allowed states, events, and built-in action identifiers.\n */\n\n// ============================================\n// Conference Constants\n// ============================================\n\n/**\n * Maximum number of participants allowed in a multi-party conference.\n * Max 7 counted agents + 1 customer.\n */\nexport const MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = 7;\n\n// ============================================\n// Participant Type Constants\n// ============================================\n\n/** Participant types for conference filtering */\nexport const PARTICIPANT_TYPE = {\n CUSTOMER: 'Customer',\n SUPERVISOR: 'Supervisor',\n VVA: 'VVA',\n} as const;\n\nexport type ParticipantType = (typeof PARTICIPANT_TYPE)[keyof typeof PARTICIPANT_TYPE];\n\n// ============================================\n// Media Type Constants\n// ============================================\n\n/** Media type for consult calls */\nexport const MEDIA_TYPE_CONSULT = 'consult';\n\n/** Media type for main calls */\nexport const MEDIA_TYPE_MAIN_CALL = 'mainCall';\n\n// ============================================\n// Backend Interaction State Constants\n// ============================================\n\n/** Backend interaction state values (from server payloads) */\nexport const INTERACTION_STATE = {\n CONSULTING: 'consulting',\n POST_CALL: 'post_call',\n CONFERENCE: 'conference',\n CONNECTED: 'connected',\n NEW: 'new',\n} as const;\n\n/** Backend participant consultState values */\nexport const CONSULT_STATE = {\n CONSULTING: 'consulting',\n CONFERENCING: 'conferencing',\n} as const;\n\n// ============================================\n// State Machine Enums\n// ============================================\n\nexport enum TaskState {\n IDLE = 'IDLE',\n OFFERED = 'OFFERED',\n CONNECTED = 'CONNECTED',\n\n // Intermediate states for async operations\n HOLD_INITIATING = 'HOLD_INITIATING',\n HELD = 'HELD',\n RESUME_INITIATING = 'RESUME_INITIATING',\n CONSULT_INITIATING = 'CONSULT_INITIATING',\n CONSULTING = 'CONSULTING',\n CONF_INITIATING = 'CONF_INITIATING',\n\n CONFERENCING = 'CONFERENCING',\n WRAPPING_UP = 'WRAPPING_UP',\n COMPLETED = 'COMPLETED',\n TERMINATED = 'TERMINATED',\n\n // NOT IMPLEMENTED: MPC (Multi-Party Conference) states\n CONSULT_INITIATED = 'CONSULT_INITIATED',\n CONSULT_COMPLETED = 'CONSULT_COMPLETED',\n // NOT IMPLEMENTED: Post-call state (isWxccPostCallEnabled feature flag)\n POST_CALL = 'POST_CALL',\n // NOT IMPLEMENTED: Parked state\n PARKED = 'PARKED',\n // NOT IMPLEMENTED: Monitoring/Supervisory states\n MONITORING = 'MONITORING',\n}\n\nexport enum TaskEvent {\n TASK_INCOMING = 'TASK_INCOMING',\n TASK_OFFERED = 'TASK_OFFERED',\n\n // Offer events\n OFFER_CONSULT = 'OFFER_CONSULT',\n HYDRATE = 'HYDRATE',\n\n // Internal \"data refresh\" events\n CONTACT_UPDATED = 'CONTACT_UPDATED',\n CONTACT_OWNER_CHANGED = 'CONTACT_OWNER_CHANGED',\n\n // Assignment events\n ASSIGN = 'ASSIGN',\n\n // Hold/Resume events\n HOLD_SUCCESS = 'HOLD_SUCCESS',\n HOLD_FAILED = 'HOLD_FAILED',\n UNHOLD_SUCCESS = 'UNHOLD_SUCCESS',\n UNHOLD_FAILED = 'UNHOLD_FAILED',\n HOLD_INITIATED = 'HOLD_INITIATED',\n UNHOLD_INITIATED = 'UNHOLD_INITIATED',\n\n // Consult events\n CONSULT = 'CONSULT',\n CONSULT_SUCCESS = 'CONSULT_SUCCESS',\n CONSULT_CREATED = 'CONSULT_CREATED',\n CONSULTING_ACTIVE = 'CONSULTING_ACTIVE',\n CONSULT_END = 'CONSULT_END',\n CONSULT_FAILED = 'CONSULT_FAILED',\n\n // Conference events\n MERGE_TO_CONFERENCE = 'MERGE_TO_CONFERENCE',\n CONFERENCE_START = 'CONFERENCE_START',\n CONFERENCE_FAILED = 'CONFERENCE_FAILED',\n CONFERENCE_END = 'CONFERENCE_END',\n TRANSFER_CONFERENCE = 'TRANSFER_CONFERENCE',\n TRANSFER_CONFERENCE_SUCCESS = 'TRANSFER_CONFERENCE_SUCCESS',\n TRANSFER_CONFERENCE_FAILED = 'TRANSFER_CONFERENCE_FAILED',\n PARTICIPANT_LEAVE = 'PARTICIPANT_LEAVE',\n EXIT_CONFERENCE = 'EXIT_CONFERENCE',\n EXIT_CONFERENCE_SUCCESS = 'EXIT_CONFERENCE_SUCCESS',\n EXIT_CONFERENCE_FAILED = 'EXIT_CONFERENCE_FAILED',\n\n // Recording events\n RECORDING_STARTED = 'RECORDING_STARTED',\n PAUSE_RECORDING = 'PAUSE_RECORDING',\n RESUME_RECORDING = 'RESUME_RECORDING',\n\n // Transfer events\n TRANSFER_SUCCESS = 'TRANSFER_SUCCESS',\n TRANSFER_FAILED = 'TRANSFER_FAILED',\n\n // Wrapup events\n WRAPUP_COMPLETE = 'WRAPUP_COMPLETE',\n\n // End events\n TASK_WRAPUP = 'TASK_WRAPUP',\n RONA = 'RONA', // Ring On No Answer\n CONTACT_ENDED = 'CONTACT_ENDED',\n\n // Failure events\n ASSIGN_FAILED = 'ASSIGN_FAILED',\n INVITE_FAILED = 'INVITE_FAILED',\n OUTBOUND_FAILED = 'OUTBOUND_FAILED',\n\n // Switch events (toggle between consult and main call)\n SWITCH_TO_MAIN_CALL = 'SWITCH_TO_MAIN_CALL',\n SWITCH_TO_CONSULT = 'SWITCH_TO_CONSULT',\n\n // Accept/Decline (WebRTC)\n ACCEPT = 'ACCEPT',\n DECLINE = 'DECLINE',\n END = 'END',\n\n // Queue events\n CTQ_CANCEL = 'CTQ_CANCEL', // Cancel To Queue\n CTQ_CANCEL_FAILED = 'CTQ_CANCEL_FAILED',\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAMA,yCAAyC,GAAAC,OAAA,CAAAD,yCAAA,GAAG,CAAC;;AAE1D;AACA;AACA;;AAEA;AACO,MAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG;EAC9BC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,GAAG,EAAE;AACP,CAAU;AAIV;AACA;AACA;;AAEA;AACO,MAAMC,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAG,SAAS;;AAE3C;AACO,MAAMC,oBAAoB,GAAAN,OAAA,CAAAM,oBAAA,GAAG,UAAU;;AAE9C;AACA;AACA;;AAEA;AACO,MAAMC,iBAAiB,GAAAP,OAAA,CAAAO,iBAAA,GAAG;EAC/BC,UAAU,EAAE,YAAY;EACxBC,SAAS,EAAE,WAAW;EACtBC,UAAU,EAAE,YAAY;EACxBC,SAAS,EAAE,WAAW;EACtBC,GAAG,EAAE;AACP,CAAU;;AAEV;AACO,MAAMC,aAAa,GAAAb,OAAA,CAAAa,aAAA,GAAG;EAC3BL,UAAU,EAAE,YAAY;EACxBM,YAAY,EAAE;AAChB,CAAU;;AAEV;AACA;AACA;AAAA,IAEYC,SAAS,GAAAf,OAAA,CAAAe,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAKnB;EALUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAkBnB;EAlBUA,SAAS;EAATA,SAAS;EAqBnB;EArBUA,SAAS;EAuBnB;EAvBUA,SAAS;EAyBnB;EAzBUA,SAAS;EAAA,OAATA,SAAS;AAAA;AAAA,IA6BTC,SAAS,GAAAhB,OAAA,CAAAgB,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAInB;EAJUA,SAAS;EAATA,SAAS;EAQnB;EARUA,SAAS;EAATA,SAAS;EAYnB;EAZUA,SAAS;EAenB;EAfUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAuBnB;EAvBUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EA+BnB;EA/BUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EA4CnB;EA5CUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAiDnB;EAjDUA,SAAS;EAATA,SAAS;EAqDnB;EArDUA,SAAS;EAwDnB;EAxDUA,SAAS;EAATA,SAAS;EA0DJ;EA1DLA,SAAS;EA6DnB;EA7DUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAkEnB;EAlEUA,SAAS;EAATA,SAAS;EAsEnB;EAtEUA,SAAS;EAATA,SAAS;EAATA,SAAS;EA2EnB;EA3EUA,SAAS;EA4EQ;EA5EjBA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|