@webex/contact-center 3.12.0-next.8 → 3.12.0-next.81
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/AGENTS.md +438 -0
- package/ai-docs/README.md +131 -0
- package/ai-docs/RULES.md +455 -0
- package/ai-docs/patterns/event-driven-patterns.md +485 -0
- package/ai-docs/patterns/testing-patterns.md +480 -0
- package/ai-docs/patterns/typescript-patterns.md +365 -0
- package/ai-docs/templates/README.md +102 -0
- package/ai-docs/templates/documentation/create-agents-md.md +240 -0
- package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
- package/ai-docs/templates/existing-service/bug-fix.md +254 -0
- package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
- package/ai-docs/templates/new-method/00-master.md +80 -0
- package/ai-docs/templates/new-method/01-requirements.md +232 -0
- package/ai-docs/templates/new-method/02-implementation.md +295 -0
- package/ai-docs/templates/new-method/03-tests.md +201 -0
- package/ai-docs/templates/new-method/04-validation.md +141 -0
- package/ai-docs/templates/new-service/00-master.md +109 -0
- package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
- package/ai-docs/templates/new-service/02-code-generation.md +346 -0
- package/ai-docs/templates/new-service/03-integration.md +178 -0
- package/ai-docs/templates/new-service/04-test-generation.md +205 -0
- package/ai-docs/templates/new-service/05-validation.md +145 -0
- package/dist/cc.js +265 -29
- package/dist/cc.js.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +16 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js +20 -5
- package/dist/index.js.map +1 -1
- package/dist/metrics/behavioral-events.js +101 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +23 -4
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/ApiAiAssistant.js +74 -3
- package/dist/services/ApiAiAssistant.js.map +1 -1
- package/dist/services/UserPreference.js +427 -0
- package/dist/services/UserPreference.js.map +1 -0
- package/dist/services/config/Util.js +3 -3
- package/dist/services/config/Util.js.map +1 -1
- package/dist/services/config/constants.js +23 -2
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/types.js +49 -9
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/core/Err.js.map +1 -1
- package/dist/services/core/Utils.js +107 -32
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/websocket/WebSocketManager.js +2 -1
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/core/websocket/types.js.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/task/Task.js +688 -0
- package/dist/services/task/Task.js.map +1 -0
- package/dist/services/task/TaskFactory.js +45 -0
- package/dist/services/task/TaskFactory.js.map +1 -0
- package/dist/services/task/TaskManager.js +725 -526
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +162 -26
- package/dist/services/task/TaskUtils.js.map +1 -1
- package/dist/services/task/constants.js +9 -2
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/dialer.js +78 -0
- package/dist/services/task/dialer.js.map +1 -1
- package/dist/services/task/digital/Digital.js +77 -0
- package/dist/services/task/digital/Digital.js.map +1 -0
- package/dist/services/task/state-machine/TaskStateMachine.js +837 -0
- package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
- package/dist/services/task/state-machine/actions.js +543 -0
- package/dist/services/task/state-machine/actions.js.map +1 -0
- package/dist/services/task/state-machine/constants.js +161 -0
- package/dist/services/task/state-machine/constants.js.map +1 -0
- package/dist/services/task/state-machine/guards.js +340 -0
- package/dist/services/task/state-machine/guards.js.map +1 -0
- package/dist/services/task/state-machine/index.js +53 -0
- package/dist/services/task/state-machine/index.js.map +1 -0
- package/dist/services/task/state-machine/types.js +54 -0
- package/dist/services/task/state-machine/types.js.map +1 -0
- package/dist/services/task/state-machine/uiControlsComputer.js +553 -0
- package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
- package/dist/services/task/taskDataNormalizer.js +99 -0
- package/dist/services/task/taskDataNormalizer.js.map +1 -0
- package/dist/services/task/types.js +212 -4
- package/dist/services/task/types.js.map +1 -1
- package/dist/services/task/voice/Voice.js +1042 -0
- package/dist/services/task/voice/Voice.js.map +1 -0
- package/dist/services/task/voice/WebRTC.js +149 -0
- package/dist/services/task/voice/WebRTC.js.map +1 -0
- package/dist/types/cc.d.ts +94 -1
- package/dist/types/config.d.ts +6 -0
- package/dist/types/constants.d.ts +16 -1
- package/dist/types/index.d.ts +21 -6
- package/dist/types/metrics/constants.d.ts +19 -1
- package/dist/types/services/ApiAiAssistant.d.ts +11 -3
- package/dist/types/services/UserPreference.d.ts +118 -0
- package/dist/types/services/config/constants.d.ts +21 -0
- package/dist/types/services/config/types.d.ts +171 -10
- package/dist/types/services/core/Err.d.ts +4 -0
- package/dist/types/services/core/Utils.d.ts +33 -13
- package/dist/types/services/core/websocket/WebSocketManager.d.ts +1 -0
- package/dist/types/services/core/websocket/types.d.ts +1 -1
- package/dist/types/services/index.d.ts +1 -1
- package/dist/types/services/task/Task.d.ts +157 -0
- package/dist/types/services/task/TaskFactory.d.ts +12 -0
- package/dist/types/services/task/TaskUtils.d.ts +46 -2
- package/dist/types/services/task/constants.d.ts +7 -0
- package/dist/types/services/task/dialer.d.ts +30 -0
- package/dist/types/services/task/digital/Digital.d.ts +22 -0
- package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1144 -0
- package/dist/types/services/task/state-machine/actions.d.ts +10 -0
- package/dist/types/services/task/state-machine/constants.d.ts +107 -0
- package/dist/types/services/task/state-machine/guards.d.ts +90 -0
- package/dist/types/services/task/state-machine/index.d.ts +13 -0
- package/dist/types/services/task/state-machine/types.d.ts +267 -0
- package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
- package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
- package/dist/types/services/task/types.d.ts +603 -66
- package/dist/types/services/task/voice/Voice.d.ts +184 -0
- package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
- package/dist/types/types.d.ts +94 -0
- package/dist/types/webex.d.ts +1 -0
- package/dist/types.js +85 -0
- package/dist/types.js.map +1 -1
- package/dist/webex.js +14 -2
- package/dist/webex.js.map +1 -1
- package/package.json +15 -12
- package/src/cc.ts +329 -30
- package/src/config.ts +6 -0
- package/src/constants.ts +16 -1
- package/src/index.ts +23 -5
- package/src/metrics/ai-docs/AGENTS.md +348 -0
- package/src/metrics/ai-docs/ARCHITECTURE.md +336 -0
- package/src/metrics/behavioral-events.ts +106 -0
- package/src/metrics/constants.ts +23 -4
- package/src/services/ApiAiAssistant.ts +104 -3
- package/src/services/UserPreference.ts +509 -0
- package/src/services/agent/ai-docs/AGENTS.md +238 -0
- package/src/services/agent/ai-docs/ARCHITECTURE.md +302 -0
- package/src/services/ai-docs/AGENTS.md +384 -0
- package/src/services/config/Util.ts +3 -3
- package/src/services/config/ai-docs/AGENTS.md +253 -0
- package/src/services/config/ai-docs/ARCHITECTURE.md +424 -0
- package/src/services/config/constants.ts +25 -1
- package/src/services/config/types.ts +174 -11
- package/src/services/core/Err.ts +2 -0
- package/src/services/core/Utils.ts +123 -37
- package/src/services/core/ai-docs/AGENTS.md +379 -0
- package/src/services/core/ai-docs/ARCHITECTURE.md +696 -0
- package/src/services/core/websocket/WebSocketManager.ts +2 -0
- package/src/services/core/websocket/types.ts +1 -1
- package/src/services/index.ts +1 -1
- package/src/services/task/Task.ts +837 -0
- package/src/services/task/TaskFactory.ts +55 -0
- package/src/services/task/TaskManager.ts +738 -613
- package/src/services/task/TaskUtils.ts +205 -25
- package/src/services/task/ai-docs/AGENTS.md +455 -0
- package/src/services/task/ai-docs/ARCHITECTURE.md +585 -0
- package/src/services/task/constants.ts +7 -0
- package/src/services/task/dialer.ts +80 -0
- package/src/services/task/digital/Digital.ts +95 -0
- package/src/services/task/state-machine/TaskStateMachine.ts +1077 -0
- package/src/services/task/state-machine/actions.ts +685 -0
- package/src/services/task/state-machine/ai-docs/AGENTS.md +495 -0
- package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1135 -0
- package/src/services/task/state-machine/constants.ts +172 -0
- package/src/services/task/state-machine/guards.ts +406 -0
- package/src/services/task/state-machine/index.ts +28 -0
- package/src/services/task/state-machine/types.ts +241 -0
- package/src/services/task/state-machine/uiControlsComputer.ts +867 -0
- package/src/services/task/taskDataNormalizer.ts +137 -0
- package/src/services/task/types.ts +710 -71
- package/src/services/task/voice/Voice.ts +1267 -0
- package/src/services/task/voice/WebRTC.ts +187 -0
- package/src/types.ts +122 -2
- package/src/utils/AGENTS.md +276 -0
- package/src/webex.js +2 -0
- package/test/unit/spec/cc.ts +343 -23
- package/test/unit/spec/logger-proxy.ts +70 -0
- package/test/unit/spec/services/ApiAiAssistant.ts +122 -17
- package/test/unit/spec/services/UserPreference.ts +401 -0
- package/test/unit/spec/services/WebCallingService.ts +7 -1
- package/test/unit/spec/services/config/index.ts +30 -30
- package/test/unit/spec/services/core/Utils.ts +425 -8
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +66 -40
- package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
- package/test/unit/spec/services/task/Task.ts +477 -0
- package/test/unit/spec/services/task/TaskFactory.ts +62 -0
- package/test/unit/spec/services/task/TaskManager.ts +832 -1702
- package/test/unit/spec/services/task/TaskUtils.ts +206 -0
- package/test/unit/spec/services/task/dialer.ts +190 -0
- package/test/unit/spec/services/task/digital/Digital.ts +105 -0
- package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +1825 -0
- package/test/unit/spec/services/task/state-machine/guards.ts +479 -0
- package/test/unit/spec/services/task/state-machine/types.ts +18 -0
- package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +2020 -0
- package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
- package/test/unit/spec/services/task/voice/Voice.ts +631 -0
- package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
- package/dist/services/task/index.js +0 -1525
- package/dist/services/task/index.js.map +0 -1
- package/dist/types/services/task/index.d.ts +0 -650
- package/src/services/task/index.ts +0 -1801
- package/test/unit/spec/services/task/index.ts +0 -2184
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_xstate","require","_constants","_actions","_guards","_TaskUtils","taskStateMachineSetup","setup","actors","types","context","events","getTaskStateMachineConfig","uiControlConfig","id","initial","TaskState","IDLE","createInitialContext","on","TaskEvent","RECORDING_STARTED","actions","CONTACT_UPDATED","CONTACT_OWNER_CHANGED","HYDRATE","CONSULT_CREATED","CONSULT_FAILED","states","guard","guards","isInteractionTerminated","target","WRAPPING_UP","isInteractionConsulting","CONSULTING","isInteractionHeld","HELD","isInteractionConnected","CONNECTED","isConferencingByParticipants","CONFERENCING","TASK_INCOMING","isCampaignReservationAccept","OFFERED","OUTBOUND_FAILED","TERMINATED","CONSULTING_ACTIVE","TASK_OFFERED","ASSIGN","isConsultingAssignment","RONA","TASK_WRAPUP","CONTACT_ENDED","ASSIGN_FAILED","INVITE_FAILED","shouldWrapUp","CAMPAIGN_PREVIEW_ACCEPT_FAILED","CAMPAIGN_PREVIEW_SKIP_FAILED","CAMPAIGN_PREVIEW_REMOVE_FAILED","OFFER_CONSULT","CONSULT_END","CONFERENCE_START","HOLD_INITIATED","HOLD_INITIATING","HOLD_SUCCESS","CONSULT","CONSULT_INITIATING","TRANSFER_SUCCESS","shouldWrapUpOrIsInitiator","TRANSFER_FAILED","event","consultInitiator","taskData","getTaskDataFromEvent","mainId","interaction","mainInteractionId","interactionId","Boolean","media","isHold","isCampaignPreviewContactEnded","conferenceInProgressFromEvent","PAUSE_RECORDING","RESUME_RECORDING","HOLD_FAILED","UNHOLD_INITIATED","RESUME_INITIATING","UNHOLD_SUCCESS","UNHOLD_FAILED","CONSULT_SUCCESS","consultFromConference","isPrimaryMediaOnHold","CTQ_CANCEL","isConferenceHoldParticipantFromEvent","consultCallHeld","cpd","callProcessingDetails","hasCustomerLeft","isTerminated","shouldWrapUpForThisAgent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","TRANSFER_CONFERENCE","TRANSFER_CONFERENCE_SUCCESS","transferConferenceRequested","TRANSFER_CONFERENCE_FAILED","MERGE_TO_CONFERENCE","CONF_INITIATING","CONFERENCE_FAILED","EXIT_CONFERENCE_SUCCESS","shouldDowngradeConferenceToConnected","PARTICIPANT_LEAVE","params","didCurrentAgentLeaveConference","CONFERENCE_END","exitingConference","mainCallId","getIsCustomerInCall","entry","WRAPUP_COMPLETE","COMPLETED","type","createTaskStateMachine","options","createMachine","provide"],"sources":["TaskStateMachine.ts"],"sourcesContent":["/**\n * Task State Machine Configuration\n *\n * This file defines the XState state machine configuration for contact center tasks.\n * It orchestrates state transitions, guards, and actions for task lifecycle management.\n *\n * GUARD FUNCTIONS: All guard logic is centralized in guards.ts for reusability and testing.\n * This file imports and uses those guards via the `guards` object.\n */\n\nimport {setup} from 'xstate';\nimport {TaskContext, TaskEventPayload, UIControlConfig, TaskActionsMap} from './types';\nimport {TaskState, TaskEvent} from './constants';\nimport {actions, createInitialContext} from './actions';\nimport {guards, shouldWrapUpForThisAgent, getTaskDataFromEvent} from './guards';\nimport {getIsCustomerInCall} from '../TaskUtils';\n\ntype TaskActionConfigMap = {[K in keyof typeof actions]: undefined};\n\nconst taskStateMachineSetup = setup<\n TaskContext,\n TaskEventPayload,\n Record<string, never>,\n Record<string, never>,\n TaskActionConfigMap\n>({\n actors: {},\n types: {\n context: {} as TaskContext,\n events: {} as TaskEventPayload,\n },\n});\n\n/**\n * Get task state machine configuration with UI control config\n * Defines all states, transitions, guards, and actions for task management\n *\n * @param uiControlConfig - UI control configuration\n * @returns State machine configuration object\n */\nexport function getTaskStateMachineConfig(uiControlConfig: UIControlConfig) {\n /**\n * Event mapping reference (CC WebSocket -> TaskEvent)\n *\n * AgentContactReserved -> TaskEvent.TASK_INCOMING\n * AgentOfferContact -> TaskEvent.TASK_OFFERED\n * AgentOfferConsult -> TaskEvent.OFFER_CONSULT\n * AgentConsulting -> TaskEvent.CONSULTING_ACTIVE\n * AgentConsultCreated -> TaskEvent.CONSULT_CREATED\n * AgentConsultTransferred -> TaskEvent.TRANSFER_SUCCESS\n * AgentContactAssigned -> TaskEvent.ASSIGN\n * AgentContactHeld -> TaskEvent.HOLD_SUCCESS\n * AgentContactUnheld -> TaskEvent.UNHOLD_SUCCESS\n * AgentConsultEnded -> TaskEvent.CONSULT_END\n * AgentContactEnded -> TaskEvent.CONTACT_ENDED\n * AgentWrapup -> TaskEvent.TASK_WRAPUP (wrapUpRequired)\n * AgentWrappedup -> TaskEvent.WRAPUP_COMPLETE\n *\n * (See TaskManager.mapEventToTaskStateMachineEvent for the full mapping table.)\n */\n return {\n id: 'taskStateMachine',\n initial: TaskState.IDLE,\n context: createInitialContext(uiControlConfig, TaskState.IDLE),\n on: {\n [TaskEvent.RECORDING_STARTED]: {\n actions: ['updateTaskData', 'emitTaskRecordingStarted'],\n },\n [TaskEvent.CONTACT_UPDATED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n [TaskEvent.CONTACT_OWNER_CHANGED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n // HYDRATE: Update task data from AgentContact event\n // Note: State restoration with transitions is handled in IDLE state.\n // This root-level handler is for when task is already in another state (just updates data).\n [TaskEvent.HYDRATE]: {\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n // AgentConsultCreated from Stable Prod while already HELD/CONNECTED (external consult).\n // Child states do not handle CONSULT_CREATED; wire here so updateTaskData + setConsultInitiator run.\n [TaskEvent.CONSULT_CREATED]: {\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // AgentConsultFailed (RONA) while HELD/CONNECTED without passing through CONSULT_INITIATING.\n [TaskEvent.CONSULT_FAILED]: {\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n },\n states: {\n [TaskState.IDLE]: {\n on: {\n // HYDRATE: Restore state machine to correct state based on hydrated task data\n // This handles page refresh/reconnection scenarios where task needs to be restored\n // IMPORTANT: This MUST be in IDLE state (not root) because root-level events cannot\n // transition to child states in XState\n [TaskEvent.HYDRATE]: [\n {\n guard: guards.isInteractionTerminated,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionConsulting,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionHeld,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionConnected,\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isConferencingByParticipants,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n // Default: just update data, stay in IDLE\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n ],\n // AgentContactReserved (direct incoming/consult/transfer/outdial, or campaign preview accept)\n [TaskEvent.TASK_INCOMING]: [\n {\n guard: guards.isCampaignReservationAccept,\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskCampaignPreviewReservation'],\n },\n {\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskIncoming'],\n },\n ],\n\n // AgentOutboundFailed can arrive before TASK_INCOMING due to race conditions\n [TaskEvent.OUTBOUND_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n\n // EP-DN split-leg ordering can deliver AgentConsulting before HYDRATE/TASK_INCOMING.\n // Do not drop it in IDLE; bootstrap to CONSULTING using event taskData.\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n },\n },\n\n [TaskState.OFFERED]: {\n on: {\n // AgentContactOffer\n [TaskEvent.TASK_OFFERED]: {\n actions: ['updateTaskData', 'emitTaskOfferContact', 'requestAutoAnswer'],\n },\n // AgentContactAssigned\n [TaskEvent.ASSIGN]: [\n {\n guard: guards.isConsultingAssignment,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskConsultAccepted', 'emitTaskConsulting'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n ],\n // AgentOfferContactRONA\n [TaskEvent.RONA]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n // This needs to be handled for all assign failed scenarios (contact, buddy)\n // [AgentContactAssignFailed, AgentCtqFailed, AgentBlindTransferFailed,\n // AgentVTeamTransferFailed, AgentConsultTransferFailed]\n [TaskEvent.ASSIGN_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.INVITE_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.CAMPAIGN_PREVIEW_ACCEPT_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewAcceptFailed'],\n },\n [TaskEvent.CAMPAIGN_PREVIEW_SKIP_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewSkipFailed'],\n },\n [TaskEvent.CAMPAIGN_PREVIEW_REMOVE_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewRemoveFailed'],\n },\n // AgentConsulting comes for received after the initial consult is accepted\n [TaskEvent.CONSULTING_ACTIVE]: [\n {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n ],\n // agentOfferConsult happens only on the receiver side of consult\n [TaskEvent.OFFER_CONSULT]: {\n actions: ['updateTaskData', 'emitTaskOfferConsult', 'requestAutoAnswer'],\n },\n // AgentConsultFailed - when consulted agent (Agent 2) doesn't answer (RONA or decline)\n // Clears the incoming consult notification by transitioning to TERMINATED\n [TaskEvent.CONSULT_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskReject'],\n },\n // AgentConsultEnded - when consult initiator (Agent 1) ends the consult before\n // the consulted agent (Agent 2) accepts. Clears the incoming notification.\n [TaskEvent.CONSULT_END]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n },\n },\n\n [TaskState.CONNECTED]: {\n on: {\n // AgentConsultConferenced / ParticipantJoinedConference can arrive while connected.\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n // AgentConsulting may arrive while machine is CONNECTED (EP-DN/event ordering).\n // Derive consultInitiator from payload so controls are set correctly.\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentContactAssigned can be resent after consult transfers; keep context in sync\n /* TODO: This transition needs to be checked if this is even needed as receiver will\n * be in Consult Accept state which can be consulting state and ASSIGNED will be only\n * for the receiver. So receuving ASSIGNED in Connected state is highly unlikely.\n */\n [TaskEvent.ASSIGN]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n // Click of hold button\n [TaskEvent.HOLD_INITIATED]: {\n target: TaskState.HOLD_INITIATING,\n },\n // Remote hold from another login session (multi-login)\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n // Click of the consult button\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination'],\n },\n // AgentConsultTransferred / AgentVTeamTransferred / AgentBlindTransferred\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n // Receiver goes to connected as he receives transferSuccess event\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n // AgentConsultEnded from Stable Prod while on connected leg (external end consult).\n [TaskEvent.CONSULT_END]: [\n {\n guard: ({context, event}) => {\n if (context.consultInitiator !== true) return false;\n const taskData = getTaskDataFromEvent(event);\n const mainId = taskData?.interaction?.mainInteractionId || taskData?.interactionId;\n\n return Boolean(mainId && taskData?.interaction?.media?.[mainId]?.isHold === true);\n },\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n guard: ({context}) => context.consultInitiator === true,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n ],\n // AgentContactEnded Event\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Campaign preview ContactEnded is terminal cleanup; never enter wrapup.\n guard: guards.isCampaignPreviewContactEnded,\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n {\n // Conference still active → CONFERENCING\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n // Agent should wrap up → WRAPPING_UP\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n },\n },\n\n [TaskState.HOLD_INITIATING]: {\n on: {\n // AgentContactHeld Event\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n // AgentContactHoldFailed Event\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData'],\n },\n },\n },\n\n [TaskState.HELD]: {\n on: {\n // Conference can be merged while this agent is in held state after refresh/recovery.\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n // Click of the unhold button\n [TaskEvent.UNHOLD_INITIATED]: {\n target: TaskState.RESUME_INITIATING,\n },\n // Remote resume from another login session (multi-login)\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n // Click of the consult button\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination'],\n },\n // AgentConsulting while main leg is held (Task Refactor / Stable Prod consult accept).\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // TODO: This may not be a valid transition, need to be removed\n // AgentConsultTransferred / AgentVTeamTransferred / AgentBlindTransferred\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Campaign preview ContactEnded is terminal cleanup; never enter wrapup.\n guard: guards.isCampaignPreviewContactEnded,\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n {\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n // AgentConsultEnded from Stable Prod while main leg is held (external end consult).\n [TaskEvent.CONSULT_END]: {\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n // TODO: This may not be a valid transition, this needs to be checked as well\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n },\n },\n\n [TaskState.RESUME_INITIATING]: {\n on: {\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n [TaskEvent.UNHOLD_FAILED]: {\n target: TaskState.HELD,\n },\n },\n },\n\n [TaskState.CONSULT_INITIATING]: {\n on: {\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n // AgentConsulting\n // NOTE: Don't set consultDestinationAgentJoined here - wait for CONSULTING_ACTIVE\n [TaskEvent.CONSULT_SUCCESS]: {\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // AgentConsulting (Task Refactor: AgentConsulting event, not CONSULT_SUCCESS)\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentConsultFailed, API Failures, AgentCtqFailed\n [TaskEvent.CONSULT_FAILED]: [\n {\n // Consult from conference → back to CONFERENCING\n guard: ({context}) => context.consultFromConference === true,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n ],\n // AgentCtqCancelled Event\n [TaskEvent.CTQ_CANCEL]: [\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n // AgentConsultEnded from Stable Prod during consult initiation (external end consult).\n [TaskEvent.CONSULT_END]: [\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n ],\n },\n },\n\n [TaskState.CONSULTING]: {\n on: {\n // AgentConsulting updates consulted agent arrival\n [TaskEvent.CONSULTING_ACTIVE]: {\n actions: [\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'updateTaskData',\n 'emitTaskConsulting',\n ],\n },\n\n // AgentConsultFailed (RONA / consultee declined) while the initiator is already in\n // CONSULTING (AgentConsulting arrived during ringing). Mirror CONSULT_INITIATING so the\n // initiator returns to their own leg (HELD when main is on hold, else CONNECTED) instead\n // of staying in CONSULTING. Without this, handleConsultFailed clears consultInitiator but\n // the machine stays in CONSULTING, so the trailing AgentConsultEnded falls through the\n // CONSULT_END \"consulted agent\" branch to TERMINATED and wrongly clears the task.\n [TaskEvent.CONSULT_FAILED]: [\n {\n guard: ({context}) => context.consultFromConference === true,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n ],\n\n // AgentConsultEnded\n [TaskEvent.CONSULT_END]: [\n {\n // Initiator returning to conference only while conference is still active.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n guards.conferenceInProgressFromEvent({context, event}),\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Conference consult ended after conference downgrade while main leg is held.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n context.consultFromConference === true &&\n !guards.conferenceInProgressFromEvent({context, event}) &&\n guards.isConferenceHoldParticipantFromEvent({context, event}),\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Conference consult ended after conference downgrade while main leg is connected.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n context.consultFromConference === true &&\n !guards.conferenceInProgressFromEvent({context, event}) &&\n !guards.isConferenceHoldParticipantFromEvent({context, event}),\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Initiator already switched back to the main/customer leg\n guard: ({context}) =>\n context.consultInitiator === true && context.consultCallHeld === true,\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Interaction terminated during consult (customer left) → WRAPPING_UP\n guard: ({context, event}) => {\n // if (context.consultInitiator !== true) return false;\n // const taskData = getTaskDataFromEvent(event);\n const taskData = getTaskDataFromEvent(event);\n const cpd = taskData?.interaction?.callProcessingDetails;\n if (cpd?.hasCustomerLeft !== 'true') return false;\n\n return (\n taskData?.interaction?.isTerminated === true &&\n shouldWrapUpForThisAgent(context, taskData)\n );\n },\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n {\n // Initiator (no conference) → HELD\n guard: ({context}) => context.consultInitiator === true,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData'],\n },\n ],\n\n // Switch between consult and main call (UI-driven toggle)\n [TaskEvent.SWITCH_TO_MAIN_CALL]: {\n actions: ['handleSwitchToMainCall', 'emitTaskSwitchCall'],\n },\n [TaskEvent.SWITCH_TO_CONSULT]: {\n actions: ['handleSwitchToConsult', 'emitTaskSwitchCall'],\n },\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n\n [TaskEvent.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 {\n // Conference already downgraded (no other agents) and backend hold arrives.\n // Move to HELD so the UI renders resume action.\n guard: guards.shouldDowngradeConferenceToConnected,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n ],\n [TaskEvent.UNHOLD_SUCCESS]: [\n {\n // Conference already downgraded (no other agents) and backend unhold arrives.\n // Move to CONNECTED so hold action is available again.\n guard: guards.shouldDowngradeConferenceToConnected,\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'setHoldState',\n 'emitTaskResume',\n ],\n },\n {\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'setHoldState',\n 'emitTaskResume',\n ],\n },\n ],\n\n // Start a new consult from within an active conference\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination', 'setConsultFromConference'],\n },\n\n // AgentConsulting while still in conference (EP-DN/external ordering).\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n\n // Participant leaves - handle conference downgrade scenarios\n [TaskEvent.PARTICIPANT_LEAVE]: [\n {\n // Only the leaving agent should wrap up → WRAPPING_UP\n guard: (params) =>\n guards.didCurrentAgentLeaveConference(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskWrapup',\n ],\n },\n {\n // Only the leaving agent (no wrapup) → TERMINATED\n guard: guards.didCurrentAgentLeaveConference,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n {\n // Conference downgraded, customer present → CONNECTED\n guard: (params) =>\n !guards.didCurrentAgentLeaveConference(params) &&\n guards.shouldDowngradeConferenceToConnected(params),\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskConferenceEnded',\n ],\n },\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n\n [TaskEvent.TRANSFER_CONFERENCE]: {\n actions: ['setTransferConferenceRequested', 'emitTaskTransferConference'],\n },\n [TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [\n {\n // 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":[]}
|