@webex/contact-center 3.12.0-next.95 → 3.12.0-next.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/services/task/TaskUtils.js +51 -3
  2. package/dist/services/task/TaskUtils.js.map +1 -1
  3. package/dist/services/task/state-machine/TaskStateMachine.js +50 -14
  4. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -1
  5. package/dist/services/task/state-machine/actions.js +57 -33
  6. package/dist/services/task/state-machine/actions.js.map +1 -1
  7. package/dist/services/task/state-machine/guards.js +42 -0
  8. package/dist/services/task/state-machine/guards.js.map +1 -1
  9. package/dist/services/task/state-machine/types.js.map +1 -1
  10. package/dist/services/task/state-machine/uiControlsComputer.js +78 -28
  11. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -1
  12. package/dist/services/task/voice/Voice.js +5 -3
  13. package/dist/services/task/voice/Voice.js.map +1 -1
  14. package/dist/types/services/task/TaskUtils.d.ts +2 -0
  15. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +72 -22
  16. package/dist/types/services/task/state-machine/guards.d.ts +12 -0
  17. package/dist/types/services/task/state-machine/types.d.ts +2 -0
  18. package/dist/webex.js +1 -1
  19. package/package.json +2 -2
  20. package/src/services/task/TaskUtils.ts +100 -2
  21. package/src/services/task/state-machine/TaskStateMachine.ts +101 -12
  22. package/src/services/task/state-machine/actions.ts +88 -35
  23. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +73 -11
  24. package/src/services/task/state-machine/guards.ts +39 -0
  25. package/src/services/task/state-machine/types.ts +2 -0
  26. package/src/services/task/state-machine/uiControlsComputer.ts +135 -41
  27. package/src/services/task/voice/Voice.ts +6 -3
  28. package/test/unit/spec/services/task/TaskUtils.ts +29 -0
  29. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +826 -0
  30. package/test/unit/spec/services/task/state-machine/guards.ts +158 -0
  31. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +648 -5
  32. package/test/unit/spec/services/task/voice/Voice.ts +18 -0
  33. package/umd/contact-center.min.js +2 -2
  34. package/umd/contact-center.min.js.map +1 -1
@@ -97,9 +97,11 @@ class Voice extends _Task.default {
97
97
  const mainMediaResource = this.data.interaction?.media?.[mainInteractionId]?.mediaResourceId || this.data.mediaResourceId;
98
98
  const mediaHoldState = this.data.interaction?.media?.[mainInteractionId]?.isHold ?? this.data.interaction.media?.[mainMediaResource]?.isHold;
99
99
  let shouldHold = !(mediaHoldState ?? false);
100
- if (snapshotState === _stateMachine.TaskState.HELD) {
100
+ if (snapshotState === _stateMachine.TaskState.HELD || snapshotState === _stateMachine.TaskState.RESUME_INITIATING) {
101
101
  shouldHold = false;
102
- } else if (snapshotState === _stateMachine.TaskState.CONNECTED) {
102
+ } else if (snapshotState === _stateMachine.TaskState.CONNECTED && mediaHoldState !== true) {
103
+ // CONNECTED with isHold:true can happen after consult RONA/decline when event ordering
104
+ // leaves the machine in CONNECTED while main media is still on hold — resume on first click.
103
105
  shouldHold = true;
104
106
  }
105
107
 
@@ -117,7 +119,7 @@ class Voice extends _Task.default {
117
119
  });
118
120
  throw error;
119
121
  }
