@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.
Files changed (267) hide show
  1. package/.sdd/manifest.json +882 -0
  2. package/AGENTS.md +94 -0
  3. package/ai-docs/ARCHITECTURE.md +168 -0
  4. package/ai-docs/CONTRACTS.md +46 -0
  5. package/ai-docs/GETTING_STARTED.md +168 -0
  6. package/ai-docs/GLOSSARY.md +43 -0
  7. package/ai-docs/README.md +138 -0
  8. package/ai-docs/REVIEW_CHECKLIST.md +41 -0
  9. package/ai-docs/RULES.md +444 -0
  10. package/ai-docs/SECURITY.md +52 -0
  11. package/ai-docs/SERVICE_STATE.md +48 -0
  12. package/ai-docs/SPEC_INDEX.md +65 -0
  13. package/ai-docs/adr/0001-spec-source-policy.md +55 -0
  14. package/ai-docs/adr/README.md +8 -0
  15. package/ai-docs/adr/_adr-template.md +31 -0
  16. package/ai-docs/contact-center-spec.md +341 -0
  17. package/ai-docs/features/generated-spec-conformance-fidelity-remediation/spec/feature-spec.md +117 -0
  18. package/ai-docs/features/residual-warning-coverage-completion/spec/feature-spec.md +203 -0
  19. package/ai-docs/features/validator-code-fidelity-drift-fix/spec/feature-spec.md +315 -0
  20. package/ai-docs/patterns/event-driven-patterns.md +485 -0
  21. package/ai-docs/patterns/testing-patterns.md +480 -0
  22. package/ai-docs/patterns/typescript-patterns.md +365 -0
  23. package/ai-docs/templates/README.md +102 -0
  24. package/ai-docs/templates/documentation/create-agents-md.md +240 -0
  25. package/ai-docs/templates/documentation/create-architecture-md.md +295 -0
  26. package/ai-docs/templates/existing-service/bug-fix.md +254 -0
  27. package/ai-docs/templates/existing-service/feature-enhancement.md +450 -0
  28. package/ai-docs/templates/new-method/00-master.md +80 -0
  29. package/ai-docs/templates/new-method/01-requirements.md +232 -0
  30. package/ai-docs/templates/new-method/02-implementation.md +295 -0
  31. package/ai-docs/templates/new-method/03-tests.md +201 -0
  32. package/ai-docs/templates/new-method/04-validation.md +141 -0
  33. package/ai-docs/templates/new-service/00-master.md +109 -0
  34. package/ai-docs/templates/new-service/01-pre-questions.md +159 -0
  35. package/ai-docs/templates/new-service/02-code-generation.md +346 -0
  36. package/ai-docs/templates/new-service/03-integration.md +178 -0
  37. package/ai-docs/templates/new-service/04-test-generation.md +205 -0
  38. package/ai-docs/templates/new-service/05-validation.md +145 -0
  39. package/dist/cc.js +379 -50
  40. package/dist/cc.js.map +1 -1
  41. package/dist/config.js +6 -0
  42. package/dist/config.js.map +1 -1
  43. package/dist/constants.js +22 -2
  44. package/dist/constants.js.map +1 -1
  45. package/dist/index.js +27 -5
  46. package/dist/index.js.map +1 -1
  47. package/dist/metrics/behavioral-events.js +114 -0
  48. package/dist/metrics/behavioral-events.js.map +1 -1
  49. package/dist/metrics/constants.js +32 -3
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/services/ApiAiAssistant.js +318 -0
  52. package/dist/services/ApiAiAssistant.js.map +1 -0
  53. package/dist/services/UserPreference.js +427 -0
  54. package/dist/services/UserPreference.js.map +1 -0
  55. package/dist/services/agent/types.js.map +1 -1
  56. package/dist/services/config/Util.js +8 -4
  57. package/dist/services/config/Util.js.map +1 -1
  58. package/dist/services/config/constants.js +35 -2
  59. package/dist/services/config/constants.js.map +1 -1
  60. package/dist/services/config/index.js +41 -2
  61. package/dist/services/config/index.js.map +1 -1
  62. package/dist/services/config/types.js +66 -8
  63. package/dist/services/config/types.js.map +1 -1
  64. package/dist/services/constants.js +27 -1
  65. package/dist/services/constants.js.map +1 -1
  66. package/dist/services/core/Err.js.map +1 -1
  67. package/dist/services/core/Utils.js +122 -25
  68. package/dist/services/core/Utils.js.map +1 -1
  69. package/dist/services/core/aqm-reqs.js +92 -17
  70. package/dist/services/core/aqm-reqs.js.map +1 -1
  71. package/dist/services/core/websocket/WebSocketManager.js +22 -6
  72. package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
  73. package/dist/services/core/websocket/connection-service.js +3 -1
  74. package/dist/services/core/websocket/connection-service.js.map +1 -1
  75. package/dist/services/core/websocket/types.js.map +1 -1
  76. package/dist/services/index.js +6 -0
  77. package/dist/services/index.js.map +1 -1
  78. package/dist/services/task/Task.js +688 -0
  79. package/dist/services/task/Task.js.map +1 -0
  80. package/dist/services/task/TaskFactory.js +45 -0
  81. package/dist/services/task/TaskFactory.js.map +1 -0
  82. package/dist/services/task/TaskManager.js +751 -457
  83. package/dist/services/task/TaskManager.js.map +1 -1
  84. package/dist/services/task/TaskUtils.js +220 -23
  85. package/dist/services/task/TaskUtils.js.map +1 -1
  86. package/dist/services/task/constants.js +23 -2
  87. package/dist/services/task/constants.js.map +1 -1
  88. package/dist/services/task/dialer.js +129 -0
  89. package/dist/services/task/dialer.js.map +1 -1
  90. package/dist/services/task/digital/Digital.js +77 -0
  91. package/dist/services/task/digital/Digital.js.map +1 -0
  92. package/dist/services/task/state-machine/TaskStateMachine.js +873 -0
  93. package/dist/services/task/state-machine/TaskStateMachine.js.map +1 -0
  94. package/dist/services/task/state-machine/actions.js +567 -0
  95. package/dist/services/task/state-machine/actions.js.map +1 -0
  96. package/dist/services/task/state-machine/constants.js +161 -0
  97. package/dist/services/task/state-machine/constants.js.map +1 -0
  98. package/dist/services/task/state-machine/guards.js +382 -0
  99. package/dist/services/task/state-machine/guards.js.map +1 -0
  100. package/dist/services/task/state-machine/index.js +53 -0
  101. package/dist/services/task/state-machine/index.js.map +1 -0
  102. package/dist/services/task/state-machine/types.js +54 -0
  103. package/dist/services/task/state-machine/types.js.map +1 -0
  104. package/dist/services/task/state-machine/uiControlsComputer.js +603 -0
  105. package/dist/services/task/state-machine/uiControlsComputer.js.map +1 -0
  106. package/dist/services/task/taskDataNormalizer.js +99 -0
  107. package/dist/services/task/taskDataNormalizer.js.map +1 -0
  108. package/dist/services/task/types.js +227 -4
  109. package/dist/services/task/types.js.map +1 -1
  110. package/dist/services/task/voice/Voice.js +1044 -0
  111. package/dist/services/task/voice/Voice.js.map +1 -0
  112. package/dist/services/task/voice/WebRTC.js +149 -0
  113. package/dist/services/task/voice/WebRTC.js.map +1 -0
  114. package/dist/types/cc.d.ts +894 -0
  115. package/dist/types/config.d.ts +72 -0
  116. package/dist/types/constants.d.ts +66 -0
  117. package/dist/types/index.d.ts +199 -0
  118. package/dist/types/logger-proxy.d.ts +71 -0
  119. package/dist/types/metrics/MetricsManager.d.ts +223 -0
  120. package/dist/types/metrics/behavioral-events.d.ts +29 -0
  121. package/dist/types/metrics/constants.d.ts +181 -0
  122. package/dist/types/services/AddressBook.d.ts +74 -0
  123. package/dist/types/services/ApiAiAssistant.d.ts +49 -0
  124. package/dist/types/services/EntryPoint.d.ts +67 -0
  125. package/dist/types/services/Queue.d.ts +76 -0
  126. package/dist/types/services/UserPreference.d.ts +118 -0
  127. package/dist/types/services/WebCallingService.d.ts +1 -0
  128. package/dist/types/services/agent/index.d.ts +46 -0
  129. package/dist/types/services/agent/types.d.ts +413 -0
  130. package/dist/types/services/config/Util.d.ts +20 -0
  131. package/dist/types/services/config/constants.d.ts +270 -0
  132. package/dist/types/services/config/index.d.ts +177 -0
  133. package/dist/types/services/config/types.d.ts +1368 -0
  134. package/dist/types/services/constants.d.ts +110 -0
  135. package/dist/types/services/core/Err.d.ts +125 -0
  136. package/dist/types/services/core/GlobalTypes.d.ts +58 -0
  137. package/dist/types/services/core/Utils.d.ts +121 -0
  138. package/dist/types/services/core/WebexRequest.d.ts +22 -0
  139. package/dist/types/services/core/aqm-reqs.d.ts +65 -0
  140. package/dist/types/services/core/constants.d.ts +99 -0
  141. package/dist/types/services/core/types.d.ts +47 -0
  142. package/dist/types/services/core/websocket/WebSocketManager.d.ts +36 -0
  143. package/dist/types/services/core/websocket/connection-service.d.ts +27 -0
  144. package/dist/types/services/core/websocket/keepalive.worker.d.ts +2 -0
  145. package/dist/types/services/core/websocket/types.d.ts +37 -0
  146. package/dist/types/services/index.d.ts +54 -0
  147. package/dist/types/services/task/AutoWrapup.d.ts +40 -0
  148. package/dist/types/services/task/Task.d.ts +157 -0
  149. package/dist/types/services/task/TaskFactory.d.ts +12 -0
  150. package/dist/types/services/task/TaskManager.d.ts +1 -0
  151. package/dist/types/services/task/TaskUtils.d.ts +138 -0
  152. package/dist/types/services/task/constants.d.ts +91 -0
  153. package/dist/types/services/task/contact.d.ts +69 -0
  154. package/dist/types/services/task/dialer.d.ts +73 -0
  155. package/dist/types/services/task/digital/Digital.d.ts +22 -0
  156. package/dist/types/services/task/state-machine/TaskStateMachine.d.ts +1194 -0
  157. package/dist/types/services/task/state-machine/actions.d.ts +10 -0
  158. package/dist/types/services/task/state-machine/constants.d.ts +107 -0
  159. package/dist/types/services/task/state-machine/guards.d.ts +102 -0
  160. package/dist/types/services/task/state-machine/index.d.ts +13 -0
  161. package/dist/types/services/task/state-machine/types.d.ts +269 -0
  162. package/dist/types/services/task/state-machine/uiControlsComputer.d.ts +9 -0
  163. package/dist/types/services/task/taskDataNormalizer.d.ts +10 -0
  164. package/dist/types/services/task/types.d.ts +1856 -0
  165. package/dist/types/services/task/voice/Voice.d.ts +184 -0
  166. package/dist/types/services/task/voice/WebRTC.d.ts +53 -0
  167. package/dist/types/types.d.ts +778 -0
  168. package/dist/types/utils/PageCache.d.ts +173 -0
  169. package/dist/types/webex-config.d.ts +53 -0
  170. package/dist/types/webex.d.ts +8 -0
  171. package/dist/types.js +130 -1
  172. package/dist/types.js.map +1 -1
  173. package/dist/webex.js +14 -2
  174. package/dist/webex.js.map +1 -1
  175. package/package.json +16 -12
  176. package/src/cc.ts +477 -51
  177. package/src/config.ts +6 -0
  178. package/src/constants.ts +21 -1
  179. package/src/index.ts +24 -5
  180. package/src/metrics/ai-docs/AGENTS.md +350 -0
  181. package/src/metrics/ai-docs/ARCHITECTURE.md +338 -0
  182. package/src/metrics/ai-docs/metrics-spec.md +854 -0
  183. package/src/metrics/behavioral-events.ts +120 -0
  184. package/src/metrics/constants.ts +37 -3
  185. package/src/services/ApiAiAssistant.ts +412 -0
  186. package/src/services/UserPreference.ts +509 -0
  187. package/src/services/agent/ai-docs/AGENTS.md +240 -0
  188. package/src/services/agent/ai-docs/ARCHITECTURE.md +304 -0
  189. package/src/services/agent/ai-docs/agent-spec.md +504 -0
  190. package/src/services/agent/types.ts +1 -1
  191. package/src/services/ai-docs/AGENTS.md +386 -0
  192. package/src/services/ai-docs/services-spec.md +492 -0
  193. package/src/services/config/Util.ts +10 -2
  194. package/src/services/config/ai-docs/AGENTS.md +255 -0
  195. package/src/services/config/ai-docs/ARCHITECTURE.md +426 -0
  196. package/src/services/config/ai-docs/config-spec.md +669 -0
  197. package/src/services/config/constants.ts +37 -1
  198. package/src/services/config/index.ts +45 -1
  199. package/src/services/config/types.ts +241 -11
  200. package/src/services/constants.ts +29 -0
  201. package/src/services/core/Err.ts +3 -0
  202. package/src/services/core/Utils.ts +143 -30
  203. package/src/services/core/ai-docs/AGENTS.md +381 -0
  204. package/src/services/core/ai-docs/ARCHITECTURE.md +698 -0
  205. package/src/services/core/ai-docs/core-spec.md +783 -0
  206. package/src/services/core/aqm-reqs.ts +100 -22
  207. package/src/services/core/websocket/WebSocketManager.ts +23 -6
  208. package/src/services/core/websocket/connection-service.ts +5 -1
  209. package/src/services/core/websocket/types.ts +1 -1
  210. package/src/services/index.ts +4 -0
  211. package/src/services/task/Task.ts +837 -0
  212. package/src/services/task/TaskFactory.ts +55 -0
  213. package/src/services/task/TaskManager.ts +793 -521
  214. package/src/services/task/TaskUtils.ts +314 -24
  215. package/src/services/task/ai-docs/AGENTS.md +457 -0
  216. package/src/services/task/ai-docs/ARCHITECTURE.md +594 -0
  217. package/src/services/task/ai-docs/task-spec.md +1319 -0
  218. package/src/services/task/constants.ts +23 -0
  219. package/src/services/task/dialer.ts +136 -1
  220. package/src/services/task/digital/Digital.ts +95 -0
  221. package/src/services/task/state-machine/TaskStateMachine.ts +1166 -0
  222. package/src/services/task/state-machine/actions.ts +738 -0
  223. package/src/services/task/state-machine/ai-docs/AGENTS.md +458 -0
  224. package/src/services/task/state-machine/ai-docs/ARCHITECTURE.md +1137 -0
  225. package/src/services/task/state-machine/ai-docs/task-state-machine-spec.md +2177 -0
  226. package/src/services/task/state-machine/constants.ts +172 -0
  227. package/src/services/task/state-machine/guards.ts +445 -0
  228. package/src/services/task/state-machine/index.ts +28 -0
  229. package/src/services/task/state-machine/types.ts +243 -0
  230. package/src/services/task/state-machine/uiControlsComputer.ts +961 -0
  231. package/src/services/task/taskDataNormalizer.ts +137 -0
  232. package/src/services/task/types.ts +734 -71
  233. package/src/services/task/voice/Voice.ts +1270 -0
  234. package/src/services/task/voice/WebRTC.ts +187 -0
  235. package/src/types.ts +205 -2
  236. package/src/utils/AGENTS.md +278 -0
  237. package/src/utils/ai-docs/utils-spec.md +381 -0
  238. package/src/webex.js +2 -0
  239. package/test/unit/spec/cc.ts +503 -43
  240. package/test/unit/spec/logger-proxy.ts +70 -0
  241. package/test/unit/spec/services/ApiAiAssistant.ts +273 -0
  242. package/test/unit/spec/services/UserPreference.ts +401 -0
  243. package/test/unit/spec/services/WebCallingService.ts +7 -1
  244. package/test/unit/spec/services/config/index.ts +85 -29
  245. package/test/unit/spec/services/core/Utils.ts +481 -2
  246. package/test/unit/spec/services/core/websocket/WebSocketManager.ts +137 -41
  247. package/test/unit/spec/services/core/websocket/connection-service.ts +3 -1
  248. package/test/unit/spec/services/task/AutoWrapup.ts +63 -0
  249. package/test/unit/spec/services/task/Task.ts +477 -0
  250. package/test/unit/spec/services/task/TaskFactory.ts +62 -0
  251. package/test/unit/spec/services/task/TaskManager.ts +1001 -1003
  252. package/test/unit/spec/services/task/TaskUtils.ts +235 -0
  253. package/test/unit/spec/services/task/dialer.ts +372 -96
  254. package/test/unit/spec/services/task/digital/Digital.ts +105 -0
  255. package/test/unit/spec/services/task/state-machine/TaskStateMachine.ts +2651 -0
  256. package/test/unit/spec/services/task/state-machine/guards.ts +637 -0
  257. package/test/unit/spec/services/task/state-machine/types.ts +18 -0
  258. package/test/unit/spec/services/task/state-machine/uiControlsComputer.ts +2663 -0
  259. package/test/unit/spec/services/task/taskTestUtils.ts +87 -0
  260. package/test/unit/spec/services/task/voice/Voice.ts +649 -0
  261. package/test/unit/spec/services/task/voice/WebRTC.ts +235 -0
  262. package/umd/contact-center.min.js +2 -2
  263. package/umd/contact-center.min.js.map +1 -1
  264. package/dist/services/task/index.js +0 -1525
  265. package/dist/services/task/index.js.map +0 -1
  266. package/src/services/task/index.ts +0 -1801
  267. 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":[]}