@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","_actions","_guards","_TaskUtils","taskStateMachineSetup","setup","actors","types","context","events","getTaskStateMachineConfig","uiControlConfig","id","initial","TaskState","IDLE","createInitialContext","on","TaskEvent","RECORDING_STARTED","actions","CONTACT_UPDATED","CONTACT_OWNER_CHANGED","HYDRATE","CONSULT_CREATED","CONSULT_FAILED","states","guard","guards","isInteractionTerminated","target","WRAPPING_UP","isEpDnPendingConferenceMergeHydrate","CONFERENCING","isInteractionConsulting","CONSULTING","isInteractionHeld","HELD","isInteractionConnected","CONNECTED","isConferencingByParticipants","TASK_INCOMING","isCampaignReservationAccept","OFFERED","OUTBOUND_FAILED","TERMINATED","CONSULTING_ACTIVE","TASK_OFFERED","ASSIGN","isConsultingAssignment","RONA","TASK_WRAPUP","CONTACT_ENDED","ASSIGN_FAILED","INVITE_FAILED","shouldWrapUp","CAMPAIGN_PREVIEW_ACCEPT_FAILED","CAMPAIGN_PREVIEW_SKIP_FAILED","CAMPAIGN_PREVIEW_REMOVE_FAILED","OFFER_CONSULT","CONSULT_END","CONFERENCE_START","HOLD_INITIATED","HOLD_INITIATING","HOLD_SUCCESS","UNHOLD_INITIATED","RESUME_INITIATING","UNHOLD_SUCCESS","CONSULT","CONSULT_INITIATING","TRANSFER_SUCCESS","shouldWrapUpOrIsInitiator","TRANSFER_FAILED","event","consultInitiator","taskData","getTaskDataFromEvent","mainId","interaction","mainInteractionId","interactionId","Boolean","media","isHold","isCampaignPreviewContactEnded","conferenceInProgressFromEvent","PAUSE_RECORDING","RESUME_RECORDING","HOLD_FAILED","UNHOLD_FAILED","CONSULT_SUCCESS","consultFromConference","isPrimaryMediaOnHold","CTQ_CANCEL","isConferenceHoldParticipantFromEvent","consultCallHeld","cpd","callProcessingDetails","hasCustomerLeft","isTerminated","shouldWrapUpForThisAgent","SWITCH_TO_MAIN_CALL","SWITCH_TO_CONSULT","PARTICIPANT_LEAVE","params","didCurrentAgentLeaveConference","shouldDowngradeConferenceToConnected","TRANSFER_CONFERENCE","TRANSFER_CONFERENCE_SUCCESS","isSelfConferenceTransferInitiator","TRANSFER_CONFERENCE_FAILED","MERGE_TO_CONFERENCE","CONF_INITIATING","CONFERENCE_FAILED","EXIT_CONFERENCE_SUCCESS","isPassiveConferenceTransferObserver","CONFERENCE_END","exitingConference","mainCallId","getIsCustomerInCall","entry","WRAPUP_COMPLETE","COMPLETED","type","createTaskStateMachine","options","createMachine","provide"],"sources":["TaskStateMachine.ts"],"sourcesContent":["/**\n * Task State Machine Configuration\n *\n * This file defines the XState state machine configuration for contact center tasks.\n * It orchestrates state transitions, guards, and actions for task lifecycle management.\n *\n * GUARD FUNCTIONS: All guard logic is centralized in guards.ts for reusability and testing.\n * This file imports and uses those guards via the `guards` object.\n */\n\nimport {setup} from 'xstate';\nimport {TaskContext, TaskEventPayload, UIControlConfig, TaskActionsMap} from './types';\nimport {TaskState, TaskEvent} from './constants';\nimport {actions, createInitialContext} from './actions';\nimport {guards, shouldWrapUpForThisAgent, getTaskDataFromEvent} from './guards';\nimport {getIsCustomerInCall} from '../TaskUtils';\n\ntype TaskActionConfigMap = {[K in keyof typeof actions]: undefined};\n\nconst taskStateMachineSetup = setup<\n TaskContext,\n TaskEventPayload,\n Record<string, never>,\n Record<string, never>,\n TaskActionConfigMap\n>({\n actors: {},\n types: {\n context: {} as TaskContext,\n events: {} as TaskEventPayload,\n },\n});\n\n/**\n * Get task state machine configuration with UI control config\n * Defines all states, transitions, guards, and actions for task management\n *\n * @param uiControlConfig - UI control configuration\n * @returns State machine configuration object\n */\nexport function getTaskStateMachineConfig(uiControlConfig: UIControlConfig) {\n /**\n * Event mapping reference (CC WebSocket -> TaskEvent)\n *\n * AgentContactReserved -> TaskEvent.TASK_INCOMING\n * AgentOfferContact -> TaskEvent.TASK_OFFERED\n * AgentOfferConsult -> TaskEvent.OFFER_CONSULT\n * AgentConsulting -> TaskEvent.CONSULTING_ACTIVE\n * AgentConsultCreated -> TaskEvent.CONSULT_CREATED\n * AgentConsultTransferred -> TaskEvent.TRANSFER_SUCCESS\n * AgentContactAssigned -> TaskEvent.ASSIGN\n * AgentContactHeld -> TaskEvent.HOLD_SUCCESS\n * AgentContactUnheld -> TaskEvent.UNHOLD_SUCCESS\n * AgentConsultEnded -> TaskEvent.CONSULT_END\n * AgentContactEnded -> TaskEvent.CONTACT_ENDED\n * AgentWrapup -> TaskEvent.TASK_WRAPUP (wrapUpRequired)\n * AgentWrappedup -> TaskEvent.WRAPUP_COMPLETE\n *\n * (See TaskManager.mapEventToTaskStateMachineEvent for the full mapping table.)\n */\n return {\n id: 'taskStateMachine',\n initial: TaskState.IDLE,\n context: createInitialContext(uiControlConfig, TaskState.IDLE),\n on: {\n [TaskEvent.RECORDING_STARTED]: {\n actions: ['updateTaskData', 'emitTaskRecordingStarted'],\n },\n [TaskEvent.CONTACT_UPDATED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n [TaskEvent.CONTACT_OWNER_CHANGED]: {\n actions: ['updateTaskData', 'syncTaskDataFromEvent'],\n },\n // HYDRATE: Update task data from AgentContact event\n // Note: State restoration with transitions is handled in IDLE state.\n // This root-level handler is for when task is already in another state (just updates data).\n [TaskEvent.HYDRATE]: {\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n // AgentConsultCreated from Stable Prod while already HELD/CONNECTED (external consult).\n // Child states do not handle CONSULT_CREATED; wire here so updateTaskData + setConsultInitiator run.\n [TaskEvent.CONSULT_CREATED]: {\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // AgentConsultFailed (RONA) while HELD/CONNECTED without passing through CONSULT_INITIATING.\n [TaskEvent.CONSULT_FAILED]: {\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n },\n states: {\n [TaskState.IDLE]: {\n on: {\n // HYDRATE: Restore state machine to correct state based on hydrated task data\n // This handles page refresh/reconnection scenarios where task needs to be restored\n // IMPORTANT: This MUST be in IDLE state (not root) because root-level events cannot\n // transition to child states in XState\n [TaskEvent.HYDRATE]: [\n {\n guard: guards.isInteractionTerminated,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskHydrate'],\n },\n {\n guard: guards.isEpDnPendingConferenceMergeHydrate,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionConsulting,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionHeld,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isInteractionConnected,\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n guard: guards.isConferencingByParticipants,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n {\n // Default: just update data, stay in IDLE\n actions: ['updateTaskData', 'emitTaskHydrate'],\n },\n ],\n // AgentContactReserved (direct incoming/consult/transfer/outdial, or campaign preview accept)\n [TaskEvent.TASK_INCOMING]: [\n {\n guard: guards.isCampaignReservationAccept,\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskCampaignPreviewReservation'],\n },\n {\n target: TaskState.OFFERED,\n actions: ['initializeTask', 'emitTaskIncoming'],\n },\n ],\n\n // AgentOutboundFailed can arrive before TASK_INCOMING due to race conditions\n [TaskEvent.OUTBOUND_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n\n // EP-DN split-leg ordering can deliver AgentConsulting before HYDRATE/TASK_INCOMING.\n // Do not drop it in IDLE; bootstrap to CONSULTING using event taskData.\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n },\n },\n\n [TaskState.OFFERED]: {\n on: {\n // AgentContactOffer\n [TaskEvent.TASK_OFFERED]: {\n actions: ['updateTaskData', 'emitTaskOfferContact', 'requestAutoAnswer'],\n },\n // AgentContactAssigned\n [TaskEvent.ASSIGN]: [\n {\n guard: guards.isConsultingAssignment,\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'emitTaskConsultAccepted', 'emitTaskConsulting'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n ],\n // AgentOfferContactRONA\n [TaskEvent.RONA]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n // This needs to be handled for all assign failed scenarios (contact, buddy)\n // [AgentContactAssignFailed, AgentCtqFailed, AgentBlindTransferFailed,\n // AgentVTeamTransferFailed, AgentConsultTransferFailed]\n [TaskEvent.ASSIGN_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.INVITE_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskReject'],\n },\n [TaskEvent.OUTBOUND_FAILED]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskOutdialFailed', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.CAMPAIGN_PREVIEW_ACCEPT_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewAcceptFailed'],\n },\n [TaskEvent.CAMPAIGN_PREVIEW_SKIP_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewSkipFailed'],\n },\n [TaskEvent.CAMPAIGN_PREVIEW_REMOVE_FAILED]: {\n actions: ['updateTaskData', 'emitTaskCampaignPreviewRemoveFailed'],\n },\n // AgentConsulting comes for received after the initial consult is accepted\n [TaskEvent.CONSULTING_ACTIVE]: [\n {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n ],\n // agentOfferConsult happens only on the receiver side of consult\n [TaskEvent.OFFER_CONSULT]: {\n actions: ['updateTaskData', 'emitTaskOfferConsult', 'requestAutoAnswer'],\n },\n // AgentConsultFailed - when consulted agent (Agent 2) doesn't answer (RONA or decline)\n // Clears the incoming consult notification by transitioning to TERMINATED\n [TaskEvent.CONSULT_FAILED]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskReject'],\n },\n // AgentConsultEnded - when consult initiator (Agent 1) ends the consult before\n // the consulted agent (Agent 2) accepts. Clears the incoming notification.\n [TaskEvent.CONSULT_END]: {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n },\n },\n\n [TaskState.CONNECTED]: {\n on: {\n // AgentConsultConferenced / ParticipantJoinedConference can arrive while connected.\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n // AgentConsulting may arrive while machine is CONNECTED (EP-DN/event ordering).\n // Derive consultInitiator from payload so controls are set correctly.\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentContactAssigned can be resent after consult transfers; keep context in sync\n /* TODO: This transition needs to be checked if this is even needed as receiver will\n * be in Consult Accept state which can be consulting state and ASSIGNED will be only\n * for the receiver. So receuving ASSIGNED in Connected state is highly unlikely.\n */\n [TaskEvent.ASSIGN]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n // Click of hold button\n [TaskEvent.HOLD_INITIATED]: {\n target: TaskState.HOLD_INITIATING,\n },\n // Remote hold from another login session (multi-login)\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_INITIATED]: {\n target: TaskState.RESUME_INITIATING,\n },\n // Resume while machine is CONNECTED but main media is still on hold (stale state after consult RONA/decline).\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n // Click of the consult button\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination'],\n },\n // AgentConsultTransferred / AgentVTeamTransferred / AgentBlindTransferred\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n // Receiver goes to connected as he receives transferSuccess event\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n // AgentConsultEnded from Stable Prod while on connected leg (external end consult).\n [TaskEvent.CONSULT_END]: [\n {\n guard: ({context, event}) => {\n if (context.consultInitiator !== true) return false;\n const taskData = getTaskDataFromEvent(event);\n const mainId = taskData?.interaction?.mainInteractionId || taskData?.interactionId;\n\n return Boolean(mainId && taskData?.interaction?.media?.[mainId]?.isHold === true);\n },\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n guard: ({context}) => context.consultInitiator === true,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n ],\n // AgentContactEnded Event\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Campaign preview ContactEnded is terminal cleanup; never enter wrapup.\n guard: guards.isCampaignPreviewContactEnded,\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n {\n // Conference still active → CONFERENCING\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n // Agent should wrap up → WRAPPING_UP\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n },\n },\n\n [TaskState.HOLD_INITIATING]: {\n on: {\n // AgentContactHeld Event\n [TaskEvent.HOLD_SUCCESS]: {\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n // AgentContactHoldFailed Event\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData'],\n },\n },\n },\n\n [TaskState.HELD]: {\n on: {\n // Conference can be merged while this agent is in held state after refresh/recovery.\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n [TaskEvent.PAUSE_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingPaused'],\n },\n [TaskEvent.RESUME_RECORDING]: {\n actions: ['updateTaskData', 'setRecordingState', 'emitTaskRecordingResumed'],\n },\n // Click of the unhold button\n [TaskEvent.UNHOLD_INITIATED]: {\n target: TaskState.RESUME_INITIATING,\n },\n // Remote resume from another login session (multi-login)\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n // Click of the consult button\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination'],\n },\n // AgentConsulting while main leg is held (Task Refactor / Stable Prod consult accept).\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // TODO: This may not be a valid transition, need to be removed\n // AgentConsultTransferred / AgentVTeamTransferred / AgentBlindTransferred\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Campaign preview ContactEnded is terminal cleanup; never enter wrapup.\n guard: guards.isCampaignPreviewContactEnded,\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n {\n guard: guards.conferenceInProgressFromEvent,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'emitTaskConferenceStarted', 'requestCleanup'],\n },\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup', 'requestCleanup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'emitTaskEnd'],\n },\n ],\n // AgentConsultEnded from Stable Prod while main leg is held (external end consult).\n [TaskEvent.CONSULT_END]: {\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n // TODO: This may not be a valid transition, this needs to be checked as well\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'emitTaskWrapup'],\n },\n },\n },\n\n [TaskState.RESUME_INITIATING]: {\n on: {\n [TaskEvent.UNHOLD_SUCCESS]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n [TaskEvent.UNHOLD_FAILED]: {\n target: TaskState.HELD,\n },\n },\n },\n\n [TaskState.CONSULT_INITIATING]: {\n on: {\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.HOLD_FAILED]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n // AgentConsulting\n // NOTE: Don't set consultDestinationAgentJoined here - wait for CONSULTING_ACTIVE\n [TaskEvent.CONSULT_SUCCESS]: {\n target: TaskState.CONSULTING,\n actions: ['updateTaskData', 'setConsultInitiator'],\n },\n // AgentConsulting (Task Refactor: AgentConsulting event, not CONSULT_SUCCESS)\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n // AgentConsultFailed, API Failures, AgentCtqFailed\n [TaskEvent.CONSULT_FAILED]: [\n {\n // Consult from conference → back to CONFERENCING\n guard: ({context}) => context.consultFromConference === true,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n ],\n // AgentCtqCancelled Event\n [TaskEvent.CTQ_CANCEL]: [\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n // AgentConsultEnded from Stable Prod during consult initiation (external end consult).\n [TaskEvent.CONSULT_END]: [\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n ],\n },\n },\n\n [TaskState.CONSULTING]: {\n on: {\n // AgentConsulting updates consulted agent arrival\n [TaskEvent.CONSULTING_ACTIVE]: {\n actions: [\n 'setConsultAgentJoined',\n 'setConsultDestination',\n 'updateTaskData',\n 'emitTaskConsulting',\n ],\n },\n\n // AgentConsultFailed (RONA / consultee declined) while the initiator is already in\n // CONSULTING (AgentConsulting arrived during ringing). Mirror CONSULT_INITIATING so the\n // initiator returns to their own leg (HELD when main is on hold, else CONNECTED) instead\n // of staying in CONSULTING. Without this, handleConsultFailed clears consultInitiator but\n // the machine stays in CONSULTING, so the trailing AgentConsultEnded falls through the\n // CONSULT_END \"consulted agent\" branch to TERMINATED and wrongly clears the task.\n [TaskEvent.CONSULT_FAILED]: [\n {\n guard: ({context}) => context.consultFromConference === true,\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n guard: guards.isPrimaryMediaOnHold,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n ],\n\n // AgentConsultEnded\n [TaskEvent.CONSULT_END]: [\n {\n // Initiator returning to conference only while conference is still active.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n guards.conferenceInProgressFromEvent({context, event}),\n target: TaskState.CONFERENCING,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Conference consult ended after conference downgrade while main leg is held.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n context.consultFromConference === true &&\n !guards.conferenceInProgressFromEvent({context, event}) &&\n guards.isConferenceHoldParticipantFromEvent({context, event}),\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Conference consult ended after conference downgrade while main leg is connected.\n guard: ({context, event}) =>\n context.consultInitiator === true &&\n context.consultFromConference === true &&\n !guards.conferenceInProgressFromEvent({context, event}) &&\n !guards.isConferenceHoldParticipantFromEvent({context, event}),\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Initiator already switched back to the main/customer leg\n guard: ({context}) =>\n context.consultInitiator === true && context.consultCallHeld === true,\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Interaction terminated during consult (customer left) → WRAPPING_UP\n guard: ({context, event}) => {\n // if (context.consultInitiator !== true) return false;\n // const taskData = getTaskDataFromEvent(event);\n const taskData = getTaskDataFromEvent(event);\n const cpd = taskData?.interaction?.callProcessingDetails;\n if (cpd?.hasCustomerLeft !== 'true') return false;\n\n return (\n taskData?.interaction?.isTerminated === true &&\n shouldWrapUpForThisAgent(context, taskData)\n );\n },\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n {\n // Initiator (no conference) → HELD\n guard: ({context}) => context.consultInitiator === true,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConsultEnd'],\n },\n {\n // Consulted agent → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData'],\n },\n ],\n\n // Switch between consult and main call (UI-driven toggle)\n [TaskEvent.SWITCH_TO_MAIN_CALL]: {\n actions: ['handleSwitchToMainCall', 'emitTaskSwitchCall'],\n },\n [TaskEvent.SWITCH_TO_CONSULT]: {\n actions: ['handleSwitchToConsult', 'emitTaskSwitchCall'],\n },\n [TaskEvent.HOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n [TaskEvent.UNHOLD_SUCCESS]: {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskResume'],\n },\n\n [TaskEvent.PARTICIPANT_LEAVE]: [\n {\n guard: (params) =>\n guards.didCurrentAgentLeaveConference(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskWrapup',\n ],\n },\n {\n guard: guards.didCurrentAgentLeaveConference,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n {\n guard: (params) =>\n !guards.didCurrentAgentLeaveConference(params) &&\n guards.shouldDowngradeConferenceToConnected(params),\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskConferenceEnded',\n ],\n },\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n\n [TaskEvent.TRANSFER_SUCCESS]: [\n {\n guard: guards.shouldWrapUpOrIsInitiator,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n [TaskEvent.TRANSFER_FAILED]: {\n actions: ['updateTaskData'],\n },\n [TaskEvent.TRANSFER_CONFERENCE]: {\n // Track that this agent initiated the conference transfer so we can\n // apply the correct lifecycle transition when success arrives.\n actions: ['setTransferConferenceRequested', 'emitTaskTransferConference'],\n },\n [TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskWrapup',\n ],\n },\n {\n // Non-initiator (e.g. consultee receiving transfer) moves to CONFERENCING\n guard: (params) => !guards.isSelfConferenceTransferInitiator(params),\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskEnd',\n ],\n },\n ],\n [TaskEvent.TRANSFER_CONFERENCE_FAILED]: {\n actions: ['clearTransferConferenceRequested', 'emitTaskTransferConferenceFailed'],\n },\n\n // AgentContactAssigned - receiver side becomes connected to customer\n [TaskEvent.ASSIGN]: {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'emitTaskAssigned'],\n },\n // AgentContactEnded\n [TaskEvent.CONTACT_ENDED]: {\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskWrapup',\n 'requestCleanup',\n ],\n },\n [TaskEvent.TASK_WRAPUP]: {\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n [TaskEvent.MERGE_TO_CONFERENCE]: {\n target: TaskState.CONF_INITIATING,\n },\n // AgentConsultConferenced, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'handleConferenceStarted',\n 'clearConsultState',\n ],\n },\n },\n },\n\n [TaskState.CONF_INITIATING]: {\n on: {\n // AgentConsultConferenced, AgentConsultConferencing, ParticipantJoinedConference\n [TaskEvent.CONFERENCE_START]: {\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'handleConferenceStarted',\n 'clearConsultState',\n ],\n },\n // AgentConsultConferenceFailed\n [TaskEvent.CONFERENCE_FAILED]: {\n target: TaskState.CONSULTING,\n actions: ['handleConferenceFailed', 'emitTaskConferenceFailed'],\n },\n // AgentConsultEnded while conference is initiating (end call before conference completes)\n [TaskEvent.CONSULT_END]: [\n {\n guard: ({event}) => {\n const taskData = getTaskDataFromEvent(event);\n\n return taskData?.interaction?.isTerminated === true;\n },\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n },\n },\n\n [TaskState.CONFERENCING]: {\n on: {\n [TaskEvent.CONFERENCE_START]: {\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'clearConsultState',\n 'emitTaskConferenceStarted',\n ],\n },\n [TaskEvent.EXIT_CONFERENCE_SUCCESS]: [\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd'],\n },\n ],\n\n // Needed as all agents in conference get this event, hence we need to clear the consult state\n [TaskEvent.CONSULT_END]: [\n {\n guard: ({context, event}) => {\n const taskData = getTaskDataFromEvent(event);\n\n return (\n taskData?.interaction?.isTerminated === true &&\n shouldWrapUpForThisAgent(context, taskData)\n );\n },\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n actions: ['updateTaskData', 'clearConsultState'],\n },\n ],\n\n [TaskEvent.HOLD_SUCCESS]: [\n {\n // Conference already downgraded (no other agents) and backend hold arrives.\n // Move to HELD so the UI renders resume action.\n guard: guards.shouldDowngradeConferenceToConnected,\n target: TaskState.HELD,\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n {\n actions: ['updateTaskData', 'setHoldState', 'emitTaskHold'],\n },\n ],\n [TaskEvent.UNHOLD_SUCCESS]: [\n {\n // Conference already downgraded (no other agents) and backend unhold arrives.\n // Move to CONNECTED so hold action is available again.\n guard: guards.shouldDowngradeConferenceToConnected,\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'setHoldState',\n 'emitTaskResume',\n ],\n },\n {\n actions: [\n 'updateTaskData',\n 'syncTaskDataFromEvent',\n 'setHoldState',\n 'emitTaskResume',\n ],\n },\n ],\n\n // Start a new consult from within an active conference\n [TaskEvent.CONSULT]: {\n target: TaskState.CONSULT_INITIATING,\n actions: ['setConsultInitiator', 'setConsultDestination', 'setConsultFromConference'],\n },\n\n // AgentConsulting while still in conference (EP-DN/external ordering).\n [TaskEvent.CONSULTING_ACTIVE]: {\n target: TaskState.CONSULTING,\n actions: [\n 'setConsultInitiator',\n 'setConsultDestination',\n 'setConsultFromConference',\n 'setConsultAgentJoined',\n 'updateTaskData',\n 'emitTaskConsultAccepted',\n 'emitTaskConsulting',\n ],\n },\n\n // Participant leaves - handle conference downgrade scenarios\n [TaskEvent.PARTICIPANT_LEAVE]: [\n {\n // Only the leaving agent should wrap up → WRAPPING_UP\n guard: (params) =>\n guards.didCurrentAgentLeaveConference(params) && guards.shouldWrapUp(params),\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskWrapup',\n ],\n },\n {\n // Only the leaving agent (no wrapup) → TERMINATED\n guard: guards.didCurrentAgentLeaveConference,\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'markEnded',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskEnd',\n ],\n },\n {\n // Conference downgraded, customer present → CONNECTED\n guard: (params) =>\n !guards.didCurrentAgentLeaveConference(params) &&\n guards.shouldDowngradeConferenceToConnected(params),\n target: TaskState.CONNECTED,\n actions: [\n 'updateTaskData',\n 'handleParticipantLeft',\n 'clearConsultState',\n 'emitTaskParticipantLeft',\n 'emitTaskConferenceEnded',\n ],\n },\n {actions: ['updateTaskData', 'handleParticipantLeft', 'emitTaskParticipantLeft']},\n ],\n\n [TaskEvent.TRANSFER_CONFERENCE]: {\n actions: ['setTransferConferenceRequested', 'emitTaskTransferConference'],\n },\n [TaskEvent.TRANSFER_CONFERENCE_SUCCESS]: [\n {\n guard: guards.isPassiveConferenceTransferObserver,\n actions: [\n 'updateTaskData',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskWrapup',\n ],\n },\n {\n guard: (params) => !guards.isSelfConferenceTransferInitiator(params),\n target: TaskState.CONFERENCING,\n actions: [\n 'updateTaskData',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n ],\n },\n {\n target: TaskState.TERMINATED,\n actions: [\n 'updateTaskData',\n 'markEnded',\n 'clearConsultState',\n 'handleTransferConferenceSuccess',\n 'clearTransferConferenceRequested',\n 'emitTaskEnd',\n ],\n },\n ],\n [TaskEvent.TRANSFER_CONFERENCE_FAILED]: {\n actions: ['clearTransferConferenceRequested', 'emitTaskTransferConferenceFailed'],\n },\n\n // Conference ends explicitly\n [TaskEvent.CONFERENCE_END]: [\n {\n // Agent who should wrap up → WRAPPING_UP\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n {\n // Customer still in call → CONNECTED\n guard: ({context, event}) => {\n if (context.exitingConference === true) return false;\n const taskData = (event as any)?.taskData ?? context.taskData;\n if (!taskData?.interaction) return false;\n const mainCallId = taskData.interaction.mainInteractionId || taskData.interactionId;\n if (!mainCallId) return false;\n\n return getIsCustomerInCall(taskData.interaction, mainCallId);\n },\n target: TaskState.CONNECTED,\n actions: ['updateTaskData', 'clearConsultState', 'emitTaskConferenceEnded'],\n },\n {\n // Otherwise → TERMINATED\n target: TaskState.TERMINATED,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskEnd'],\n },\n ],\n\n // CONTACT_ENDED in conference\n [TaskEvent.CONTACT_ENDED]: [\n {\n // Conference still active → stay\n actions: ['updateTaskData', 'requestCleanup'],\n },\n ],\n\n [TaskEvent.CONSULT_FAILED]: {\n actions: ['updateTaskData', 'handleConsultFailed'],\n },\n\n [TaskEvent.TASK_WRAPUP]: {\n guard: guards.shouldWrapUp,\n target: TaskState.WRAPPING_UP,\n actions: ['updateTaskData', 'markEnded', 'clearConsultState', 'emitTaskWrapup'],\n },\n },\n },\n\n [TaskState.WRAPPING_UP]: {\n // Only emit wrapup event on entry - task:end should only be emitted when COMPLETED\n entry: ['emitTaskWrapup'],\n on: {\n // AgentWrappedup Event\n [TaskEvent.WRAPUP_COMPLETE]: {\n target: TaskState.COMPLETED,\n actions: ['updateTaskData'],\n },\n },\n },\n\n [TaskState.COMPLETED]: {\n type: 'final' as const,\n entry: ['emitTaskWrappedup', 'cleanupResources'],\n },\n\n [TaskState.TERMINATED]: {\n type: 'final' as const,\n entry: ['cleanupResources'],\n },\n },\n };\n}\n\n/**\n * Create a task state machine instance using only the built-in actions.\n * The resulting machine is ready for most consumers that rely on the default\n * context mutators declared in actions.ts.\n *\n * @param uiControlConfig - UI control configuration\n * @returns StateMachine instance for task management\n */\nexport function createTaskStateMachine(\n uiControlConfig: UIControlConfig,\n options?: {actions?: Partial<TaskActionsMap>}\n) {\n return taskStateMachineSetup.createMachine(getTaskStateMachineConfig(uiControlConfig)).provide({\n actions: {\n ...actions,\n ...(options?.actions ?? {}),\n },\n });\n}\n\nexport type TaskStateMachine = ReturnType<typeof createTaskStateMachine>;\n"],"mappings":"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","ignoreList":[]}