120
- } else if (!state.matches(_stateMachine.TaskState.HELD) && !(state.matches(_stateMachine.TaskState.CONFERENCING) && mediaHoldState === true)) {
122
+ } else if (!state.matches(_stateMachine.TaskState.HELD) && !(state.matches(_stateMachine.TaskState.CONFERENCING) && mediaHoldState === true) && !(state.matches(_stateMachine.TaskState.CONNECTED) && mediaHoldState === true)) {
121
123
  const error = new Error(`Cannot resume call in current state: ${currentState}`);
122
124
  _loggerProxy.default.error('Resume operation not allowed', {
123
125
  module: _constants.CC_FILE,
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_Utils","_types","_Task","_interopRequireDefault","_loggerProxy","_MetricsManager","_constants2","_stateMachine","_TaskUtils","e","__esModule","default","Voice","Task","constructor","contact","data","callOptions","wrapupData","agentId","resolvedOptions","isEndTaskEnabled","isEndConsultEnabled","voiceVariant","VOICE_VARIANT","PSTN","isRecordingEnabled","getStateMachineSnapshot","stateMachineService","getSnapshot","accept","unsupportedMethodError","METHODS","ACCEPT","decline","REJECT","hold","holdResume","resume","snapshot","snapshotState","value","mainInteractionId","interaction","interactionId","mainMediaResource","media","mediaResourceId","mediaHoldState","isHold","shouldHold","TaskState","HELD","CONNECTED","state","currentState","matches","error","Error","LoggerProxy","module","CC_FILE","method","HOLD_RESUME","CONFERENCING","initiatingEvent","TaskEvent","HOLD_INITIATED","UNHOLD_INITIATED","send","type","info","successEvt","failedEvt","METRIC_EVENT_NAMES","TASK_HOLD_SUCCESS","TASK_HOLD_FAILED","TASK_RESUME_SUCCESS","TASK_RESUME_FAILED","metricsManager","timeEvent","response","HOLD_SUCCESS","trackEvent","taskId","MetricsManager","getCommonTrackingFieldForAQMResponse","log","trackingId","unHold","UNHOLD_SUCCESS","failureEvent","HOLD_FAILED","UNHOLD_FAILED","reason","toString","detailedError","getErrorDetails","getCommonTrackingFieldForAQMResponseFailed","details","pauseRecording","recordingControlsAvailable","recordingInProgress","context","recordingActive","Boolean","TASK_PAUSE_RECORDING_SUCCESS","TASK_PAUSE_RECORDING_FAILED","result","resumeRecording","resumeRecordingPayload","recordingPaused","TASK_RESUME_RECORDING_SUCCESS","TASK_RESUME_RECORDING_FAILED","autoResumed","consult","consultPayload","canConsult","CONSULT","destination","to","destinationType","requestInteractionId","TASK_CONSULT_START_SUCCESS","TASK_CONSULT_START_FAILED","CONSULT_SUCCESS","taskData","CONSULT_FAILED","endConsult","consultEndPayload","TASK_CONSULT_END_SUCCESS","TASK_CONSULT_END_FAILED","consultEnd","transfer","payload","TRANSFER_CALL","TASK_TRANSFER_SUCCESS","TASK_TRANSFER_FAILED","normalizedDestinationType","toLowerCase","CONSULT_TRANSFER_DESTINATION_TYPE","QUEUE","consultContext","destAgent","consultDestinationAgentId","destAgentId","AGENT","consultTransfer","isConsultTransfer","err","consultConference","derivedDestAgentId","calculateDestAgentId","derivedDestType","calculateDestType","resolvedDestinationType","consultDestinationType","consultationData","MERGE_TO_CONFERENCE","CONSULT_CONFERENCE","paramsDataForConferenceV2","buildConsultConferenceParamData","CONFERENCE_START","TASK_CONFERENCE_START_SUCCESS","CONFERENCE_FAILED","failedParamsData","TASK_CONFERENCE_START_FAILED","exitConference","isConferencingState","isConferenceInProgressFromData","getIsConferenceInProgress","EXIT_CONFERENCE","TASK_CONFERENCE_EXIT_SUCCESS","TASK_CONFERENCE_EXIT_FAILED","EXIT_CONFERENCE_SUCCESS","EXIT_CONFERENCE_FAILED","transferConference","isValidState","CONSULTING","TRANSFER_CONFERENCE","TASK_CONFERENCE_TRANSFER_SUCCESS","TASK_CONFERENCE_TRANSFER_FAILED","conferenceTransfer","TRANSFER_CONFERENCE_SUCCESS","TRANSFER_CONFERENCE_FAILED","switchCall","consultMediaResourceId","getConsultMediaResourceId","isOnConsultLeg","consultCallHeld","targetEvent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","revertEvent","TASK_SWITCH_CALL_SUCCESS","TASK_SWITCH_CALL_FAILED","direction","getChannelSpecificActionOverrides","baseOverrides","emitTaskHold","createEmitSelfAction","TASK_EVENTS","TASK_HOLD","updateTaskData","emitTaskResume","TASK_RESUME","emitTaskRecordingStarted","TASK_RECORDING_STARTED","emitTaskRecordingPaused","TASK_RECORDING_PAUSED","emitTaskRecordingPauseFailed","TASK_RECORDING_PAUSE_FAILED","emitTaskRecordingResumed","TASK_RECORDING_RESUMED","emitTaskRecordingResumeFailed","TASK_RECORDING_RESUME_FAILED","emitTaskParticipantJoined","TASK_PARTICIPANT_JOINED","emitTaskParticipantLeft","TASK_PARTICIPANT_LEFT","emitTaskConferenceStarted","TASK_CONFERENCE_STARTED","emitTaskConferenceEnded","TASK_CONFERENCE_ENDED","emitTaskConferenceFailed","TASK_CONFERENCE_FAILED","emitTaskExitConference","TASK_EXIT_CONFERENCE","emitTaskTransferConference","TASK_TRANSFER_CONFERENCE","emitTaskSwitchCall","TASK_SWITCH_CALL","emitTaskTransferConferenceFailed","emitTaskOutdialFailed","event","emit","TASK_OUTDIAL_FAILED","exports"],"sources":["Voice.ts"],"sourcesContent":["import {CC_FILE, METHODS} from '../../../constants';\nimport {\n buildConsultConferenceParamData,\n calculateDestAgentId,\n calculateDestType,\n getErrorDetails,\n} from '../../core/Utils';\nimport routingContact from '../contact';\nimport {\n ConsultPayload,\n ConsultEndPayload,\n ResumeRecordingPayload,\n TaskData,\n TaskResponse,\n IVoice,\n VoiceUIControlOptions,\n TransferPayLoad,\n ConsultTransferPayLoad,\n consultConferencePayloadData,\n CONSULT_TRANSFER_DESTINATION_TYPE,\n TASK_EVENTS,\n VOICE_VARIANT,\n} from '../types';\nimport Task from '../Task';\nimport LoggerProxy from '../../../logger-proxy';\nimport MetricsManager from '../../../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../../../metrics/constants';\nimport {TaskState, TaskEvent, TaskActionArgs} from '../state-machine';\nimport {WrapupData} from '../../config/types';\nimport {getConsultMediaResourceId, getIsConferenceInProgress} from '../TaskUtils';\n\nexport default class Voice extends Task implements IVoice {\n constructor(\n contact: ReturnType<typeof routingContact>,\n data: TaskData,\n callOptions?: VoiceUIControlOptions,\n wrapupData?: WrapupData,\n agentId?: string\n ) {\n const resolvedOptions = {\n isEndTaskEnabled: callOptions?.isEndTaskEnabled ?? true,\n isEndConsultEnabled: callOptions?.isEndConsultEnabled ?? true,\n voiceVariant: callOptions?.voiceVariant ?? VOICE_VARIANT.PSTN,\n isRecordingEnabled: callOptions?.isRecordingEnabled ?? true,\n };\n\n super(\n contact,\n data,\n {\n ...resolvedOptions,\n },\n wrapupData,\n agentId\n );\n }\n\n private getStateMachineSnapshot() {\n return this.stateMachineService?.getSnapshot?.();\n }\n\n /**\n * This method is used to accept the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async accept(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.ACCEPT);\n }\n\n /**\n * This method is used to decline the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async decline(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.REJECT);\n }\n\n /**\n * This is used to hold the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.hold().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async hold(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to resume the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resume().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async resume(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to hold or resume the task.\n * @param isHeld: boolean - true to hold the task, false to resume it\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.holdResume(isHeld: true).then(()=>{}).catch(()=>{})\n * ```\n * */\n public async holdResume(): Promise<TaskResponse> {\n /* \n Determine if the task is being held or resumed based on the media resource state\n If the media resource is not found, default to resuming the task\n */\n const snapshot = this.getStateMachineSnapshot();\n const snapshotState = snapshot?.value as TaskState | undefined;\n const mainInteractionId = this.data.interaction?.mainInteractionId || this.data.interactionId;\n const mainMediaResource =\n this.data.interaction?.media?.[mainInteractionId]?.mediaResourceId ||\n this.data.mediaResourceId;\n const mediaHoldState =\n this.data.interaction?.media?.[mainInteractionId]?.isHold ??\n this.data.interaction.media?.[mainMediaResource]?.isHold;\n let shouldHold = !(mediaHoldState ?? false);\n if (snapshotState === TaskState.HELD) {\n shouldHold = false;\n } else if (snapshotState === TaskState.CONNECTED) {\n shouldHold = true;\n }\n\n // Validate operation is allowed in current state\n const state = snapshot;\n if (state) {\n const currentState = state.value as TaskState;\n if (shouldHold) {\n if (!state.matches(TaskState.CONNECTED)) {\n const error = new Error(`Cannot hold call in current state: ${currentState}`);\n LoggerProxy.error('Hold operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n } else if (\n !state.matches(TaskState.HELD) &&\n !(state.matches(TaskState.CONFERENCING) && mediaHoldState === true)\n ) {\n const error = new Error(`Cannot resume call in current state: ${currentState}`);\n LoggerProxy.error('Resume operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n // Send initiating event to transition to intermediate state\n if (this.stateMachineService) {\n const initiatingEvent = shouldHold ? TaskEvent.HOLD_INITIATED : TaskEvent.UNHOLD_INITIATED;\n this.stateMachineService.send({\n type: initiatingEvent,\n mediaResourceId: mainMediaResource,\n });\n }\n\n LoggerProxy.info(`${shouldHold ? 'Holding' : 'Resuming'} task`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n const [successEvt, failedEvt] = shouldHold\n ? [METRIC_EVENT_NAMES.TASK_HOLD_SUCCESS, METRIC_EVENT_NAMES.TASK_HOLD_FAILED]\n : [METRIC_EVENT_NAMES.TASK_RESUME_SUCCESS, METRIC_EVENT_NAMES.TASK_RESUME_FAILED];\n\n this.metricsManager.timeEvent([successEvt, failedEvt]);\n\n try {\n let response: TaskResponse;\n if (shouldHold) {\n response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.HOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task placed on hold successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n } else {\n response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.UNHOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mainInteractionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task resumed successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n }\n\n return response;\n } catch (error) {\n const failureEvent = shouldHold ? TaskEvent.HOLD_FAILED : TaskEvent.UNHOLD_FAILED;\n this.stateMachineService.send({\n type: failureEvent,\n reason: error.toString(),\n mediaResourceId: this.data.mediaResourceId,\n });\n\n const {error: detailedError} = getErrorDetails(error, 'holdResume', CC_FILE);\n this.metricsManager.trackEvent(\n failedEvt,\n shouldHold\n ? {\n taskId: this.data.interactionId,\n mediaResourceId: this.data.mediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n }\n : {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.pauseRecording().then(()=>{}).catch(()=>{});\n * ```\n */\n public async pauseRecording(): Promise<TaskResponse> {\n // Validate recording is active\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingActive = Boolean(recordingControlsAvailable && recordingInProgress);\n if (!recordingActive) {\n const error = new Error('Recording is not active or already paused');\n LoggerProxy.error('Pause recording operation not allowed', {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Pausing recording`, {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n ]);\n const result = await this.contact.pauseRecording({interactionId: this.data.interactionId});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording paused successfully`, {\n module: CC_FILE,\n method: 'pauseRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'pauseRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @param resumeRecordingPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resumeRecording(resumeRecordingPayload).then(()=>{}).catch(()=>{});\n * ```\n */\n public async resumeRecording(\n resumeRecordingPayload?: ResumeRecordingPayload\n ): Promise<TaskResponse> {\n // Validate recording is paused\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingPaused = Boolean(recordingControlsAvailable && !recordingInProgress);\n if (!recordingPaused) {\n const error = new Error('Recording is not paused');\n LoggerProxy.error('Resume recording operation not allowed', {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Resuming recording`, {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n ]);\n resumeRecordingPayload ??= {autoResumed: false};\n\n const result = await this.contact.resumeRecording({\n interactionId: this.data.interactionId,\n data: resumeRecordingPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording resumed successfully`, {\n module: CC_FILE,\n method: 'resumeRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'resumeRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to consult the task\n * @param consultPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * const consultPayload = {\n * destination: 'myBuddyAgentId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * }\n * task.consult(consultPayload).then(()=>{}).catch(()=>{});\n * ```\n * */\n public async consult(consultPayload?: ConsultPayload): Promise<TaskResponse> {\n // Validate consult is allowed\n const state = this.getStateMachineSnapshot();\n const canConsult =\n state &&\n (state.matches(TaskState.CONNECTED) ||\n state.matches(TaskState.HELD) ||\n state.matches(TaskState.CONFERENCING));\n\n if (!canConsult) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot initiate consult in ${currentState} state`);\n LoggerProxy.error('Consult operation not allowed', {\n module: CC_FILE,\n method: 'consult',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send initiating event to transition to CONSULT_INITIATING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Starting consult`, {\n module: CC_FILE,\n method: 'consult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n ]);\n const result = await this.contact.consult({\n interactionId: requestInteractionId,\n data: consultPayload,\n });\n\n // Send success event to transition to CONSULTING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_SUCCESS,\n taskData: result.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult successfully initiated to ${consultPayload.to}`, {\n module: CC_FILE,\n method: 'consult',\n trackingId: result.trackingId,\n interactionId: requestInteractionId,\n });\n\n return result;\n } catch (error) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_FAILED,\n reason: error.toString(),\n });\n\n const {error: detailedError} = getErrorDetails(error, 'consult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to end the consult session on the task.\n * @param consultEndPayload - Payload indicating consult end flags and identifiers\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.endConsult({\n * isConsult: true,\n * queueId: 'myQueueId',\n * taskId: 'taskId',\n * });\n * ```\n */\n public async endConsult(consultEndPayload?: ConsultEndPayload): Promise<TaskResponse> {\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Ending consult`, {\n module: CC_FILE,\n method: 'endConsult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n ]);\n const result = await this.contact.consultEnd({\n interactionId: requestInteractionId,\n data: consultEndPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult ended successfully`, {\n module: CC_FILE,\n method: 'endConsult',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'endConsult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to transfer the task.\n * @param payload - Transfer payload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.transfer({\n * to: 'destinationId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * consult: true, // Optional, if true will perform a consult transfer else blind transfer\n * });\n * ```\n */\n public async transfer(payload: TransferPayLoad): Promise<TaskResponse> {\n try {\n LoggerProxy.info(`Transferring task to ${payload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n ]);\n\n // consult transfer path\n if (this.data.interaction.state === 'consulting') {\n const normalizedDestinationType =\n payload.destinationType === 'Agent' || payload.destinationType === 'Queue'\n ? (payload.destinationType.toLowerCase() as ConsultTransferPayLoad['destinationType'])\n : payload.destinationType;\n let consultPayload: ConsultTransferPayLoad = {\n to: payload.to,\n destinationType: normalizedDestinationType,\n };\n\n if (normalizedDestinationType === CONSULT_TRANSFER_DESTINATION_TYPE.QUEUE) {\n const consultContext = this.getStateMachineSnapshot()?.context;\n const destAgent = consultContext?.consultDestinationAgentId || this.data.destAgentId;\n if (!destAgent) {\n throw new Error('No agent has accepted this queue consult yet');\n }\n consultPayload = {\n to: destAgent,\n destinationType: CONSULT_TRANSFER_DESTINATION_TYPE.AGENT,\n };\n }\n\n const result = await this.contact.consultTransfer({\n interactionId: this.data.interactionId,\n data: consultPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n isConsultTransfer: true,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult transfer completed successfully to ${consultPayload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n }\n\n // standard blind transfer\n return await super.transfer({\n to: payload.to,\n destinationType: payload.destinationType,\n });\n } catch (err) {\n const {error: detailedError} = getErrorDetails(err, METHODS.TRANSFER_CALL, CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n destination: payload.to,\n destinationType: payload.destinationType,\n isConsultTransfer: this.data.interaction.state === 'consulting',\n error: err.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(err.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * Start a consult conference, merging main and consult calls.\n */\n public async consultConference(): Promise<TaskResponse> {\n const derivedDestAgentId =\n this.data.interaction && this.data.agentId\n ? calculateDestAgentId(this.data.interaction, this.data.agentId)\n : '';\n const derivedDestType =\n this.data.interaction && this.data.agentId\n ? calculateDestType(this.data.interaction, this.data.agentId)\n : '';\n\n // derivedDestType is most reliable as it inspects live interaction participants\n const resolvedDestinationType =\n derivedDestType ||\n this.getStateMachineSnapshot()?.context?.consultDestinationType ||\n this.data.destinationType ||\n 'agent';\n\n const consultationData: consultConferencePayloadData = {\n agentId: this.data.agentId,\n destinationType: resolvedDestinationType,\n // derivedDestAgentId is most reliable as it resolves epId for EP_DN\n // and agent ID for regular agents from live interaction data\n destAgentId:\n derivedDestAgentId ||\n this.getStateMachineSnapshot()?.context?.consultDestinationAgentId ||\n this.data.destAgentId,\n };\n\n // Send state machine event to transition to CONF_INITIATING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.MERGE_TO_CONFERENCE,\n });\n }\n\n try {\n if (!consultationData.destAgentId) {\n throw new Error('Unable to determine consult destination for conference');\n }\n\n LoggerProxy.info(`Initiating consult conference to ${consultationData.destAgentId}`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n const paramsDataForConferenceV2 = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n const response = await this.contact.consultConference({\n interactionId: paramsDataForConferenceV2.interactionId,\n data: paramsDataForConferenceV2.data,\n });\n\n // Send success event to transition to CONFERENCING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_START,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: paramsDataForConferenceV2.data.to,\n destinationType: paramsDataForConferenceV2.data.destinationType,\n agentId: paramsDataForConferenceV2.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Consult conference started successfully`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event to revert state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, METHODS.CONSULT_CONFERENCE, CC_FILE);\n\n const failedParamsData = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_FAILED,\n {\n taskId: this.data.interactionId,\n destination: failedParamsData.data.to,\n destinationType: failedParamsData.data.destinationType,\n agentId: failedParamsData.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to start consult conference`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Exit from a conference call.\n * Per conference-spec.md:\n * - Primary agent exits to wrapup\n * - Non-primary agent exits to available/connected\n * - Other participants continue the call\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or exit fails\n * @example\n * ```typescript\n * task.exitConference().then(() => {}).catch(() => {});\n * ```\n */\n public async exitConference(): Promise<TaskResponse> {\n // Validate we're in conference state OR conference is in progress per task data\n // This handles cases where:\n // 1. State machine is in CONFERENCING state\n // 2. State machine is in CONNECTED but conference is active (e.g., ownership transferred)\n const state = this.getStateMachineSnapshot();\n const isConferencingState = state?.matches(TaskState.CONFERENCING);\n\n const isConferenceInProgressFromData = this.data ? getIsConferenceInProgress(this.data) : false;\n\n if (!state || (!isConferencingState && !isConferenceInProgressFromData)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot exit conference in ${currentState} state`);\n LoggerProxy.error('Exit conference operation not allowed', {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Exiting conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n ]);\n\n const response = await this.contact.exitConference({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully exited conference`, {\n module: CC_FILE,\n method: 'exitConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'exitConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to exit conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Transfer the conference to another participant.\n * Per conference-spec.md: Only primary agent can transfer conference.\n * After transfer, the transferring agent exits to wrapup.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or transfer fails\n * @example\n * ```typescript\n * task.transferConference().then(() => {}).catch(() => {});\n * ```\n */\n public async transferConference(): Promise<TaskResponse> {\n // Validate we're in conference or consulting state\n // CONSULTING is allowed because agent can transfer conference while consulting\n // (transfers ownership to the consulted agent)\n const state = this.getStateMachineSnapshot();\n const isValidState =\n state && (state.matches(TaskState.CONFERENCING) || state.matches(TaskState.CONSULTING));\n if (!isValidState) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot transfer conference in ${currentState} state`);\n LoggerProxy.error('Transfer conference operation not allowed', {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Transferring conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n ]);\n\n const response = await this.contact.conferenceTransfer({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully transferred conference`, {\n module: CC_FILE,\n method: 'transferConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'transferConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to transfer conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Toggle between consult call and main call during consulting.\n * If on consult leg (consultCallHeld = false), switches to main call by holding consult.\n * If on main call (consultCallHeld = true), switches to consult by resuming consult.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in CONSULTING state or no consult media resource\n * @example\n * ```typescript\n * await task.switchCall();\n * ```\n */\n public async switchCall(): Promise<TaskResponse> {\n // Validate we're in CONSULTING state\n const state = this.getStateMachineSnapshot();\n if (!state?.matches(TaskState.CONSULTING)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot switch call in ${currentState} state`);\n LoggerProxy.error('Switch call operation not allowed', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Validate we have a consult media resource\n const consultMediaResourceId = getConsultMediaResourceId(\n this.data.interaction,\n this.data.consultMediaResourceId,\n this.data.agentId\n );\n if (!consultMediaResourceId) {\n const error = new Error('No consult media resource available');\n LoggerProxy.error('Switch call failed - no consult media resource', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n const context = state.context;\n const isOnConsultLeg = !context.consultCallHeld;\n\n // Determine direction and send appropriate state machine event\n const targetEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_MAIN_CALL\n : TaskEvent.SWITCH_TO_CONSULT;\n const revertEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_CONSULT\n : TaskEvent.SWITCH_TO_MAIN_CALL;\n\n if (this.stateMachineService) {\n this.stateMachineService.send({type: targetEvent});\n }\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n ]);\n\n try {\n if (isOnConsultLeg) {\n const response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toMainCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to main call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n }\n\n const response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to consult call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n if (this.stateMachineService) {\n this.stateMachineService.send({type: revertEvent});\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n {\n taskId: this.data.interactionId,\n direction: isOnConsultLeg ? 'toMainCall' : 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n\n const {error: detailedError} = getErrorDetails(error, 'switchCall', CC_FILE);\n LoggerProxy.error(`Failed to switch call`, {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw detailedError;\n }\n }\n\n protected override getChannelSpecificActionOverrides() {\n const baseOverrides = super.getChannelSpecificActionOverrides();\n\n return {\n ...baseOverrides,\n emitTaskHold: this.createEmitSelfAction(TASK_EVENTS.TASK_HOLD, {updateTaskData: true}),\n emitTaskResume: this.createEmitSelfAction(TASK_EVENTS.TASK_RESUME, {updateTaskData: true}),\n emitTaskRecordingStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_STARTED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPaused: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_PAUSED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPauseFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_PAUSE_FAILED,\n {updateTaskData: true}\n ),\n emitTaskRecordingResumed: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_RESUMED, {\n updateTaskData: true,\n }),\n emitTaskRecordingResumeFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_RESUME_FAILED,\n {updateTaskData: true}\n ),\n // Conference event emitters\n emitTaskParticipantJoined: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_JOINED, {\n updateTaskData: true,\n }),\n emitTaskParticipantLeft: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_LEFT, {\n updateTaskData: true,\n }),\n emitTaskConferenceStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_STARTED, {\n updateTaskData: true,\n }),\n emitTaskConferenceEnded: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_ENDED, {\n updateTaskData: true,\n }),\n emitTaskConferenceFailed: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_FAILED, {\n updateTaskData: true,\n }),\n emitTaskExitConference: this.createEmitSelfAction(TASK_EVENTS.TASK_EXIT_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskTransferConference: this.createEmitSelfAction(TASK_EVENTS.TASK_TRANSFER_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskSwitchCall: this.createEmitSelfAction(TASK_EVENTS.TASK_SWITCH_CALL, {\n updateTaskData: false,\n }),\n emitTaskTransferConferenceFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_CONFERENCE_TRANSFER_FAILED,\n {updateTaskData: true}\n ),\n emitTaskOutdialFailed: ({event}: TaskActionArgs) => {\n if (event && 'taskData' in event && event.taskData) {\n this.updateTaskData(event.taskData as TaskData);\n }\n const reason = (event as {reason?: string})?.reason || 'Outdial failed';\n this.emit(TASK_EVENTS.TASK_OUTDIAL_FAILED, reason);\n },\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_Utils","_types","_Task","_interopRequireDefault","_loggerProxy","_MetricsManager","_constants2","_stateMachine","_TaskUtils","e","__esModule","default","Voice","Task","constructor","contact","data","callOptions","wrapupData","agentId","resolvedOptions","isEndTaskEnabled","isEndConsultEnabled","voiceVariant","VOICE_VARIANT","PSTN","isRecordingEnabled","getStateMachineSnapshot","stateMachineService","getSnapshot","accept","unsupportedMethodError","METHODS","ACCEPT","decline","REJECT","hold","holdResume","resume","snapshot","snapshotState","value","mainInteractionId","interaction","interactionId","mainMediaResource","media","mediaResourceId","mediaHoldState","isHold","shouldHold","TaskState","HELD","RESUME_INITIATING","CONNECTED","state","currentState","matches","error","Error","LoggerProxy","module","CC_FILE","method","HOLD_RESUME","CONFERENCING","initiatingEvent","TaskEvent","HOLD_INITIATED","UNHOLD_INITIATED","send","type","info","successEvt","failedEvt","METRIC_EVENT_NAMES","TASK_HOLD_SUCCESS","TASK_HOLD_FAILED","TASK_RESUME_SUCCESS","TASK_RESUME_FAILED","metricsManager","timeEvent","response","HOLD_SUCCESS","trackEvent","taskId","MetricsManager","getCommonTrackingFieldForAQMResponse","log","trackingId","unHold","UNHOLD_SUCCESS","failureEvent","HOLD_FAILED","UNHOLD_FAILED","reason","toString","detailedError","getErrorDetails","getCommonTrackingFieldForAQMResponseFailed","details","pauseRecording","recordingControlsAvailable","recordingInProgress","context","recordingActive","Boolean","TASK_PAUSE_RECORDING_SUCCESS","TASK_PAUSE_RECORDING_FAILED","result","resumeRecording","resumeRecordingPayload","recordingPaused","TASK_RESUME_RECORDING_SUCCESS","TASK_RESUME_RECORDING_FAILED","autoResumed","consult","consultPayload","canConsult","CONSULT","destination","to","destinationType","requestInteractionId","TASK_CONSULT_START_SUCCESS","TASK_CONSULT_START_FAILED","CONSULT_SUCCESS","taskData","CONSULT_FAILED","endConsult","consultEndPayload","TASK_CONSULT_END_SUCCESS","TASK_CONSULT_END_FAILED","consultEnd","transfer","payload","TRANSFER_CALL","TASK_TRANSFER_SUCCESS","TASK_TRANSFER_FAILED","normalizedDestinationType","toLowerCase","CONSULT_TRANSFER_DESTINATION_TYPE","QUEUE","consultContext","destAgent","consultDestinationAgentId","destAgentId","AGENT","consultTransfer","isConsultTransfer","err","consultConference","derivedDestAgentId","calculateDestAgentId","derivedDestType","calculateDestType","resolvedDestinationType","consultDestinationType","consultationData","MERGE_TO_CONFERENCE","CONSULT_CONFERENCE","paramsDataForConferenceV2","buildConsultConferenceParamData","CONFERENCE_START","TASK_CONFERENCE_START_SUCCESS","CONFERENCE_FAILED","failedParamsData","TASK_CONFERENCE_START_FAILED","exitConference","isConferencingState","isConferenceInProgressFromData","getIsConferenceInProgress","EXIT_CONFERENCE","TASK_CONFERENCE_EXIT_SUCCESS","TASK_CONFERENCE_EXIT_FAILED","EXIT_CONFERENCE_SUCCESS","EXIT_CONFERENCE_FAILED","transferConference","isValidState","CONSULTING","TRANSFER_CONFERENCE","TASK_CONFERENCE_TRANSFER_SUCCESS","TASK_CONFERENCE_TRANSFER_FAILED","conferenceTransfer","TRANSFER_CONFERENCE_SUCCESS","TRANSFER_CONFERENCE_FAILED","switchCall","consultMediaResourceId","getConsultMediaResourceId","isOnConsultLeg","consultCallHeld","targetEvent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","revertEvent","TASK_SWITCH_CALL_SUCCESS","TASK_SWITCH_CALL_FAILED","direction","getChannelSpecificActionOverrides","baseOverrides","emitTaskHold","createEmitSelfAction","TASK_EVENTS","TASK_HOLD","updateTaskData","emitTaskResume","TASK_RESUME","emitTaskRecordingStarted","TASK_RECORDING_STARTED","emitTaskRecordingPaused","TASK_RECORDING_PAUSED","emitTaskRecordingPauseFailed","TASK_RECORDING_PAUSE_FAILED","emitTaskRecordingResumed","TASK_RECORDING_RESUMED","emitTaskRecordingResumeFailed","TASK_RECORDING_RESUME_FAILED","emitTaskParticipantJoined","TASK_PARTICIPANT_JOINED","emitTaskParticipantLeft","TASK_PARTICIPANT_LEFT","emitTaskConferenceStarted","TASK_CONFERENCE_STARTED","emitTaskConferenceEnded","TASK_CONFERENCE_ENDED","emitTaskConferenceFailed","TASK_CONFERENCE_FAILED","emitTaskExitConference","TASK_EXIT_CONFERENCE","emitTaskTransferConference","TASK_TRANSFER_CONFERENCE","emitTaskSwitchCall","TASK_SWITCH_CALL","emitTaskTransferConferenceFailed","emitTaskOutdialFailed","event","emit","TASK_OUTDIAL_FAILED","exports"],"sources":["Voice.ts"],"sourcesContent":["import {CC_FILE, METHODS} from '../../../constants';\nimport {\n buildConsultConferenceParamData,\n calculateDestAgentId,\n calculateDestType,\n getErrorDetails,\n} from '../../core/Utils';\nimport routingContact from '../contact';\nimport {\n ConsultPayload,\n ConsultEndPayload,\n ResumeRecordingPayload,\n TaskData,\n TaskResponse,\n IVoice,\n VoiceUIControlOptions,\n TransferPayLoad,\n ConsultTransferPayLoad,\n consultConferencePayloadData,\n CONSULT_TRANSFER_DESTINATION_TYPE,\n TASK_EVENTS,\n VOICE_VARIANT,\n} from '../types';\nimport Task from '../Task';\nimport LoggerProxy from '../../../logger-proxy';\nimport MetricsManager from '../../../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../../../metrics/constants';\nimport {TaskState, TaskEvent, TaskActionArgs} from '../state-machine';\nimport {WrapupData} from '../../config/types';\nimport {getConsultMediaResourceId, getIsConferenceInProgress} from '../TaskUtils';\n\nexport default class Voice extends Task implements IVoice {\n constructor(\n contact: ReturnType<typeof routingContact>,\n data: TaskData,\n callOptions?: VoiceUIControlOptions,\n wrapupData?: WrapupData,\n agentId?: string\n ) {\n const resolvedOptions = {\n isEndTaskEnabled: callOptions?.isEndTaskEnabled ?? true,\n isEndConsultEnabled: callOptions?.isEndConsultEnabled ?? true,\n voiceVariant: callOptions?.voiceVariant ?? VOICE_VARIANT.PSTN,\n isRecordingEnabled: callOptions?.isRecordingEnabled ?? true,\n };\n\n super(\n contact,\n data,\n {\n ...resolvedOptions,\n },\n wrapupData,\n agentId\n );\n }\n\n private getStateMachineSnapshot() {\n return this.stateMachineService?.getSnapshot?.();\n }\n\n /**\n * This method is used to accept the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async accept(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.ACCEPT);\n }\n\n /**\n * This method is used to decline the task.\n * It is expected to be overridden by child classes.\n * @returns Promise<TaskResponse>\n * @throws Error\n */\n public async decline(): Promise<TaskResponse> {\n super.unsupportedMethodError(METHODS.REJECT);\n }\n\n /**\n * This is used to hold the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.hold().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async hold(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to resume the task.\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resume().then(()=>{}).catch(()=>{})\n * ```\n * */\n public async resume(): Promise<TaskResponse> {\n return this.holdResume();\n }\n\n /**\n * This is used to hold or resume the task.\n * @param isHeld: boolean - true to hold the task, false to resume it\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.holdResume(isHeld: true).then(()=>{}).catch(()=>{})\n * ```\n * */\n public async holdResume(): Promise<TaskResponse> {\n /* \n Determine if the task is being held or resumed based on the media resource state\n If the media resource is not found, default to resuming the task\n */\n const snapshot = this.getStateMachineSnapshot();\n const snapshotState = snapshot?.value as TaskState | undefined;\n const mainInteractionId = this.data.interaction?.mainInteractionId || this.data.interactionId;\n const mainMediaResource =\n this.data.interaction?.media?.[mainInteractionId]?.mediaResourceId ||\n this.data.mediaResourceId;\n const mediaHoldState =\n this.data.interaction?.media?.[mainInteractionId]?.isHold ??\n this.data.interaction.media?.[mainMediaResource]?.isHold;\n let shouldHold = !(mediaHoldState ?? false);\n if (snapshotState === TaskState.HELD || snapshotState === TaskState.RESUME_INITIATING) {\n shouldHold = false;\n } else if (snapshotState === TaskState.CONNECTED && mediaHoldState !== true) {\n // CONNECTED with isHold:true can happen after consult RONA/decline when event ordering\n // leaves the machine in CONNECTED while main media is still on hold — resume on first click.\n shouldHold = true;\n }\n\n // Validate operation is allowed in current state\n const state = snapshot;\n if (state) {\n const currentState = state.value as TaskState;\n if (shouldHold) {\n if (!state.matches(TaskState.CONNECTED)) {\n const error = new Error(`Cannot hold call in current state: ${currentState}`);\n LoggerProxy.error('Hold operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n } else if (\n !state.matches(TaskState.HELD) &&\n !(state.matches(TaskState.CONFERENCING) && mediaHoldState === true) &&\n !(state.matches(TaskState.CONNECTED) && mediaHoldState === true)\n ) {\n const error = new Error(`Cannot resume call in current state: ${currentState}`);\n LoggerProxy.error('Resume operation not allowed', {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n // Send initiating event to transition to intermediate state\n if (this.stateMachineService) {\n const initiatingEvent = shouldHold ? TaskEvent.HOLD_INITIATED : TaskEvent.UNHOLD_INITIATED;\n this.stateMachineService.send({\n type: initiatingEvent,\n mediaResourceId: mainMediaResource,\n });\n }\n\n LoggerProxy.info(`${shouldHold ? 'Holding' : 'Resuming'} task`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n interactionId: this.data.interactionId,\n });\n const [successEvt, failedEvt] = shouldHold\n ? [METRIC_EVENT_NAMES.TASK_HOLD_SUCCESS, METRIC_EVENT_NAMES.TASK_HOLD_FAILED]\n : [METRIC_EVENT_NAMES.TASK_RESUME_SUCCESS, METRIC_EVENT_NAMES.TASK_RESUME_FAILED];\n\n this.metricsManager.timeEvent([successEvt, failedEvt]);\n\n try {\n let response: TaskResponse;\n if (shouldHold) {\n response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.HOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task placed on hold successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n } else {\n response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: mainMediaResource},\n });\n\n // Send success event to complete the transition\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.UNHOLD_SUCCESS,\n mediaResourceId: mainMediaResource,\n });\n }\n\n this.metricsManager.trackEvent(\n successEvt,\n {\n taskId: this.data.interactionId,\n mainInteractionId,\n mediaResourceId: mainMediaResource,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n LoggerProxy.log(`Task resumed successfully`, {\n module: CC_FILE,\n method: METHODS.HOLD_RESUME,\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n }\n\n return response;\n } catch (error) {\n const failureEvent = shouldHold ? TaskEvent.HOLD_FAILED : TaskEvent.UNHOLD_FAILED;\n this.stateMachineService.send({\n type: failureEvent,\n reason: error.toString(),\n mediaResourceId: this.data.mediaResourceId,\n });\n\n const {error: detailedError} = getErrorDetails(error, 'holdResume', CC_FILE);\n this.metricsManager.trackEvent(\n failedEvt,\n shouldHold\n ? {\n taskId: this.data.interactionId,\n mediaResourceId: this.data.mediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n }\n : {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.pauseRecording().then(()=>{}).catch(()=>{});\n * ```\n */\n public async pauseRecording(): Promise<TaskResponse> {\n // Validate recording is active\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingActive = Boolean(recordingControlsAvailable && recordingInProgress);\n if (!recordingActive) {\n const error = new Error('Recording is not active or already paused');\n LoggerProxy.error('Pause recording operation not allowed', {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Pausing recording`, {\n module: CC_FILE,\n method: 'pauseRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n ]);\n const result = await this.contact.pauseRecording({interactionId: this.data.interactionId});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording paused successfully`, {\n module: CC_FILE,\n method: 'pauseRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'pauseRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_PAUSE_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to pause the call recording\n * @param resumeRecordingPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.resumeRecording(resumeRecordingPayload).then(()=>{}).catch(()=>{});\n * ```\n */\n public async resumeRecording(\n resumeRecordingPayload?: ResumeRecordingPayload\n ): Promise<TaskResponse> {\n // Validate recording is paused\n const state = this.getStateMachineSnapshot();\n if (state) {\n const {recordingControlsAvailable, recordingInProgress} = state.context as {\n recordingControlsAvailable?: boolean;\n recordingInProgress?: boolean;\n };\n const recordingPaused = Boolean(recordingControlsAvailable && !recordingInProgress);\n if (!recordingPaused) {\n const error = new Error('Recording is not paused');\n LoggerProxy.error('Resume recording operation not allowed', {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n }\n\n try {\n LoggerProxy.info(`Resuming recording`, {\n module: CC_FILE,\n method: 'resumeRecording',\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n ]);\n resumeRecordingPayload ??= {autoResumed: false};\n\n const result = await this.contact.resumeRecording({\n interactionId: this.data.interactionId,\n data: resumeRecordingPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_SUCCESS,\n {\n taskId: this.data.interactionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Recording resumed successfully`, {\n module: CC_FILE,\n method: 'resumeRecording',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'resumeRecording', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_RESUME_RECORDING_FAILED,\n {\n taskId: this.data.interactionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to consult the task\n * @param consultPayload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * const consultPayload = {\n * destination: 'myBuddyAgentId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * }\n * task.consult(consultPayload).then(()=>{}).catch(()=>{});\n * ```\n * */\n public async consult(consultPayload?: ConsultPayload): Promise<TaskResponse> {\n // Validate consult is allowed\n const state = this.getStateMachineSnapshot();\n const canConsult =\n state &&\n (state.matches(TaskState.CONNECTED) ||\n state.matches(TaskState.HELD) ||\n state.matches(TaskState.CONFERENCING));\n\n if (!canConsult) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot initiate consult in ${currentState} state`);\n LoggerProxy.error('Consult operation not allowed', {\n module: CC_FILE,\n method: 'consult',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send initiating event to transition to CONSULT_INITIATING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Starting consult`, {\n module: CC_FILE,\n method: 'consult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n ]);\n const result = await this.contact.consult({\n interactionId: requestInteractionId,\n data: consultPayload,\n });\n\n // Send success event to transition to CONSULTING state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_SUCCESS,\n taskData: result.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult successfully initiated to ${consultPayload.to}`, {\n module: CC_FILE,\n method: 'consult',\n trackingId: result.trackingId,\n interactionId: requestInteractionId,\n });\n\n return result;\n } catch (error) {\n this.stateMachineService.send({\n type: TaskEvent.CONSULT_FAILED,\n reason: error.toString(),\n });\n\n const {error: detailedError} = getErrorDetails(error, 'consult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_START_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to end the consult session on the task.\n * @param consultEndPayload - Payload indicating consult end flags and identifiers\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.endConsult({\n * isConsult: true,\n * queueId: 'myQueueId',\n * taskId: 'taskId',\n * });\n * ```\n */\n public async endConsult(consultEndPayload?: ConsultEndPayload): Promise<TaskResponse> {\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Ending consult`, {\n module: CC_FILE,\n method: 'endConsult',\n interactionId: requestInteractionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n ]);\n const result = await this.contact.consultEnd({\n interactionId: requestInteractionId,\n data: consultEndPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult ended successfully`, {\n module: CC_FILE,\n method: 'endConsult',\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n } catch (error) {\n const {error: detailedError} = getErrorDetails(error, 'endConsult', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONSULT_END_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * This is used to transfer the task.\n * @param payload - Transfer payload\n * @returns Promise<TaskResponse>\n * @throws Error\n * @example\n * ```typescript\n * task.transfer({\n * to: 'destinationId',\n * destinationType: DESTINATION_TYPE.AGENT,\n * consult: true, // Optional, if true will perform a consult transfer else blind transfer\n * });\n * ```\n */\n public async transfer(payload: TransferPayLoad): Promise<TaskResponse> {\n try {\n LoggerProxy.info(`Transferring task to ${payload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n interactionId: this.data.interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n ]);\n\n // consult transfer path\n if (this.data.interaction.state === 'consulting') {\n const normalizedDestinationType =\n payload.destinationType === 'Agent' || payload.destinationType === 'Queue'\n ? (payload.destinationType.toLowerCase() as ConsultTransferPayLoad['destinationType'])\n : payload.destinationType;\n let consultPayload: ConsultTransferPayLoad = {\n to: payload.to,\n destinationType: normalizedDestinationType,\n };\n\n if (normalizedDestinationType === CONSULT_TRANSFER_DESTINATION_TYPE.QUEUE) {\n const consultContext = this.getStateMachineSnapshot()?.context;\n const destAgent = consultContext?.consultDestinationAgentId || this.data.destAgentId;\n if (!destAgent) {\n throw new Error('No agent has accepted this queue consult yet');\n }\n consultPayload = {\n to: destAgent,\n destinationType: CONSULT_TRANSFER_DESTINATION_TYPE.AGENT,\n };\n }\n\n const result = await this.contact.consultTransfer({\n interactionId: this.data.interactionId,\n data: consultPayload,\n });\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: consultPayload.to,\n destinationType: consultPayload.destinationType,\n isConsultTransfer: true,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(result),\n },\n ['operational', 'behavioral', 'business']\n );\n LoggerProxy.log(`Consult transfer completed successfully to ${consultPayload.to}`, {\n module: CC_FILE,\n method: METHODS.TRANSFER_CALL,\n trackingId: result.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return result;\n }\n\n // standard blind transfer\n return await super.transfer({\n to: payload.to,\n destinationType: payload.destinationType,\n });\n } catch (err) {\n const {error: detailedError} = getErrorDetails(err, METHODS.TRANSFER_CALL, CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n destination: payload.to,\n destinationType: payload.destinationType,\n isConsultTransfer: this.data.interaction.state === 'consulting',\n error: err.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(err.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n throw detailedError;\n }\n }\n\n /**\n * Start a consult conference, merging main and consult calls.\n */\n public async consultConference(): Promise<TaskResponse> {\n const derivedDestAgentId =\n this.data.interaction && this.data.agentId\n ? calculateDestAgentId(this.data.interaction, this.data.agentId)\n : '';\n const derivedDestType =\n this.data.interaction && this.data.agentId\n ? calculateDestType(this.data.interaction, this.data.agentId)\n : '';\n\n // derivedDestType is most reliable as it inspects live interaction participants\n const resolvedDestinationType =\n derivedDestType ||\n this.getStateMachineSnapshot()?.context?.consultDestinationType ||\n this.data.destinationType ||\n 'agent';\n\n const consultationData: consultConferencePayloadData = {\n agentId: this.data.agentId,\n destinationType: resolvedDestinationType,\n // derivedDestAgentId is most reliable as it resolves epId for EP_DN\n // and agent ID for regular agents from live interaction data\n destAgentId:\n derivedDestAgentId ||\n this.getStateMachineSnapshot()?.context?.consultDestinationAgentId ||\n this.data.destAgentId,\n };\n\n // Send state machine event to transition to CONF_INITIATING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.MERGE_TO_CONFERENCE,\n });\n }\n\n try {\n if (!consultationData.destAgentId) {\n throw new Error('Unable to determine consult destination for conference');\n }\n\n LoggerProxy.info(`Initiating consult conference to ${consultationData.destAgentId}`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n const paramsDataForConferenceV2 = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n const response = await this.contact.consultConference({\n interactionId: paramsDataForConferenceV2.interactionId,\n data: paramsDataForConferenceV2.data,\n });\n\n // Send success event to transition to CONFERENCING\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_START,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_SUCCESS,\n {\n taskId: this.data.interactionId,\n destination: paramsDataForConferenceV2.data.to,\n destinationType: paramsDataForConferenceV2.data.destinationType,\n agentId: paramsDataForConferenceV2.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Consult conference started successfully`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event to revert state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, METHODS.CONSULT_CONFERENCE, CC_FILE);\n\n const failedParamsData = buildConsultConferenceParamData(\n consultationData,\n this.data.interactionId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_START_FAILED,\n {\n taskId: this.data.interactionId,\n destination: failedParamsData.data.to,\n destinationType: failedParamsData.data.destinationType,\n agentId: failedParamsData.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to start consult conference`, {\n module: CC_FILE,\n method: METHODS.CONSULT_CONFERENCE,\n interactionId: this.data.interactionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Exit from a conference call.\n * Per conference-spec.md:\n * - Primary agent exits to wrapup\n * - Non-primary agent exits to available/connected\n * - Other participants continue the call\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or exit fails\n * @example\n * ```typescript\n * task.exitConference().then(() => {}).catch(() => {});\n * ```\n */\n public async exitConference(): Promise<TaskResponse> {\n // Validate we're in conference state OR conference is in progress per task data\n // This handles cases where:\n // 1. State machine is in CONFERENCING state\n // 2. State machine is in CONNECTED but conference is active (e.g., ownership transferred)\n const state = this.getStateMachineSnapshot();\n const isConferencingState = state?.matches(TaskState.CONFERENCING);\n\n const isConferenceInProgressFromData = this.data ? getIsConferenceInProgress(this.data) : false;\n\n if (!state || (!isConferencingState && !isConferenceInProgressFromData)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot exit conference in ${currentState} state`);\n LoggerProxy.error('Exit conference operation not allowed', {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Exiting conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n ]);\n\n const response = await this.contact.exitConference({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully exited conference`, {\n module: CC_FILE,\n method: 'exitConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.EXIT_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'exitConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_EXIT_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to exit conference`, {\n module: CC_FILE,\n method: 'exitConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Transfer the conference to another participant.\n * Per conference-spec.md: Only primary agent can transfer conference.\n * After transfer, the transferring agent exits to wrapup.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in conference or transfer fails\n * @example\n * ```typescript\n * task.transferConference().then(() => {}).catch(() => {});\n * ```\n */\n public async transferConference(): Promise<TaskResponse> {\n // Validate we're in conference or consulting state\n // CONSULTING is allowed because agent can transfer conference while consulting\n // (transfers ownership to the consulted agent)\n const state = this.getStateMachineSnapshot();\n const isValidState =\n state && (state.matches(TaskState.CONFERENCING) || state.matches(TaskState.CONSULTING));\n if (!isValidState) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot transfer conference in ${currentState} state`);\n LoggerProxy.error('Transfer conference operation not allowed', {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Send state machine event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE,\n agentId: this.data.agentId,\n });\n }\n\n const requestInteractionId =\n this.data.interaction?.mainInteractionId || this.data.interactionId;\n\n try {\n LoggerProxy.info(`Transferring conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n ]);\n\n const response = await this.contact.conferenceTransfer({\n interactionId: requestInteractionId,\n });\n\n // Send success event to transition state\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_SUCCESS,\n taskData: response.data,\n });\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_SUCCESS,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.log(`Successfully transferred conference`, {\n module: CC_FILE,\n method: 'transferConference',\n trackingId: response.trackingId,\n interactionId: requestInteractionId,\n });\n\n return response;\n } catch (error) {\n // Send failure event\n if (this.stateMachineService) {\n this.stateMachineService.send({\n type: TaskEvent.TRANSFER_CONFERENCE_FAILED,\n reason: error.toString(),\n });\n }\n\n const {error: detailedError} = getErrorDetails(error, 'transferConference', CC_FILE);\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_CONFERENCE_TRANSFER_FAILED,\n {\n taskId: this.data.interactionId,\n requestInteractionId,\n agentId: this.data.agentId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral', 'business']\n );\n\n LoggerProxy.error(`Failed to transfer conference`, {\n module: CC_FILE,\n method: 'transferConference',\n interactionId: requestInteractionId,\n });\n\n throw detailedError;\n }\n }\n\n /**\n * Toggle between consult call and main call during consulting.\n * If on consult leg (consultCallHeld = false), switches to main call by holding consult.\n * If on main call (consultCallHeld = true), switches to consult by resuming consult.\n *\n * @returns Promise<TaskResponse>\n * @throws Error if not in CONSULTING state or no consult media resource\n * @example\n * ```typescript\n * await task.switchCall();\n * ```\n */\n public async switchCall(): Promise<TaskResponse> {\n // Validate we're in CONSULTING state\n const state = this.getStateMachineSnapshot();\n if (!state?.matches(TaskState.CONSULTING)) {\n const currentState = state?.value as TaskState;\n const error = new Error(`Cannot switch call in ${currentState} state`);\n LoggerProxy.error('Switch call operation not allowed', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n // Validate we have a consult media resource\n const consultMediaResourceId = getConsultMediaResourceId(\n this.data.interaction,\n this.data.consultMediaResourceId,\n this.data.agentId\n );\n if (!consultMediaResourceId) {\n const error = new Error('No consult media resource available');\n LoggerProxy.error('Switch call failed - no consult media resource', {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw error;\n }\n\n const context = state.context;\n const isOnConsultLeg = !context.consultCallHeld;\n\n // Determine direction and send appropriate state machine event\n const targetEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_MAIN_CALL\n : TaskEvent.SWITCH_TO_CONSULT;\n const revertEvent = isOnConsultLeg\n ? TaskEvent.SWITCH_TO_CONSULT\n : TaskEvent.SWITCH_TO_MAIN_CALL;\n\n if (this.stateMachineService) {\n this.stateMachineService.send({type: targetEvent});\n }\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n ]);\n\n try {\n if (isOnConsultLeg) {\n const response = await this.contact.unHold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toMainCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to main call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n }\n\n const response = await this.contact.hold({\n interactionId: this.data.interactionId,\n data: {mediaResourceId: this.data.mediaResourceId},\n });\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_SUCCESS,\n {\n taskId: this.data.interactionId,\n direction: 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n ...MetricsManager.getCommonTrackingFieldForAQMResponse(response),\n },\n ['operational', 'behavioral']\n );\n\n LoggerProxy.log(`Switched to consult call successfully`, {\n module: CC_FILE,\n method: 'switchCall',\n trackingId: response.trackingId,\n interactionId: this.data.interactionId,\n });\n\n return response;\n } catch (error) {\n if (this.stateMachineService) {\n this.stateMachineService.send({type: revertEvent});\n }\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.TASK_SWITCH_CALL_FAILED,\n {\n taskId: this.data.interactionId,\n direction: isOnConsultLeg ? 'toMainCall' : 'toConsultCall',\n mediaResourceId: consultMediaResourceId,\n error: error.toString(),\n ...MetricsManager.getCommonTrackingFieldForAQMResponseFailed(error.details || {}),\n },\n ['operational', 'behavioral']\n );\n\n const {error: detailedError} = getErrorDetails(error, 'switchCall', CC_FILE);\n LoggerProxy.error(`Failed to switch call`, {\n module: CC_FILE,\n method: 'switchCall',\n interactionId: this.data.interactionId,\n });\n throw detailedError;\n }\n }\n\n protected override getChannelSpecificActionOverrides() {\n const baseOverrides = super.getChannelSpecificActionOverrides();\n\n return {\n ...baseOverrides,\n emitTaskHold: this.createEmitSelfAction(TASK_EVENTS.TASK_HOLD, {updateTaskData: true}),\n emitTaskResume: this.createEmitSelfAction(TASK_EVENTS.TASK_RESUME, {updateTaskData: true}),\n emitTaskRecordingStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_STARTED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPaused: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_PAUSED, {\n updateTaskData: true,\n }),\n emitTaskRecordingPauseFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_PAUSE_FAILED,\n {updateTaskData: true}\n ),\n emitTaskRecordingResumed: this.createEmitSelfAction(TASK_EVENTS.TASK_RECORDING_RESUMED, {\n updateTaskData: true,\n }),\n emitTaskRecordingResumeFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_RECORDING_RESUME_FAILED,\n {updateTaskData: true}\n ),\n // Conference event emitters\n emitTaskParticipantJoined: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_JOINED, {\n updateTaskData: true,\n }),\n emitTaskParticipantLeft: this.createEmitSelfAction(TASK_EVENTS.TASK_PARTICIPANT_LEFT, {\n updateTaskData: true,\n }),\n emitTaskConferenceStarted: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_STARTED, {\n updateTaskData: true,\n }),\n emitTaskConferenceEnded: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_ENDED, {\n updateTaskData: true,\n }),\n emitTaskConferenceFailed: this.createEmitSelfAction(TASK_EVENTS.TASK_CONFERENCE_FAILED, {\n updateTaskData: true,\n }),\n emitTaskExitConference: this.createEmitSelfAction(TASK_EVENTS.TASK_EXIT_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskTransferConference: this.createEmitSelfAction(TASK_EVENTS.TASK_TRANSFER_CONFERENCE, {\n updateTaskData: false,\n }),\n emitTaskSwitchCall: this.createEmitSelfAction(TASK_EVENTS.TASK_SWITCH_CALL, {\n updateTaskData: false,\n }),\n emitTaskTransferConferenceFailed: this.createEmitSelfAction(\n TASK_EVENTS.TASK_CONFERENCE_TRANSFER_FAILED,\n {updateTaskData: true}\n ),\n emitTaskOutdialFailed: ({event}: TaskActionArgs) => {\n if (event && 'taskData' in event && event.taskData) {\n this.updateTaskData(event.taskData as TaskData);\n }\n const reason = (event as {reason?: string})?.reason || 'Outdial failed';\n this.emit(TASK_EVENTS.TASK_OUTDIAL_FAILED, reason);\n },\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAOA,IAAAE,MAAA,GAAAF,OAAA;AAeA,IAAAG,KAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,eAAA,GAAAF,sBAAA,CAAAJ,OAAA;AACA,IAAAO,WAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AAEA,IAAAS,UAAA,GAAAT,OAAA;AAAkF,SAAAI,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnE,MAAMG,KAAK,SAASC,aAAI,CAAmB;EACxDC,WAAWA,CACTC,OAA0C,EAC1CC,IAAc,EACdC,WAAmC,EACnCC,UAAuB,EACvBC,OAAgB,EAChB;IACA,MAAMC,eAAe,GAAG;MACtBC,gBAAgB,EAAEJ,WAAW,EAAEI,gBAAgB,IAAI,IAAI;MACvDC,mBAAmB,EAAEL,WAAW,EAAEK,mBAAmB,IAAI,IAAI;MAC7DC,YAAY,EAAEN,WAAW,EAAEM,YAAY,IAAIC,oBAAa,CAACC,IAAI;MAC7DC,kBAAkB,EAAET,WAAW,EAAES,kBAAkB,IAAI;IACzD,CAAC;IAED,KAAK,CACHX,OAAO,EACPC,IAAI,EACJ;MACE,GAAGI;IACL,CAAC,EACDF,UAAU,EACVC,OACF,CAAC;EACH;EAEQQ,uBAAuBA,CAAA,EAAG;IAChC,OAAO,IAAI,CAACC,mBAAmB,EAAEC,WAAW,GAAG,CAAC;EAClD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAaC,MAAMA,CAAA,EAA0B;IAC3C,KAAK,CAACC,sBAAsB,CAACC,kBAAO,CAACC,MAAM,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAaC,OAAOA,CAAA,EAA0B;IAC5C,KAAK,CAACH,sBAAsB,CAACC,kBAAO,CAACG,MAAM,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAaC,IAAIA,CAAA,EAA0B;IACzC,OAAO,IAAI,CAACC,UAAU,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAaC,MAAMA,CAAA,EAA0B;IAC3C,OAAO,IAAI,CAACD,UAAU,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAaA,UAAUA,CAAA,EAA0B;IAC/C;AACJ;AACA;AACA;IACI,MAAME,QAAQ,GAAG,IAAI,CAACZ,uBAAuB,CAAC,CAAC;IAC/C,MAAMa,aAAa,GAAGD,QAAQ,EAAEE,KAA8B;IAC9D,MAAMC,iBAAiB,GAAG,IAAI,CAAC1B,IAAI,CAAC2B,WAAW,EAAED,iBAAiB,IAAI,IAAI,CAAC1B,IAAI,CAAC4B,aAAa;IAC7F,MAAMC,iBAAiB,GACrB,IAAI,CAAC7B,IAAI,CAAC2B,WAAW,EAAEG,KAAK,GAAGJ,iBAAiB,CAAC,EAAEK,eAAe,IAClE,IAAI,CAAC/B,IAAI,CAAC+B,eAAe;IAC3B,MAAMC,cAAc,GAClB,IAAI,CAAChC,IAAI,CAAC2B,WAAW,EAAEG,KAAK,GAAGJ,iBAAiB,CAAC,EAAEO,MAAM,IACzD,IAAI,CAACjC,IAAI,CAAC2B,WAAW,CAACG,KAAK,GAAGD,iBAAiB,CAAC,EAAEI,MAAM;IAC1D,IAAIC,UAAU,GAAG,EAAEF,cAAc,IAAI,KAAK,CAAC;IAC3C,IAAIR,aAAa,KAAKW,uBAAS,CAACC,IAAI,IAAIZ,aAAa,KAAKW,uBAAS,CAACE,iBAAiB,EAAE;MACrFH,UAAU,GAAG,KAAK;IACpB,CAAC,MAAM,IAAIV,aAAa,KAAKW,uBAAS,CAACG,SAAS,IAAIN,cAAc,KAAK,IAAI,EAAE;MAC3E;MACA;MACAE,UAAU,GAAG,IAAI;IACnB;;IAEA;IACA,MAAMK,KAAK,GAAGhB,QAAQ;IACtB,IAAIgB,KAAK,EAAE;MACT,MAAMC,YAAY,GAAGD,KAAK,CAACd,KAAkB;MAC7C,IAAIS,UAAU,EAAE;QACd,IAAI,CAACK,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACG,SAAS,CAAC,EAAE;UACvC,MAAMI,KAAK,GAAG,IAAIC,KAAK,CAAC,sCAAsCH,YAAY,EAAE,CAAC;UAC7EI,oBAAW,CAACF,KAAK,CAAC,4BAA4B,EAAE;YAC9CG,MAAM,EAAEC,kBAAO;YACfC,MAAM,EAAE/B,kBAAO,CAACgC,WAAW;YAC3BpB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;UAC3B,CAAC,CAAC;UACF,MAAMc,KAAK;QACb;MACF,CAAC,MAAM,IACL,CAACH,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACC,IAAI,CAAC,IAC9B,EAAEG,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACc,YAAY,CAAC,IAAIjB,cAAc,KAAK,IAAI,CAAC,IACnE,EAAEO,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACG,SAAS,CAAC,IAAIN,cAAc,KAAK,IAAI,CAAC,EAChE;QACA,MAAMU,KAAK,GAAG,IAAIC,KAAK,CAAC,wCAAwCH,YAAY,EAAE,CAAC;QAC/EI,oBAAW,CAACF,KAAK,CAAC,8BAA8B,EAAE;UAChDG,MAAM,EAAEC,kBAAO;UACfC,MAAM,EAAE/B,kBAAO,CAACgC,WAAW;UAC3BpB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;QAC3B,CAAC,CAAC;QACF,MAAMc,KAAK;MACb;IACF;;IAEA;IACA,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;MAC5B,MAAMsC,eAAe,GAAGhB,UAAU,GAAGiB,uBAAS,CAACC,cAAc,GAAGD,uBAAS,CAACE,gBAAgB;MAC1F,IAAI,CAACzC,mBAAmB,CAAC0C,IAAI,CAAC;QAC5BC,IAAI,EAAEL,eAAe;QACrBnB,eAAe,EAAEF;MACnB,CAAC,CAAC;IACJ;IAEAe,oBAAW,CAACY,IAAI,CAAC,GAAGtB,UAAU,GAAG,SAAS,GAAG,UAAU,OAAO,EAAE;MAC9DW,MAAM,EAAEC,kBAAO;MACfC,MAAM,EAAE/B,kBAAO,CAACgC,WAAW;MAC3BpB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;IAC3B,CAAC,CAAC;IACF,MAAM,CAAC6B,UAAU,EAAEC,SAAS,CAAC,GAAGxB,UAAU,GACtC,CAACyB,8BAAkB,CAACC,iBAAiB,EAAED,8BAAkB,CAACE,gBAAgB,CAAC,GAC3E,CAACF,8BAAkB,CAACG,mBAAmB,EAAEH,8BAAkB,CAACI,kBAAkB,CAAC;IAEnF,IAAI,CAACC,cAAc,CAACC,SAAS,CAAC,CAACR,UAAU,EAAEC,SAAS,CAAC,CAAC;IAEtD,IAAI;MACF,IAAIQ,QAAsB;MAC1B,IAAIhC,UAAU,EAAE;QACdgC,QAAQ,GAAG,MAAM,IAAI,CAACnE,OAAO,CAACqB,IAAI,CAAC;UACjCQ,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B,aAAa;UACtC5B,IAAI,EAAE;YAAC+B,eAAe,EAAEF;UAAiB;QAC3C,CAAC,CAAC;;QAEF;QACA,IAAI,IAAI,CAACjB,mBAAmB,EAAE;UAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;YAC5BC,IAAI,EAAEJ,uBAAS,CAACgB,YAAY;YAC5BpC,eAAe,EAAEF;UACnB,CAAC,CAAC;QACJ;QAEA,IAAI,CAACmC,cAAc,CAACI,UAAU,CAC5BX,UAAU,EACV;UACEY,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;UAC/BG,eAAe,EAAEF,iBAAiB;UAClC,GAAGyC,uBAAc,CAACC,oCAAoC,CAACL,QAAQ;QACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;QACDtB,oBAAW,CAAC4B,GAAG,CAAC,kCAAkC,EAAE;UAClD3B,MAAM,EAAEC,kBAAO;UACfC,MAAM,EAAE/B,kBAAO,CAACgC,WAAW;UAC3ByB,UAAU,EAAEP,QAAQ,CAACO,UAAU;UAC/B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;QAC3B,CAAC,CAAC;MACJ,CAAC,MAAM;QACLsC,QAAQ,GAAG,MAAM,IAAI,CAACnE,OAAO,CAAC2E,MAAM,CAAC;UACnC9C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B,aAAa;UACtC5B,IAAI,EAAE;YAAC+B,eAAe,EAAEF;UAAiB;QAC3C,CAAC,CAAC;;QAEF;QACA,IAAI,IAAI,CAACjB,mBAAmB,EAAE;UAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;YAC5BC,IAAI,EAAEJ,uBAAS,CAACwB,cAAc;YAC9B5C,eAAe,EAAEF;UACnB,CAAC,CAAC;QACJ;QAEA,IAAI,CAACmC,cAAc,CAACI,UAAU,CAC5BX,UAAU,EACV;UACEY,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;UAC/BF,iBAAiB;UACjBK,eAAe,EAAEF,iBAAiB;UAClC,GAAGyC,uBAAc,CAACC,oCAAoC,CAACL,QAAQ;QACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;QACDtB,oBAAW,CAAC4B,GAAG,CAAC,2BAA2B,EAAE;UAC3C3B,MAAM,EAAEC,kBAAO;UACfC,MAAM,EAAE/B,kBAAO,CAACgC,WAAW;UAC3ByB,UAAU,EAAEP,QAAQ,CAACO,UAAU;UAC/B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;QAC3B,CAAC,CAAC;MACJ;MAEA,OAAOsC,QAAQ;IACjB,CAAC,CAAC,OAAOxB,KAAK,EAAE;MACd,MAAMkC,YAAY,GAAG1C,UAAU,GAAGiB,uBAAS,CAAC0B,WAAW,GAAG1B,uBAAS,CAAC2B,aAAa;MACjF,IAAI,CAAClE,mBAAmB,CAAC0C,IAAI,CAAC;QAC5BC,IAAI,EAAEqB,YAAY;QAClBG,MAAM,EAAErC,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACxBjD,eAAe,EAAE,IAAI,CAAC/B,IAAI,CAAC+B;MAC7B,CAAC,CAAC;MAEF,MAAM;QAACW,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,YAAY,EAAEI,kBAAO,CAAC;MAC5E,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BV,SAAS,EACTxB,UAAU,GACN;QACEmC,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/BG,eAAe,EAAE,IAAI,CAAC/B,IAAI,CAAC+B,eAAe;QAC1CW,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,GACD;QACEf,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/Bc,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACL,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;MACD,MAAMH,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAaI,cAAcA,CAAA,EAA0B;IACnD;IACA,MAAM9C,KAAK,GAAG,IAAI,CAAC5B,uBAAuB,CAAC,CAAC;IAC5C,IAAI4B,KAAK,EAAE;MACT,MAAM;QAAC+C,0BAA0B;QAAEC;MAAmB,CAAC,GAAGhD,KAAK,CAACiD,OAG/D;MACD,MAAMC,eAAe,GAAGC,OAAO,CAACJ,0BAA0B,IAAIC,mBAAmB,CAAC;MAClF,IAAI,CAACE,eAAe,EAAE;QACpB,MAAM/C,KAAK,GAAG,IAAIC,KAAK,CAAC,2CAA2C,CAAC;QACpEC,oBAAW,CAACF,KAAK,CAAC,uCAAuC,EAAE;UACzDG,MAAM,EAAEC,kBAAO;UACfC,MAAM,EAAE,gBAAgB;UACxBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;QAC3B,CAAC,CAAC;QACF,MAAMc,KAAK;MACb;IACF;IAEA,IAAI;MACFE,oBAAW,CAACY,IAAI,CAAC,mBAAmB,EAAE;QACpCX,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,gBAAgB;QACxBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,IAAI,CAACoC,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAACgC,4BAA4B,EAC/ChC,8BAAkB,CAACiC,2BAA2B,CAC/C,CAAC;MACF,MAAMC,MAAM,GAAG,MAAM,IAAI,CAAC9F,OAAO,CAACsF,cAAc,CAAC;QAACzD,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAAa,CAAC,CAAC;MAC1F,IAAI,CAACoC,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACgC,4BAA4B,EAC/C;QACEtB,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B,GAAG0C,uBAAc,CAACC,oCAAoC,CAACsB,MAAM;MAC/D,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACDjD,oBAAW,CAAC4B,GAAG,CAAC,+BAA+B,EAAE;QAC/C3B,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,gBAAgB;QACxB0B,UAAU,EAAEoB,MAAM,CAACpB,UAAU;QAC7B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MAEF,OAAOiE,MAAM;IACf,CAAC,CAAC,OAAOnD,KAAK,EAAE;MACd,MAAM;QAACA,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,gBAAgB,EAAEI,kBAAO,CAAC;MAChF,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACiC,2BAA2B,EAC9C;QACEvB,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/Bc,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACD,MAAMH,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAaa,eAAeA,CAC1BC,sBAA+C,EACxB;IACvB;IACA,MAAMxD,KAAK,GAAG,IAAI,CAAC5B,uBAAuB,CAAC,CAAC;IAC5C,IAAI4B,KAAK,EAAE;MACT,MAAM;QAAC+C,0BAA0B;QAAEC;MAAmB,CAAC,GAAGhD,KAAK,CAACiD,OAG/D;MACD,MAAMQ,eAAe,GAAGN,OAAO,CAACJ,0BAA0B,IAAI,CAACC,mBAAmB,CAAC;MACnF,IAAI,CAACS,eAAe,EAAE;QACpB,MAAMtD,KAAK,GAAG,IAAIC,KAAK,CAAC,yBAAyB,CAAC;QAClDC,oBAAW,CAACF,KAAK,CAAC,wCAAwC,EAAE;UAC1DG,MAAM,EAAEC,kBAAO;UACfC,MAAM,EAAE,iBAAiB;UACzBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;QAC3B,CAAC,CAAC;QACF,MAAMc,KAAK;MACb;IACF;IAEA,IAAI;MACFE,oBAAW,CAACY,IAAI,CAAC,oBAAoB,EAAE;QACrCX,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,iBAAiB;QACzBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,IAAI,CAACoC,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAACsC,6BAA6B,EAChDtC,8BAAkB,CAACuC,4BAA4B,CAChD,CAAC;MACFH,sBAAsB,KAAK;QAACI,WAAW,EAAE;MAAK,CAAC;MAE/C,MAAMN,MAAM,GAAG,MAAM,IAAI,CAAC9F,OAAO,CAAC+F,eAAe,CAAC;QAChDlE,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B,aAAa;QACtC5B,IAAI,EAAE+F;MACR,CAAC,CAAC;MACF,IAAI,CAAC/B,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACsC,6BAA6B,EAChD;QACE5B,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B,GAAG0C,uBAAc,CAACC,oCAAoC,CAACsB,MAAM;MAC/D,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACDjD,oBAAW,CAAC4B,GAAG,CAAC,gCAAgC,EAAE;QAChD3B,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,iBAAiB;QACzB0B,UAAU,EAAEoB,MAAM,CAACpB,UAAU;QAC7B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MAEF,OAAOiE,MAAM;IACf,CAAC,CAAC,OAAOnD,KAAK,EAAE;MACd,MAAM;QAACA,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,iBAAiB,EAAEI,kBAAO,CAAC;MACjF,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACuC,4BAA4B,EAC/C;QACE7B,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/Bc,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACD,MAAMH,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAamB,OAAOA,CAACC,cAA+B,EAAyB;IAC3E;IACA,MAAM9D,KAAK,GAAG,IAAI,CAAC5B,uBAAuB,CAAC,CAAC;IAC5C,MAAM2F,UAAU,GACd/D,KAAK,KACJA,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACG,SAAS,CAAC,IACjCC,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACC,IAAI,CAAC,IAC7BG,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACc,YAAY,CAAC,CAAC;IAE1C,IAAI,CAACqD,UAAU,EAAE;MACf,MAAM9D,YAAY,GAAGD,KAAK,EAAEd,KAAkB;MAC9C,MAAMiB,KAAK,GAAG,IAAIC,KAAK,CAAC,8BAA8BH,YAAY,QAAQ,CAAC;MAC3EI,oBAAW,CAACF,KAAK,CAAC,+BAA+B,EAAE;QACjDG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,SAAS;QACjBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,MAAMc,KAAK;IACb;;IAEA;IACA,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;MAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;QAC5BC,IAAI,EAAEJ,uBAAS,CAACoD,OAAO;QACvBC,WAAW,EAAEH,cAAc,CAACI,EAAE;QAC9BC,eAAe,EAAEL,cAAc,CAACK;MAClC,CAAC,CAAC;IACJ;IAEA,MAAMC,oBAAoB,GACxB,IAAI,CAAC3G,IAAI,CAAC2B,WAAW,EAAED,iBAAiB,IAAI,IAAI,CAAC1B,IAAI,CAAC4B,aAAa;IAErE,IAAI;MACFgB,oBAAW,CAACY,IAAI,CAAC,kBAAkB,EAAE;QACnCX,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,SAAS;QACjBnB,aAAa,EAAE+E;MACjB,CAAC,CAAC;MACF,IAAI,CAAC3C,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAACiD,0BAA0B,EAC7CjD,8BAAkB,CAACkD,yBAAyB,CAC7C,CAAC;MACF,MAAMhB,MAAM,GAAG,MAAM,IAAI,CAAC9F,OAAO,CAACqG,OAAO,CAAC;QACxCxE,aAAa,EAAE+E,oBAAoB;QACnC3G,IAAI,EAAEqG;MACR,CAAC,CAAC;;MAEF;MACA,IAAI,IAAI,CAACzF,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAC5BC,IAAI,EAAEJ,uBAAS,CAAC2D,eAAe;UAC/BC,QAAQ,EAAElB,MAAM,CAAC7F;QACnB,CAAC,CAAC;MACJ;MAEA,IAAI,CAACgE,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACiD,0BAA0B,EAC7C;QACEvC,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpBH,WAAW,EAAEH,cAAc,CAACI,EAAE;QAC9BC,eAAe,EAAEL,cAAc,CAACK,eAAe;QAC/C,GAAGpC,uBAAc,CAACC,oCAAoC,CAACsB,MAAM;MAC/D,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACDjD,oBAAW,CAAC4B,GAAG,CAAC,qCAAqC6B,cAAc,CAACI,EAAE,EAAE,EAAE;QACxE5D,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,SAAS;QACjB0B,UAAU,EAAEoB,MAAM,CAACpB,UAAU;QAC7B7C,aAAa,EAAE+E;MACjB,CAAC,CAAC;MAEF,OAAOd,MAAM;IACf,CAAC,CAAC,OAAOnD,KAAK,EAAE;MACd,IAAI,CAAC9B,mBAAmB,CAAC0C,IAAI,CAAC;QAC5BC,IAAI,EAAEJ,uBAAS,CAAC6D,cAAc;QAC9BjC,MAAM,EAAErC,KAAK,CAACsC,QAAQ,CAAC;MACzB,CAAC,CAAC;MAEF,MAAM;QAACtC,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,SAAS,EAAEI,kBAAO,CAAC;MACzE,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACkD,yBAAyB,EAC5C;QACExC,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpBH,WAAW,EAAEH,cAAc,CAACI,EAAE;QAC9BC,eAAe,EAAEL,cAAc,CAACK,eAAe;QAC/ChE,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACD,MAAMH,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAagC,UAAUA,CAACC,iBAAqC,EAAyB;IACpF,MAAMP,oBAAoB,GACxB,IAAI,CAAC3G,IAAI,CAAC2B,WAAW,EAAED,iBAAiB,IAAI,IAAI,CAAC1B,IAAI,CAAC4B,aAAa;IAErE,IAAI;MACFgB,oBAAW,CAACY,IAAI,CAAC,gBAAgB,EAAE;QACjCX,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,YAAY;QACpBnB,aAAa,EAAE+E;MACjB,CAAC,CAAC;MACF,IAAI,CAAC3C,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAACwD,wBAAwB,EAC3CxD,8BAAkB,CAACyD,uBAAuB,CAC3C,CAAC;MACF,MAAMvB,MAAM,GAAG,MAAM,IAAI,CAAC9F,OAAO,CAACsH,UAAU,CAAC;QAC3CzF,aAAa,EAAE+E,oBAAoB;QACnC3G,IAAI,EAAEkH;MACR,CAAC,CAAC;MACF,IAAI,CAAClD,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACwD,wBAAwB,EAC3C;QACE9C,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpB,GAAGrC,uBAAc,CAACC,oCAAoC,CAACsB,MAAM;MAC/D,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACDjD,oBAAW,CAAC4B,GAAG,CAAC,4BAA4B,EAAE;QAC5C3B,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,YAAY;QACpB0B,UAAU,EAAEoB,MAAM,CAACpB,UAAU;QAC7B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MAEF,OAAOiE,MAAM;IACf,CAAC,CAAC,OAAOnD,KAAK,EAAE;MACd,MAAM;QAACA,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,YAAY,EAAEI,kBAAO,CAAC;MAC5E,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACyD,uBAAuB,EAC1C;QACE/C,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpBjE,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACD,MAAMH,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAaqC,QAAQA,CAACC,OAAwB,EAAyB;IACrE,IAAI;MACF3E,oBAAW,CAACY,IAAI,CAAC,wBAAwB+D,OAAO,CAACd,EAAE,EAAE,EAAE;QACrD5D,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE/B,kBAAO,CAACwG,aAAa;QAC7B5F,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,IAAI,CAACoC,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAAC8D,qBAAqB,EACxC9D,8BAAkB,CAAC+D,oBAAoB,CACxC,CAAC;;MAEF;MACA,IAAI,IAAI,CAAC1H,IAAI,CAAC2B,WAAW,CAACY,KAAK,KAAK,YAAY,EAAE;QAChD,MAAMoF,yBAAyB,GAC7BJ,OAAO,CAACb,eAAe,KAAK,OAAO,IAAIa,OAAO,CAACb,eAAe,KAAK,OAAO,GACrEa,OAAO,CAACb,eAAe,CAACkB,WAAW,CAAC,CAAC,GACtCL,OAAO,CAACb,eAAe;QAC7B,IAAIL,cAAsC,GAAG;UAC3CI,EAAE,EAAEc,OAAO,CAACd,EAAE;UACdC,eAAe,EAAEiB;QACnB,CAAC;QAED,IAAIA,yBAAyB,KAAKE,wCAAiC,CAACC,KAAK,EAAE;UACzE,MAAMC,cAAc,GAAG,IAAI,CAACpH,uBAAuB,CAAC,CAAC,EAAE6E,OAAO;UAC9D,MAAMwC,SAAS,GAAGD,cAAc,EAAEE,yBAAyB,IAAI,IAAI,CAACjI,IAAI,CAACkI,WAAW;UACpF,IAAI,CAACF,SAAS,EAAE;YACd,MAAM,IAAIrF,KAAK,CAAC,8CAA8C,CAAC;UACjE;UACA0D,cAAc,GAAG;YACfI,EAAE,EAAEuB,SAAS;YACbtB,eAAe,EAAEmB,wCAAiC,CAACM;UACrD,CAAC;QACH;QAEA,MAAMtC,MAAM,GAAG,MAAM,IAAI,CAAC9F,OAAO,CAACqI,eAAe,CAAC;UAChDxG,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B,aAAa;UACtC5B,IAAI,EAAEqG;QACR,CAAC,CAAC;QACF,IAAI,CAACrC,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAAC8D,qBAAqB,EACxC;UACEpD,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;UAC/B4E,WAAW,EAAEH,cAAc,CAACI,EAAE;UAC9BC,eAAe,EAAEL,cAAc,CAACK,eAAe;UAC/C2B,iBAAiB,EAAE,IAAI;UACvB,GAAG/D,uBAAc,CAACC,oCAAoC,CAACsB,MAAM;QAC/D,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;QACDjD,oBAAW,CAAC4B,GAAG,CAAC,8CAA8C6B,cAAc,CAACI,EAAE,EAAE,EAAE;UACjF5D,MAAM,EAAEC,kBAAO;UACfC,MAAM,EAAE/B,kBAAO,CAACwG,aAAa;UAC7B/C,UAAU,EAAEoB,MAAM,CAACpB,UAAU;UAC7B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;QAC3B,CAAC,CAAC;QAEF,OAAOiE,MAAM;MACf;;MAEA;MACA,OAAO,MAAM,KAAK,CAACyB,QAAQ,CAAC;QAC1Bb,EAAE,EAAEc,OAAO,CAACd,EAAE;QACdC,eAAe,EAAEa,OAAO,CAACb;MAC3B,CAAC,CAAC;IACJ,CAAC,CAAC,OAAO4B,GAAG,EAAE;MACZ,MAAM;QAAC5F,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACoD,GAAG,EAAEtH,kBAAO,CAACwG,aAAa,EAAE1E,kBAAO,CAAC;MACnF,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAAC+D,oBAAoB,EACvC;QACErD,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B4E,WAAW,EAAEe,OAAO,CAACd,EAAE;QACvBC,eAAe,EAAEa,OAAO,CAACb,eAAe;QACxC2B,iBAAiB,EAAE,IAAI,CAACrI,IAAI,CAAC2B,WAAW,CAACY,KAAK,KAAK,YAAY;QAC/DG,KAAK,EAAE4F,GAAG,CAACtD,QAAQ,CAAC,CAAC;QACrB,GAAGV,uBAAc,CAACa,0CAA0C,CAACmD,GAAG,CAAClD,OAAO,IAAI,CAAC,CAAC;MAChF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MACD,MAAMH,aAAa;IACrB;EACF;;EAEA;AACF;AACA;EACE,MAAasD,iBAAiBA,CAAA,EAA0B;IACtD,MAAMC,kBAAkB,GACtB,IAAI,CAACxI,IAAI,CAAC2B,WAAW,IAAI,IAAI,CAAC3B,IAAI,CAACG,OAAO,GACtC,IAAAsI,2BAAoB,EAAC,IAAI,CAACzI,IAAI,CAAC2B,WAAW,EAAE,IAAI,CAAC3B,IAAI,CAACG,OAAO,CAAC,GAC9D,EAAE;IACR,MAAMuI,eAAe,GACnB,IAAI,CAAC1I,IAAI,CAAC2B,WAAW,IAAI,IAAI,CAAC3B,IAAI,CAACG,OAAO,GACtC,IAAAwI,wBAAiB,EAAC,IAAI,CAAC3I,IAAI,CAAC2B,WAAW,EAAE,IAAI,CAAC3B,IAAI,CAACG,OAAO,CAAC,GAC3D,EAAE;;IAER;IACA,MAAMyI,uBAAuB,GAC3BF,eAAe,IACf,IAAI,CAAC/H,uBAAuB,CAAC,CAAC,EAAE6E,OAAO,EAAEqD,sBAAsB,IAC/D,IAAI,CAAC7I,IAAI,CAAC0G,eAAe,IACzB,OAAO;IAET,MAAMoC,gBAA8C,GAAG;MACrD3I,OAAO,EAAE,IAAI,CAACH,IAAI,CAACG,OAAO;MAC1BuG,eAAe,EAAEkC,uBAAuB;MACxC;MACA;MACAV,WAAW,EACTM,kBAAkB,IAClB,IAAI,CAAC7H,uBAAuB,CAAC,CAAC,EAAE6E,OAAO,EAAEyC,yBAAyB,IAClE,IAAI,CAACjI,IAAI,CAACkI;IACd,CAAC;;IAED;IACA,IAAI,IAAI,CAACtH,mBAAmB,EAAE;MAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;QAC5BC,IAAI,EAAEJ,uBAAS,CAAC4F;MAClB,CAAC,CAAC;IACJ;IAEA,IAAI;MACF,IAAI,CAACD,gBAAgB,CAACZ,WAAW,EAAE;QACjC,MAAM,IAAIvF,KAAK,CAAC,wDAAwD,CAAC;MAC3E;MAEAC,oBAAW,CAACY,IAAI,CAAC,oCAAoCsF,gBAAgB,CAACZ,WAAW,EAAE,EAAE;QACnFrF,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE/B,kBAAO,CAACgI,kBAAkB;QAClCpH,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MAEF,MAAMqH,yBAAyB,GAAG,IAAAC,sCAA+B,EAC/DJ,gBAAgB,EAChB,IAAI,CAAC9I,IAAI,CAAC4B,aACZ,CAAC;MAED,MAAMsC,QAAQ,GAAG,MAAM,IAAI,CAACnE,OAAO,CAACwI,iBAAiB,CAAC;QACpD3G,aAAa,EAAEqH,yBAAyB,CAACrH,aAAa;QACtD5B,IAAI,EAAEiJ,yBAAyB,CAACjJ;MAClC,CAAC,CAAC;;MAEF;MACA,IAAI,IAAI,CAACY,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAC5BC,IAAI,EAAEJ,uBAAS,CAACgG;QAClB,CAAC,CAAC;MACJ;MAEA,IAAI,CAACnF,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACyF,6BAA6B,EAChD;QACE/E,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B4E,WAAW,EAAEyC,yBAAyB,CAACjJ,IAAI,CAACyG,EAAE;QAC9CC,eAAe,EAAEuC,yBAAyB,CAACjJ,IAAI,CAAC0G,eAAe;QAC/DvG,OAAO,EAAE8I,yBAAyB,CAACjJ,IAAI,CAACG,OAAO;QAC/C,GAAGmE,uBAAc,CAACC,oCAAoC,CAACL,QAAQ;MACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MAEDtB,oBAAW,CAAC4B,GAAG,CAAC,yCAAyC,EAAE;QACzD3B,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE/B,kBAAO,CAACgI,kBAAkB;QAClCpH,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MAEF,OAAOsC,QAAQ;IACjB,CAAC,CAAC,OAAOxB,KAAK,EAAE;MACd;MACA,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAC5BC,IAAI,EAAEJ,uBAAS,CAACkG,iBAAiB;UACjCtE,MAAM,EAAErC,KAAK,CAACsC,QAAQ,CAAC;QACzB,CAAC,CAAC;MACJ;MAEA,MAAM;QAACtC,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE1B,kBAAO,CAACgI,kBAAkB,EAAElG,kBAAO,CAAC;MAE1F,MAAMwG,gBAAgB,GAAG,IAAAJ,sCAA+B,EACtDJ,gBAAgB,EAChB,IAAI,CAAC9I,IAAI,CAAC4B,aACZ,CAAC;MAED,IAAI,CAACoC,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAAC4F,4BAA4B,EAC/C;QACElF,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B4E,WAAW,EAAE8C,gBAAgB,CAACtJ,IAAI,CAACyG,EAAE;QACrCC,eAAe,EAAE4C,gBAAgB,CAACtJ,IAAI,CAAC0G,eAAe;QACtDvG,OAAO,EAAEmJ,gBAAgB,CAACtJ,IAAI,CAACG,OAAO;QACtCuC,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MAEDxC,oBAAW,CAACF,KAAK,CAAC,oCAAoC,EAAE;QACtDG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE/B,kBAAO,CAACgI,kBAAkB;QAClCpH,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MAEF,MAAMqD,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAauE,cAAcA,CAAA,EAA0B;IACnD;IACA;IACA;IACA;IACA,MAAMjH,KAAK,GAAG,IAAI,CAAC5B,uBAAuB,CAAC,CAAC;IAC5C,MAAM8I,mBAAmB,GAAGlH,KAAK,EAAEE,OAAO,CAACN,uBAAS,CAACc,YAAY,CAAC;IAElE,MAAMyG,8BAA8B,GAAG,IAAI,CAAC1J,IAAI,GAAG,IAAA2J,oCAAyB,EAAC,IAAI,CAAC3J,IAAI,CAAC,GAAG,KAAK;IAE/F,IAAI,CAACuC,KAAK,IAAK,CAACkH,mBAAmB,IAAI,CAACC,8BAA+B,EAAE;MACvE,MAAMlH,YAAY,GAAGD,KAAK,EAAEd,KAAkB;MAC9C,MAAMiB,KAAK,GAAG,IAAIC,KAAK,CAAC,6BAA6BH,YAAY,QAAQ,CAAC;MAC1EI,oBAAW,CAACF,KAAK,CAAC,uCAAuC,EAAE;QACzDG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,gBAAgB;QACxBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,MAAMc,KAAK;IACb;;IAEA;IACA,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;MAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;QAC5BC,IAAI,EAAEJ,uBAAS,CAACyG,eAAe;QAC/BzJ,OAAO,EAAE,IAAI,CAACH,IAAI,CAACG;MACrB,CAAC,CAAC;IACJ;IAEA,MAAMwG,oBAAoB,GACxB,IAAI,CAAC3G,IAAI,CAAC2B,WAAW,EAAED,iBAAiB,IAAI,IAAI,CAAC1B,IAAI,CAAC4B,aAAa;IAErE,IAAI;MACFgB,oBAAW,CAACY,IAAI,CAAC,oBAAoB,EAAE;QACrCX,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,gBAAgB;QACxBnB,aAAa,EAAE+E;MACjB,CAAC,CAAC;MAEF,IAAI,CAAC3C,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAACkG,4BAA4B,EAC/ClG,8BAAkB,CAACmG,2BAA2B,CAC/C,CAAC;MAEF,MAAM5F,QAAQ,GAAG,MAAM,IAAI,CAACnE,OAAO,CAACyJ,cAAc,CAAC;QACjD5H,aAAa,EAAE+E;MACjB,CAAC,CAAC;;MAEF;MACA,IAAI,IAAI,CAAC/F,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAC5BC,IAAI,EAAEJ,uBAAS,CAAC4G,uBAAuB;UACvChD,QAAQ,EAAE7C,QAAQ,CAAClE;QACrB,CAAC,CAAC;MACJ;MAEA,IAAI,CAACgE,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACkG,4BAA4B,EAC/C;QACExF,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpBxG,OAAO,EAAE,IAAI,CAACH,IAAI,CAACG,OAAO;QAC1B,GAAGmE,uBAAc,CAACC,oCAAoC,CAACL,QAAQ;MACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MAEDtB,oBAAW,CAAC4B,GAAG,CAAC,gCAAgC,EAAE;QAChD3B,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,gBAAgB;QACxB0B,UAAU,EAAEP,QAAQ,CAACO,UAAU;QAC/B7C,aAAa,EAAE+E;MACjB,CAAC,CAAC;MAEF,OAAOzC,QAAQ;IACjB,CAAC,CAAC,OAAOxB,KAAK,EAAE;MACd;MACA,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAC5BC,IAAI,EAAEJ,uBAAS,CAAC6G,sBAAsB;UACtCjF,MAAM,EAAErC,KAAK,CAACsC,QAAQ,CAAC;QACzB,CAAC,CAAC;MACJ;MAEA,MAAM;QAACtC,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,gBAAgB,EAAEI,kBAAO,CAAC;MAChF,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACmG,2BAA2B,EAC9C;QACEzF,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpBxG,OAAO,EAAE,IAAI,CAACH,IAAI,CAACG,OAAO;QAC1BuC,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MAEDxC,oBAAW,CAACF,KAAK,CAAC,2BAA2B,EAAE;QAC7CG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,gBAAgB;QACxBnB,aAAa,EAAE+E;MACjB,CAAC,CAAC;MAEF,MAAM1B,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAagF,kBAAkBA,CAAA,EAA0B;IACvD;IACA;IACA;IACA,MAAM1H,KAAK,GAAG,IAAI,CAAC5B,uBAAuB,CAAC,CAAC;IAC5C,MAAMuJ,YAAY,GAChB3H,KAAK,KAAKA,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACc,YAAY,CAAC,IAAIV,KAAK,CAACE,OAAO,CAACN,uBAAS,CAACgI,UAAU,CAAC,CAAC;IACzF,IAAI,CAACD,YAAY,EAAE;MACjB,MAAM1H,YAAY,GAAGD,KAAK,EAAEd,KAAkB;MAC9C,MAAMiB,KAAK,GAAG,IAAIC,KAAK,CAAC,iCAAiCH,YAAY,QAAQ,CAAC;MAC9EI,oBAAW,CAACF,KAAK,CAAC,2CAA2C,EAAE;QAC7DG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,oBAAoB;QAC5BnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,MAAMc,KAAK;IACb;;IAEA;IACA,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;MAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;QAC5BC,IAAI,EAAEJ,uBAAS,CAACiH,mBAAmB;QACnCjK,OAAO,EAAE,IAAI,CAACH,IAAI,CAACG;MACrB,CAAC,CAAC;IACJ;IAEA,MAAMwG,oBAAoB,GACxB,IAAI,CAAC3G,IAAI,CAAC2B,WAAW,EAAED,iBAAiB,IAAI,IAAI,CAAC1B,IAAI,CAAC4B,aAAa;IAErE,IAAI;MACFgB,oBAAW,CAACY,IAAI,CAAC,yBAAyB,EAAE;QAC1CX,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,oBAAoB;QAC5BnB,aAAa,EAAE+E;MACjB,CAAC,CAAC;MAEF,IAAI,CAAC3C,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAAC0G,gCAAgC,EACnD1G,8BAAkB,CAAC2G,+BAA+B,CACnD,CAAC;MAEF,MAAMpG,QAAQ,GAAG,MAAM,IAAI,CAACnE,OAAO,CAACwK,kBAAkB,CAAC;QACrD3I,aAAa,EAAE+E;MACjB,CAAC,CAAC;;MAEF;MACA,IAAI,IAAI,CAAC/F,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAC5BC,IAAI,EAAEJ,uBAAS,CAACqH,2BAA2B;UAC3CzD,QAAQ,EAAE7C,QAAQ,CAAClE;QACrB,CAAC,CAAC;MACJ;MAEA,IAAI,CAACgE,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAAC0G,gCAAgC,EACnD;QACEhG,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpBxG,OAAO,EAAE,IAAI,CAACH,IAAI,CAACG,OAAO;QAC1B,GAAGmE,uBAAc,CAACC,oCAAoC,CAACL,QAAQ;MACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MAEDtB,oBAAW,CAAC4B,GAAG,CAAC,qCAAqC,EAAE;QACrD3B,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,oBAAoB;QAC5B0B,UAAU,EAAEP,QAAQ,CAACO,UAAU;QAC/B7C,aAAa,EAAE+E;MACjB,CAAC,CAAC;MAEF,OAAOzC,QAAQ;IACjB,CAAC,CAAC,OAAOxB,KAAK,EAAE;MACd;MACA,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAC5BC,IAAI,EAAEJ,uBAAS,CAACsH,0BAA0B;UAC1C1F,MAAM,EAAErC,KAAK,CAACsC,QAAQ,CAAC;QACzB,CAAC,CAAC;MACJ;MAEA,MAAM;QAACtC,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,oBAAoB,EAAEI,kBAAO,CAAC;MACpF,IAAI,CAACkB,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAAC2G,+BAA+B,EAClD;QACEjG,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/B+E,oBAAoB;QACpBxG,OAAO,EAAE,IAAI,CAACH,IAAI,CAACG,OAAO;QAC1BuC,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1C,CAAC;MAEDxC,oBAAW,CAACF,KAAK,CAAC,+BAA+B,EAAE;QACjDG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,oBAAoB;QAC5BnB,aAAa,EAAE+E;MACjB,CAAC,CAAC;MAEF,MAAM1B,aAAa;IACrB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAayF,UAAUA,CAAA,EAA0B;IAC/C;IACA,MAAMnI,KAAK,GAAG,IAAI,CAAC5B,uBAAuB,CAAC,CAAC;IAC5C,IAAI,CAAC4B,KAAK,EAAEE,OAAO,CAACN,uBAAS,CAACgI,UAAU,CAAC,EAAE;MACzC,MAAM3H,YAAY,GAAGD,KAAK,EAAEd,KAAkB;MAC9C,MAAMiB,KAAK,GAAG,IAAIC,KAAK,CAAC,yBAAyBH,YAAY,QAAQ,CAAC;MACtEI,oBAAW,CAACF,KAAK,CAAC,mCAAmC,EAAE;QACrDG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,YAAY;QACpBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,MAAMc,KAAK;IACb;;IAEA;IACA,MAAMiI,sBAAsB,GAAG,IAAAC,oCAAyB,EACtD,IAAI,CAAC5K,IAAI,CAAC2B,WAAW,EACrB,IAAI,CAAC3B,IAAI,CAAC2K,sBAAsB,EAChC,IAAI,CAAC3K,IAAI,CAACG,OACZ,CAAC;IACD,IAAI,CAACwK,sBAAsB,EAAE;MAC3B,MAAMjI,KAAK,GAAG,IAAIC,KAAK,CAAC,qCAAqC,CAAC;MAC9DC,oBAAW,CAACF,KAAK,CAAC,gDAAgD,EAAE;QAClEG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,YAAY;QACpBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,MAAMc,KAAK;IACb;IAEA,MAAM8C,OAAO,GAAGjD,KAAK,CAACiD,OAAO;IAC7B,MAAMqF,cAAc,GAAG,CAACrF,OAAO,CAACsF,eAAe;;IAE/C;IACA,MAAMC,WAAW,GAAGF,cAAc,GAC9B1H,uBAAS,CAAC6H,mBAAmB,GAC7B7H,uBAAS,CAAC8H,iBAAiB;IAC/B,MAAMC,WAAW,GAAGL,cAAc,GAC9B1H,uBAAS,CAAC8H,iBAAiB,GAC3B9H,uBAAS,CAAC6H,mBAAmB;IAEjC,IAAI,IAAI,CAACpK,mBAAmB,EAAE;MAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;QAACC,IAAI,EAAEwH;MAAW,CAAC,CAAC;IACpD;IAEA,IAAI,CAAC/G,cAAc,CAACC,SAAS,CAAC,CAC5BN,8BAAkB,CAACwH,wBAAwB,EAC3CxH,8BAAkB,CAACyH,uBAAuB,CAC3C,CAAC;IAEF,IAAI;MACF,IAAIP,cAAc,EAAE;QAClB,MAAM3G,QAAQ,GAAG,MAAM,IAAI,CAACnE,OAAO,CAAC2E,MAAM,CAAC;UACzC9C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B,aAAa;UACtC5B,IAAI,EAAE;YAAC+B,eAAe,EAAE,IAAI,CAAC/B,IAAI,CAAC+B;UAAe;QACnD,CAAC,CAAC;QAEF,IAAI,CAACiC,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACwH,wBAAwB,EAC3C;UACE9G,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;UAC/ByJ,SAAS,EAAE,YAAY;UACvBtJ,eAAe,EAAE4I,sBAAsB;UACvC,GAAGrG,uBAAc,CAACC,oCAAoC,CAACL,QAAQ;QACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;QAEDtB,oBAAW,CAAC4B,GAAG,CAAC,oCAAoC,EAAE;UACpD3B,MAAM,EAAEC,kBAAO;UACfC,MAAM,EAAE,YAAY;UACpB0B,UAAU,EAAEP,QAAQ,CAACO,UAAU;UAC/B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;QAC3B,CAAC,CAAC;QAEF,OAAOsC,QAAQ;MACjB;MAEA,MAAMA,QAAQ,GAAG,MAAM,IAAI,CAACnE,OAAO,CAACqB,IAAI,CAAC;QACvCQ,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B,aAAa;QACtC5B,IAAI,EAAE;UAAC+B,eAAe,EAAE,IAAI,CAAC/B,IAAI,CAAC+B;QAAe;MACnD,CAAC,CAAC;MAEF,IAAI,CAACiC,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACwH,wBAAwB,EAC3C;QACE9G,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/ByJ,SAAS,EAAE,eAAe;QAC1BtJ,eAAe,EAAE4I,sBAAsB;QACvC,GAAGrG,uBAAc,CAACC,oCAAoC,CAACL,QAAQ;MACjE,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;MAEDtB,oBAAW,CAAC4B,GAAG,CAAC,uCAAuC,EAAE;QACvD3B,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,YAAY;QACpB0B,UAAU,EAAEP,QAAQ,CAACO,UAAU;QAC/B7C,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MAEF,OAAOsC,QAAQ;IACjB,CAAC,CAAC,OAAOxB,KAAK,EAAE;MACd,IAAI,IAAI,CAAC9B,mBAAmB,EAAE;QAC5B,IAAI,CAACA,mBAAmB,CAAC0C,IAAI,CAAC;UAACC,IAAI,EAAE2H;QAAW,CAAC,CAAC;MACpD;MAEA,IAAI,CAAClH,cAAc,CAACI,UAAU,CAC5BT,8BAAkB,CAACyH,uBAAuB,EAC1C;QACE/G,MAAM,EAAE,IAAI,CAACrE,IAAI,CAAC4B,aAAa;QAC/ByJ,SAAS,EAAER,cAAc,GAAG,YAAY,GAAG,eAAe;QAC1D9I,eAAe,EAAE4I,sBAAsB;QACvCjI,KAAK,EAAEA,KAAK,CAACsC,QAAQ,CAAC,CAAC;QACvB,GAAGV,uBAAc,CAACa,0CAA0C,CAACzC,KAAK,CAAC0C,OAAO,IAAI,CAAC,CAAC;MAClF,CAAC,EACD,CAAC,aAAa,EAAE,YAAY,CAC9B,CAAC;MAED,MAAM;QAAC1C,KAAK,EAAEuC;MAAa,CAAC,GAAG,IAAAC,sBAAe,EAACxC,KAAK,EAAE,YAAY,EAAEI,kBAAO,CAAC;MAC5EF,oBAAW,CAACF,KAAK,CAAC,uBAAuB,EAAE;QACzCG,MAAM,EAAEC,kBAAO;QACfC,MAAM,EAAE,YAAY;QACpBnB,aAAa,EAAE,IAAI,CAAC5B,IAAI,CAAC4B;MAC3B,CAAC,CAAC;MACF,MAAMqD,aAAa;IACrB;EACF;EAEmBqG,iCAAiCA,CAAA,EAAG;IACrD,MAAMC,aAAa,GAAG,KAAK,CAACD,iCAAiC,CAAC,CAAC;IAE/D,OAAO;MACL,GAAGC,aAAa;MAChBC,YAAY,EAAE,IAAI,CAACC,oBAAoB,CAACC,kBAAW,CAACC,SAAS,EAAE;QAACC,cAAc,EAAE;MAAI,CAAC,CAAC;MACtFC,cAAc,EAAE,IAAI,CAACJ,oBAAoB,CAACC,kBAAW,CAACI,WAAW,EAAE;QAACF,cAAc,EAAE;MAAI,CAAC,CAAC;MAC1FG,wBAAwB,EAAE,IAAI,CAACN,oBAAoB,CAACC,kBAAW,CAACM,sBAAsB,EAAE;QACtFJ,cAAc,EAAE;MAClB,CAAC,CAAC;MACFK,uBAAuB,EAAE,IAAI,CAACR,oBAAoB,CAACC,kBAAW,CAACQ,qBAAqB,EAAE;QACpFN,cAAc,EAAE;MAClB,CAAC,CAAC;MACFO,4BAA4B,EAAE,IAAI,CAACV,oBAAoB,CACrDC,kBAAW,CAACU,2BAA2B,EACvC;QAACR,cAAc,EAAE;MAAI,CACvB,CAAC;MACDS,wBAAwB,EAAE,IAAI,CAACZ,oBAAoB,CAACC,kBAAW,CAACY,sBAAsB,EAAE;QACtFV,cAAc,EAAE;MAClB,CAAC,CAAC;MACFW,6BAA6B,EAAE,IAAI,CAACd,oBAAoB,CACtDC,kBAAW,CAACc,4BAA4B,EACxC;QAACZ,cAAc,EAAE;MAAI,CACvB,CAAC;MACD;MACAa,yBAAyB,EAAE,IAAI,CAAChB,oBAAoB,CAACC,kBAAW,CAACgB,uBAAuB,EAAE;QACxFd,cAAc,EAAE;MAClB,CAAC,CAAC;MACFe,uBAAuB,EAAE,IAAI,CAAClB,oBAAoB,CAACC,kBAAW,CAACkB,qBAAqB,EAAE;QACpFhB,cAAc,EAAE;MAClB,CAAC,CAAC;MACFiB,yBAAyB,EAAE,IAAI,CAACpB,oBAAoB,CAACC,kBAAW,CAACoB,uBAAuB,EAAE;QACxFlB,cAAc,EAAE;MAClB,CAAC,CAAC;MACFmB,uBAAuB,EAAE,IAAI,CAACtB,oBAAoB,CAACC,kBAAW,CAACsB,qBAAqB,EAAE;QACpFpB,cAAc,EAAE;MAClB,CAAC,CAAC;MACFqB,wBAAwB,EAAE,IAAI,CAACxB,oBAAoB,CAACC,kBAAW,CAACwB,sBAAsB,EAAE;QACtFtB,cAAc,EAAE;MAClB,CAAC,CAAC;MACFuB,sBAAsB,EAAE,IAAI,CAAC1B,oBAAoB,CAACC,kBAAW,CAAC0B,oBAAoB,EAAE;QAClFxB,cAAc,EAAE;MAClB,CAAC,CAAC;MACFyB,0BAA0B,EAAE,IAAI,CAAC5B,oBAAoB,CAACC,kBAAW,CAAC4B,wBAAwB,EAAE;QAC1F1B,cAAc,EAAE;MAClB,CAAC,CAAC;MACF2B,kBAAkB,EAAE,IAAI,CAAC9B,oBAAoB,CAACC,kBAAW,CAAC8B,gBAAgB,EAAE;QAC1E5B,cAAc,EAAE;MAClB,CAAC,CAAC;MACF6B,gCAAgC,EAAE,IAAI,CAAChC,oBAAoB,CACzDC,kBAAW,CAACpB,+BAA+B,EAC3C;QAACsB,cAAc,EAAE;MAAI,CACvB,CAAC;MACD8B,qBAAqB,EAAEA,CAAC;QAACC;MAAqB,CAAC,KAAK;QAClD,IAAIA,KAAK,IAAI,UAAU,IAAIA,KAAK,IAAIA,KAAK,CAAC5G,QAAQ,EAAE;UAClD,IAAI,CAAC6E,cAAc,CAAC+B,KAAK,CAAC5G,QAAoB,CAAC;QACjD;QACA,MAAMhC,MAAM,GAAI4I,KAAK,EAAwB5I,MAAM,IAAI,gBAAgB;QACvE,IAAI,CAAC6I,IAAI,CAAClC,kBAAW,CAACmC,mBAAmB,EAAE9I,MAAM,CAAC;MACpD;IACF,CAAC;EACH;AACF;AAAC+I,OAAA,CAAAnO,OAAA,GAAAC,KAAA","ignoreList":[]}
@@ -55,6 +55,8 @@ export declare const checkParticipantNotInInteraction: (task: ITask, agentId: st
55
55
  * We use mainInteractionId from the interaction if available, otherwise fallback to interactionId.
56
56
  */
57
57
  export declare const getIsConferenceInProgress: (data: TaskData) => boolean;
58
+ /** EP-DN consult merged to conference before a second agent joins the main leg (CAI-8329). */
59
+ export declare const isEpDnConsultPendingConferenceMerge: (taskData: TaskData | undefined, selfAgentId: string | undefined) => boolean;
58
60
  /**
59
61
  * Checks if the current agent is a secondary agent in a consultation scenario.
60
62
  * Secondary agents are those who were consulted (not the original call owner).
@@ -161,6 +161,13 @@ export declare function getTaskStateMachineConfig(uiControlConfig: UIControlConf
161
161
  target: TaskState;
162
162
  actions: string[];
163
163
  };
164
+ UNHOLD_INITIATED: {
165
+ target: TaskState;
166
+ };
167
+ UNHOLD_SUCCESS: {
168
+ target: TaskState;
169
+ actions: string[];
170
+ };
164
171
  CONSULT: {
165
172
  target: TaskState;
166
173
  actions: string[];
@@ -380,6 +387,15 @@ export declare function getTaskStateMachineConfig(uiControlConfig: UIControlConf
380
387
  UNHOLD_SUCCESS: {
381
388
  actions: string[];
382
389
  };
390
+ PARTICIPANT_LEAVE: ({
391
+ guard: (params: any) => boolean;
392
+ target: TaskState;
393
+ actions: string[];
394
+ } | {
395
+ actions: string[];
396
+ guard?: undefined;
397
+ target?: undefined;
398
+ })[];
383
399
  TRANSFER_SUCCESS: ({
384
400
  guard: ({ context, event }: import("./guards").GuardParams) => boolean;
385
401
  target: TaskState;
@@ -396,12 +412,6 @@ export declare function getTaskStateMachineConfig(uiControlConfig: UIControlConf
396
412
  actions: string[];
397
413
  };
398
414
  TRANSFER_CONFERENCE_SUCCESS: ({
399
- guard: ({ context }: {
400
- context: any;
401
- }) => boolean;
402
- actions: string[];
403
- target?: undefined;
404
- } | {
405
415
  guard: ({ context, event }: import("./guards").GuardParams) => boolean;
406
416
  target: TaskState;
407
417
  actions: string[];
@@ -521,12 +531,19 @@ export declare function getTaskStateMachineConfig(uiControlConfig: UIControlConf
521
531
  TRANSFER_CONFERENCE: {
522
532
  actions: string[];
523
533
  };
524
- TRANSFER_CONFERENCE_SUCCESS: {
525
- guard: ({ context }: {
526
- context: any;
527
- }) => boolean;
534
+ TRANSFER_CONFERENCE_SUCCESS: ({
535
+ guard: ({ context, event }: import("./guards").GuardParams) => boolean;
528
536
  actions: string[];
529
- }[];
537
+ target?: undefined;
538
+ } | {
539
+ guard: ({ context, event }: import("./guards").GuardParams) => boolean;
540
+ target: TaskState;
541
+ actions: string[];
542
+ } | {
543
+ target: TaskState;
544
+ actions: string[];
545
+ guard?: undefined;
546
+ })[];
530
547
  TRANSFER_CONFERENCE_FAILED: {
531
548
  actions: string[];
532
549
  };
@@ -549,6 +566,14 @@ export declare function getTaskStateMachineConfig(uiControlConfig: UIControlConf
549
566
  CONTACT_ENDED: {
550
567
  actions: string[];
551
568
  }[];
569
+ CONSULT_FAILED: {
570
+ actions: string[];
571
+ };
572
+ TASK_WRAPUP: {
573
+ guard: ({ context, event }: import("./guards").GuardParams) => boolean;
574
+ target: TaskState;
575
+ actions: string[];
576
+ };
552
577
  };
553
578
  };
554
579
  WRAPPING_UP: {
@@ -732,6 +757,13 @@ export declare function createTaskStateMachine(uiControlConfig: UIControlConfig,
732
757
  target: TaskState;
733
758
  actions: string[];
734
759
  };
760
+ UNHOLD_INITIATED: {
761
+ target: TaskState;
762
+ };
763
+ UNHOLD_SUCCESS: {
764
+ target: TaskState;
765
+ actions: string[];
766
+ };
735
767
  CONSULT: {
736
768
  target: TaskState;
737
769
  actions: string[];
@@ -951,6 +983,15 @@ export declare function createTaskStateMachine(uiControlConfig: UIControlConfig,
951
983
  UNHOLD_SUCCESS: {
952
984
  actions: string[];
953
985
  };
986
+ PARTICIPANT_LEAVE: ({
987
+ guard: (params: any) => boolean;
988
+ target: TaskState;
989
+ actions: string[];
990
+ } | {
991
+ actions: string[];
992
+ guard?: undefined;
993
+ target?: undefined;
994
+ })[];
954
995
  TRANSFER_SUCCESS: ({
955
996
  guard: ({ context, event }: import("./guards").GuardParams) => boolean;
956
997
  target: TaskState;
@@ -967,12 +1008,6 @@ export declare function createTaskStateMachine(uiControlConfig: UIControlConfig,
967
1008
  actions: string[];
968
1009
  };
969
1010
  TRANSFER_CONFERENCE_SUCCESS: ({
970
- guard: ({ context }: {
971
- context: any;
972
- }) => boolean;
973
- actions: string[];
974
- target?: undefined;
975
- } | {
976
1011
  guard: ({ context, event }: import("./guards").GuardParams) => boolean;
977
1012
  target: TaskState;
978
1013
  actions: string[];
@@ -1092,12 +1127,19 @@ export declare function createTaskStateMachine(uiControlConfig: UIControlConfig,
1092
1127
  TRANSFER_CONFERENCE: {
1093
1128
  actions: string[];
1094
1129
  };
1095
- TRANSFER_CONFERENCE_SUCCESS: {
1096
- guard: ({ context }: {
1097
- context: any;
1098
- }) => boolean;
1130
+ TRANSFER_CONFERENCE_SUCCESS: ({
1131
+ guard: ({ context, event }: import("./guards").GuardParams) => boolean;
1099
1132
  actions: string[];
1100
- }[];
1133
+ target?: undefined;
1134
+ } | {
1135
+ guard: ({ context, event }: import("./guards").GuardParams) => boolean;
1136
+ target: TaskState;
1137
+ actions: string[];
1138
+ } | {
1139
+ target: TaskState;
1140
+ actions: string[];
1141
+ guard?: undefined;
1142
+ })[];
1101
1143
  TRANSFER_CONFERENCE_FAILED: {
1102
1144
  actions: string[];
1103
1145
  };
@@ -1120,6 +1162,14 @@ export declare function createTaskStateMachine(uiControlConfig: UIControlConfig,
1120
1162
  CONTACT_ENDED: {
1121
1163
  actions: string[];
1122
1164
  }[];
1165
+ CONSULT_FAILED: {
1166
+ actions: string[];
1167
+ };
1168
+ TASK_WRAPUP: {
1169
+ guard: ({ context, event }: import("./guards").GuardParams) => boolean;
1170
+ target: TaskState;
1171
+ actions: string[];
1172
+ };
1123
1173
  };
1124
1174
  };
1125
1175
  WRAPPING_UP: {
@@ -42,6 +42,7 @@ export type GuardFunction = (params: GuardParams) => boolean;
42
42
  export declare const guards: {
43
43
  isInteractionTerminated: ({ context, event }: GuardParams) => boolean;
44
44
  isInteractionConsulting: ({ event, context }: GuardParams) => boolean;
45
+ isEpDnPendingConferenceMergeHydrate: ({ event, context }: GuardParams) => boolean;
45
46
  isInteractionHeld: ({ event }: GuardParams) => boolean;
46
47
  isInteractionConnected: ({ event }: GuardParams) => boolean;
47
48
  isConferencingByParticipants: ({ event }: GuardParams) => boolean;
@@ -84,6 +85,17 @@ export declare const guards: {
84
85
  * TERMINATED / WRAPPING_UP based on wrapup rules.
85
86
  */
86
87
  didCurrentAgentLeaveConference: ({ context, event }: GuardParams) => boolean;
88
+ /**
89
+ * True when this agent initiated the conference transfer (widgets or desktop).
90
+ * Mirrors determineConsultInitiator: consultingAgentId === self only (not consultState).
91
+ */
92
+ isSelfConferenceTransferInitiator: ({ context, event }: GuardParams) => boolean;
93
+ /**
94
+ * True when another agent performed conference transfer and this agent should
95
+ * only refresh task data (stay in the current state). False when this agent
96
+ * initiated the transfer (desktop or widgets) or has left the interaction.
97
+ */
98
+ isPassiveConferenceTransferObserver: ({ context, event }: GuardParams) => boolean;
87
99
  isCampaignReservationAccept: ({ event }: GuardParams) => boolean;
88
100
  isPrimaryMediaOnHold: ({ event }: GuardParams) => boolean;
89
101
  };
@@ -55,6 +55,8 @@ export interface TaskContext {
55
55
  consultDestinationAgentId: string | null;
56
56
  consultDestinationAgentJoined: boolean;
57
57
  consultCallHeld: boolean;
58
+ /** Set by deriveTaskDataUpdates / clearConsultState when EP-DN consult is merged to conference before Agent 2 joins (CAI-8329). */
59
+ hideBlindTransferForEpDnPendingMerge: boolean;
58
60
  recordingControlsAvailable: boolean;
59
61
  recordingInProgress: boolean;
60
62
  uiControlConfig: UIControlConfig;