@webex/contact-center 3.11.0 → 3.12.0-llmrefactor.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.sdd/manifest.json +882 -0
- package/AGENTS.md +94 -0
- package/ai-docs/ARCHITECTURE.md +168 -0
- package/ai-docs/CONTRACTS.md +46 -0
- package/ai-docs/GETTING_STARTED.md +168 -0
- package/ai-docs/GLOSSARY.md +43 -0
- package/ai-docs/README.md +138 -0
- package/ai-docs/REVIEW_CHECKLIST.md +41 -0
- package/ai-docs/RULES.md +444 -0
- package/ai-docs/SECURITY.md +52 -0
- package/ai-docs/SERVICE_STATE.md +48 -0
- package/ai-docs/SPEC_INDEX.md +65 -0
- package/ai-docs/adr/0001-spec-source-policy.md +55 -0
- package/ai-docs/adr/README.md +8 -0
- package/ai-docs/adr/_adr-template.md +31 -0
- package/ai-docs/contact-center-spec.md +341 -0
- package/ai-docs/features/generated-spec-conformance-fidelity-remediation/spec/feature-spec.md +117 -0
- package/ai-docs/features/residual-warning-coverage-completion/spec/feature-spec.md +203 -0
- package/ai-docs/features/validator-code-fidelity-drift-fix/spec/feature-spec.md +315 -0
- package/ai-docs/patterns/event-driven-patterns.md +485 -0
- package/ai-docs/patterns/testing-patterns.md +480 -0
- package/ai-docs/patterns/typescript-patterns.md +365 -0
- package/ai-docs/templates/README.md +102 -0
- package/ai-docs/templates/documentation/create-agents-md.md +240 -0
- package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
- package/ai-docs/templates/existing-service/bug-fix.md +254 -0
- package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
- package/ai-docs/templates/new-method/00-master.md +80 -0
- package/ai-docs/templates/new-method/01-requirements.md +232 -0
- package/ai-docs/templates/new-method/02-implementation.md +295 -0
- package/ai-docs/templates/new-method/03-tests.md +201 -0
- package/ai-docs/templates/new-method/04-validation.md +141 -0
- package/ai-docs/templates/new-service/00-master.md +109 -0
- package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
- package/ai-docs/templates/new-service/02-code-generation.md +346 -0
- package/ai-docs/templates/new-service/03-integration.md +178 -0
- package/ai-docs/templates/new-service/04-test-generation.md +205 -0
- package/ai-docs/templates/new-service/05-validation.md +145 -0
- package/dist/cc.js +379 -50
- package/dist/cc.js.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/constants.js +22 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.js +27 -5
- package/dist/index.js.map +1 -1
- package/dist/metrics/behavioral-events.js +114 -0
- package/dist/metrics/behavioral-events.js.map +1 -1
- package/dist/metrics/constants.js +32 -3
- package/dist/metrics/constants.js.map +1 -1
- package/dist/services/ApiAiAssistant.js +318 -0
- package/dist/services/ApiAiAssistant.js.map +1 -0
- package/dist/services/UserPreference.js +427 -0
- package/dist/services/UserPreference.js.map +1 -0
- package/dist/services/agent/types.js.map +1 -1
- package/dist/services/config/Util.js +8 -4
- package/dist/services/config/Util.js.map +1 -1
- package/dist/services/config/constants.js +35 -2
- package/dist/services/config/constants.js.map +1 -1
- package/dist/services/config/index.js +41 -2
- package/dist/services/config/index.js.map +1 -1
- package/dist/services/config/types.js +66 -8
- package/dist/services/config/types.js.map +1 -1
- package/dist/services/constants.js +27 -1
- package/dist/services/constants.js.map +1 -1
- package/dist/services/core/Err.js.map +1 -1
- package/dist/services/core/Utils.js +122 -25
- package/dist/services/core/Utils.js.map +1 -1
- package/dist/services/core/aqm-reqs.js +92 -17
- package/dist/services/core/aqm-reqs.js.map +1 -1
- package/dist/services/core/websocket/WebSocketManager.js +22 -6
- package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
- package/dist/services/core/websocket/connection-service.js +3 -1
- package/dist/services/core/websocket/connection-service.js.map +1 -1
- package/dist/services/core/websocket/types.js.map +1 -1
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/task/Task.js +688 -0
- package/dist/services/task/Task.js.map +1 -0
- package/dist/services/task/TaskFactory.js +45 -0
- package/dist/services/task/TaskFactory.js.map +1 -0
- package/dist/services/task/TaskManager.js +751 -457
- package/dist/services/task/TaskManager.js.map +1 -1
- package/dist/services/task/TaskUtils.js +220 -23
- package/dist/services/task/TaskUtils.js.map +1 -1
- package/dist/services/task/constants.js +23 -2
- package/dist/services/task/constants.js.map +1 -1
- package/dist/services/task/dialer.js +129 -0
- package/dist/services/task/dialer.js.map +1 -1
- package/dist/services/task/digital/Digital.js +77 -0
- package/dist/services/task/digital/Digital.js.map +1 -0
- package/dist/services/task/state-machine/TaskStateMachine.js +873 -0
- package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
- package/dist/services/task/state-machine/actions.js +567 -0
- package/dist/services/task/state-machine/actions.js.map +1 -0
- package/dist/services/task/state-machine/constants.js +161 -0
- package/dist/services/task/state-machine/constants.js.map +1 -0
- package/dist/services/task/state-machine/guards.js +382 -0
- package/dist/services/task/state-machine/guards.js.map +1 -0
- package/dist/services/task/state-machine/index.js +53 -0
- package/dist/services/task/state-machine/index.js.map +1 -0
- package/dist/services/task/state-machine/types.js +54 -0
- package/dist/services/task/state-machine/types.js.map +1 -0
- package/dist/services/task/state-machine/uiControlsComputer.js +603 -0
- package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
- package/dist/services/task/taskDataNormalizer.js +99 -0
- package/dist/services/task/taskDataNormalizer.js.map +1 -0
- package/dist/services/task/types.js +227 -4
- package/dist/services/task/types.js.map +1 -1
- package/dist/services/task/voice/Voice.js +1044 -0
- package/dist/services/task/voice/Voice.js.map +1 -0
- package/dist/services/task/voice/WebRTC.js +149 -0
- package/dist/services/task/voice/WebRTC.js.map +1 -0
- package/dist/types/cc.d.ts +894 -0
- package/dist/types/config.d.ts +72 -0
- package/dist/types/constants.d.ts +66 -0
- package/dist/types/index.d.ts +199 -0
- package/dist/types/logger-proxy.d.ts +71 -0
- package/dist/types/metrics/MetricsManager.d.ts +223 -0
- package/dist/types/metrics/behavioral-events.d.ts +29 -0
- package/dist/types/metrics/constants.d.ts +181 -0
- package/dist/types/services/AddressBook.d.ts +74 -0
- package/dist/types/services/ApiAiAssistant.d.ts +49 -0
- package/dist/types/services/EntryPoint.d.ts +67 -0
- package/dist/types/services/Queue.d.ts +76 -0
- package/dist/types/services/UserPreference.d.ts +118 -0
- package/dist/types/services/WebCallingService.d.ts +1 -0
- package/dist/types/services/agent/index.d.ts +46 -0
- package/dist/types/services/agent/types.d.ts +413 -0
- package/dist/types/services/config/Util.d.ts +20 -0
- package/dist/types/services/config/constants.d.ts +270 -0
- package/dist/types/services/config/index.d.ts +177 -0
- package/dist/types/services/config/types.d.ts +1368 -0
- package/dist/types/services/constants.d.ts +110 -0
- package/dist/types/services/core/Err.d.ts +125 -0
- package/dist/types/services/core/GlobalTypes.d.ts +58 -0
- package/dist/types/services/core/Utils.d.ts +121 -0
- package/dist/types/services/core/WebexRequest.d.ts +22 -0
- package/dist/types/services/core/aqm-reqs.d.ts +65 -0
- package/dist/types/services/core/constants.d.ts +99 -0
- package/dist/types/services/core/types.d.ts +47 -0
- package/dist/types/services/core/websocket/WebSocketManager.d.ts +36 -0
- package/dist/types/services/core/websocket/connection-service.d.ts +27 -0
- package/dist/types/services/core/websocket/keepalive.worker.d.ts +2 -0
- package/dist/types/services/core/websocket/types.d.ts +37 -0
- package/dist/types/services/index.d.ts +54 -0
- package/dist/types/services/task/AutoWrapup.d.ts +40 -0
- package/dist/types/services/task/Task.d.ts +157 -0
- package/dist/types/services/task/TaskFactory.d.ts +12 -0
- package/dist/types/services/task/TaskManager.d.ts +1 -0
- package/dist/types/services/task/TaskUtils.d.ts +138 -0
- package/dist/types/services/task/constants.d.ts +91 -0
- package/dist/types/services/task/contact.d.ts +69 -0
- package/dist/types/services/task/dialer.d.ts +73 -0
- package/dist/types/services/task/digital/Digital.d.ts +22 -0
- package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1194 -0
- package/dist/types/services/task/state-machine/actions.d.ts +10 -0
- package/dist/types/services/task/state-machine/constants.d.ts +107 -0
- package/dist/types/services/task/state-machine/guards.d.ts +102 -0
- package/dist/types/services/task/state-machine/index.d.ts +13 -0
- package/dist/types/services/task/state-machine/types.d.ts +269 -0
- package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
- package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
- package/dist/types/services/task/types.d.ts +1856 -0
- package/dist/types/services/task/voice/Voice.d.ts +184 -0
- package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
- package/dist/types/types.d.ts +778 -0
- package/dist/types/utils/PageCache.d.ts +173 -0
- package/dist/types/webex-config.d.ts +53 -0
- package/dist/types/webex.d.ts +8 -0
- package/dist/types.js +130 -1
- package/dist/types.js.map +1 -1
- package/dist/webex.js +14 -2
- package/dist/webex.js.map +1 -1
- package/package.json +16 -12
- package/src/cc.ts +477 -51
- package/src/config.ts +6 -0
- package/src/constants.ts +21 -1
- package/src/index.ts +24 -5
- package/src/metrics/ai-docs/AGENTS.md +350 -0
- package/src/metrics/ai-docs/ARCHITECTURE.md +338 -0
- package/src/metrics/ai-docs/metrics-spec.md +854 -0
- package/src/metrics/behavioral-events.ts +120 -0
- package/src/metrics/constants.ts +37 -3
- package/src/services/ApiAiAssistant.ts +412 -0
- package/src/services/UserPreference.ts +509 -0
- package/src/services/agent/ai-docs/AGENTS.md +240 -0
- package/src/services/agent/ai-docs/ARCHITECTURE.md +304 -0
- package/src/services/agent/ai-docs/agent-spec.md +504 -0
- package/src/services/agent/types.ts +1 -1
- package/src/services/ai-docs/AGENTS.md +386 -0
- package/src/services/ai-docs/services-spec.md +492 -0
- package/src/services/config/Util.ts +10 -2
- package/src/services/config/ai-docs/AGENTS.md +255 -0
- package/src/services/config/ai-docs/ARCHITECTURE.md +426 -0
- package/src/services/config/ai-docs/config-spec.md +669 -0
- package/src/services/config/constants.ts +37 -1
- package/src/services/config/index.ts +45 -1
- package/src/services/config/types.ts +241 -11
- package/src/services/constants.ts +29 -0
- package/src/services/core/Err.ts +3 -0
- package/src/services/core/Utils.ts +143 -30
- package/src/services/core/ai-docs/AGENTS.md +381 -0
- package/src/services/core/ai-docs/ARCHITECTURE.md +698 -0
- package/src/services/core/ai-docs/core-spec.md +783 -0
- package/src/services/core/aqm-reqs.ts +100 -22
- package/src/services/core/websocket/WebSocketManager.ts +23 -6
- package/src/services/core/websocket/connection-service.ts +5 -1
- package/src/services/core/websocket/types.ts +1 -1
- package/src/services/index.ts +4 -0
- package/src/services/task/Task.ts +837 -0
- package/src/services/task/TaskFactory.ts +55 -0
- package/src/services/task/TaskManager.ts +793 -521
- package/src/services/task/TaskUtils.ts +314 -24
- package/src/services/task/ai-docs/AGENTS.md +457 -0
- package/src/services/task/ai-docs/ARCHITECTURE.md +594 -0
- package/src/services/task/ai-docs/task-spec.md +1319 -0
- package/src/services/task/constants.ts +23 -0
- package/src/services/task/dialer.ts +136 -1
- package/src/services/task/digital/Digital.ts +95 -0
- package/src/services/task/state-machine/TaskStateMachine.ts +1166 -0
- package/src/services/task/state-machine/actions.ts +738 -0
- package/src/services/task/state-machine/ai-docs/AGENTS.md +458 -0
- package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1137 -0
- package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +2177 -0
- package/src/services/task/state-machine/constants.ts +172 -0
- package/src/services/task/state-machine/guards.ts +445 -0
- package/src/services/task/state-machine/index.ts +28 -0
- package/src/services/task/state-machine/types.ts +243 -0
- package/src/services/task/state-machine/uiControlsComputer.ts +961 -0
- package/src/services/task/taskDataNormalizer.ts +137 -0
- package/src/services/task/types.ts +734 -71
- package/src/services/task/voice/Voice.ts +1270 -0
- package/src/services/task/voice/WebRTC.ts +187 -0
- package/src/types.ts +205 -2
- package/src/utils/AGENTS.md +278 -0
- package/src/utils/ai-docs/utils-spec.md +381 -0
- package/src/webex.js +2 -0
- package/test/unit/spec/cc.ts +503 -43
- package/test/unit/spec/logger-proxy.ts +70 -0
- package/test/unit/spec/services/ApiAiAssistant.ts +273 -0
- package/test/unit/spec/services/UserPreference.ts +401 -0
- package/test/unit/spec/services/WebCallingService.ts +7 -1
- package/test/unit/spec/services/config/index.ts +85 -29
- package/test/unit/spec/services/core/Utils.ts +481 -2
- package/test/unit/spec/services/core/websocket/WebSocketManager.ts +137 -41
- package/test/unit/spec/services/core/websocket/connection-service.ts +3 -1
- package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
- package/test/unit/spec/services/task/Task.ts +477 -0
- package/test/unit/spec/services/task/TaskFactory.ts +62 -0
- package/test/unit/spec/services/task/TaskManager.ts +1001 -1003
- package/test/unit/spec/services/task/TaskUtils.ts +235 -0
- package/test/unit/spec/services/task/dialer.ts +372 -96
- package/test/unit/spec/services/task/digital/Digital.ts +105 -0
- package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +2651 -0
- package/test/unit/spec/services/task/state-machine/guards.ts +637 -0
- package/test/unit/spec/services/task/state-machine/types.ts +18 -0
- package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +2663 -0
- package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
- package/test/unit/spec/services/task/voice/Voice.ts +649 -0
- package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
- package/umd/contact-center.min.js +2 -2
- package/umd/contact-center.min.js.map +1 -1
- package/dist/services/task/index.js +0 -1525
- package/dist/services/task/index.js.map +0 -1
- package/src/services/task/index.ts +0 -1801
- package/test/unit/spec/services/task/index.ts +0 -2184
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_xstate","require","_constants","_types","_uiControlsComputer","_TaskUtils","_guards","CONSULT_CONTEXT_CLEAR_EVENTS","Set","CC_EVENTS","AGENT_CONSULT_ENDED","AGENT_CONSULT_FAILED","determineConsultInitiator","taskData","selfAgentId","undefined","consultingAgentId","isConsulted","deriveRecordingState","callProcessingDetails","interaction","update","recordingStarted","recordInProgress","isPaused","recordingControlsAvailable","recordingInProgress","isActiveConsultState","state","INTERACTION_STATE","CONSULTING","selfParticipant","participants","hasConsultMedia","Object","values","media","some","mType","MEDIA_TYPE_CONSULT","consultState","hasJoinedConsultDestination","CONSULT_STATE","CONFERENCING","POST_CALL","isSelfConsultingOrPending","isDnOnConsultMedia","consultMedia","consultMediaResourceId","find","m","consultParticipantIds","size","p","hasLeft","id","has","pType","String","toUpperCase","mapConsultDestinationType","destinationType","normalized","cpd","backendSaysJoined","consultDestinationAgentJoined","effectiveSelfAgentId","agentId","type","hasJoined","deriveConsultCallHeldFromTaskData","eventType","consultMediaId","Boolean","isHold","getTaskStateForUiControls","TaskState","IDLE","isTerminated","WRAPPING_UP","isEpDnConsultPendingConferenceMerge","CONFERENCE","getIsConferenceInProgress","mainMediaId","mainInteractionId","interactionId","isMainHeld","HELD","CONNECTED","exports","deriveTaskDataUpdates","context","enrichedTaskData","updates","uiControlConfig","consultingActive","hasActiveConsultInPostCall","conferenceFromPayload","selfConsultingOrPending","inferredConsultingInitiator","destAgentId","isEpDnWithStoredId","consultDestinationType","consultDestinationAgentId","isConsultTerminalEvent","epDnPendingMergeActive","consultInitiator","consultFromConference","consultCallHeld","transferConferenceRequested","hideBlindTransferForEpDnPendingMerge","effectiveConsultInitiator","joinedConsultee","agentConsultingSelfJoined","hasEpDnParticipant","nextContext","inferredState","uiControls","computeUIControls","getTaskDataFromEvent","event","createInitialContext","initialState","baseContext","exitingConference","getDefaultUIControls","updateUIControls","currentState","assign","actions","initializeTask","updateTaskData","setConsultInitiator","TaskEvent","CONSULT","handleConsultFailed","cleared","handleConferenceStarted","setConsultDestination","destination","setConsultFromConference","forceConsultInitiator","setConsultAgentJoined","CONSULTING_ACTIVE","eventValue","setRecordingState","PAUSE_RECORDING","RESUME_RECORDING","clearConsultState","setTransferConferenceRequested","clearTransferConferenceRequested","setConsultCallHeld","clearConsultCallHeld","handleSwitchToMainCall","handleSwitchToConsult","handleConferenceFailed","handleParticipantLeft","setExitingConference","handleTransferConferenceSuccess","setHoldState","HOLD_SUCCESS","UNHOLD_SUCCESS","mediaResourceId","mediaEntry","updatedMedia","isConsultMedia","markEnded","requestAutoAnswer","requestCleanup","cleanupResources","emitTaskCampaignPreviewReservation","emitTaskCampaignPreviewAcceptFailed","emitTaskCampaignPreviewSkipFailed","emitTaskCampaignPreviewRemoveFailed","emitTaskIncoming","emitTaskHydrate","emitTaskOfferContact","emitTaskAssigned","emitTaskHold","emitTaskResume","emitTaskEnd","emitTaskOfferConsult","emitTaskConsultCreated","emitTaskConsulting","emitTaskConsultAccepted","emitTaskConsultEnd","emitTaskReject","emitTaskWrapup","emitTaskRecordingStarted","emitTaskRecordingPaused","emitTaskRecordingResumed","emitTaskWrappedup","emitTaskParticipantLeft","emitTaskConferenceStarted","emitTaskConferenceEnded","emitTaskExitConference","emitTaskTransferConference","emitTaskSwitchCall","emitTaskConferenceFailed","emitTaskTransferConferenceFailed","emitTaskOutdialFailed"],"sources":["actions.ts"],"sourcesContent":["/**\n * Task State Machine Actions - Action implementations executed during state transitions\n */\n\nimport {assign} from 'xstate';\nimport {\n TaskContext,\n TaskEventPayload,\n UIControlConfig,\n TaskActionsMap,\n TaskActionArgs,\n RecordingStateUpdate,\n} from './types';\nimport {\n TaskEvent,\n TaskState,\n INTERACTION_STATE,\n CONSULT_STATE,\n MEDIA_TYPE_CONSULT,\n} from './constants';\nimport {DestinationType, TaskData} from '../types';\nimport {CC_EVENTS} from '../../config/types';\nimport {computeUIControls, getDefaultUIControls} from './uiControlsComputer';\nimport {getIsConferenceInProgress, isEpDnConsultPendingConferenceMerge} from '../TaskUtils';\nimport {hasActiveConsultInPostCall} from './guards';\n\n/** Terminal consult events that clear consult context in deriveTaskDataUpdates. */\nconst CONSULT_CONTEXT_CLEAR_EVENTS = new Set<string>([\n CC_EVENTS.AGENT_CONSULT_ENDED,\n CC_EVENTS.AGENT_CONSULT_FAILED,\n]);\n\nconst determineConsultInitiator = (\n taskData: TaskData | undefined,\n selfAgentId: string | undefined\n): boolean | undefined => {\n if (!selfAgentId) return undefined;\n\n if (taskData?.consultingAgentId) {\n return taskData.consultingAgentId === selfAgentId;\n }\n\n if (taskData?.isConsulted === true) return false;\n\n return undefined;\n};\n\nconst deriveRecordingState = (taskData?: TaskData | null): RecordingStateUpdate => {\n const callProcessingDetails = taskData?.interaction?.callProcessingDetails;\n\n if (!callProcessingDetails) {\n return {};\n }\n\n const update: RecordingStateUpdate = {};\n const {recordingStarted, recordInProgress, isPaused} = callProcessingDetails as {\n recordingStarted?: boolean;\n recordInProgress?: boolean;\n isPaused?: boolean;\n };\n\n if (recordingStarted !== undefined) {\n update.recordingControlsAvailable = recordingStarted;\n if (!recordingStarted) {\n update.recordingInProgress = false;\n }\n }\n\n if (recordInProgress !== undefined) {\n update.recordingControlsAvailable = recordInProgress || recordingStarted || false;\n update.recordingInProgress = recordInProgress;\n }\n\n if (\n update.recordingControlsAvailable === undefined &&\n update.recordingInProgress === undefined &&\n recordingStarted\n ) {\n update.recordingControlsAvailable = true;\n update.recordingInProgress = true;\n }\n\n if (isPaused !== undefined) {\n update.recordingControlsAvailable = true;\n update.recordingInProgress = !isPaused;\n }\n\n return update;\n};\n\nconst isActiveConsultState = (taskData: TaskData | undefined, selfAgentId?: string): boolean => {\n if (taskData?.interaction?.state === INTERACTION_STATE.CONSULTING) return true;\n if (selfAgentId) {\n const selfParticipant = taskData?.interaction?.participants?.[selfAgentId] as any;\n const hasConsultMedia = Object.values(taskData?.interaction?.media ?? {}).some(\n (media: any) => media?.mType === MEDIA_TYPE_CONSULT\n );\n // Pending consult before destination joins stays HELD, not CONSULTING.\n if (\n selfParticipant?.consultState === 'consultInitiated' &&\n !hasJoinedConsultDestination(taskData, selfAgentId) &&\n hasConsultMedia &&\n taskData?.isConsulted === false\n ) {\n return false;\n }\n if (\n (selfParticipant?.consultState === CONSULT_STATE.CONSULTING ||\n selfParticipant?.consultState === CONSULT_STATE.CONFERENCING) &&\n hasConsultMedia &&\n taskData?.isConsulted === false\n ) {\n return true;\n }\n }\n if (taskData?.interaction?.state === INTERACTION_STATE.POST_CALL && selfAgentId) {\n const selfParticipant = taskData.interaction?.participants?.[selfAgentId] as any;\n const hasConsultMedia = Object.values(taskData.interaction?.media ?? {}).some(\n (media: any) => media?.mType === MEDIA_TYPE_CONSULT\n );\n if (selfParticipant?.consultState === CONSULT_STATE.CONSULTING && hasConsultMedia) return true;\n }\n\n return false;\n};\n\nconst isSelfConsultingOrPending = (\n taskData: TaskData | undefined,\n selfAgentId?: string\n): boolean => {\n if (!taskData || !selfAgentId) return false;\n const selfParticipant = taskData?.interaction?.participants?.[selfAgentId] as any;\n\n return (\n selfParticipant?.consultState === CONSULT_STATE.CONSULTING ||\n selfParticipant?.consultState === CONSULT_STATE.CONFERENCING ||\n selfParticipant?.consultState === 'consultInitiated'\n );\n};\n\nconst isDnOnConsultMedia = (taskData: TaskData | undefined, selfAgentId?: string): boolean => {\n if (!taskData?.interaction?.participants) return false;\n\n const consultMedia: any = taskData.consultMediaResourceId\n ? taskData.interaction.media?.[taskData.consultMediaResourceId]\n : Object.values(taskData.interaction.media ?? {}).find(\n (m: any) => m?.mType === MEDIA_TYPE_CONSULT\n );\n const consultParticipantIds = new Set(consultMedia?.participants ?? []);\n if (consultParticipantIds.size === 0) return false;\n\n return Object.values(taskData.interaction.participants).some((p: any) => {\n if (!p || p.hasLeft || p.id === selfAgentId) return false;\n if (!consultParticipantIds.has(p.id)) return false;\n const pType = String(p.pType ?? '').toUpperCase();\n\n return pType === 'DN' || pType === 'EP-DN' || pType === 'EP_DN';\n });\n};\n\nconst mapConsultDestinationType = (\n destinationType: string | undefined\n): DestinationType | undefined => {\n if (!destinationType) return undefined;\n const normalized = String(destinationType).toUpperCase();\n if (normalized === 'DN' || normalized === 'EP-DN' || normalized === 'EP_DN') {\n return 'entryPoint' as DestinationType;\n }\n\n return destinationType as DestinationType;\n};\n\nconst hasJoinedConsultDestination = (\n taskData: TaskData | undefined,\n selfAgentId?: string\n): boolean => {\n if (!taskData?.interaction) return false;\n const participants = taskData.interaction.participants as any;\n const cpd = taskData.interaction.callProcessingDetails as any;\n const backendSaysJoined = cpd?.consultDestinationAgentJoined === 'true';\n if (backendSaysJoined) return true;\n if (!participants) return false;\n\n const effectiveSelfAgentId = selfAgentId ?? taskData.agentId;\n const selfParticipant = effectiveSelfAgentId\n ? (participants[effectiveSelfAgentId] as {consultState?: string} | undefined)\n : undefined;\n\n if (\n taskData.type === 'AgentConsulting' &&\n selfParticipant?.consultState === CONSULT_STATE.CONSULTING &&\n taskData.isConsulted === false &&\n isDnOnConsultMedia(taskData, effectiveSelfAgentId)\n ) {\n return true;\n }\n\n return Object.values(participants).some((p: any) => {\n if (!p || p.isConsulted !== true || p.hasLeft) return false;\n\n return p.hasJoined === true || p.consultState === CONSULT_STATE.CONSULTING;\n });\n};\n\nconst deriveConsultCallHeldFromTaskData = (taskData: TaskData | undefined): boolean | undefined => {\n if (!taskData?.interaction) return undefined;\n\n const eventType = taskData.type;\n if (eventType === 'AgentContactHeld') return true;\n if (eventType === 'AgentContactUnheld') return false;\n\n const consultMediaId = taskData.consultMediaResourceId;\n\n const consultMedia: any = consultMediaId\n ? taskData.interaction.media?.[consultMediaId]\n : Object.values(taskData.interaction.media ?? {}).find(\n (m: any) => m?.mType === MEDIA_TYPE_CONSULT\n );\n\n if (!consultMedia) return undefined;\n\n return Boolean(consultMedia.isHold);\n};\n\nexport const getTaskStateForUiControls = (\n taskData: TaskData | undefined,\n selfAgentId: string | undefined\n): TaskState => {\n if (!taskData?.interaction) {\n return TaskState.IDLE;\n }\n\n if (taskData.interaction.isTerminated === true) {\n return TaskState.WRAPPING_UP;\n }\n\n // EP-DN consult merged to conference before Agent 2 joins main — UI is conferencing (CAI-8329).\n if (isEpDnConsultPendingConferenceMerge(taskData, selfAgentId)) {\n return TaskState.CONFERENCING;\n }\n\n if (isActiveConsultState(taskData, selfAgentId)) {\n return TaskState.CONSULTING;\n }\n\n if (\n taskData.interaction.state === INTERACTION_STATE.CONFERENCE ||\n getIsConferenceInProgress(taskData)\n ) {\n return TaskState.CONFERENCING;\n }\n\n const mainMediaId = taskData.interaction.mainInteractionId || taskData.interactionId;\n const isMainHeld = Boolean(\n mainMediaId && taskData.interaction.media?.[mainMediaId]?.isHold === true\n );\n if (taskData.interaction.state === 'hold' || isMainHeld) {\n return TaskState.HELD;\n }\n\n return TaskState.CONNECTED;\n};\n\nconst deriveTaskDataUpdates = (context: TaskContext, taskData: TaskData | undefined) =>\n taskData\n ? (() => {\n const enrichedTaskData: TaskData =\n taskData.type === 'AgentConsultCreated' && taskData.agentId\n ? {...taskData, consultingAgentId: taskData.agentId}\n : taskData;\n\n const updates: Partial<TaskContext> = {\n taskData: enrichedTaskData,\n ...deriveRecordingState(enrichedTaskData),\n };\n\n const selfAgentId = context.uiControlConfig.agentId ?? enrichedTaskData?.agentId;\n const consultingActive =\n isActiveConsultState(enrichedTaskData, selfAgentId) ||\n hasActiveConsultInPostCall(enrichedTaskData, selfAgentId);\n const conferenceFromPayload =\n enrichedTaskData?.interaction?.state === INTERACTION_STATE.CONFERENCE ||\n getIsConferenceInProgress(enrichedTaskData);\n const selfConsultingOrPending = isSelfConsultingOrPending(enrichedTaskData, selfAgentId);\n const inferredConsultingInitiator =\n selfConsultingOrPending && enrichedTaskData?.isConsulted === false;\n\n if (enrichedTaskData.destAgentId) {\n const isEpDnWithStoredId =\n context.consultDestinationType === 'entryPoint' && context.consultDestinationAgentId;\n if (!isEpDnWithStoredId) {\n updates.consultDestinationAgentId = enrichedTaskData.destAgentId;\n }\n }\n\n const isConsultTerminalEvent =\n enrichedTaskData.type != null && CONSULT_CONTEXT_CLEAR_EVENTS.has(enrichedTaskData.type);\n const epDnPendingMergeActive = isEpDnConsultPendingConferenceMerge(\n enrichedTaskData,\n selfAgentId\n );\n\n if (isConsultTerminalEvent && !epDnPendingMergeActive) {\n updates.consultInitiator = false;\n updates.consultFromConference = false;\n updates.consultDestinationAgentJoined = false;\n updates.consultCallHeld = false;\n updates.consultDestinationType = null;\n updates.consultDestinationAgentId = null;\n updates.transferConferenceRequested = false;\n updates.hideBlindTransferForEpDnPendingMerge = false;\n }\n\n updates.hideBlindTransferForEpDnPendingMerge = isEpDnConsultPendingConferenceMerge(\n enrichedTaskData,\n selfAgentId\n );\n\n if (consultingActive && enrichedTaskData.destinationType) {\n updates.consultDestinationType = mapConsultDestinationType(\n enrichedTaskData.destinationType\n );\n }\n\n if (!isConsultTerminalEvent) {\n const consultInitiator = determineConsultInitiator(enrichedTaskData, selfAgentId);\n if (consultInitiator !== undefined) {\n updates.consultInitiator = consultInitiator;\n } else if (\n enrichedTaskData.type === 'AgentConsultCreated' &&\n enrichedTaskData.agentId &&\n enrichedTaskData.agentId !== selfAgentId &&\n conferenceFromPayload\n ) {\n updates.consultInitiator = false;\n } else if (!context.consultInitiator) {\n if (\n inferredConsultingInitiator ||\n (consultingActive && enrichedTaskData.isConsulted === false)\n ) {\n updates.consultInitiator = true;\n }\n }\n }\n\n const effectiveConsultInitiator = updates.consultInitiator ?? context.consultInitiator;\n if (\n !isConsultTerminalEvent &&\n effectiveConsultInitiator &&\n conferenceFromPayload &&\n (consultingActive ||\n selfConsultingOrPending ||\n Boolean(enrichedTaskData?.consultMediaResourceId))\n ) {\n updates.consultFromConference = true;\n }\n\n if (\n !isConsultTerminalEvent &&\n (consultingActive || selfConsultingOrPending) &&\n enrichedTaskData.interaction\n ) {\n const joinedConsultee = hasJoinedConsultDestination(enrichedTaskData, selfAgentId);\n const selfParticipant = selfAgentId\n ? (enrichedTaskData.interaction.participants?.[selfAgentId] as\n | {consultState?: string}\n | undefined)\n : undefined;\n const agentConsultingSelfJoined =\n enrichedTaskData.type === 'AgentConsulting' &&\n effectiveConsultInitiator &&\n selfParticipant?.consultState === CONSULT_STATE.CONSULTING;\n\n if (joinedConsultee || agentConsultingSelfJoined) {\n updates.consultDestinationAgentJoined = true;\n } else if (selfParticipant?.consultState === 'consultInitiated') {\n updates.consultDestinationAgentJoined = false;\n }\n\n if (!context.consultDestinationType && !updates.consultDestinationType) {\n const hasEpDnParticipant = Boolean(\n enrichedTaskData.interaction.participants &&\n Object.values(enrichedTaskData.interaction.participants).some((p: any) => {\n if (p?.hasLeft) return false;\n const pType = String(p?.pType ?? '').toUpperCase();\n\n return pType === 'EP-DN' || pType === 'EP_DN' || pType === 'DN';\n })\n );\n if (hasEpDnParticipant) updates.consultDestinationType = 'entryPoint' as any;\n }\n\n if (effectiveConsultInitiator) {\n const consultCallHeld = deriveConsultCallHeldFromTaskData(enrichedTaskData);\n if (consultCallHeld !== undefined) {\n updates.consultCallHeld = consultCallHeld;\n }\n }\n }\n\n const nextContext = {\n ...context,\n ...updates,\n } as TaskContext;\n const inferredState = getTaskStateForUiControls(enrichedTaskData, selfAgentId);\n\n updates.uiControls = computeUIControls(inferredState, nextContext, enrichedTaskData);\n\n return updates;\n })()\n : {};\n\nconst getTaskDataFromEvent = (event?: TaskEventPayload): TaskData | undefined =>\n event && typeof event === 'object' ? (event as any).taskData : undefined;\n\nexport function createInitialContext(\n uiControlConfig: UIControlConfig,\n initialState: TaskState = TaskState.IDLE\n): TaskContext {\n const baseContext: TaskContext = {\n taskData: null,\n consultInitiator: false,\n exitingConference: false,\n consultFromConference: false,\n transferConferenceRequested: false,\n consultDestinationType: null,\n consultDestinationAgentId: null,\n consultDestinationAgentJoined: false,\n consultCallHeld: false,\n hideBlindTransferForEpDnPendingMerge: false,\n recordingControlsAvailable: false,\n recordingInProgress: false,\n uiControlConfig,\n uiControls: getDefaultUIControls(),\n };\n\n baseContext.uiControls = computeUIControls(initialState, baseContext);\n\n return baseContext;\n}\n\nexport function updateUIControls(currentState: TaskState) {\n return assign(({context}: TaskActionArgs) => ({\n uiControls: computeUIControls(currentState, context, context.taskData ?? undefined),\n }));\n}\n\nexport const actions: TaskActionsMap = {\n initializeTask: assign(({context, event}: {context: TaskContext; event: TaskEventPayload}) => {\n return {\n consultInitiator: false,\n exitingConference: false,\n consultDestinationType: null,\n consultDestinationAgentJoined: false,\n ...deriveTaskDataUpdates(context, getTaskDataFromEvent(event)),\n };\n }),\n\n /**\n * Update task data from ASSIGN event\n */\n updateTaskData: assign(({context, event}: TaskActionArgs) => {\n return deriveTaskDataUpdates(context, getTaskDataFromEvent(event));\n }),\n\n /**\n * Set consult initiator flag\n *\n * IMPORTANT: This action is called for CONSULT (user action) and CONSULT_CREATED (backend event).\n * For CONSULT (user action): The user explicitly clicked Consult, so they ARE the initiator.\n * For CONSULT_CREATED (backend event): Check taskData.isConsulted to determine if this agent\n * is the initiator. If isConsulted === true, this is Agent B (the consulted party), NOT the initiator.\n *\n * This prevents all agents in a conference from becoming consultInitiator when one agent\n * starts a new consult.\n */\n setConsultInitiator: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n if (event.type === TaskEvent.CONSULT) return {consultInitiator: true};\n\n const selfAgentId = taskData?.agentId;\n const consultInitiator = determineConsultInitiator(taskData, selfAgentId);\n if (consultInitiator === true) return {consultInitiator: true};\n if (consultInitiator === false) return {consultInitiator: false};\n\n return {};\n }),\n\n handleConsultFailed: assign(({context, event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event) ?? context.taskData;\n const selfAgentId = context.uiControlConfig.agentId ?? taskData?.agentId;\n const hideBlindTransferForEpDnPendingMerge = isEpDnConsultPendingConferenceMerge(\n taskData,\n selfAgentId\n );\n const cleared = {\n consultDestinationType: null,\n consultDestinationAgentId: null,\n consultDestinationAgentJoined: false,\n consultInitiator: false,\n exitingConference: false,\n consultCallHeld: false,\n consultFromConference: false,\n transferConferenceRequested: false,\n hideBlindTransferForEpDnPendingMerge,\n };\n const nextContext = {...context, ...cleared, taskData} as TaskContext;\n const inferredState = getTaskStateForUiControls(taskData, selfAgentId);\n\n return {\n ...cleared,\n uiControls: computeUIControls(inferredState, nextContext, taskData),\n };\n }),\n handleConferenceStarted: assign({consultInitiator: false}),\n\n setConsultDestination: assign(({event}: TaskActionArgs) => {\n if (!event || event.type !== TaskEvent.CONSULT) {\n return {};\n }\n\n const taskData = getTaskDataFromEvent(event);\n const consultDestinationType =\n 'destinationType' in event ? event.destinationType ?? null : null;\n const consultDestinationAgentId =\n ('destAgentId' in event ? event.destAgentId : null) ??\n ('destination' in event ? (event as any).destination : null) ??\n null;\n\n return {\n consultDestinationType,\n consultDestinationAgentId,\n consultDestinationAgentJoined: false,\n consultFromConference: false,\n taskData: {\n ...taskData,\n destAgentId: consultDestinationAgentId,\n },\n };\n }),\n\n setConsultFromConference: assign({consultFromConference: true}),\n\n forceConsultInitiator: assign({consultInitiator: true}),\n\n setConsultAgentJoined: assign(\n ({context, event}: {context: TaskContext; event: TaskEventPayload}) => {\n if (context.consultDestinationAgentJoined) {\n return {};\n }\n\n if (\n !event ||\n event.type !== TaskEvent.CONSULTING_ACTIVE ||\n !('consultDestinationAgentJoined' in event)\n ) {\n return {};\n }\n\n const eventValue = (event as {consultDestinationAgentJoined: boolean})\n .consultDestinationAgentJoined;\n\n return eventValue ? {consultDestinationAgentJoined: true} : {};\n }\n ),\n\n setRecordingState: assign(({event}: TaskActionArgs) => {\n if (!event || !('type' in event)) {\n return {};\n }\n\n if (event.type === TaskEvent.PAUSE_RECORDING) {\n return {\n recordingControlsAvailable: true,\n recordingInProgress: false,\n };\n }\n if (event.type === TaskEvent.RESUME_RECORDING) {\n return {\n recordingControlsAvailable: true,\n recordingInProgress: true,\n };\n }\n\n return {};\n }),\n\n clearConsultState: assign(({context, event}: TaskActionArgs) => {\n const taskData = context.taskData ?? getTaskDataFromEvent(event);\n const selfAgentId = context.uiControlConfig.agentId ?? taskData?.agentId;\n const hideBlindTransferForEpDnPendingMerge = isEpDnConsultPendingConferenceMerge(\n taskData,\n selfAgentId\n );\n const cleared = {\n consultDestinationType: null,\n consultDestinationAgentId: null,\n consultDestinationAgentJoined: false,\n consultInitiator: false,\n exitingConference: false,\n consultCallHeld: false,\n consultFromConference: false,\n transferConferenceRequested: false,\n hideBlindTransferForEpDnPendingMerge,\n };\n const nextContext = {...context, ...cleared, taskData} as TaskContext;\n const inferredState = getTaskStateForUiControls(taskData, selfAgentId);\n\n return {\n ...cleared,\n uiControls: computeUIControls(inferredState, nextContext, taskData),\n };\n }),\n\n setTransferConferenceRequested: assign({transferConferenceRequested: true}),\n clearTransferConferenceRequested: assign({transferConferenceRequested: false}),\n\n setConsultCallHeld: assign({consultCallHeld: true}),\n clearConsultCallHeld: assign({consultCallHeld: false}),\n handleSwitchToMainCall: assign({consultCallHeld: true}),\n handleSwitchToConsult: assign({consultCallHeld: false}),\n\n handleConferenceFailed: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n handleParticipantLeft: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n\n setExitingConference: assign({exitingConference: true}),\n\n handleTransferConferenceSuccess: assign(({event}: TaskActionArgs) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData ? {taskData} : {};\n }),\n\n setHoldState: assign(({context, event}: TaskActionArgs) => {\n if (\n !event ||\n (event.type !== TaskEvent.HOLD_SUCCESS && event.type !== TaskEvent.UNHOLD_SUCCESS)\n ) {\n return {};\n }\n\n const mediaResourceId =\n 'mediaResourceId' in event\n ? (event as {mediaResourceId?: string}).mediaResourceId\n : undefined;\n\n if (!mediaResourceId) {\n return {};\n }\n\n const interaction = context.taskData?.interaction;\n const mediaEntry = interaction?.media?.[mediaResourceId];\n\n if (!interaction || !mediaEntry) {\n return {};\n }\n\n const updatedMedia = {\n ...interaction.media,\n [mediaResourceId]: {\n ...mediaEntry,\n isHold: event.type === TaskEvent.HOLD_SUCCESS,\n },\n };\n\n const updates: Partial<TaskContext> = {\n taskData: {\n ...(context.taskData as TaskData),\n interaction: {\n ...interaction,\n media: updatedMedia,\n },\n },\n };\n\n const consultMediaId = context.taskData?.consultMediaResourceId;\n const isConsultMedia = consultMediaId\n ? mediaResourceId === consultMediaId\n : mediaEntry?.mType === 'consult';\n\n if (isConsultMedia && context.consultInitiator) {\n updates.consultCallHeld = event.type === TaskEvent.HOLD_SUCCESS;\n }\n\n return updates;\n }),\n\n markEnded: assign(() => ({\n recordingControlsAvailable: false,\n recordingInProgress: false,\n })),\n\n requestAutoAnswer: () => undefined,\n requestCleanup: () => undefined,\n cleanupResources: () => undefined,\n\n // Event emitters - placeholders overridden by consumers\n emitTaskCampaignPreviewReservation: () => undefined,\n emitTaskCampaignPreviewAcceptFailed: () => undefined,\n emitTaskCampaignPreviewSkipFailed: () => undefined,\n emitTaskCampaignPreviewRemoveFailed: () => undefined,\n emitTaskIncoming: () => undefined,\n emitTaskHydrate: () => undefined,\n emitTaskOfferContact: () => undefined,\n emitTaskAssigned: () => undefined,\n emitTaskHold: () => undefined,\n emitTaskResume: () => undefined,\n emitTaskEnd: () => undefined,\n emitTaskOfferConsult: () => undefined,\n emitTaskConsultCreated: () => undefined,\n emitTaskConsulting: () => undefined,\n emitTaskConsultAccepted: () => undefined,\n emitTaskConsultEnd: () => undefined,\n emitTaskReject: () => undefined,\n emitTaskWrapup: () => undefined,\n emitTaskRecordingStarted: () => undefined,\n emitTaskRecordingPaused: () => undefined,\n emitTaskRecordingResumed: () => undefined,\n emitTaskWrappedup: () => undefined,\n emitTaskParticipantLeft: () => undefined,\n emitTaskConferenceStarted: () => undefined,\n emitTaskConferenceEnded: () => undefined,\n emitTaskExitConference: () => undefined,\n emitTaskTransferConference: () => undefined,\n emitTaskSwitchCall: () => undefined,\n emitTaskConferenceFailed: () => undefined,\n emitTaskTransferConferenceFailed: () => undefined,\n emitTaskOutdialFailed: () => undefined,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TaskState = exports.TaskEvent = exports.PARTICIPANT_TYPE = exports.MEDIA_TYPE_MAIN_CALL = exports.MEDIA_TYPE_CONSULT = exports.MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = exports.INTERACTION_STATE = exports.CONSULT_STATE = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Constants for the task state machine.
|
|
9
|
+
* These enums define the allowed states, events, and built-in action identifiers.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// ============================================
|
|
13
|
+
// Conference Constants
|
|
14
|
+
// ============================================
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Maximum number of participants allowed in a multi-party conference.
|
|
18
|
+
* Max 7 counted agents + 1 customer.
|
|
19
|
+
*/
|
|
20
|
+
const MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = exports.MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = 7;
|
|
21
|
+
|
|
22
|
+
// ============================================
|
|
23
|
+
// Participant Type Constants
|
|
24
|
+
// ============================================
|
|
25
|
+
|
|
26
|
+
/** Participant types for conference filtering */
|
|
27
|
+
const PARTICIPANT_TYPE = exports.PARTICIPANT_TYPE = {
|
|
28
|
+
CUSTOMER: 'Customer',
|
|
29
|
+
SUPERVISOR: 'Supervisor',
|
|
30
|
+
VVA: 'VVA'
|
|
31
|
+
};
|
|
32
|
+
// ============================================
|
|
33
|
+
// Media Type Constants
|
|
34
|
+
// ============================================
|
|
35
|
+
|
|
36
|
+
/** Media type for consult calls */
|
|
37
|
+
const MEDIA_TYPE_CONSULT = exports.MEDIA_TYPE_CONSULT = 'consult';
|
|
38
|
+
|
|
39
|
+
/** Media type for main calls */
|
|
40
|
+
const MEDIA_TYPE_MAIN_CALL = exports.MEDIA_TYPE_MAIN_CALL = 'mainCall';
|
|
41
|
+
|
|
42
|
+
// ============================================
|
|
43
|
+
// Backend Interaction State Constants
|
|
44
|
+
// ============================================
|
|
45
|
+
|
|
46
|
+
/** Backend interaction state values (from server payloads) */
|
|
47
|
+
const INTERACTION_STATE = exports.INTERACTION_STATE = {
|
|
48
|
+
CONSULTING: 'consulting',
|
|
49
|
+
POST_CALL: 'post_call',
|
|
50
|
+
CONFERENCE: 'conference',
|
|
51
|
+
CONNECTED: 'connected',
|
|
52
|
+
NEW: 'new'
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/** Backend participant consultState values */
|
|
56
|
+
const CONSULT_STATE = exports.CONSULT_STATE = {
|
|
57
|
+
CONSULTING: 'consulting',
|
|
58
|
+
CONFERENCING: 'conferencing'
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// ============================================
|
|
62
|
+
// State Machine Enums
|
|
63
|
+
// ============================================
|
|
64
|
+
let TaskState = exports.TaskState = /*#__PURE__*/function (TaskState) {
|
|
65
|
+
TaskState["IDLE"] = "IDLE";
|
|
66
|
+
TaskState["OFFERED"] = "OFFERED";
|
|
67
|
+
TaskState["CONNECTED"] = "CONNECTED";
|
|
68
|
+
// Intermediate states for async operations
|
|
69
|
+
TaskState["HOLD_INITIATING"] = "HOLD_INITIATING";
|
|
70
|
+
TaskState["HELD"] = "HELD";
|
|
71
|
+
TaskState["RESUME_INITIATING"] = "RESUME_INITIATING";
|
|
72
|
+
TaskState["CONSULT_INITIATING"] = "CONSULT_INITIATING";
|
|
73
|
+
TaskState["CONSULTING"] = "CONSULTING";
|
|
74
|
+
TaskState["CONF_INITIATING"] = "CONF_INITIATING";
|
|
75
|
+
TaskState["CONFERENCING"] = "CONFERENCING";
|
|
76
|
+
TaskState["WRAPPING_UP"] = "WRAPPING_UP";
|
|
77
|
+
TaskState["COMPLETED"] = "COMPLETED";
|
|
78
|
+
TaskState["TERMINATED"] = "TERMINATED";
|
|
79
|
+
// NOT IMPLEMENTED: MPC (Multi-Party Conference) states
|
|
80
|
+
TaskState["CONSULT_INITIATED"] = "CONSULT_INITIATED";
|
|
81
|
+
TaskState["CONSULT_COMPLETED"] = "CONSULT_COMPLETED";
|
|
82
|
+
// NOT IMPLEMENTED: Post-call state (isWxccPostCallEnabled feature flag)
|
|
83
|
+
TaskState["POST_CALL"] = "POST_CALL";
|
|
84
|
+
// NOT IMPLEMENTED: Parked state
|
|
85
|
+
TaskState["PARKED"] = "PARKED";
|
|
86
|
+
// NOT IMPLEMENTED: Monitoring/Supervisory states
|
|
87
|
+
TaskState["MONITORING"] = "MONITORING";
|
|
88
|
+
return TaskState;
|
|
89
|
+
}({});
|
|
90
|
+
let TaskEvent = exports.TaskEvent = /*#__PURE__*/function (TaskEvent) {
|
|
91
|
+
TaskEvent["TASK_INCOMING"] = "TASK_INCOMING";
|
|
92
|
+
TaskEvent["TASK_OFFERED"] = "TASK_OFFERED";
|
|
93
|
+
// Offer events
|
|
94
|
+
TaskEvent["OFFER_CONSULT"] = "OFFER_CONSULT";
|
|
95
|
+
TaskEvent["HYDRATE"] = "HYDRATE";
|
|
96
|
+
// Internal "data refresh" events
|
|
97
|
+
TaskEvent["CONTACT_UPDATED"] = "CONTACT_UPDATED";
|
|
98
|
+
TaskEvent["CONTACT_OWNER_CHANGED"] = "CONTACT_OWNER_CHANGED";
|
|
99
|
+
// Assignment events
|
|
100
|
+
TaskEvent["ASSIGN"] = "ASSIGN";
|
|
101
|
+
// Hold/Resume events
|
|
102
|
+
TaskEvent["HOLD_SUCCESS"] = "HOLD_SUCCESS";
|
|
103
|
+
TaskEvent["HOLD_FAILED"] = "HOLD_FAILED";
|
|
104
|
+
TaskEvent["UNHOLD_SUCCESS"] = "UNHOLD_SUCCESS";
|
|
105
|
+
TaskEvent["UNHOLD_FAILED"] = "UNHOLD_FAILED";
|
|
106
|
+
TaskEvent["HOLD_INITIATED"] = "HOLD_INITIATED";
|
|
107
|
+
TaskEvent["UNHOLD_INITIATED"] = "UNHOLD_INITIATED";
|
|
108
|
+
// Consult events
|
|
109
|
+
TaskEvent["CONSULT"] = "CONSULT";
|
|
110
|
+
TaskEvent["CONSULT_SUCCESS"] = "CONSULT_SUCCESS";
|
|
111
|
+
TaskEvent["CONSULT_CREATED"] = "CONSULT_CREATED";
|
|
112
|
+
TaskEvent["CONSULTING_ACTIVE"] = "CONSULTING_ACTIVE";
|
|
113
|
+
TaskEvent["CONSULT_END"] = "CONSULT_END";
|
|
114
|
+
TaskEvent["CONSULT_FAILED"] = "CONSULT_FAILED";
|
|
115
|
+
// Conference events
|
|
116
|
+
TaskEvent["MERGE_TO_CONFERENCE"] = "MERGE_TO_CONFERENCE";
|
|
117
|
+
TaskEvent["CONFERENCE_START"] = "CONFERENCE_START";
|
|
118
|
+
TaskEvent["CONFERENCE_FAILED"] = "CONFERENCE_FAILED";
|
|
119
|
+
TaskEvent["CONFERENCE_END"] = "CONFERENCE_END";
|
|
120
|
+
TaskEvent["TRANSFER_CONFERENCE"] = "TRANSFER_CONFERENCE";
|
|
121
|
+
TaskEvent["TRANSFER_CONFERENCE_SUCCESS"] = "TRANSFER_CONFERENCE_SUCCESS";
|
|
122
|
+
TaskEvent["TRANSFER_CONFERENCE_FAILED"] = "TRANSFER_CONFERENCE_FAILED";
|
|
123
|
+
TaskEvent["PARTICIPANT_LEAVE"] = "PARTICIPANT_LEAVE";
|
|
124
|
+
TaskEvent["EXIT_CONFERENCE"] = "EXIT_CONFERENCE";
|
|
125
|
+
TaskEvent["EXIT_CONFERENCE_SUCCESS"] = "EXIT_CONFERENCE_SUCCESS";
|
|
126
|
+
TaskEvent["EXIT_CONFERENCE_FAILED"] = "EXIT_CONFERENCE_FAILED";
|
|
127
|
+
// Recording events
|
|
128
|
+
TaskEvent["RECORDING_STARTED"] = "RECORDING_STARTED";
|
|
129
|
+
TaskEvent["PAUSE_RECORDING"] = "PAUSE_RECORDING";
|
|
130
|
+
TaskEvent["RESUME_RECORDING"] = "RESUME_RECORDING";
|
|
131
|
+
// Transfer events
|
|
132
|
+
TaskEvent["TRANSFER_SUCCESS"] = "TRANSFER_SUCCESS";
|
|
133
|
+
TaskEvent["TRANSFER_FAILED"] = "TRANSFER_FAILED";
|
|
134
|
+
// Wrapup events
|
|
135
|
+
TaskEvent["WRAPUP_COMPLETE"] = "WRAPUP_COMPLETE";
|
|
136
|
+
// End events
|
|
137
|
+
TaskEvent["TASK_WRAPUP"] = "TASK_WRAPUP";
|
|
138
|
+
TaskEvent["RONA"] = "RONA";
|
|
139
|
+
// Ring On No Answer
|
|
140
|
+
TaskEvent["CONTACT_ENDED"] = "CONTACT_ENDED";
|
|
141
|
+
// Failure events
|
|
142
|
+
TaskEvent["ASSIGN_FAILED"] = "ASSIGN_FAILED";
|
|
143
|
+
TaskEvent["INVITE_FAILED"] = "INVITE_FAILED";
|
|
144
|
+
TaskEvent["OUTBOUND_FAILED"] = "OUTBOUND_FAILED";
|
|
145
|
+
TaskEvent["CAMPAIGN_PREVIEW_ACCEPT_FAILED"] = "CAMPAIGN_PREVIEW_ACCEPT_FAILED";
|
|
146
|
+
TaskEvent["CAMPAIGN_PREVIEW_SKIP_FAILED"] = "CAMPAIGN_PREVIEW_SKIP_FAILED";
|
|
147
|
+
TaskEvent["CAMPAIGN_PREVIEW_REMOVE_FAILED"] = "CAMPAIGN_PREVIEW_REMOVE_FAILED";
|
|
148
|
+
// Switch events (toggle between consult and main call)
|
|
149
|
+
TaskEvent["SWITCH_TO_MAIN_CALL"] = "SWITCH_TO_MAIN_CALL";
|
|
150
|
+
TaskEvent["SWITCH_TO_CONSULT"] = "SWITCH_TO_CONSULT";
|
|
151
|
+
// Accept/Decline (WebRTC)
|
|
152
|
+
TaskEvent["ACCEPT"] = "ACCEPT";
|
|
153
|
+
TaskEvent["DECLINE"] = "DECLINE";
|
|
154
|
+
TaskEvent["END"] = "END";
|
|
155
|
+
// Queue events
|
|
156
|
+
TaskEvent["CTQ_CANCEL"] = "CTQ_CANCEL";
|
|
157
|
+
// Cancel To Queue
|
|
158
|
+
TaskEvent["CTQ_CANCEL_FAILED"] = "CTQ_CANCEL_FAILED";
|
|
159
|
+
return TaskEvent;
|
|
160
|
+
}({});
|
|
161
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE","exports","PARTICIPANT_TYPE","CUSTOMER","SUPERVISOR","VVA","MEDIA_TYPE_CONSULT","MEDIA_TYPE_MAIN_CALL","INTERACTION_STATE","CONSULTING","POST_CALL","CONFERENCE","CONNECTED","NEW","CONSULT_STATE","CONFERENCING","TaskState","TaskEvent"],"sources":["constants.ts"],"sourcesContent":["/**\n * Constants for the task state machine.\n * These enums define the allowed states, events, and built-in action identifiers.\n */\n\n// ============================================\n// Conference Constants\n// ============================================\n\n/**\n * Maximum number of participants allowed in a multi-party conference.\n * Max 7 counted agents + 1 customer.\n */\nexport const MAX_PARTICIPANTS_IN_MULTIPARTY_CONFERENCE = 7;\n\n// ============================================\n// Participant Type Constants\n// ============================================\n\n/** Participant types for conference filtering */\nexport const PARTICIPANT_TYPE = {\n CUSTOMER: 'Customer',\n SUPERVISOR: 'Supervisor',\n VVA: 'VVA',\n} as const;\n\nexport type ParticipantType = (typeof PARTICIPANT_TYPE)[keyof typeof PARTICIPANT_TYPE];\n\n// ============================================\n// Media Type Constants\n// ============================================\n\n/** Media type for consult calls */\nexport const MEDIA_TYPE_CONSULT = 'consult';\n\n/** Media type for main calls */\nexport const MEDIA_TYPE_MAIN_CALL = 'mainCall';\n\n// ============================================\n// Backend Interaction State Constants\n// ============================================\n\n/** Backend interaction state values (from server payloads) */\nexport const INTERACTION_STATE = {\n CONSULTING: 'consulting',\n POST_CALL: 'post_call',\n CONFERENCE: 'conference',\n CONNECTED: 'connected',\n NEW: 'new',\n} as const;\n\n/** Backend participant consultState values */\nexport const CONSULT_STATE = {\n CONSULTING: 'consulting',\n CONFERENCING: 'conferencing',\n} as const;\n\n// ============================================\n// State Machine Enums\n// ============================================\n\nexport enum TaskState {\n IDLE = 'IDLE',\n OFFERED = 'OFFERED',\n CONNECTED = 'CONNECTED',\n\n // Intermediate states for async operations\n HOLD_INITIATING = 'HOLD_INITIATING',\n HELD = 'HELD',\n RESUME_INITIATING = 'RESUME_INITIATING',\n CONSULT_INITIATING = 'CONSULT_INITIATING',\n CONSULTING = 'CONSULTING',\n CONF_INITIATING = 'CONF_INITIATING',\n\n CONFERENCING = 'CONFERENCING',\n WRAPPING_UP = 'WRAPPING_UP',\n COMPLETED = 'COMPLETED',\n TERMINATED = 'TERMINATED',\n\n // NOT IMPLEMENTED: MPC (Multi-Party Conference) states\n CONSULT_INITIATED = 'CONSULT_INITIATED',\n CONSULT_COMPLETED = 'CONSULT_COMPLETED',\n // NOT IMPLEMENTED: Post-call state (isWxccPostCallEnabled feature flag)\n POST_CALL = 'POST_CALL',\n // NOT IMPLEMENTED: Parked state\n PARKED = 'PARKED',\n // NOT IMPLEMENTED: Monitoring/Supervisory states\n MONITORING = 'MONITORING',\n}\n\nexport enum TaskEvent {\n TASK_INCOMING = 'TASK_INCOMING',\n TASK_OFFERED = 'TASK_OFFERED',\n\n // Offer events\n OFFER_CONSULT = 'OFFER_CONSULT',\n HYDRATE = 'HYDRATE',\n\n // Internal \"data refresh\" events\n CONTACT_UPDATED = 'CONTACT_UPDATED',\n CONTACT_OWNER_CHANGED = 'CONTACT_OWNER_CHANGED',\n\n // Assignment events\n ASSIGN = 'ASSIGN',\n\n // Hold/Resume events\n HOLD_SUCCESS = 'HOLD_SUCCESS',\n HOLD_FAILED = 'HOLD_FAILED',\n UNHOLD_SUCCESS = 'UNHOLD_SUCCESS',\n UNHOLD_FAILED = 'UNHOLD_FAILED',\n HOLD_INITIATED = 'HOLD_INITIATED',\n UNHOLD_INITIATED = 'UNHOLD_INITIATED',\n\n // Consult events\n CONSULT = 'CONSULT',\n CONSULT_SUCCESS = 'CONSULT_SUCCESS',\n CONSULT_CREATED = 'CONSULT_CREATED',\n CONSULTING_ACTIVE = 'CONSULTING_ACTIVE',\n CONSULT_END = 'CONSULT_END',\n CONSULT_FAILED = 'CONSULT_FAILED',\n\n // Conference events\n MERGE_TO_CONFERENCE = 'MERGE_TO_CONFERENCE',\n CONFERENCE_START = 'CONFERENCE_START',\n CONFERENCE_FAILED = 'CONFERENCE_FAILED',\n CONFERENCE_END = 'CONFERENCE_END',\n TRANSFER_CONFERENCE = 'TRANSFER_CONFERENCE',\n TRANSFER_CONFERENCE_SUCCESS = 'TRANSFER_CONFERENCE_SUCCESS',\n TRANSFER_CONFERENCE_FAILED = 'TRANSFER_CONFERENCE_FAILED',\n PARTICIPANT_LEAVE = 'PARTICIPANT_LEAVE',\n EXIT_CONFERENCE = 'EXIT_CONFERENCE',\n EXIT_CONFERENCE_SUCCESS = 'EXIT_CONFERENCE_SUCCESS',\n EXIT_CONFERENCE_FAILED = 'EXIT_CONFERENCE_FAILED',\n\n // Recording events\n RECORDING_STARTED = 'RECORDING_STARTED',\n PAUSE_RECORDING = 'PAUSE_RECORDING',\n RESUME_RECORDING = 'RESUME_RECORDING',\n\n // Transfer events\n TRANSFER_SUCCESS = 'TRANSFER_SUCCESS',\n TRANSFER_FAILED = 'TRANSFER_FAILED',\n\n // Wrapup events\n WRAPUP_COMPLETE = 'WRAPUP_COMPLETE',\n\n // End events\n TASK_WRAPUP = 'TASK_WRAPUP',\n RONA = 'RONA', // Ring On No Answer\n CONTACT_ENDED = 'CONTACT_ENDED',\n\n // Failure events\n ASSIGN_FAILED = 'ASSIGN_FAILED',\n INVITE_FAILED = 'INVITE_FAILED',\n OUTBOUND_FAILED = 'OUTBOUND_FAILED',\n CAMPAIGN_PREVIEW_ACCEPT_FAILED = 'CAMPAIGN_PREVIEW_ACCEPT_FAILED',\n CAMPAIGN_PREVIEW_SKIP_FAILED = 'CAMPAIGN_PREVIEW_SKIP_FAILED',\n CAMPAIGN_PREVIEW_REMOVE_FAILED = 'CAMPAIGN_PREVIEW_REMOVE_FAILED',\n\n // Switch events (toggle between consult and main call)\n SWITCH_TO_MAIN_CALL = 'SWITCH_TO_MAIN_CALL',\n SWITCH_TO_CONSULT = 'SWITCH_TO_CONSULT',\n\n // Accept/Decline (WebRTC)\n ACCEPT = 'ACCEPT',\n DECLINE = 'DECLINE',\n END = 'END',\n\n // Queue events\n CTQ_CANCEL = 'CTQ_CANCEL', // Cancel To Queue\n CTQ_CANCEL_FAILED = 'CTQ_CANCEL_FAILED',\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,MAAMA,yCAAyC,GAAAC,OAAA,CAAAD,yCAAA,GAAG,CAAC;;AAE1D;AACA;AACA;;AAEA;AACO,MAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG;EAC9BC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,GAAG,EAAE;AACP,CAAU;AAIV;AACA;AACA;;AAEA;AACO,MAAMC,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAG,SAAS;;AAE3C;AACO,MAAMC,oBAAoB,GAAAN,OAAA,CAAAM,oBAAA,GAAG,UAAU;;AAE9C;AACA;AACA;;AAEA;AACO,MAAMC,iBAAiB,GAAAP,OAAA,CAAAO,iBAAA,GAAG;EAC/BC,UAAU,EAAE,YAAY;EACxBC,SAAS,EAAE,WAAW;EACtBC,UAAU,EAAE,YAAY;EACxBC,SAAS,EAAE,WAAW;EACtBC,GAAG,EAAE;AACP,CAAU;;AAEV;AACO,MAAMC,aAAa,GAAAb,OAAA,CAAAa,aAAA,GAAG;EAC3BL,UAAU,EAAE,YAAY;EACxBM,YAAY,EAAE;AAChB,CAAU;;AAEV;AACA;AACA;AAAA,IAEYC,SAAS,GAAAf,OAAA,CAAAe,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAKnB;EALUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAkBnB;EAlBUA,SAAS;EAATA,SAAS;EAqBnB;EArBUA,SAAS;EAuBnB;EAvBUA,SAAS;EAyBnB;EAzBUA,SAAS;EAAA,OAATA,SAAS;AAAA;AAAA,IA6BTC,SAAS,GAAAhB,OAAA,CAAAgB,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAInB;EAJUA,SAAS;EAATA,SAAS;EAQnB;EARUA,SAAS;EAATA,SAAS;EAYnB;EAZUA,SAAS;EAenB;EAfUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAuBnB;EAvBUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EA+BnB;EA/BUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EA4CnB;EA5CUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAiDnB;EAjDUA,SAAS;EAATA,SAAS;EAqDnB;EArDUA,SAAS;EAwDnB;EAxDUA,SAAS;EAATA,SAAS;EA0DJ;EA1DLA,SAAS;EA6DnB;EA7DUA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAqEnB;EArEUA,SAAS;EAATA,SAAS;EAyEnB;EAzEUA,SAAS;EAATA,SAAS;EAATA,SAAS;EA8EnB;EA9EUA,SAAS;EA+EQ;EA/EjBA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|