@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,318 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.ApiAIAssistant = void 0;
7
+ var _uuid = require("uuid");
8
+ var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
9
+ var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"));
10
+ var _constants = require("../metrics/constants");
11
+ var _constants2 = require("../constants");
12
+ var _types = require("../types");
13
+ var _Utils = require("./core/Utils");
14
+ var _constants3 = require("./constants");
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ /**
17
+ * ApiAIAssistant provides AI Assistant APIs for transcript controls.
18
+ * @public
19
+ */
20
+ class ApiAIAssistant {
21
+ constructor(webex) {
22
+ this.webex = webex;
23
+ this.metricsManager = _MetricsManager.default.getInstance({
24
+ webex
25
+ });
26
+ }
27
+ setAIFeatureFlags(aiFeature) {
28
+ this.aiFeature = aiFeature;
29
+ }
30
+ getBaseUrl() {
31
+ const wccApiGatewayUrl = this.webex.internal.services.get(_constants3.WCC_API_GATEWAY) || '';
32
+ if (!wccApiGatewayUrl) {
33
+ const {
34
+ error: detailedError
35
+ } = (0, _Utils.getErrorDetails)(new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'), _constants2.METHODS.GET_BASE_URL, _constants2.CC_FILE);
36
+ throw detailedError;
37
+ }
38
+ let hostname = '';
39
+ try {
40
+ hostname = new URL(wccApiGatewayUrl).hostname.toLowerCase();
41
+ } catch (error) {
42
+ hostname = wccApiGatewayUrl.toLowerCase();
43
+ }
44
+ const resolvedEnv = _constants3.AI_ASSISTANT_ENV_MAP[hostname];
45
+ if (!resolvedEnv) {
46
+ const {
47
+ error: detailedError
48
+ } = (0, _Utils.getErrorDetails)(new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'), _constants2.METHODS.GET_BASE_URL, _constants2.CC_FILE);
49
+ throw detailedError;
50
+ }
51
+ return _constants3.AI_ASSISTANT_BASE_URL_TEMPLATE.replace('%s', resolvedEnv);
52
+ }
53
+
54
+ /**
55
+ * Sends an event to the AI Assistant service.
56
+ * @param agentId - agent identifier
57
+ * @param interactionId - interaction/conversation identifier
58
+ * @param eventType - the type of event (e.g. 'CUSTOM_EVENT')
59
+ * @param eventName - the name of the event (e.g. 'GET_TRANSCRIPTS')
60
+ * @param eventMetaData - event-specific fields to include in eventDetails.data
61
+ * @param languageCode - language code within eventDetails.data
62
+ * @param trackingId - tracking identifier within eventDetails.data
63
+ */
64
+ async sendEvent(agentId, interactionId, eventType, eventName, eventMetaData, languageCode, trackingId) {
65
+ _loggerProxy.default.info('Sending event', {
66
+ module: _constants2.CC_FILE,
67
+ method: _constants2.METHODS.SEND_EVENT,
68
+ interactionId,
69
+ data: {
70
+ eventType,
71
+ eventName,
72
+ eventMetaData
73
+ }
74
+ });
75
+ this.metricsManager.timeEvent([_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS, _constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED]);
76
+ try {
77
+ const baseUrl = this.getBaseUrl();
78
+ const orgId = this.webex.credentials.getOrgId();
79
+ const response = await this.webex.request({
80
+ uri: `${baseUrl}${_constants3.AI_ASSISTANT_API_URLS.EVENT}`,
81
+ method: _types.HTTP_METHODS.POST,
82
+ addAuthHeader: true,
83
+ body: {
84
+ agentId,
85
+ orgId,
86
+ eventType,
87
+ eventName,
88
+ eventDetails: {
89
+ data: {
90
+ ...eventMetaData,
91
+ interactionId,
92
+ actionTimeStamp: String(Date.now()),
93
+ languageCode,
94
+ trackingId
95
+ }
96
+ }
97
+ }
98
+ });
99
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS, {
100
+ agentId,
101
+ orgId,
102
+ interactionId,
103
+ eventType,
104
+ eventName
105
+ }, ['operational']);
106
+ return response?.body || {};
107
+ } catch (error) {
108
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED, {
109
+ interactionId,
110
+ eventType,
111
+ eventName,
112
+ error: error instanceof Error ? error.message : String(error)
113
+ }, ['operational']);
114
+ const {
115
+ error: detailedError
116
+ } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.SEND_EVENT, _constants2.CC_FILE);
117
+ throw detailedError;
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Requests real-time assistance for an interaction.
123
+ *
124
+ * @param params - Real-time assistance request parameters
125
+ * @returns HTTP response body from the AI Assistant event API
126
+ * @public
127
+ */
128
+ async getRealTimeAssistance(params) {
129
+ const {
130
+ agentId,
131
+ interactionId,
132
+ context
133
+ } = params;
134
+ const trimmedContext = context?.trim();
135
+ const languageCode = params.languageCode ?? 'en';
136
+ const trackingId = `WX_CC_SDK_${(0, _uuid.v4)()}`;
137
+ const eventName = trimmedContext ? _types.AIAssistantEventName.ADD_SUGGESTIONS_EXTRA_CONTEXT : _types.AIAssistantEventName.GET_SUGGESTIONS;
138
+ const loggerContext = {
139
+ module: _constants2.CC_FILE,
140
+ method: _constants2.METHODS.GET_REAL_TIME_ASSISTANCE,
141
+ interactionId,
142
+ trackingId,
143
+ data: {
144
+ eventName
145
+ }
146
+ };
147
+ _loggerProxy.default.info('Requesting real-time assistance', loggerContext);
148
+ this.metricsManager.timeEvent([_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS, _constants.METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED]);
149
+ try {
150
+ if (!this.aiFeature?.suggestedResponses?.enable) {
151
+ const {
152
+ error: detailedError
153
+ } = (0, _Utils.getErrorDetails)(new Error('SUGGESTED_RESPONSES_NOT_ENABLED'), _constants2.METHODS.GET_REAL_TIME_ASSISTANCE, _constants2.CC_FILE);
154
+ throw detailedError;
155
+ }
156
+ const orgId = this.webex.credentials.getOrgId();
157
+ const response = await this.sendEvent(agentId, interactionId, _types.AIAssistantEventType.CUSTOM_EVENT, eventName, trimmedContext !== undefined ? {
158
+ context: trimmedContext
159
+ } : undefined, languageCode, trackingId);
160
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS, {
161
+ agentId,
162
+ orgId,
163
+ interactionId,
164
+ eventName,
165
+ trackingId,
166
+ context
167
+ }, ['operational']);
168
+ _loggerProxy.default.log('Real-time assistance request succeeded', loggerContext);
169
+ return response;
170
+ } catch (error) {
171
+ _loggerProxy.default.error('Real-time assistance request failed', {
172
+ ...loggerContext,
173
+ error
174
+ });
175
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED, {
176
+ agentId,
177
+ interactionId,
178
+ trackingId,
179
+ eventName,
180
+ error: error instanceof Error ? error.message : String(error)
181
+ }, ['operational']);
182
+ const {
183
+ error: detailedError
184
+ } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.GET_REAL_TIME_ASSISTANCE, _constants2.CC_FILE);
185
+ throw detailedError;
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Sends user action feedback for a real-time assistance adaptive card.
191
+ *
192
+ * @param params - Real-time assistance user action parameters
193
+ * @returns HTTP response body from the AI Assistant event API
194
+ * @public
195
+ */
196
+ async sendRealTimeAssistanceUserAction(params) {
197
+ const {
198
+ agentId,
199
+ interactionId,
200
+ adaptiveCardId,
201
+ actionId
202
+ } = params;
203
+ const actionType = 'Action.Submit';
204
+ const languageCode = params.languageCode ?? 'en';
205
+ const trackingId = `WX_CC_SDK_${(0, _uuid.v4)()}`;
206
+ const loggerContext = {
207
+ module: _constants2.CC_FILE,
208
+ method: _constants2.METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION,
209
+ interactionId,
210
+ trackingId,
211
+ data: {
212
+ actionId,
213
+ adaptiveCardId
214
+ }
215
+ };
216
+ _loggerProxy.default.info('Sending real-time assistance user action', loggerContext);
217
+ this.metricsManager.timeEvent([_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS, _constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED]);
218
+ try {
219
+ if (!this.aiFeature?.suggestedResponses?.enable) {
220
+ const {
221
+ error: detailedError
222
+ } = (0, _Utils.getErrorDetails)(new Error('SUGGESTED_RESPONSES_NOT_ENABLED'), _constants2.METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION, _constants2.CC_FILE);
223
+ throw detailedError;
224
+ }
225
+ const orgId = this.webex.credentials.getOrgId();
226
+ const response = await this.sendEvent(agentId, interactionId, _types.AIAssistantEventType.CUSTOM_EVENT, _types.AIAssistantEventName.SUGGESTED_RESPONSES_USER_ACTION, {
227
+ adaptiveCardId,
228
+ userAction: {
229
+ actionType,
230
+ actionId
231
+ }
232
+ }, languageCode, trackingId);
233
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS, {
234
+ agentId,
235
+ orgId,
236
+ interactionId,
237
+ adaptiveCardId,
238
+ actionId,
239
+ trackingId
240
+ }, ['operational']);
241
+ _loggerProxy.default.log('Real-time assistance user action sent', loggerContext);
242
+ return response;
243
+ } catch (error) {
244
+ _loggerProxy.default.error('Real-time assistance user action failed', {
245
+ ...loggerContext,
246
+ error
247
+ });
248
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED, {
249
+ agentId,
250
+ interactionId,
251
+ adaptiveCardId,
252
+ actionId,
253
+ trackingId,
254
+ error: error instanceof Error ? error.message : String(error)
255
+ }, ['operational']);
256
+ const {
257
+ error: detailedError
258
+ } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION, _constants2.CC_FILE);
259
+ throw detailedError;
260
+ }
261
+ }
262
+
263
+ /**
264
+ * Fetches historic transcripts for an interaction.
265
+ * This API is allowed only when real-time transcription feature is enabled.
266
+ *
267
+ * @param interactionId - interaction/conversation identifier
268
+ */
269
+ async fetchHistoricTranscripts(agentId, interactionId) {
270
+ _loggerProxy.default.info('Fetching historic transcripts', {
271
+ module: _constants2.CC_FILE,
272
+ method: _constants2.METHODS.FETCH_HISTORIC_TRANSCRIPTS,
273
+ interactionId
274
+ });
275
+ this.metricsManager.timeEvent([_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS, _constants.METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED]);
276
+ if (!this.aiFeature?.realtimeTranscripts?.enable) {
277
+ const {
278
+ error: detailedError
279
+ } = (0, _Utils.getErrorDetails)(new Error('REAL_TIME_TRANSCRIPTION_NOT_ENABLED'), _constants2.METHODS.FETCH_HISTORIC_TRANSCRIPTS, _constants2.CC_FILE);
280
+ throw detailedError;
281
+ }
282
+ try {
283
+ const baseUrl = this.getBaseUrl();
284
+ const orgId = this.webex.credentials.getOrgId();
285
+ const response = await this.webex.request({
286
+ uri: `${baseUrl}${_constants3.AI_ASSISTANT_API_URLS.TRANSCRIPTS_LIST}`,
287
+ method: _types.HTTP_METHODS.POST,
288
+ addAuthHeader: true,
289
+ body: {
290
+ agentId,
291
+ orgId,
292
+ interactionId
293
+ }
294
+ });
295
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS, {
296
+ agentId,
297
+ orgId,
298
+ interactionId
299
+ }, ['operational']);
300
+ return response.body;
301
+ } catch (error) {
302
+ this.metricsManager.trackEvent(_constants.METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED, {
303
+ interactionId,
304
+ error: error instanceof Error ? error.message : String(error)
305
+ }, ['operational']);
306
+ if (error instanceof Error) {
307
+ throw error;
308
+ }
309
+ const {
310
+ error: detailedError
311
+ } = (0, _Utils.getErrorDetails)(error, _constants2.METHODS.FETCH_HISTORIC_TRANSCRIPTS, _constants2.CC_FILE);
312
+ throw detailedError;
313
+ }
314
+ }
315
+ }
316
+ exports.ApiAIAssistant = ApiAIAssistant;
317
+ var _default = exports.default = ApiAIAssistant;
318
+ //# sourceMappingURL=ApiAiAssistant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_uuid","require","_loggerProxy","_interopRequireDefault","_MetricsManager","_constants","_constants2","_types","_Utils","_constants3","e","__esModule","default","ApiAIAssistant","constructor","webex","metricsManager","MetricsManager","getInstance","setAIFeatureFlags","aiFeature","getBaseUrl","wccApiGatewayUrl","internal","services","get","WCC_API_GATEWAY","error","detailedError","getErrorDetails","Error","METHODS","GET_BASE_URL","CC_FILE","hostname","URL","toLowerCase","resolvedEnv","AI_ASSISTANT_ENV_MAP","AI_ASSISTANT_BASE_URL_TEMPLATE","replace","sendEvent","agentId","interactionId","eventType","eventName","eventMetaData","languageCode","trackingId","LoggerProxy","info","module","method","SEND_EVENT","data","timeEvent","METRIC_EVENT_NAMES","AI_ASSISTANT_SEND_EVENT_SUCCESS","AI_ASSISTANT_SEND_EVENT_FAILED","baseUrl","orgId","credentials","getOrgId","response","request","uri","AI_ASSISTANT_API_URLS","EVENT","HTTP_METHODS","POST","addAuthHeader","body","eventDetails","actionTimeStamp","String","Date","now","trackEvent","message","getRealTimeAssistance","params","context","trimmedContext","trim","uuidv4","AIAssistantEventName","ADD_SUGGESTIONS_EXTRA_CONTEXT","GET_SUGGESTIONS","loggerContext","GET_REAL_TIME_ASSISTANCE","AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS","AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED","suggestedResponses","enable","AIAssistantEventType","CUSTOM_EVENT","undefined","log","sendRealTimeAssistanceUserAction","adaptiveCardId","actionId","actionType","SEND_REAL_TIME_ASSISTANCE_USER_ACTION","AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS","AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED","SUGGESTED_RESPONSES_USER_ACTION","userAction","fetchHistoricTranscripts","FETCH_HISTORIC_TRANSCRIPTS","AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS","AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED","realtimeTranscripts","TRANSCRIPTS_LIST","exports","_default"],"sources":["ApiAiAssistant.ts"],"sourcesContent":["import {v4 as uuidv4} from 'uuid';\nimport LoggerProxy from '../logger-proxy';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {CC_FILE, METHODS} from '../constants';\nimport {\n HTTP_METHODS,\n WebexSDK,\n IHttpResponse,\n AIAssistantEventType,\n AIAssistantEventName,\n HistoricTranscriptsResponse,\n RealTimeAssistanceParams,\n RealTimeAssistanceUserActionParams,\n} from '../types';\nimport {getErrorDetails} from './core/Utils';\nimport {\n AI_ASSISTANT_BASE_URL_TEMPLATE,\n AI_ASSISTANT_ENV_MAP,\n AI_ASSISTANT_API_URLS,\n WCC_API_GATEWAY,\n} from './constants';\nimport {AIFeatureFlags} from './config/types';\n\n/**\n * ApiAIAssistant provides AI Assistant APIs for transcript controls.\n * @public\n */\nexport class ApiAIAssistant {\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n private aiFeature: AIFeatureFlags;\n\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n public setAIFeatureFlags(aiFeature: AIFeatureFlags): void {\n this.aiFeature = aiFeature;\n }\n\n private getBaseUrl(): string {\n const wccApiGatewayUrl = this.webex.internal.services.get(WCC_API_GATEWAY) || '';\n\n if (!wccApiGatewayUrl) {\n const {error: detailedError} = getErrorDetails(\n new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'),\n METHODS.GET_BASE_URL,\n CC_FILE\n );\n throw detailedError;\n }\n\n let hostname = '';\n try {\n hostname = new URL(wccApiGatewayUrl).hostname.toLowerCase();\n } catch (error) {\n hostname = wccApiGatewayUrl.toLowerCase();\n }\n\n const resolvedEnv = AI_ASSISTANT_ENV_MAP[hostname];\n if (!resolvedEnv) {\n const {error: detailedError} = getErrorDetails(\n new Error('AI_ASSISTANT_BASE_URL_NOT_AVAILABLE'),\n METHODS.GET_BASE_URL,\n CC_FILE\n );\n throw detailedError;\n }\n\n return AI_ASSISTANT_BASE_URL_TEMPLATE.replace('%s', resolvedEnv);\n }\n\n /**\n * Sends an event to the AI Assistant service.\n * @param agentId - agent identifier\n * @param interactionId - interaction/conversation identifier\n * @param eventType - the type of event (e.g. 'CUSTOM_EVENT')\n * @param eventName - the name of the event (e.g. 'GET_TRANSCRIPTS')\n * @param eventMetaData - event-specific fields to include in eventDetails.data\n * @param languageCode - language code within eventDetails.data\n * @param trackingId - tracking identifier within eventDetails.data\n */\n public async sendEvent(\n agentId: string,\n interactionId: string,\n eventType: AIAssistantEventType,\n eventName: AIAssistantEventName,\n eventMetaData?: Record<string, unknown>,\n languageCode?: string,\n trackingId?: string\n ): Promise<Record<string, unknown>> {\n LoggerProxy.info('Sending event', {\n module: CC_FILE,\n method: METHODS.SEND_EVENT,\n interactionId,\n data: {eventType, eventName, eventMetaData},\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED,\n ]);\n\n try {\n const baseUrl = this.getBaseUrl();\n const orgId = this.webex.credentials.getOrgId();\n const response = (await this.webex.request({\n uri: `${baseUrl}${AI_ASSISTANT_API_URLS.EVENT}`,\n method: HTTP_METHODS.POST,\n addAuthHeader: true,\n body: {\n agentId,\n orgId,\n eventType,\n eventName,\n eventDetails: {\n data: {\n ...eventMetaData,\n interactionId,\n actionTimeStamp: String(Date.now()),\n languageCode,\n trackingId,\n },\n },\n },\n })) as IHttpResponse;\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_SUCCESS,\n {agentId, orgId, interactionId, eventType, eventName},\n ['operational']\n );\n\n return response?.body || {};\n } catch (error) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_EVENT_FAILED,\n {\n interactionId,\n eventType,\n eventName,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n const {error: detailedError} = getErrorDetails(error, METHODS.SEND_EVENT, CC_FILE);\n throw detailedError;\n }\n }\n\n /**\n * Requests real-time assistance for an interaction.\n *\n * @param params - Real-time assistance request parameters\n * @returns HTTP response body from the AI Assistant event API\n * @public\n */\n public async getRealTimeAssistance(params: RealTimeAssistanceParams) {\n const {agentId, interactionId, context} = params;\n const trimmedContext = context?.trim();\n const languageCode = params.languageCode ?? 'en';\n const trackingId = `WX_CC_SDK_${uuidv4()}`;\n const eventName = trimmedContext\n ? AIAssistantEventName.ADD_SUGGESTIONS_EXTRA_CONTEXT\n : AIAssistantEventName.GET_SUGGESTIONS;\n\n const loggerContext = {\n module: CC_FILE,\n method: METHODS.GET_REAL_TIME_ASSISTANCE,\n interactionId,\n trackingId,\n data: {eventName},\n };\n\n LoggerProxy.info('Requesting real-time assistance', loggerContext);\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED,\n ]);\n\n try {\n if (!this.aiFeature?.suggestedResponses?.enable) {\n const {error: detailedError} = getErrorDetails(\n new Error('SUGGESTED_RESPONSES_NOT_ENABLED'),\n METHODS.GET_REAL_TIME_ASSISTANCE,\n CC_FILE\n );\n throw detailedError;\n }\n\n const orgId = this.webex.credentials.getOrgId();\n\n const response = await this.sendEvent(\n agentId,\n interactionId,\n AIAssistantEventType.CUSTOM_EVENT,\n eventName,\n trimmedContext !== undefined ? {context: trimmedContext} : undefined,\n languageCode,\n trackingId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_SUCCESS,\n {\n agentId,\n orgId,\n interactionId,\n eventName,\n trackingId,\n context,\n },\n ['operational']\n );\n LoggerProxy.log('Real-time assistance request succeeded', loggerContext);\n\n return response;\n } catch (error) {\n LoggerProxy.error('Real-time assistance request failed', {...loggerContext, error});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_GET_REAL_TIME_ASSISTANCE_FAILED,\n {\n agentId,\n interactionId,\n trackingId,\n eventName,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n const {error: detailedError} = getErrorDetails(\n error,\n METHODS.GET_REAL_TIME_ASSISTANCE,\n CC_FILE\n );\n throw detailedError;\n }\n }\n\n /**\n * Sends user action feedback for a real-time assistance adaptive card.\n *\n * @param params - Real-time assistance user action parameters\n * @returns HTTP response body from the AI Assistant event API\n * @public\n */\n public async sendRealTimeAssistanceUserAction(\n params: RealTimeAssistanceUserActionParams\n ): Promise<Record<string, unknown>> {\n const {agentId, interactionId, adaptiveCardId, actionId} = params;\n const actionType = 'Action.Submit';\n const languageCode = params.languageCode ?? 'en';\n const trackingId = `WX_CC_SDK_${uuidv4()}`;\n\n const loggerContext = {\n module: CC_FILE,\n method: METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION,\n interactionId,\n trackingId,\n data: {actionId, adaptiveCardId},\n };\n\n LoggerProxy.info('Sending real-time assistance user action', loggerContext);\n\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED,\n ]);\n\n try {\n if (!this.aiFeature?.suggestedResponses?.enable) {\n const {error: detailedError} = getErrorDetails(\n new Error('SUGGESTED_RESPONSES_NOT_ENABLED'),\n METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION,\n CC_FILE\n );\n throw detailedError;\n }\n\n const orgId = this.webex.credentials.getOrgId();\n const response = await this.sendEvent(\n agentId,\n interactionId,\n AIAssistantEventType.CUSTOM_EVENT,\n AIAssistantEventName.SUGGESTED_RESPONSES_USER_ACTION,\n {\n adaptiveCardId,\n userAction: {\n actionType,\n actionId,\n },\n },\n languageCode,\n trackingId\n );\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_SUCCESS,\n {\n agentId,\n orgId,\n interactionId,\n adaptiveCardId,\n actionId,\n trackingId,\n },\n ['operational']\n );\n LoggerProxy.log('Real-time assistance user action sent', loggerContext);\n\n return response;\n } catch (error) {\n LoggerProxy.error('Real-time assistance user action failed', {...loggerContext, error});\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_SEND_REAL_TIME_ASSISTANCE_USER_ACTION_FAILED,\n {\n agentId,\n interactionId,\n adaptiveCardId,\n actionId,\n trackingId,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n const {error: detailedError} = getErrorDetails(\n error,\n METHODS.SEND_REAL_TIME_ASSISTANCE_USER_ACTION,\n CC_FILE\n );\n throw detailedError;\n }\n }\n\n /**\n * Fetches historic transcripts for an interaction.\n * This API is allowed only when real-time transcription feature is enabled.\n *\n * @param interactionId - interaction/conversation identifier\n */\n public async fetchHistoricTranscripts(\n agentId: string,\n interactionId: string\n ): Promise<HistoricTranscriptsResponse> {\n LoggerProxy.info('Fetching historic transcripts', {\n module: CC_FILE,\n method: METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n interactionId,\n });\n this.metricsManager.timeEvent([\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS,\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED,\n ]);\n if (!this.aiFeature?.realtimeTranscripts?.enable) {\n const {error: detailedError} = getErrorDetails(\n new Error('REAL_TIME_TRANSCRIPTION_NOT_ENABLED'),\n METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n CC_FILE\n );\n throw detailedError;\n }\n\n try {\n const baseUrl = this.getBaseUrl();\n const orgId = this.webex.credentials.getOrgId();\n const response = (await this.webex.request({\n uri: `${baseUrl}${AI_ASSISTANT_API_URLS.TRANSCRIPTS_LIST}`,\n method: HTTP_METHODS.POST,\n addAuthHeader: true,\n body: {\n agentId,\n orgId,\n interactionId,\n },\n })) as IHttpResponse;\n\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_SUCCESS,\n {agentId, orgId, interactionId},\n ['operational']\n );\n\n return response.body as HistoricTranscriptsResponse;\n } catch (error) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.AI_ASSISTANT_FETCH_HISTORIC_TRANSCRIPTS_FAILED,\n {\n interactionId,\n error: error instanceof Error ? error.message : String(error),\n },\n ['operational']\n );\n\n if (error instanceof Error) {\n throw error;\n }\n const {error: detailedError} = getErrorDetails(\n error,\n METHODS.FETCH_HISTORIC_TRANSCRIPTS,\n CC_FILE\n );\n throw detailedError;\n }\n }\n}\n\nexport default ApiAIAssistant;\n"],"mappings":"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","ignoreList":[]}