@webex/internal-plugin-call-ai-summary 0.0.0-next.1

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.
@@ -0,0 +1,3 @@
1
+ const babelConfigLegacy = require('@webex/babel-config-legacy');
2
+
3
+ module.exports = babelConfigLegacy;
@@ -0,0 +1,418 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
10
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
11
+ var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
13
+ var _webexCore = require("@webex/webex-core");
14
+ var _constants = require("./constants");
15
+ /*!
16
+ * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.
17
+ */
18
+
19
+ var AISummary = _webexCore.WebexPlugin.extend({
20
+ namespace: 'AISummary',
21
+ /**
22
+ * Resolve a Pragya container by ID.
23
+ * Returns container metadata including summary URLs and encryption key.
24
+ *
25
+ * @param {GetContainerOptions} options
26
+ * @returns {Promise<PragyaContainerResponse>}
27
+ */
28
+ getContainer: function getContainer(options) {
29
+ var _this = this;
30
+ var containerId = options.containerId;
31
+ this._validateContainerId(containerId);
32
+ return this.webex.request({
33
+ method: 'GET',
34
+ service: _constants.AI_SUMMARY_SERVICE,
35
+ resource: "".concat(_constants.AI_SUMMARY_CONTAINERS_RESOURCE, "/").concat(containerId)
36
+ }).then(function (_ref) {
37
+ var _body$summaryData;
38
+ var body = _ref.body;
39
+ // Pragya API nests summary URLs under summaryData.data — flatten
40
+ // so consumers can access summaryData.summaryUrl directly.
41
+ if ((_body$summaryData = body.summaryData) !== null && _body$summaryData !== void 0 && _body$summaryData.data) {
42
+ body.summaryData = body.summaryData.data;
43
+ }
44
+ return body;
45
+ }).catch(function (error) {
46
+ _this.logger.error('AISummary->getContainer failed', {
47
+ error: error,
48
+ containerId: containerId
49
+ });
50
+ throw _this._handleError(error, 'getContainer');
51
+ });
52
+ },
53
+ /**
54
+ * Get AI-generated full summary for a call.
55
+ * Fetches from containerInfo.summaryData.summaryUrl and decrypts content.
56
+ *
57
+ * @param {GetSummaryContentOptions} options
58
+ * @returns {Promise<SummaryContent>}
59
+ */
60
+ getSummary: function getSummary(options) {
61
+ var _this2 = this;
62
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
63
+ var containerInfo, _body$actionitems, _yield$_this2$webex$r, body, keyUrl, decryptedNote, decryptedShortNote, decryptedSnippets, feedbackLink, _t;
64
+ return _regenerator.default.wrap(function (_context2) {
65
+ while (1) switch (_context2.prev = _context2.next) {
66
+ case 0:
67
+ containerInfo = options.containerInfo;
68
+ _this2._validateContainerInfo(containerInfo, 'summaryUrl');
69
+ _context2.prev = 1;
70
+ _context2.next = 2;
71
+ return _this2.webex.request({
72
+ method: 'GET',
73
+ uri: "".concat(containerInfo.summaryData.summaryUrl, "?fields=note,shortnote,actionitems")
74
+ });
75
+ case 2:
76
+ _yield$_this2$webex$r = _context2.sent;
77
+ body = _yield$_this2$webex$r.body;
78
+ keyUrl = body.keyUrl || containerInfo.encryptionKeyUrl;
79
+ _context2.next = 3;
80
+ return _this2._decryptContent(body.note.aiGeneratedContent, keyUrl);
81
+ case 3:
82
+ decryptedNote = _context2.sent;
83
+ _context2.next = 4;
84
+ return _this2._decryptContent(body.shortnote.aiGeneratedContent, keyUrl);
85
+ case 4:
86
+ decryptedShortNote = _context2.sent;
87
+ _context2.next = 5;
88
+ return _promise.default.all((((_body$actionitems = body.actionitems) === null || _body$actionitems === void 0 ? void 0 : _body$actionitems.snippets) || []).map(/*#__PURE__*/function () {
89
+ var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(snippet) {
90
+ var decryptedAiContent;
91
+ return _regenerator.default.wrap(function (_context) {
92
+ while (1) switch (_context.prev = _context.next) {
93
+ case 0:
94
+ _context.next = 1;
95
+ return _this2._decryptContent(snippet.aiGeneratedContent, keyUrl);
96
+ case 1:
97
+ decryptedAiContent = _context.sent;
98
+ return _context.abrupt("return", {
99
+ id: snippet.id,
100
+ editedContent: snippet.content || undefined,
101
+ aiGeneratedContent: decryptedAiContent
102
+ });
103
+ case 2:
104
+ case "end":
105
+ return _context.stop();
106
+ }
107
+ }, _callee);
108
+ }));
109
+ return function (_x) {
110
+ return _ref2.apply(this, arguments);
111
+ };
112
+ }()));
113
+ case 5:
114
+ decryptedSnippets = _context2.sent;
115
+ // feedbackUrl may be in the links array as rel="feedback"
116
+ feedbackLink = (body.links || []).find(function (link) {
117
+ return link.rel === 'feedback';
118
+ });
119
+ return _context2.abrupt("return", {
120
+ id: body.id,
121
+ note: decryptedNote,
122
+ shortNote: decryptedShortNote,
123
+ actionItems: decryptedSnippets,
124
+ feedbackUrl: feedbackLink === null || feedbackLink === void 0 ? void 0 : feedbackLink.href
125
+ });
126
+ case 6:
127
+ _context2.prev = 6;
128
+ _t = _context2["catch"](1);
129
+ _this2.logger.error('AISummary->getSummary failed', {
130
+ error: _t
131
+ });
132
+ throw _this2._handleError(_t, 'getSummary');
133
+ case 7:
134
+ case "end":
135
+ return _context2.stop();
136
+ }
137
+ }, _callee2, null, [[1, 6]]);
138
+ }))();
139
+ },
140
+ /**
141
+ * Get AI-generated notes for a call.
142
+ * Fetches from containerInfo.summaryData.notesUrl and decrypts content.
143
+ *
144
+ * @param {GetSummaryContentOptions} options
145
+ * @returns {Promise<SummaryNotes>}
146
+ */
147
+ getNotes: function getNotes(options) {
148
+ var _this3 = this;
149
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
150
+ var containerInfo, _yield$_this3$webex$r, body, keyUrl, decryptedContent, _t2;
151
+ return _regenerator.default.wrap(function (_context3) {
152
+ while (1) switch (_context3.prev = _context3.next) {
153
+ case 0:
154
+ containerInfo = options.containerInfo;
155
+ _this3._validateContainerInfo(containerInfo, 'notesUrl');
156
+ _context3.prev = 1;
157
+ _context3.next = 2;
158
+ return _this3.webex.request({
159
+ method: 'GET',
160
+ uri: containerInfo.summaryData.notesUrl
161
+ });
162
+ case 2:
163
+ _yield$_this3$webex$r = _context3.sent;
164
+ body = _yield$_this3$webex$r.body;
165
+ keyUrl = body.keyUrl || containerInfo.encryptionKeyUrl;
166
+ _context3.next = 3;
167
+ return _this3._decryptContent(body.aiGeneratedContent, keyUrl);
168
+ case 3:
169
+ decryptedContent = _context3.sent;
170
+ return _context3.abrupt("return", {
171
+ id: body.id,
172
+ content: decryptedContent,
173
+ feedbackUrl: body.feedbackUrl
174
+ });
175
+ case 4:
176
+ _context3.prev = 4;
177
+ _t2 = _context3["catch"](1);
178
+ _this3.logger.error('AISummary->getNotes failed', {
179
+ error: _t2
180
+ });
181
+ throw _this3._handleError(_t2, 'getNotes');
182
+ case 5:
183
+ case "end":
184
+ return _context3.stop();
185
+ }
186
+ }, _callee3, null, [[1, 4]]);
187
+ }))();
188
+ },
189
+ /**
190
+ * Get AI-generated action items for a call.
191
+ * Fetches from containerInfo.summaryData.actionItemsUrl and decrypts content.
192
+ *
193
+ * @param {GetSummaryContentOptions} options
194
+ * @returns {Promise<SummaryActionItems>}
195
+ */
196
+ getActionItems: function getActionItems(options) {
197
+ var _this4 = this;
198
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
199
+ var containerInfo, _yield$_this4$webex$r, body, actionItemsData, keyUrl, decryptedSnippets, _t3;
200
+ return _regenerator.default.wrap(function (_context5) {
201
+ while (1) switch (_context5.prev = _context5.next) {
202
+ case 0:
203
+ containerInfo = options.containerInfo;
204
+ _this4._validateContainerInfo(containerInfo, 'actionItemsUrl');
205
+ _context5.prev = 1;
206
+ _context5.next = 2;
207
+ return _this4.webex.request({
208
+ method: 'GET',
209
+ uri: containerInfo.summaryData.actionItemsUrl
210
+ });
211
+ case 2:
212
+ _yield$_this4$webex$r = _context5.sent;
213
+ body = _yield$_this4$webex$r.body;
214
+ // Action items response is an array; take the first element
215
+ actionItemsData = (0, _isArray.default)(body) ? body[0] : body;
216
+ if (actionItemsData) {
217
+ _context5.next = 3;
218
+ break;
219
+ }
220
+ return _context5.abrupt("return", {
221
+ id: undefined,
222
+ snippets: []
223
+ });
224
+ case 3:
225
+ keyUrl = actionItemsData.keyUrl || containerInfo.encryptionKeyUrl;
226
+ _context5.next = 4;
227
+ return _promise.default.all((actionItemsData.snippets || []).map(/*#__PURE__*/function () {
228
+ var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(snippet) {
229
+ var decryptedAiContent;
230
+ return _regenerator.default.wrap(function (_context4) {
231
+ while (1) switch (_context4.prev = _context4.next) {
232
+ case 0:
233
+ _context4.next = 1;
234
+ return _this4._decryptContent(snippet.aiGeneratedContent, keyUrl);
235
+ case 1:
236
+ decryptedAiContent = _context4.sent;
237
+ return _context4.abrupt("return", {
238
+ id: snippet.id,
239
+ editedContent: snippet.content || undefined,
240
+ aiGeneratedContent: decryptedAiContent
241
+ });
242
+ case 2:
243
+ case "end":
244
+ return _context4.stop();
245
+ }
246
+ }, _callee4);
247
+ }));
248
+ return function (_x2) {
249
+ return _ref3.apply(this, arguments);
250
+ };
251
+ }()));
252
+ case 4:
253
+ decryptedSnippets = _context5.sent;
254
+ return _context5.abrupt("return", {
255
+ id: actionItemsData.id,
256
+ snippets: decryptedSnippets,
257
+ feedbackUrl: actionItemsData.feedbackUrl
258
+ });
259
+ case 5:
260
+ _context5.prev = 5;
261
+ _t3 = _context5["catch"](1);
262
+ _this4.logger.error('AISummary->getActionItems failed', {
263
+ error: _t3
264
+ });
265
+ throw _this4._handleError(_t3, 'getActionItems');
266
+ case 6:
267
+ case "end":
268
+ return _context5.stop();
269
+ }
270
+ }, _callee5, null, [[1, 5]]);
271
+ }))();
272
+ },
273
+ /**
274
+ * Get the transcript URL for a call.
275
+ * Returns the URL string from the container info.
276
+ *
277
+ * @param {GetSummaryContentOptions} options
278
+ * @returns {string}
279
+ */
280
+ getTranscriptUrl: function getTranscriptUrl(options) {
281
+ var containerInfo = options.containerInfo;
282
+ this._validateContainerInfo(containerInfo, 'transcriptUrl');
283
+ return containerInfo.summaryData.transcriptUrl;
284
+ },
285
+ /**
286
+ * Get decrypted transcript for a call.
287
+ * Fetches from containerInfo.summaryData.transcriptUrl and decrypts each snippet.
288
+ *
289
+ * @param {GetSummaryContentOptions} options
290
+ * @returns {Promise<TranscriptContent>}
291
+ */
292
+ getTranscript: function getTranscript(options) {
293
+ var _this5 = this;
294
+ return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7() {
295
+ var containerInfo, _yield$_this5$webex$r, body, keyUrl, decryptedSnippets, _t4;
296
+ return _regenerator.default.wrap(function (_context7) {
297
+ while (1) switch (_context7.prev = _context7.next) {
298
+ case 0:
299
+ containerInfo = options.containerInfo;
300
+ _this5._validateContainerInfo(containerInfo, 'transcriptUrl');
301
+ _context7.prev = 1;
302
+ _context7.next = 2;
303
+ return _this5.webex.request({
304
+ method: 'GET',
305
+ uri: containerInfo.summaryData.transcriptUrl
306
+ });
307
+ case 2:
308
+ _yield$_this5$webex$r = _context7.sent;
309
+ body = _yield$_this5$webex$r.body;
310
+ keyUrl = body.keyUrl || containerInfo.encryptionKeyUrl;
311
+ _context7.next = 3;
312
+ return _promise.default.all((body.transcriptSnippetList || []).map(/*#__PURE__*/function () {
313
+ var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(snippet) {
314
+ var decryptedContent;
315
+ return _regenerator.default.wrap(function (_context6) {
316
+ while (1) switch (_context6.prev = _context6.next) {
317
+ case 0:
318
+ _context6.next = 1;
319
+ return _this5._decryptContent(snippet.content, keyUrl);
320
+ case 1:
321
+ decryptedContent = _context6.sent;
322
+ return _context6.abrupt("return", {
323
+ startTime: snippet.startTime,
324
+ endTime: snippet.endTime,
325
+ content: decryptedContent,
326
+ audioCSI: snippet.audioCSI,
327
+ speaker: snippet.speaker
328
+ });
329
+ case 2:
330
+ case "end":
331
+ return _context6.stop();
332
+ }
333
+ }, _callee6);
334
+ }));
335
+ return function (_x3) {
336
+ return _ref4.apply(this, arguments);
337
+ };
338
+ }()));
339
+ case 3:
340
+ decryptedSnippets = _context7.sent;
341
+ return _context7.abrupt("return", {
342
+ id: body.id,
343
+ totalCount: body.totalCount,
344
+ snippets: decryptedSnippets
345
+ });
346
+ case 4:
347
+ _context7.prev = 4;
348
+ _t4 = _context7["catch"](1);
349
+ _this5.logger.error('AISummary->getTranscript failed', {
350
+ error: _t4
351
+ });
352
+ throw _this5._handleError(_t4, 'getTranscript');
353
+ case 5:
354
+ case "end":
355
+ return _context7.stop();
356
+ }
357
+ }, _callee7, null, [[1, 4]]);
358
+ }))();
359
+ },
360
+ /**
361
+ * Validate containerId parameter.
362
+ * @param {string} containerId - The container ID to validate.
363
+ * @returns {void}
364
+ * @private
365
+ */
366
+ _validateContainerId: function _validateContainerId(containerId) {
367
+ if (!containerId || typeof containerId !== 'string' || containerId.trim().length === 0) {
368
+ throw new Error(_constants.ERROR_MESSAGES.INVALID_CONTAINER_ID);
369
+ }
370
+ },
371
+ /**
372
+ * Validate containerInfo has the required URL field and encryption key.
373
+ * @param {PragyaContainerResponse} containerInfo - The container info to validate.
374
+ * @param {string} urlField - The summaryData field name to check.
375
+ * @returns {void}
376
+ * @private
377
+ */
378
+ _validateContainerInfo: function _validateContainerInfo(containerInfo, urlField) {
379
+ var _containerInfo$summar;
380
+ if (!(containerInfo !== null && containerInfo !== void 0 && (_containerInfo$summar = containerInfo.summaryData) !== null && _containerInfo$summar !== void 0 && _containerInfo$summar[urlField]) || !(containerInfo !== null && containerInfo !== void 0 && containerInfo.encryptionKeyUrl)) {
381
+ throw new Error(_constants.ERROR_MESSAGES.INVALID_CONTAINER_INFO);
382
+ }
383
+ },
384
+ /**
385
+ * Decrypt encrypted content using KMS.
386
+ * Delegates to the internal encryption plugin.
387
+ * @param {string} encryptedContent - The encrypted text (JWE format).
388
+ * @param {string} encryptionKeyUrl - KMS key URL.
389
+ * @returns {Promise<string>} Decrypted plaintext.
390
+ * @private
391
+ */
392
+ _decryptContent: function _decryptContent(encryptedContent, encryptionKeyUrl) {
393
+ return this.webex.internal.encryption.decryptText(encryptionKeyUrl, encryptedContent);
394
+ },
395
+ /**
396
+ * Handle and normalize errors.
397
+ * @param {object} error - The error object from the request.
398
+ * @param {string} methodName - The name of the calling method.
399
+ * @returns {Error} A normalized Error instance.
400
+ * @private
401
+ */
402
+ _handleError: function _handleError(error, methodName) {
403
+ if (error.statusCode === 404) {
404
+ var message = methodName === 'getContainer' ? _constants.ERROR_MESSAGES.CONTAINER_NOT_FOUND : _constants.ERROR_MESSAGES.CONTENT_NOT_FOUND;
405
+ return new Error(message);
406
+ }
407
+ if (error.statusCode === 403) {
408
+ return new Error(_constants.ERROR_MESSAGES.ACCESS_DENIED);
409
+ }
410
+ if (error.statusCode === 401) {
411
+ return new Error(_constants.ERROR_MESSAGES.AUTHENTICATION_FAILED);
412
+ }
413
+ return new Error("".concat(methodName, " failed: ").concat(error.message || 'Unknown error'));
414
+ },
415
+ version: "0.0.0-next.1"
416
+ });
417
+ var _default = exports.default = AISummary;
418
+ //# sourceMappingURL=ai-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_webexCore","require","_constants","AISummary","WebexPlugin","extend","namespace","getContainer","options","_this","containerId","_validateContainerId","webex","request","method","service","AI_SUMMARY_SERVICE","resource","concat","AI_SUMMARY_CONTAINERS_RESOURCE","then","_ref","_body$summaryData","body","summaryData","data","catch","error","logger","_handleError","getSummary","_this2","_asyncToGenerator2","default","_regenerator","mark","_callee2","containerInfo","_body$actionitems","_yield$_this2$webex$r","keyUrl","decryptedNote","decryptedShortNote","decryptedSnippets","feedbackLink","_t","wrap","_context2","prev","next","_validateContainerInfo","uri","summaryUrl","sent","encryptionKeyUrl","_decryptContent","note","aiGeneratedContent","shortnote","_promise","all","actionitems","snippets","map","_ref2","_callee","snippet","decryptedAiContent","_context","abrupt","id","editedContent","content","undefined","stop","_x","apply","arguments","links","find","link","rel","shortNote","actionItems","feedbackUrl","href","getNotes","_this3","_callee3","_yield$_this3$webex$r","decryptedContent","_t2","_context3","notesUrl","getActionItems","_this4","_callee5","_yield$_this4$webex$r","actionItemsData","_t3","_context5","actionItemsUrl","_isArray","_ref3","_callee4","_context4","_x2","getTranscriptUrl","transcriptUrl","getTranscript","_this5","_callee7","_yield$_this5$webex$r","_t4","_context7","transcriptSnippetList","_ref4","_callee6","_context6","startTime","endTime","audioCSI","speaker","_x3","totalCount","trim","length","Error","ERROR_MESSAGES","INVALID_CONTAINER_ID","urlField","_containerInfo$summar","INVALID_CONTAINER_INFO","encryptedContent","internal","encryption","decryptText","methodName","statusCode","message","CONTAINER_NOT_FOUND","CONTENT_NOT_FOUND","ACCESS_DENIED","AUTHENTICATION_FAILED","version","_default","exports"],"sources":["ai-summary.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport {AI_SUMMARY_SERVICE, AI_SUMMARY_CONTAINERS_RESOURCE, ERROR_MESSAGES} from './constants';\nimport type {\n GetContainerOptions,\n GetSummaryContentOptions,\n PragyaContainerResponse,\n SummaryContent,\n SummaryNotes,\n SummaryActionItems,\n TranscriptContent,\n} from './types';\n\nconst AISummary = WebexPlugin.extend({\n namespace: 'AISummary',\n\n /**\n * Resolve a Pragya container by ID.\n * Returns container metadata including summary URLs and encryption key.\n *\n * @param {GetContainerOptions} options\n * @returns {Promise<PragyaContainerResponse>}\n */\n getContainer(options: GetContainerOptions): Promise<PragyaContainerResponse> {\n const {containerId} = options;\n\n this._validateContainerId(containerId);\n\n return this.webex\n .request({\n method: 'GET',\n service: AI_SUMMARY_SERVICE,\n resource: `${AI_SUMMARY_CONTAINERS_RESOURCE}/${containerId}`,\n })\n .then(({body}) => {\n // Pragya API nests summary URLs under summaryData.data — flatten\n // so consumers can access summaryData.summaryUrl directly.\n if (body.summaryData?.data) {\n body.summaryData = body.summaryData.data;\n }\n\n return body;\n })\n .catch((error) => {\n this.logger.error('AISummary->getContainer failed', {error, containerId});\n throw this._handleError(error, 'getContainer');\n });\n },\n\n /**\n * Get AI-generated full summary for a call.\n * Fetches from containerInfo.summaryData.summaryUrl and decrypts content.\n *\n * @param {GetSummaryContentOptions} options\n * @returns {Promise<SummaryContent>}\n */\n async getSummary(options: GetSummaryContentOptions): Promise<SummaryContent> {\n const {containerInfo} = options;\n\n this._validateContainerInfo(containerInfo, 'summaryUrl');\n\n try {\n const {body} = await this.webex.request({\n method: 'GET',\n uri: `${containerInfo.summaryData.summaryUrl}?fields=note,shortnote,actionitems`,\n });\n\n const keyUrl = body.keyUrl || containerInfo.encryptionKeyUrl;\n\n const decryptedNote = await this._decryptContent(body.note.aiGeneratedContent, keyUrl);\n\n const decryptedShortNote = await this._decryptContent(\n body.shortnote.aiGeneratedContent,\n keyUrl\n );\n\n const decryptedSnippets = await Promise.all(\n (body.actionitems?.snippets || []).map(async (snippet: any) => {\n const decryptedAiContent = await this._decryptContent(snippet.aiGeneratedContent, keyUrl);\n\n return {\n id: snippet.id,\n editedContent: snippet.content || undefined,\n aiGeneratedContent: decryptedAiContent,\n };\n })\n );\n\n // feedbackUrl may be in the links array as rel=\"feedback\"\n const feedbackLink = (body.links || []).find((link: any) => link.rel === 'feedback');\n\n return {\n id: body.id,\n note: decryptedNote,\n shortNote: decryptedShortNote,\n actionItems: decryptedSnippets,\n feedbackUrl: feedbackLink?.href,\n };\n } catch (error) {\n this.logger.error('AISummary->getSummary failed', {error});\n throw this._handleError(error, 'getSummary');\n }\n },\n\n /**\n * Get AI-generated notes for a call.\n * Fetches from containerInfo.summaryData.notesUrl and decrypts content.\n *\n * @param {GetSummaryContentOptions} options\n * @returns {Promise<SummaryNotes>}\n */\n async getNotes(options: GetSummaryContentOptions): Promise<SummaryNotes> {\n const {containerInfo} = options;\n\n this._validateContainerInfo(containerInfo, 'notesUrl');\n\n try {\n const {body} = await this.webex.request({\n method: 'GET',\n uri: containerInfo.summaryData.notesUrl,\n });\n\n const keyUrl = body.keyUrl || containerInfo.encryptionKeyUrl;\n\n const decryptedContent = await this._decryptContent(body.aiGeneratedContent, keyUrl);\n\n return {\n id: body.id,\n content: decryptedContent,\n feedbackUrl: body.feedbackUrl,\n };\n } catch (error) {\n this.logger.error('AISummary->getNotes failed', {error});\n throw this._handleError(error, 'getNotes');\n }\n },\n\n /**\n * Get AI-generated action items for a call.\n * Fetches from containerInfo.summaryData.actionItemsUrl and decrypts content.\n *\n * @param {GetSummaryContentOptions} options\n * @returns {Promise<SummaryActionItems>}\n */\n async getActionItems(options: GetSummaryContentOptions): Promise<SummaryActionItems> {\n const {containerInfo} = options;\n\n this._validateContainerInfo(containerInfo, 'actionItemsUrl');\n\n try {\n const {body} = await this.webex.request({\n method: 'GET',\n uri: containerInfo.summaryData.actionItemsUrl,\n });\n\n // Action items response is an array; take the first element\n const actionItemsData = Array.isArray(body) ? body[0] : body;\n\n if (!actionItemsData) {\n return {id: undefined, snippets: []};\n }\n\n const keyUrl = actionItemsData.keyUrl || containerInfo.encryptionKeyUrl;\n\n const decryptedSnippets = await Promise.all(\n (actionItemsData.snippets || []).map(async (snippet: any) => {\n const decryptedAiContent = await this._decryptContent(snippet.aiGeneratedContent, keyUrl);\n\n return {\n id: snippet.id,\n editedContent: snippet.content || undefined,\n aiGeneratedContent: decryptedAiContent,\n };\n })\n );\n\n return {\n id: actionItemsData.id,\n snippets: decryptedSnippets,\n feedbackUrl: actionItemsData.feedbackUrl,\n };\n } catch (error) {\n this.logger.error('AISummary->getActionItems failed', {error});\n throw this._handleError(error, 'getActionItems');\n }\n },\n\n /**\n * Get the transcript URL for a call.\n * Returns the URL string from the container info.\n *\n * @param {GetSummaryContentOptions} options\n * @returns {string}\n */\n getTranscriptUrl(options: GetSummaryContentOptions): string {\n const {containerInfo} = options;\n\n this._validateContainerInfo(containerInfo, 'transcriptUrl');\n\n return containerInfo.summaryData.transcriptUrl;\n },\n\n /**\n * Get decrypted transcript for a call.\n * Fetches from containerInfo.summaryData.transcriptUrl and decrypts each snippet.\n *\n * @param {GetSummaryContentOptions} options\n * @returns {Promise<TranscriptContent>}\n */\n async getTranscript(options: GetSummaryContentOptions): Promise<TranscriptContent> {\n const {containerInfo} = options;\n\n this._validateContainerInfo(containerInfo, 'transcriptUrl');\n\n try {\n const {body} = await this.webex.request({\n method: 'GET',\n uri: containerInfo.summaryData.transcriptUrl,\n });\n\n const keyUrl = body.keyUrl || containerInfo.encryptionKeyUrl;\n\n const decryptedSnippets = await Promise.all(\n (body.transcriptSnippetList || []).map(async (snippet: any) => {\n const decryptedContent = await this._decryptContent(snippet.content, keyUrl);\n\n return {\n startTime: snippet.startTime,\n endTime: snippet.endTime,\n content: decryptedContent,\n audioCSI: snippet.audioCSI,\n speaker: snippet.speaker,\n };\n })\n );\n\n return {\n id: body.id,\n totalCount: body.totalCount,\n snippets: decryptedSnippets,\n };\n } catch (error) {\n this.logger.error('AISummary->getTranscript failed', {error});\n throw this._handleError(error, 'getTranscript');\n }\n },\n\n /**\n * Validate containerId parameter.\n * @param {string} containerId - The container ID to validate.\n * @returns {void}\n * @private\n */\n _validateContainerId(containerId: string): void {\n if (!containerId || typeof containerId !== 'string' || containerId.trim().length === 0) {\n throw new Error(ERROR_MESSAGES.INVALID_CONTAINER_ID);\n }\n },\n\n /**\n * Validate containerInfo has the required URL field and encryption key.\n * @param {PragyaContainerResponse} containerInfo - The container info to validate.\n * @param {string} urlField - The summaryData field name to check.\n * @returns {void}\n * @private\n */\n _validateContainerInfo(containerInfo: PragyaContainerResponse, urlField: string): void {\n if (!containerInfo?.summaryData?.[urlField] || !containerInfo?.encryptionKeyUrl) {\n throw new Error(ERROR_MESSAGES.INVALID_CONTAINER_INFO);\n }\n },\n\n /**\n * Decrypt encrypted content using KMS.\n * Delegates to the internal encryption plugin.\n * @param {string} encryptedContent - The encrypted text (JWE format).\n * @param {string} encryptionKeyUrl - KMS key URL.\n * @returns {Promise<string>} Decrypted plaintext.\n * @private\n */\n _decryptContent(encryptedContent: string, encryptionKeyUrl: string): Promise<string> {\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, encryptedContent);\n },\n\n /**\n * Handle and normalize errors.\n * @param {object} error - The error object from the request.\n * @param {string} methodName - The name of the calling method.\n * @returns {Error} A normalized Error instance.\n * @private\n */\n _handleError(error: any, methodName: string): Error {\n if (error.statusCode === 404) {\n const message =\n methodName === 'getContainer'\n ? ERROR_MESSAGES.CONTAINER_NOT_FOUND\n : ERROR_MESSAGES.CONTENT_NOT_FOUND;\n\n return new Error(message);\n }\n\n if (error.statusCode === 403) {\n return new Error(ERROR_MESSAGES.ACCESS_DENIED);\n }\n\n if (error.statusCode === 401) {\n return new Error(ERROR_MESSAGES.AUTHENTICATION_FAILED);\n }\n\n return new Error(`${methodName} failed: ${error.message || 'Unknown error'}`);\n },\n});\n\nexport default AISummary;\n"],"mappings":"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","ignoreList":[]}
package/dist/config.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ /*!
9
+ * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.
10
+ */
11
+ var _default = exports.default = {
12
+ aisummary: {}
13
+ };
14
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_default","exports","default","aisummary"],"sources":["config.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n aisummary: {},\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAIe;EACbC,SAAS,EAAE,CAAC;AACd,CAAC","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SUMMARY_STATUSES = exports.ERROR_MESSAGES = exports.AI_SUMMARY_SERVICE = exports.AI_SUMMARY_CONTAINERS_RESOURCE = void 0;
8
+ /*!
9
+ * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.
10
+ */
11
+
12
+ var AI_SUMMARY_SERVICE = exports.AI_SUMMARY_SERVICE = 'pragya';
13
+ var AI_SUMMARY_CONTAINERS_RESOURCE = exports.AI_SUMMARY_CONTAINERS_RESOURCE = 'containers';
14
+ var SUMMARY_STATUSES = exports.SUMMARY_STATUSES = {
15
+ ACTIVE: 'Active'
16
+ };
17
+ var ERROR_MESSAGES = exports.ERROR_MESSAGES = {
18
+ INVALID_CONTAINER_ID: 'containerId is required and must be a non-empty string',
19
+ INVALID_CONTAINER_INFO: 'containerInfo with valid summaryData and encryptionKeyUrl is required',
20
+ CONTAINER_NOT_FOUND: 'Container not found',
21
+ CONTENT_NOT_FOUND: 'Summary content not available or expired',
22
+ ACCESS_DENIED: 'Access denied: User not authorized to view this summary',
23
+ AUTHENTICATION_FAILED: 'Authentication failed: Invalid or expired token'
24
+ };
25
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AI_SUMMARY_SERVICE","exports","AI_SUMMARY_CONTAINERS_RESOURCE","SUMMARY_STATUSES","ACTIVE","ERROR_MESSAGES","INVALID_CONTAINER_ID","INVALID_CONTAINER_INFO","CONTAINER_NOT_FOUND","CONTENT_NOT_FOUND","ACCESS_DENIED","AUTHENTICATION_FAILED"],"sources":["constants.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport const AI_SUMMARY_SERVICE = 'pragya';\nexport const AI_SUMMARY_CONTAINERS_RESOURCE = 'containers';\n\nexport const SUMMARY_STATUSES = {\n ACTIVE: 'Active',\n} as const;\n\nexport const ERROR_MESSAGES = {\n INVALID_CONTAINER_ID: 'containerId is required and must be a non-empty string',\n INVALID_CONTAINER_INFO: 'containerInfo with valid summaryData and encryptionKeyUrl is required',\n CONTAINER_NOT_FOUND: 'Container not found',\n CONTENT_NOT_FOUND: 'Summary content not available or expired',\n ACCESS_DENIED: 'Access denied: User not authorized to view this summary',\n AUTHENTICATION_FAILED: 'Authentication failed: Invalid or expired token',\n} as const;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAEO,IAAMA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,QAAQ;AACnC,IAAME,8BAA8B,GAAAD,OAAA,CAAAC,8BAAA,GAAG,YAAY;AAEnD,IAAMC,gBAAgB,GAAAF,OAAA,CAAAE,gBAAA,GAAG;EAC9BC,MAAM,EAAE;AACV,CAAU;AAEH,IAAMC,cAAc,GAAAJ,OAAA,CAAAI,cAAA,GAAG;EAC5BC,oBAAoB,EAAE,wDAAwD;EAC9EC,sBAAsB,EAAE,uEAAuE;EAC/FC,mBAAmB,EAAE,qBAAqB;EAC1CC,iBAAiB,EAAE,0CAA0C;EAC7DC,aAAa,EAAE,yDAAyD;EACxEC,qBAAqB,EAAE;AACzB,CAAU","ignoreList":[]}
package/dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ _Object$defineProperty(exports, "default", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _aiSummary.default;
12
+ }
13
+ });
14
+ require("@webex/internal-plugin-encryption");
15
+ var _webexCore = require("@webex/webex-core");
16
+ var _aiSummary = _interopRequireDefault(require("./ai-summary"));
17
+ var _config = _interopRequireDefault(require("./config"));
18
+ /*!
19
+ * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.
20
+ */
21
+
22
+ (0, _webexCore.registerInternalPlugin)('aisummary', _aiSummary.default, {
23
+ config: _config.default
24
+ });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["require","_webexCore","_aiSummary","_interopRequireDefault","_config","registerInternalPlugin","AISummary","config"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-encryption';\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport AISummary from './ai-summary';\nimport config from './config';\n\nregisterInternalPlugin('aisummary', AISummary, {config});\n\nexport {default} from './ai-summary';\n"],"mappings":";;;;;;;;;;;;;AAIAA,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AARA;AACA;AACA;;AAQA,IAAAK,iCAAsB,EAAC,WAAW,EAAEC,kBAAS,EAAE;EAACC,MAAM,EAANA;AAAM,CAAC,CAAC","ignoreList":[]}