@webex/internal-plugin-ai-assistant 0.0.0-next.2 → 0.0.0-next.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/ai-assistant.js +58 -98
- package/dist/ai-assistant.js.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +8 -1
- package/dist/constants.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.js +86 -0
- package/dist/utils.js.map +1 -0
- package/package.json +8 -8
- package/process +1 -0
- package/src/ai-assistant.ts +54 -76
- package/src/config.ts +1 -1
- package/src/constants.ts +7 -0
- package/src/types.ts +5 -0
- package/src/utils.ts +25 -0
- package/test/unit/data/messages.ts +273 -0
- package/test/unit/spec/ai-assistant.ts +289 -124
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ npm install --save @webex/internal-plugin-ai-assistant
|
|
|
22
22
|
|
|
23
23
|
## Usage
|
|
24
24
|
|
|
25
|
-
The responses from the AI assistant service are delivered asynchronously via mercury. The methods in this plugin return a stream ID which can then be used to listen to the updates for a given request. The service will
|
|
25
|
+
The responses from the AI assistant service are delivered asynchronously via mercury. The methods in this plugin return a stream ID which can then be used to listen to the updates for a given request. The service will respond in chunks. The latest response for a given request will contain the full response.
|
|
26
26
|
|
|
27
27
|
The data used for the arguments to the methods in this plugin is obtained from either Locus or the Meeting Container.
|
|
28
28
|
```js
|
package/dist/ai-assistant.js
CHANGED
|
@@ -22,6 +22,7 @@ require("@webex/internal-plugin-mercury");
|
|
|
22
22
|
var _lodash = require("lodash");
|
|
23
23
|
var _commonTimers = require("@webex/common-timers");
|
|
24
24
|
var _constants = require("./constants");
|
|
25
|
+
var _utils = require("./utils");
|
|
25
26
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
26
27
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } /*!
|
|
27
28
|
* Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.
|
|
@@ -137,26 +138,39 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
137
138
|
this.trigger(this._getResultEventName(data.clientRequestId), data);
|
|
138
139
|
},
|
|
139
140
|
/**
|
|
140
|
-
* Decrypts the
|
|
141
|
-
* @param {
|
|
142
|
-
* @
|
|
143
|
-
* @param {string} options.encryptionKeyUrl the encryption key URL to use for
|
|
144
|
-
* @returns {Promise<Object>} returns a promise that resolves with the decrypted value
|
|
141
|
+
* Decrypts the response content in place
|
|
142
|
+
* @param {any} responseContent the content object from the assistant-api response
|
|
143
|
+
* @returns {Promise} resolves once decryption is complete
|
|
145
144
|
*/
|
|
146
|
-
|
|
145
|
+
_decryptContent: function _decryptContent(responseContent) {
|
|
147
146
|
var _this4 = this;
|
|
148
147
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
149
|
-
var value, encryptionKeyUrl, result;
|
|
150
148
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
151
149
|
while (1) switch (_context.prev = _context.next) {
|
|
152
150
|
case 0:
|
|
153
|
-
|
|
154
|
-
_context.next = 3;
|
|
155
|
-
|
|
151
|
+
_context.t0 = responseContent.name;
|
|
152
|
+
_context.next = _context.t0 === _constants.RESPONSE_NAMES.MESSAGE ? 3 : _context.t0 === _constants.RESPONSE_NAMES.CITED_ANSWER ? 6 : _context.t0 === _constants.RESPONSE_NAMES.TOOL_RESULT ? 9 : _context.t0 === _constants.RESPONSE_NAMES.TOOL_USE ? 10 : 13;
|
|
153
|
+
break;
|
|
156
154
|
case 3:
|
|
157
|
-
|
|
158
|
-
return
|
|
155
|
+
_context.next = 5;
|
|
156
|
+
return (0, _utils.decryptMessage)(responseContent, _this4.webex);
|
|
159
157
|
case 5:
|
|
158
|
+
return _context.abrupt("break", 14);
|
|
159
|
+
case 6:
|
|
160
|
+
_context.next = 8;
|
|
161
|
+
return (0, _utils.decryptCitedAnswer)(responseContent, _this4.webex);
|
|
162
|
+
case 8:
|
|
163
|
+
return _context.abrupt("break", 14);
|
|
164
|
+
case 9:
|
|
165
|
+
return _context.abrupt("break", 14);
|
|
166
|
+
case 10:
|
|
167
|
+
_context.next = 12;
|
|
168
|
+
return (0, _utils.decryptToolUse)(responseContent, _this4.webex);
|
|
169
|
+
case 12:
|
|
170
|
+
return _context.abrupt("break", 14);
|
|
171
|
+
case 13:
|
|
172
|
+
_this4.logger.error("AI assistant->_decryptContent#ERROR, Unknown response content name: ".concat(responseContent.name));
|
|
173
|
+
case 14:
|
|
160
174
|
case "end":
|
|
161
175
|
return _context.stop();
|
|
162
176
|
}
|
|
@@ -168,19 +182,16 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
168
182
|
* @param {Object} options
|
|
169
183
|
* @param {string} options.resource the URL to query
|
|
170
184
|
* @param {Mixed} options.params additional params for the body of the request
|
|
171
|
-
* @param {string} options.dataPath the path to get the data in the result object
|
|
172
185
|
* @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName
|
|
173
186
|
*/
|
|
174
187
|
_request: function _request(options) {
|
|
175
188
|
var _this5 = this;
|
|
176
189
|
var resource = options.resource,
|
|
177
|
-
params = options.params
|
|
178
|
-
dataPath = options.dataPath;
|
|
190
|
+
params = options.params;
|
|
179
191
|
var timeout = this.config.requestTimeout;
|
|
180
192
|
var requestId = _uuid.default.v4();
|
|
181
193
|
var eventName = this._getResultEventName(requestId);
|
|
182
194
|
var streamEventName = this._getStreamEventName(requestId);
|
|
183
|
-
var concatenatedMessage = '';
|
|
184
195
|
|
|
185
196
|
// eslint-disable-next-line no-async-promise-executor
|
|
186
197
|
return new _promise.default(function (resolve, reject) {
|
|
@@ -194,98 +205,50 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
194
205
|
});
|
|
195
206
|
}, timeout);
|
|
196
207
|
_this5.listenTo(_this5, eventName, /*#__PURE__*/function () {
|
|
197
|
-
var
|
|
198
|
-
var resultData, errorMessage, errorCode,
|
|
208
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(data) {
|
|
209
|
+
var resultData, errorMessage, errorCode, responseType, decryptErrorMessage;
|
|
199
210
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
200
211
|
while (1) switch (_context2.prev = _context2.next) {
|
|
201
212
|
case 0:
|
|
202
213
|
timer.reset();
|
|
203
|
-
resultData = (0, _lodash.get)(data,
|
|
214
|
+
resultData = (0, _lodash.get)(data, 'response.content', {});
|
|
204
215
|
errorMessage = (0, _lodash.get)(data, 'response.errorMessage');
|
|
205
216
|
errorCode = (0, _lodash.get)(data, 'response.errorCode');
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
217
|
+
responseType = (0, _lodash.get)(data, 'responseType');
|
|
218
|
+
if (data.finished) {
|
|
219
|
+
timer.cancel();
|
|
220
|
+
_this5.stopListening(_this5, eventName);
|
|
209
221
|
}
|
|
210
|
-
// For finished messages, decrypt and emit the final complete message
|
|
211
|
-
timer.cancel();
|
|
212
222
|
_context2.prev = 6;
|
|
213
|
-
if (
|
|
214
|
-
_context2.next =
|
|
223
|
+
if (errorCode) {
|
|
224
|
+
_context2.next = 10;
|
|
215
225
|
break;
|
|
216
226
|
}
|
|
217
227
|
_context2.next = 10;
|
|
218
|
-
return _this5.
|
|
228
|
+
return _this5._decryptContent(resultData);
|
|
219
229
|
case 10:
|
|
220
|
-
|
|
221
|
-
case 11:
|
|
222
|
-
// Emit the final message
|
|
223
|
-
_this5.trigger(streamEventName, {
|
|
224
|
-
message: decryptedMessage || '',
|
|
225
|
-
requestId: requestId,
|
|
226
|
-
finished: true,
|
|
227
|
-
errorMessage: errorMessage,
|
|
228
|
-
errorCode: errorCode
|
|
229
|
-
});
|
|
230
|
-
_this5.stopListening(_this5, eventName);
|
|
231
|
-
_context2.next = 18;
|
|
230
|
+
_context2.next = 15;
|
|
232
231
|
break;
|
|
233
|
-
case
|
|
234
|
-
_context2.prev =
|
|
232
|
+
case 12:
|
|
233
|
+
_context2.prev = 12;
|
|
235
234
|
_context2.t0 = _context2["catch"](6);
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
errorMessage: errorMessage || _context2.t0.message,
|
|
241
|
-
errorCode: errorCode
|
|
242
|
-
});
|
|
243
|
-
case 18:
|
|
244
|
-
_context2.next = 33;
|
|
245
|
-
break;
|
|
246
|
-
case 20:
|
|
247
|
-
_context2.prev = 20;
|
|
248
|
-
_decryptedMessage = '';
|
|
249
|
-
if (!(resultData !== null && resultData !== void 0 && resultData.value)) {
|
|
250
|
-
_context2.next = 26;
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
|
-
_context2.next = 25;
|
|
254
|
-
return _this5._decryptData(resultData);
|
|
255
|
-
case 25:
|
|
256
|
-
_decryptedMessage = _context2.sent;
|
|
257
|
-
case 26:
|
|
258
|
-
concatenatedMessage += _decryptedMessage;
|
|
259
|
-
|
|
260
|
-
// Emit the concatenated message so far
|
|
261
|
-
_this5.trigger(streamEventName, {
|
|
262
|
-
message: concatenatedMessage,
|
|
263
|
-
requestId: requestId,
|
|
264
|
-
finished: false,
|
|
265
|
-
errorMessage: errorMessage,
|
|
266
|
-
errorCode: errorCode
|
|
267
|
-
});
|
|
268
|
-
_context2.next = 33;
|
|
269
|
-
break;
|
|
270
|
-
case 30:
|
|
271
|
-
_context2.prev = 30;
|
|
272
|
-
_context2.t1 = _context2["catch"](20);
|
|
273
|
-
// If decryption fails, we still want to continue listening for more messages
|
|
274
|
-
_this5.trigger(streamEventName, {
|
|
275
|
-
message: concatenatedMessage,
|
|
235
|
+
decryptErrorMessage = _context2.t0.message;
|
|
236
|
+
case 15:
|
|
237
|
+
_this5.trigger(streamEventName, (0, _lodash.merge)({}, data.response, {
|
|
238
|
+
responseType: responseType,
|
|
276
239
|
requestId: requestId,
|
|
277
|
-
finished:
|
|
278
|
-
errorMessage: errorMessage ||
|
|
240
|
+
finished: data.finished,
|
|
241
|
+
errorMessage: errorMessage || decryptErrorMessage,
|
|
279
242
|
errorCode: errorCode
|
|
280
|
-
});
|
|
281
|
-
case
|
|
243
|
+
}));
|
|
244
|
+
case 16:
|
|
282
245
|
case "end":
|
|
283
246
|
return _context2.stop();
|
|
284
247
|
}
|
|
285
|
-
}, _callee2, null, [[6,
|
|
248
|
+
}, _callee2, null, [[6, 12]]);
|
|
286
249
|
}));
|
|
287
250
|
return function (_x) {
|
|
288
|
-
return
|
|
251
|
+
return _ref.apply(this, arguments);
|
|
289
252
|
};
|
|
290
253
|
}());
|
|
291
254
|
_this5.webex.request({
|
|
@@ -298,14 +261,12 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
298
261
|
}, params)
|
|
299
262
|
}).catch(function (error) {
|
|
300
263
|
reject(error);
|
|
301
|
-
}).then(function (
|
|
302
|
-
var body =
|
|
303
|
-
|
|
304
|
-
resolve({
|
|
264
|
+
}).then(function (_ref2) {
|
|
265
|
+
var body = _ref2.body;
|
|
266
|
+
resolve(_objectSpread(_objectSpread({}, body), {}, {
|
|
305
267
|
requestId: requestId,
|
|
306
|
-
sessionId: sessionId,
|
|
307
268
|
streamEventName: streamEventName
|
|
308
|
-
});
|
|
269
|
+
}));
|
|
309
270
|
timer.start();
|
|
310
271
|
});
|
|
311
272
|
});
|
|
@@ -351,12 +312,11 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
351
312
|
type: options.contentType,
|
|
352
313
|
value: value
|
|
353
314
|
};
|
|
354
|
-
if (options.
|
|
315
|
+
if (options.parameters) {
|
|
355
316
|
content.parameters = options.parameters;
|
|
356
317
|
}
|
|
357
318
|
return _context3.abrupt("return", _this6._request({
|
|
358
319
|
resource: options.sessionId ? "sessions/".concat(options.sessionId, "/messages") : 'sessions/messages',
|
|
359
|
-
dataPath: 'response.content',
|
|
360
320
|
params: _objectSpread({
|
|
361
321
|
async: 'chunked',
|
|
362
322
|
locale: options.locale || 'en_US',
|
|
@@ -444,14 +404,14 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
444
404
|
* @param {string} options.encryptionKeyUrl the encryption key URL to use for encryption
|
|
445
405
|
* @returns {Promise<string>} returns a promise that resolves with the encrypted text
|
|
446
406
|
*/
|
|
447
|
-
_encryptData: function _encryptData(
|
|
407
|
+
_encryptData: function _encryptData(_ref3) {
|
|
448
408
|
var _this7 = this;
|
|
449
409
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
450
410
|
var text, encryptionKeyUrl, result;
|
|
451
411
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
452
412
|
while (1) switch (_context4.prev = _context4.next) {
|
|
453
413
|
case 0:
|
|
454
|
-
text =
|
|
414
|
+
text = _ref3.text, encryptionKeyUrl = _ref3.encryptionKeyUrl;
|
|
455
415
|
_context4.next = 3;
|
|
456
416
|
return _this7.webex.internal.encryption.encryptText(encryptionKeyUrl, text);
|
|
457
417
|
case 3:
|
|
@@ -485,7 +445,7 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
485
445
|
contentValue: options.question
|
|
486
446
|
}));
|
|
487
447
|
},
|
|
488
|
-
version: "0.0.0-next.
|
|
448
|
+
version: "0.0.0-next.21"
|
|
489
449
|
});
|
|
490
450
|
var _default = exports.default = AIAssistant;
|
|
491
451
|
//# sourceMappingURL=ai-assistant.js.map
|
package/dist/ai-assistant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","_interopRequireDefault","require","_webexCore","_lodash","_commonTimers","_constants","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","AIAssistant","WebexPlugin","extend","namespace","registered","initialize","_len","args","Array","_key","_apply","prototype","register","_this","webex","canAuthorize","logger","error","_promise","reject","Error","info","resolve","internal","mercury","connect","then","listenForEvents","trigger","AI_ASSISTANT_REGISTERED","catch","concat","message","unregister","_this2","stopListeningForEvents","disconnect","AI_ASSISTANT_UNREGISTERED","_this3","on","ASSISTANT_API_RESPONSE_EVENT","envelope","_handleEvent","data","off","_getResultEventName","requestId","AI_ASSISTANT_RESULT","_getStreamEventName","AI_ASSISTANT_STREAM","clientRequestId","_decryptData","_ref","_this4","_asyncToGenerator2","_regenerator","mark","_callee","value","encryptionKeyUrl","result","wrap","_callee$","_context","prev","next","encryption","decryptText","sent","abrupt","stop","_request","options","_this5","resource","params","dataPath","timeout","config","requestTimeout","uuid","v4","eventName","streamEventName","concatenatedMessage","timer","Timer","stopListening","finished","errorMessage","AI_ASSISTANT_ERRORS","AI_ASSISTANT_TIMEOUT","errorCode","AI_ASSISTANT_ERROR_CODES","listenTo","_ref2","_callee2","resultData","decryptedMessage","_decryptedMessage","_callee2$","_context2","reset","get","cancel","t0","t1","_x","request","service","AI_ASSISTANT_SERVICE_NAME","method","contentType","body","_ref3","sessionId","start","_makeMeetingRequest","_this6","_callee3","content","_callee3$","_context3","contentValue","_encryptData","text","context","resources","contextResources","type","parameters","async","locale","assistant","summarizeMeeting","CONTENT_TYPES","ACTION","ACTION_TYPES","SUMMARIZE_FOR_ME","id","meetingInstanceId","CONTEXT_RESOURCE_TYPES","MEETING","url","meetingSite","lastMinutes","wasMyNameMentioned","WAS_MY_NAME_MENTIONED","showAllActionItems","SHOW_ALL_ACTION_ITEMS","_ref4","_this7","_callee4","_callee4$","_context4","encryptText","askMeAnything","MESSAGE","question","version","_default","exports"],"sources":["ai-assistant.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\nimport uuid from 'uuid';\nimport {WebexPlugin} from '@webex/webex-core';\nimport '@webex/internal-plugin-mercury';\nimport {get} from 'lodash';\nimport {Timer} from '@webex/common-timers';\n\nimport {\n MakeMeetingRequestOptions,\n RequestOptions,\n RequestResponse,\n SummarizeMeetingOptions,\n} from './types';\nimport {\n AI_ASSISTANT_ERROR_CODES,\n AI_ASSISTANT_ERRORS,\n AI_ASSISTANT_REGISTERED,\n AI_ASSISTANT_RESULT,\n AI_ASSISTANT_STREAM,\n AI_ASSISTANT_UNREGISTERED,\n AI_ASSISTANT_SERVICE_NAME,\n ASSISTANT_API_RESPONSE_EVENT,\n ACTION_TYPES,\n CONTENT_TYPES,\n CONTEXT_RESOURCE_TYPES,\n} from './constants';\n\nconst AIAssistant = WebexPlugin.extend({\n namespace: 'AIAssistant',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof AIAssistant\n */\n registered: false,\n\n /**\n * Initializer\n * @private\n * @param {Object} attrs\n * @param {Object} options\n * @returns {undefined}\n */\n initialize(...args) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, args);\n },\n\n /**\n * Explicitly sets up the AI assistant plugin by connecting to mercury, and listening for AI assistant events.\n * @returns {Promise}\n * @public\n * @memberof AIAssistant\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('AI assistant->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('AI assistant->register#INFO, AI assistant plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.mercury\n .connect()\n .then(() => {\n this.listenForEvents();\n this.trigger(AI_ASSISTANT_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`AI assistant->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the AI assistant plugin by disconnecting from mercury, and stops listening to AI assistant events\n * @returns {Promise}\n * @public\n * @memberof AIAssistant\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('AI assistant->unregister#INFO, AI assistant plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury.disconnect().then(() => {\n this.trigger(AI_ASSISTANT_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for Assistant API events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n this.webex.internal.mercury.on(ASSISTANT_API_RESPONSE_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n },\n\n /**\n * unregisteres all the Assistant API events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off(ASSISTANT_API_RESPONSE_EVENT);\n },\n\n /**\n * constructs the event name based on request id\n * This is used by the plugin to listen for the result of a particular request\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getResultEventName(requestId: string) {\n return `${AI_ASSISTANT_RESULT}:${requestId}`;\n },\n\n /**\n * constructs the stream event name based on request id\n * This is used by the consumer to listen for the stream (i.e. the data) of a particular request\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getStreamEventName(requestId: string) {\n return `${AI_ASSISTANT_STREAM}:${requestId}`;\n },\n\n /**\n * Takes incoming data and triggers correct events\n * @param {Object} data the event data\n * @returns {undefined}\n */\n _handleEvent(data) {\n this.trigger(this._getResultEventName(data.clientRequestId), data);\n },\n\n /**\n * Decrypts the encrypted value using the encryption key URL\n * @param {Object} options\n * @param {string} options.value the encrypted value to decrypt\n * @param {string} options.encryptionKeyUrl the encryption key URL to use for\n * @returns {Promise<Object>} returns a promise that resolves with the decrypted value\n */\n async _decryptData({value, encryptionKeyUrl}) {\n const result = await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value);\n\n return result;\n },\n\n /**\n * Makes the request to the AI assistant service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {Mixed} options.params additional params for the body of the request\n * @param {string} options.dataPath the path to get the data in the result object\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n _request(options: RequestOptions): Promise<RequestResponse> {\n const {resource, params, dataPath} = options;\n\n const timeout = this.config.requestTimeout;\n const requestId = uuid.v4();\n const eventName = this._getResultEventName(requestId);\n const streamEventName = this._getStreamEventName(requestId);\n let concatenatedMessage = '';\n\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => {\n const timer = new Timer(() => {\n this.stopListening(this, eventName);\n this.trigger(streamEventName, {\n requestId,\n finished: true,\n errorMessage: AI_ASSISTANT_ERRORS.AI_ASSISTANT_TIMEOUT,\n errorCode: AI_ASSISTANT_ERROR_CODES.AI_ASSISTANT_TIMEOUT,\n });\n }, timeout);\n\n this.listenTo(this, eventName, async (data) => {\n timer.reset();\n const resultData = get(data, dataPath, []);\n const errorMessage = get(data, 'response.errorMessage');\n const errorCode = get(data, 'response.errorCode');\n\n if (data.finished) {\n // For finished messages, decrypt and emit the final complete message\n timer.cancel();\n\n try {\n let decryptedMessage;\n if (resultData?.value) {\n decryptedMessage = await this._decryptData(resultData);\n }\n\n // Emit the final message\n this.trigger(streamEventName, {\n message: decryptedMessage || '',\n requestId,\n finished: true,\n errorMessage,\n errorCode,\n });\n\n this.stopListening(this, eventName);\n } catch (decryptError) {\n this.trigger(streamEventName, {\n message: concatenatedMessage,\n requestId,\n finished: true,\n errorMessage: errorMessage || decryptError.message,\n errorCode,\n });\n }\n } else {\n // For non-finished messages, concatenate and emit the accumulated message\n try {\n let decryptedMessage = '';\n if (resultData?.value) {\n decryptedMessage = await this._decryptData(resultData);\n }\n\n concatenatedMessage += decryptedMessage;\n\n // Emit the concatenated message so far\n this.trigger(streamEventName, {\n message: concatenatedMessage,\n requestId,\n finished: false,\n errorMessage,\n errorCode,\n });\n } catch (decryptError) {\n // If decryption fails, we still want to continue listening for more messages\n this.trigger(streamEventName, {\n message: concatenatedMessage,\n requestId,\n finished: false,\n errorMessage: errorMessage || decryptError.message,\n errorCode,\n });\n }\n }\n });\n\n this.webex\n .request({\n service: AI_ASSISTANT_SERVICE_NAME,\n resource,\n method: 'POST',\n contentType: 'application/json',\n body: {clientRequestId: requestId, ...params},\n })\n .catch((error) => {\n reject(error);\n })\n .then(({body}) => {\n const {sessionId} = body;\n\n resolve({\n requestId,\n sessionId,\n streamEventName,\n });\n timer.start();\n });\n });\n },\n\n /**\n * Common method to make AI assistant requests for meeting analysis\n * @param {Object} options\n * @param {string} options.contextResources array of context resources to include in the request\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @param {string} options.contentType the type of content ('action' or 'message')\n * @param {string} options.contentValue the value to use (action name or message text)\n * @param {Object} options.parameters optional parameters to include in the request (for action type only)\n * @param {Object} options.assistant optional parameter to specify the assistant to use\n * @param {Object} options.locale optional locale to use for the request, defaults to 'en_US'\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n async _makeMeetingRequest(options: MakeMeetingRequestOptions): Promise<RequestResponse> {\n let value = options.contentValue;\n\n if (options.contentType === 'message') {\n value = await this._encryptData({\n text: options.contentValue,\n encryptionKeyUrl: options.encryptionKeyUrl,\n });\n }\n\n const content: any = {\n context: {\n resources: options.contextResources,\n },\n encryptionKeyUrl: options.encryptionKeyUrl,\n type: options.contentType,\n value,\n };\n\n if (options.contentType === 'action' && options.parameters) {\n content.parameters = options.parameters;\n }\n\n return this._request({\n resource: options.sessionId ? `sessions/${options.sessionId}/messages` : 'sessions/messages',\n dataPath: 'response.content',\n params: {\n async: 'chunked',\n locale: options.locale || 'en_US',\n content,\n ...(options.assistant ? {assistant: options.assistant} : {}),\n },\n });\n },\n\n /**\n * Returns the summary of a meeting\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @param {number} options.lastMinutes Optional number of minutes to summarize from the end of the meeting. If not included, summarizes from the start.\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n summarizeMeeting(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contentType: CONTENT_TYPES.ACTION,\n contentValue: ACTION_TYPES.SUMMARIZE_FOR_ME,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n ...(options.lastMinutes ? {parameters: {lastMinutes: options.lastMinutes}} : {}),\n });\n },\n\n /**\n * Checks if the user's name was mentioned in a meeting\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n wasMyNameMentioned(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n contentType: CONTENT_TYPES.ACTION,\n contentValue: ACTION_TYPES.WAS_MY_NAME_MENTIONED,\n });\n },\n\n /**\n * Returns all action items from a meeting\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n showAllActionItems(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n contentType: CONTENT_TYPES.ACTION,\n contentValue: ACTION_TYPES.SHOW_ALL_ACTION_ITEMS,\n });\n },\n\n /**\n * Helper method to encrypt text using the encryption key URL\n * @param {Object} options\n * @param {string} options.text the text to encrypt\n * @param {string} options.encryptionKeyUrl the encryption key URL to use for encryption\n * @returns {Promise<string>} returns a promise that resolves with the encrypted text\n */\n async _encryptData({text, encryptionKeyUrl}) {\n const result = await this.webex.internal.encryption.encryptText(encryptionKeyUrl, text);\n\n return result;\n },\n\n /**\n * Ask any question about the meeting content\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @param {string} options.question the question to ask about the meeting content\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n askMeAnything(options: SummarizeMeetingOptions & {question: string}): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n contentType: CONTENT_TYPES.MESSAGE,\n contentValue: options.question,\n });\n },\n});\n\nexport default AIAssistant;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_uuid","_interopRequireDefault","require","_webexCore","_lodash","_commonTimers","_constants","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","AIAssistant","WebexPlugin","extend","namespace","registered","initialize","_len","args","Array","_key","_apply","prototype","register","_this","webex","canAuthorize","logger","error","_promise","reject","Error","info","resolve","internal","mercury","connect","then","listenForEvents","trigger","AI_ASSISTANT_REGISTERED","catch","concat","message","unregister","_this2","stopListeningForEvents","disconnect","AI_ASSISTANT_UNREGISTERED","_this3","on","ASSISTANT_API_RESPONSE_EVENT","envelope","_handleEvent","data","off","_getResultEventName","requestId","AI_ASSISTANT_RESULT","_getStreamEventName","AI_ASSISTANT_STREAM","clientRequestId","_decryptContent","responseContent","_this4","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","t0","name","RESPONSE_NAMES","MESSAGE","CITED_ANSWER","TOOL_RESULT","TOOL_USE","decryptMessage","abrupt","decryptCitedAnswer","decryptToolUse","stop","_request","options","_this5","resource","params","timeout","config","requestTimeout","uuid","v4","eventName","streamEventName","timer","Timer","stopListening","finished","errorMessage","AI_ASSISTANT_ERRORS","AI_ASSISTANT_TIMEOUT","errorCode","AI_ASSISTANT_ERROR_CODES","listenTo","_ref","_callee2","resultData","responseType","decryptErrorMessage","_callee2$","_context2","reset","get","cancel","merge","response","_x","request","service","AI_ASSISTANT_SERVICE_NAME","method","contentType","body","_ref2","start","_makeMeetingRequest","_this6","_callee3","value","content","_callee3$","_context3","contentValue","_encryptData","text","encryptionKeyUrl","sent","context","resources","contextResources","type","parameters","sessionId","async","locale","assistant","summarizeMeeting","CONTENT_TYPES","ACTION","ACTION_TYPES","SUMMARIZE_FOR_ME","id","meetingInstanceId","CONTEXT_RESOURCE_TYPES","MEETING","url","meetingSite","lastMinutes","wasMyNameMentioned","WAS_MY_NAME_MENTIONED","showAllActionItems","SHOW_ALL_ACTION_ITEMS","_ref3","_this7","_callee4","result","_callee4$","_context4","encryption","encryptText","askMeAnything","question","version","_default","exports"],"sources":["ai-assistant.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2022 Cisco Systems, Inc. See LICENSE file.\n */\nimport uuid from 'uuid';\nimport {WebexPlugin} from '@webex/webex-core';\nimport '@webex/internal-plugin-mercury';\nimport {get, merge} from 'lodash';\nimport {Timer} from '@webex/common-timers';\n\nimport {\n MakeMeetingRequestOptions,\n RequestOptions,\n RequestResponse,\n SummarizeMeetingOptions,\n} from './types';\nimport {\n AI_ASSISTANT_ERROR_CODES,\n AI_ASSISTANT_ERRORS,\n AI_ASSISTANT_REGISTERED,\n AI_ASSISTANT_RESULT,\n AI_ASSISTANT_STREAM,\n AI_ASSISTANT_UNREGISTERED,\n AI_ASSISTANT_SERVICE_NAME,\n ASSISTANT_API_RESPONSE_EVENT,\n ACTION_TYPES,\n CONTENT_TYPES,\n CONTEXT_RESOURCE_TYPES,\n RESPONSE_NAMES,\n} from './constants';\nimport {decryptCitedAnswer, decryptMessage, decryptToolUse} from './utils';\n\nconst AIAssistant = WebexPlugin.extend({\n namespace: 'AIAssistant',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof AIAssistant\n */\n registered: false,\n\n /**\n * Initializer\n * @private\n * @param {Object} attrs\n * @param {Object} options\n * @returns {undefined}\n */\n initialize(...args) {\n Reflect.apply(WebexPlugin.prototype.initialize, this, args);\n },\n\n /**\n * Explicitly sets up the AI assistant plugin by connecting to mercury, and listening for AI assistant events.\n * @returns {Promise}\n * @public\n * @memberof AIAssistant\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('AI assistant->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('AI assistant->register#INFO, AI assistant plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.mercury\n .connect()\n .then(() => {\n this.listenForEvents();\n this.trigger(AI_ASSISTANT_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`AI assistant->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the AI assistant plugin by disconnecting from mercury, and stops listening to AI assistant events\n * @returns {Promise}\n * @public\n * @memberof AIAssistant\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('AI assistant->unregister#INFO, AI assistant plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury.disconnect().then(() => {\n this.trigger(AI_ASSISTANT_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for Assistant API events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n this.webex.internal.mercury.on(ASSISTANT_API_RESPONSE_EVENT, (envelope) => {\n this._handleEvent(envelope.data);\n });\n },\n\n /**\n * unregisteres all the Assistant API events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off(ASSISTANT_API_RESPONSE_EVENT);\n },\n\n /**\n * constructs the event name based on request id\n * This is used by the plugin to listen for the result of a particular request\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getResultEventName(requestId: string) {\n return `${AI_ASSISTANT_RESULT}:${requestId}`;\n },\n\n /**\n * constructs the stream event name based on request id\n * This is used by the consumer to listen for the stream (i.e. the data) of a particular request\n * @param {UUID} requestId the id of the request\n * @returns {string}\n */\n _getStreamEventName(requestId: string) {\n return `${AI_ASSISTANT_STREAM}:${requestId}`;\n },\n\n /**\n * Takes incoming data and triggers correct events\n * @param {Object} data the event data\n * @returns {undefined}\n */\n _handleEvent(data) {\n this.trigger(this._getResultEventName(data.clientRequestId), data);\n },\n\n /**\n * Decrypts the response content in place\n * @param {any} responseContent the content object from the assistant-api response\n * @returns {Promise} resolves once decryption is complete\n */\n async _decryptContent(responseContent) {\n switch (responseContent.name) {\n case RESPONSE_NAMES.MESSAGE: {\n await decryptMessage(responseContent, this.webex);\n break;\n }\n case RESPONSE_NAMES.CITED_ANSWER: {\n await decryptCitedAnswer(responseContent, this.webex);\n break;\n }\n case RESPONSE_NAMES.TOOL_RESULT: {\n // No encrypted content in tool_result\n break;\n }\n case RESPONSE_NAMES.TOOL_USE: {\n await decryptToolUse(responseContent, this.webex);\n break;\n }\n default:\n this.logger.error(\n `AI assistant->_decryptContent#ERROR, Unknown response content name: ${responseContent.name}`\n );\n }\n },\n\n /**\n * Makes the request to the AI assistant service\n * @param {Object} options\n * @param {string} options.resource the URL to query\n * @param {Mixed} options.params additional params for the body of the request\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n _request(options: RequestOptions): Promise<RequestResponse> {\n const {resource, params} = options;\n\n const timeout = this.config.requestTimeout;\n const requestId = uuid.v4();\n const eventName = this._getResultEventName(requestId);\n const streamEventName = this._getStreamEventName(requestId);\n\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => {\n const timer = new Timer(() => {\n this.stopListening(this, eventName);\n this.trigger(streamEventName, {\n requestId,\n finished: true,\n errorMessage: AI_ASSISTANT_ERRORS.AI_ASSISTANT_TIMEOUT,\n errorCode: AI_ASSISTANT_ERROR_CODES.AI_ASSISTANT_TIMEOUT,\n });\n }, timeout);\n\n this.listenTo(this, eventName, async (data) => {\n timer.reset();\n const resultData = get(data, 'response.content', {});\n const errorMessage = get(data, 'response.errorMessage');\n const errorCode = get(data, 'response.errorCode');\n const responseType = get(data, 'responseType');\n\n if (data.finished) {\n timer.cancel();\n this.stopListening(this, eventName);\n }\n\n let decryptErrorMessage;\n\n try {\n if (!errorCode) {\n await this._decryptContent(resultData);\n }\n } catch (decryptError) {\n decryptErrorMessage = decryptError.message;\n }\n\n this.trigger(\n streamEventName,\n merge({}, data.response, {\n responseType,\n requestId,\n finished: data.finished,\n errorMessage: errorMessage || decryptErrorMessage,\n errorCode,\n })\n );\n });\n\n this.webex\n .request({\n service: AI_ASSISTANT_SERVICE_NAME,\n resource,\n method: 'POST',\n contentType: 'application/json',\n body: {clientRequestId: requestId, ...params},\n })\n .catch((error) => {\n reject(error);\n })\n .then(({body}) => {\n resolve({...body, requestId, streamEventName});\n timer.start();\n });\n });\n },\n\n /**\n * Common method to make AI assistant requests for meeting analysis\n * @param {Object} options\n * @param {string} options.contextResources array of context resources to include in the request\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @param {string} options.contentType the type of content ('action' or 'message')\n * @param {string} options.contentValue the value to use (action name or message text)\n * @param {Object} options.parameters optional parameters to include in the request (for action type only)\n * @param {Object} options.assistant optional parameter to specify the assistant to use\n * @param {Object} options.locale optional locale to use for the request, defaults to 'en_US'\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n async _makeMeetingRequest(options: MakeMeetingRequestOptions): Promise<RequestResponse> {\n let value = options.contentValue;\n\n if (options.contentType === 'message') {\n value = await this._encryptData({\n text: options.contentValue,\n encryptionKeyUrl: options.encryptionKeyUrl,\n });\n }\n\n const content: any = {\n context: {\n resources: options.contextResources,\n },\n encryptionKeyUrl: options.encryptionKeyUrl,\n type: options.contentType,\n value,\n };\n\n if (options.parameters) {\n content.parameters = options.parameters;\n }\n\n return this._request({\n resource: options.sessionId ? `sessions/${options.sessionId}/messages` : 'sessions/messages',\n params: {\n async: 'chunked',\n locale: options.locale || 'en_US',\n content,\n ...(options.assistant ? {assistant: options.assistant} : {}),\n },\n });\n },\n\n /**\n * Returns the summary of a meeting\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @param {number} options.lastMinutes Optional number of minutes to summarize from the end of the meeting. If not included, summarizes from the start.\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n summarizeMeeting(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contentType: CONTENT_TYPES.ACTION,\n contentValue: ACTION_TYPES.SUMMARIZE_FOR_ME,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n ...(options.lastMinutes ? {parameters: {lastMinutes: options.lastMinutes}} : {}),\n });\n },\n\n /**\n * Checks if the user's name was mentioned in a meeting\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n wasMyNameMentioned(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n contentType: CONTENT_TYPES.ACTION,\n contentValue: ACTION_TYPES.WAS_MY_NAME_MENTIONED,\n });\n },\n\n /**\n * Returns all action items from a meeting\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n showAllActionItems(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n contentType: CONTENT_TYPES.ACTION,\n contentValue: ACTION_TYPES.SHOW_ALL_ACTION_ITEMS,\n });\n },\n\n /**\n * Helper method to encrypt text using the encryption key URL\n * @param {Object} options\n * @param {string} options.text the text to encrypt\n * @param {string} options.encryptionKeyUrl the encryption key URL to use for encryption\n * @returns {Promise<string>} returns a promise that resolves with the encrypted text\n */\n async _encryptData({text, encryptionKeyUrl}) {\n const result = await this.webex.internal.encryption.encryptText(encryptionKeyUrl, text);\n\n return result;\n },\n\n /**\n * Ask any question about the meeting content\n * @param {Object} options\n * @param {string} options.meetingInstanceId the meeting instance ID for the meeting from locus\n * @param {string} options.meetingSite the name.webex.com site for the meeting\n * @param {string} options.sessionId the session ID for subsequent requests, not required for the first request\n * @param {string} options.encryptionKeyUrl the encryption key URL for this meeting summary\n * @param {string} options.question the question to ask about the meeting content\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n askMeAnything(options: SummarizeMeetingOptions & {question: string}): Promise<RequestResponse> {\n return this._makeMeetingRequest({\n ...options,\n contextResources: [\n {\n id: options.meetingInstanceId,\n type: CONTEXT_RESOURCE_TYPES.MEETING,\n url: options.meetingSite,\n },\n ],\n contentType: CONTENT_TYPES.MESSAGE,\n contentValue: options.question,\n });\n },\n});\n\nexport default AIAssistant;\n"],"mappings":"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"}
|
package/dist/config.js
CHANGED
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_default","exports","default","aiassistant","requestTimeout"],"sources":["config.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n aiassistant: {\n /**\n * Timeout before AI Assistant request fails, in milliseconds.\n * @type {Number}\n */\n requestTimeout:
|
|
1
|
+
{"version":3,"names":["_default","exports","default","aiassistant","requestTimeout"],"sources":["config.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2025 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n aiassistant: {\n /**\n * Timeout before AI Assistant request fails, in milliseconds.\n * @type {Number}\n */\n requestTimeout: 60000,\n },\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAIe;EACbC,WAAW,EAAE;IACX;AACJ;AACA;AACA;IACIC,cAAc,EAAE;EAClB;AACF,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -4,7 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
|
|
|
4
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.CONTEXT_RESOURCE_TYPES = exports.CONTENT_TYPES = exports.ASSISTANT_API_RESPONSE_EVENT = exports.AI_ASSISTANT_UNREGISTERED = exports.AI_ASSISTANT_STREAM = exports.AI_ASSISTANT_SERVICE_NAME = exports.AI_ASSISTANT_RESULT = exports.AI_ASSISTANT_REGISTERED = exports.AI_ASSISTANT_ERROR_CODES = exports.AI_ASSISTANT_ERRORS = exports.ACTION_TYPES = void 0;
|
|
7
|
+
exports.RESPONSE_NAMES = exports.CONTEXT_RESOURCE_TYPES = exports.CONTENT_TYPES = exports.ASSISTANT_API_RESPONSE_EVENT = exports.AI_ASSISTANT_UNREGISTERED = exports.AI_ASSISTANT_STREAM = exports.AI_ASSISTANT_SERVICE_NAME = exports.AI_ASSISTANT_RESULT = exports.AI_ASSISTANT_REGISTERED = exports.AI_ASSISTANT_ERROR_CODES = exports.AI_ASSISTANT_ERRORS = exports.ACTION_TYPES = void 0;
|
|
8
8
|
var AI_ASSISTANT_REGISTERED = exports.AI_ASSISTANT_REGISTERED = 'aiassistant:registered';
|
|
9
9
|
var AI_ASSISTANT_UNREGISTERED = exports.AI_ASSISTANT_UNREGISTERED = 'aiassistant:unregistered';
|
|
10
10
|
var ASSISTANT_API_RESPONSE_EVENT = exports.ASSISTANT_API_RESPONSE_EVENT = 'event:assistant-api.response';
|
|
@@ -43,4 +43,11 @@ var CONTEXT_RESOURCE_TYPES = exports.CONTEXT_RESOURCE_TYPES = /*#__PURE__*/funct
|
|
|
43
43
|
CONTEXT_RESOURCE_TYPES["MEETING"] = "meeting";
|
|
44
44
|
return CONTEXT_RESOURCE_TYPES;
|
|
45
45
|
}({});
|
|
46
|
+
var RESPONSE_NAMES = exports.RESPONSE_NAMES = /*#__PURE__*/function (RESPONSE_NAMES) {
|
|
47
|
+
RESPONSE_NAMES["TOOL_USE"] = "tool_use";
|
|
48
|
+
RESPONSE_NAMES["CITED_ANSWER"] = "cited_answer";
|
|
49
|
+
RESPONSE_NAMES["MESSAGE"] = "message";
|
|
50
|
+
RESPONSE_NAMES["TOOL_RESULT"] = "tool_result";
|
|
51
|
+
return RESPONSE_NAMES;
|
|
52
|
+
}({});
|
|
46
53
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AI_ASSISTANT_REGISTERED","exports","AI_ASSISTANT_UNREGISTERED","ASSISTANT_API_RESPONSE_EVENT","AI_ASSISTANT_SERVICE_NAME","AI_ASSISTANT_RESULT","AI_ASSISTANT_STREAM","AI_ASSISTANT_ERRORS","AI_ASSISTANT_ERROR_CODES","ACTION_TYPES","CONTENT_TYPES","CONTEXT_RESOURCE_TYPES"],"sources":["constants.ts"],"sourcesContent":["export const AI_ASSISTANT_REGISTERED = 'aiassistant:registered';\nexport const AI_ASSISTANT_UNREGISTERED = 'aiassistant:unregistered';\nexport const ASSISTANT_API_RESPONSE_EVENT = 'event:assistant-api.response';\nexport const AI_ASSISTANT_SERVICE_NAME = 'assistant-api';\nexport const AI_ASSISTANT_RESULT = 'aiassistant:result';\nexport const AI_ASSISTANT_STREAM = 'aiassistant:stream';\n\nexport enum AI_ASSISTANT_ERRORS {\n NOT_ENOUGH_CONTENT = 'NO_ENOUGH_MEETING_TRANSCRIPT',\n TRANSCRIPT_AUTH_ERROR = 'TRANSCRIPT_AUTH_ERROR',\n AI_ASSISTANT_TIMEOUT = 'AI_ASSISTANT_TIMEOUT', // This one is generated by the plugin\n}\n\nexport enum AI_ASSISTANT_ERROR_CODES {\n AI_ASSISTANT_TIMEOUT = 9408, // This one is generated by the plugin\n NOT_ENOUGH_CONTENT = 204,\n FORBIDDEN = 403,\n LLM_TIMEOUT = 408,\n RATE_LIMIT = 429,\n GENERIC_ERROR = 10000,\n WAIT_PREVIOUS = 10001,\n EMPTY_SEARCH_RESULT = 10002,\n}\n\nexport enum ACTION_TYPES {\n SHOW_ALL_ACTION_ITEMS = 'SHOW_ALL_ACTION_ITEMS',\n WAS_MY_NAME_MENTIONED = 'WAS_MY_NAME_MENTIONED',\n SUMMARIZE_FOR_ME = 'SUMMARIZE_FOR_ME',\n}\n\nexport enum CONTENT_TYPES {\n ACTION = 'action',\n MESSAGE = 'message',\n}\n\nexport enum CONTEXT_RESOURCE_TYPES {\n MEETING = 'meeting',\n}\n"],"mappings":";;;;;;;AAAO,IAAMA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,wBAAwB;AACxD,IAAME,yBAAyB,GAAAD,OAAA,CAAAC,yBAAA,GAAG,0BAA0B;AAC5D,IAAMC,4BAA4B,GAAAF,OAAA,CAAAE,4BAAA,GAAG,8BAA8B;AACnE,IAAMC,yBAAyB,GAAAH,OAAA,CAAAG,yBAAA,GAAG,eAAe;AACjD,IAAMC,mBAAmB,GAAAJ,OAAA,CAAAI,mBAAA,GAAG,oBAAoB;AAChD,IAAMC,mBAAmB,GAAAL,OAAA,CAAAK,mBAAA,GAAG,oBAAoB;AAAC,IAE5CC,mBAAmB,GAAAN,OAAA,CAAAM,mBAAA,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA,OAGkB;AAAA,IAGrCC,wBAAwB,GAAAP,OAAA,CAAAO,wBAAA,0BAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAA,OAAxBA,wBAAwB;AAAA;AAAA,IAWxBC,YAAY,GAAAR,OAAA,CAAAQ,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAMZC,aAAa,GAAAT,OAAA,CAAAS,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAKbC,sBAAsB,GAAAV,OAAA,CAAAU,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA"}
|
|
1
|
+
{"version":3,"names":["AI_ASSISTANT_REGISTERED","exports","AI_ASSISTANT_UNREGISTERED","ASSISTANT_API_RESPONSE_EVENT","AI_ASSISTANT_SERVICE_NAME","AI_ASSISTANT_RESULT","AI_ASSISTANT_STREAM","AI_ASSISTANT_ERRORS","AI_ASSISTANT_ERROR_CODES","ACTION_TYPES","CONTENT_TYPES","CONTEXT_RESOURCE_TYPES","RESPONSE_NAMES"],"sources":["constants.ts"],"sourcesContent":["export const AI_ASSISTANT_REGISTERED = 'aiassistant:registered';\nexport const AI_ASSISTANT_UNREGISTERED = 'aiassistant:unregistered';\nexport const ASSISTANT_API_RESPONSE_EVENT = 'event:assistant-api.response';\nexport const AI_ASSISTANT_SERVICE_NAME = 'assistant-api';\nexport const AI_ASSISTANT_RESULT = 'aiassistant:result';\nexport const AI_ASSISTANT_STREAM = 'aiassistant:stream';\n\nexport enum AI_ASSISTANT_ERRORS {\n NOT_ENOUGH_CONTENT = 'NO_ENOUGH_MEETING_TRANSCRIPT',\n TRANSCRIPT_AUTH_ERROR = 'TRANSCRIPT_AUTH_ERROR',\n AI_ASSISTANT_TIMEOUT = 'AI_ASSISTANT_TIMEOUT', // This one is generated by the plugin\n}\n\nexport enum AI_ASSISTANT_ERROR_CODES {\n AI_ASSISTANT_TIMEOUT = 9408, // This one is generated by the plugin\n NOT_ENOUGH_CONTENT = 204,\n FORBIDDEN = 403,\n LLM_TIMEOUT = 408,\n RATE_LIMIT = 429,\n GENERIC_ERROR = 10000,\n WAIT_PREVIOUS = 10001,\n EMPTY_SEARCH_RESULT = 10002,\n}\n\nexport enum ACTION_TYPES {\n SHOW_ALL_ACTION_ITEMS = 'SHOW_ALL_ACTION_ITEMS',\n WAS_MY_NAME_MENTIONED = 'WAS_MY_NAME_MENTIONED',\n SUMMARIZE_FOR_ME = 'SUMMARIZE_FOR_ME',\n}\n\nexport enum CONTENT_TYPES {\n ACTION = 'action',\n MESSAGE = 'message',\n}\n\nexport enum CONTEXT_RESOURCE_TYPES {\n MEETING = 'meeting',\n}\n\nexport enum RESPONSE_NAMES {\n TOOL_USE = 'tool_use',\n CITED_ANSWER = 'cited_answer',\n MESSAGE = 'message',\n TOOL_RESULT = 'tool_result',\n}\n"],"mappings":";;;;;;;AAAO,IAAMA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,wBAAwB;AACxD,IAAME,yBAAyB,GAAAD,OAAA,CAAAC,yBAAA,GAAG,0BAA0B;AAC5D,IAAMC,4BAA4B,GAAAF,OAAA,CAAAE,4BAAA,GAAG,8BAA8B;AACnE,IAAMC,yBAAyB,GAAAH,OAAA,CAAAG,yBAAA,GAAG,eAAe;AACjD,IAAMC,mBAAmB,GAAAJ,OAAA,CAAAI,mBAAA,GAAG,oBAAoB;AAChD,IAAMC,mBAAmB,GAAAL,OAAA,CAAAK,mBAAA,GAAG,oBAAoB;AAAC,IAE5CC,mBAAmB,GAAAN,OAAA,CAAAM,mBAAA,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA,OAGkB;AAAA,IAGrCC,wBAAwB,GAAAP,OAAA,CAAAO,wBAAA,0BAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EAAA,OAAxBA,wBAAwB;AAAA;AAAA,IAWxBC,YAAY,GAAAR,OAAA,CAAAQ,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAMZC,aAAa,GAAAT,OAAA,CAAAS,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAKbC,sBAAsB,GAAAV,OAAA,CAAAU,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAItBC,cAAc,GAAAX,OAAA,CAAAW,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface RequestResponse {\n sessionId: string;\n requestId: string;\n streamEventName: string;\n}\n\nexport interface StreamEvent {\n message: string;\n requestId: string;\n finished: boolean;\n error: string | null;\n}\n\nexport interface RequestOptions {\n resource: string;\n dataPath: string;\n foundPath?: string;\n notFoundPath?: string;\n params?: Record<string, unknown>;\n}\n\nexport interface ContextResource {\n id: string;\n type: string;\n url: string;\n}\n\nexport interface SummarizeMeetingOptions {\n assistant?: string;\n meetingInstanceId: string;\n meetingSite: string;\n sessionId: string;\n encryptionKeyUrl: string;\n lastMinutes?: number;\n}\n\nexport interface MakeMeetingRequestOptions {\n sessionId: string;\n encryptionKeyUrl: string;\n contextResources: ContextResource[];\n contentType: 'action' | 'message';\n contentValue: string;\n parameters?: any;\n assistant?: string;\n locale?: string;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface RequestResponse {\n sessionId: string;\n requestId: string;\n streamEventName: string;\n id: string;\n url: string;\n sessionUrl: string;\n creatorId: string;\n createdAt: string;\n}\n\nexport interface StreamEvent {\n message: string;\n requestId: string;\n finished: boolean;\n error: string | null;\n}\n\nexport interface RequestOptions {\n resource: string;\n dataPath: string;\n foundPath?: string;\n notFoundPath?: string;\n params?: Record<string, unknown>;\n}\n\nexport interface ContextResource {\n id: string;\n type: string;\n url: string;\n}\n\nexport interface SummarizeMeetingOptions {\n assistant?: string;\n meetingInstanceId: string;\n meetingSite: string;\n sessionId: string;\n encryptionKeyUrl: string;\n lastMinutes?: number;\n}\n\nexport interface MakeMeetingRequestOptions {\n sessionId: string;\n encryptionKeyUrl: string;\n contextResources: ContextResource[];\n contentType: 'action' | 'message';\n contentValue: string;\n parameters?: any;\n assistant?: string;\n locale?: string;\n}\n"],"mappings":""}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
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.decryptToolUse = exports.decryptMessage = exports.decryptCitedAnswer = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
11
|
+
var _lodash = require("lodash");
|
|
12
|
+
var decryptInPlace = /*#__PURE__*/function () {
|
|
13
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(item, valuePath, keyPath, webex) {
|
|
14
|
+
var encryptedValue, encryptionKeyUrl, decryptedValue;
|
|
15
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
|
+
while (1) switch (_context.prev = _context.next) {
|
|
17
|
+
case 0:
|
|
18
|
+
encryptedValue = (0, _lodash.get)(item, valuePath);
|
|
19
|
+
encryptionKeyUrl = (0, _lodash.get)(item, keyPath);
|
|
20
|
+
_context.next = 4;
|
|
21
|
+
return webex.internal.encryption.decryptText(encryptionKeyUrl, encryptedValue);
|
|
22
|
+
case 4:
|
|
23
|
+
decryptedValue = _context.sent;
|
|
24
|
+
(0, _lodash.set)(item, valuePath, decryptedValue);
|
|
25
|
+
case 6:
|
|
26
|
+
case "end":
|
|
27
|
+
return _context.stop();
|
|
28
|
+
}
|
|
29
|
+
}, _callee);
|
|
30
|
+
}));
|
|
31
|
+
return function decryptInPlace(_x, _x2, _x3, _x4) {
|
|
32
|
+
return _ref.apply(this, arguments);
|
|
33
|
+
};
|
|
34
|
+
}();
|
|
35
|
+
var decryptToolUse = exports.decryptToolUse = /*#__PURE__*/function () {
|
|
36
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(data, webex) {
|
|
37
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
38
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
39
|
+
case 0:
|
|
40
|
+
_context2.next = 2;
|
|
41
|
+
return decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);
|
|
42
|
+
case 2:
|
|
43
|
+
case "end":
|
|
44
|
+
return _context2.stop();
|
|
45
|
+
}
|
|
46
|
+
}, _callee2);
|
|
47
|
+
}));
|
|
48
|
+
return function decryptToolUse(_x5, _x6) {
|
|
49
|
+
return _ref2.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}();
|
|
52
|
+
var decryptCitedAnswer = exports.decryptCitedAnswer = /*#__PURE__*/function () {
|
|
53
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(data, webex) {
|
|
54
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
55
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
_context3.next = 2;
|
|
58
|
+
return decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);
|
|
59
|
+
case 2:
|
|
60
|
+
case "end":
|
|
61
|
+
return _context3.stop();
|
|
62
|
+
}
|
|
63
|
+
}, _callee3);
|
|
64
|
+
}));
|
|
65
|
+
return function decryptCitedAnswer(_x7, _x8) {
|
|
66
|
+
return _ref3.apply(this, arguments);
|
|
67
|
+
};
|
|
68
|
+
}();
|
|
69
|
+
var decryptMessage = exports.decryptMessage = /*#__PURE__*/function () {
|
|
70
|
+
var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(data, webex) {
|
|
71
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
72
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
73
|
+
case 0:
|
|
74
|
+
_context4.next = 2;
|
|
75
|
+
return decryptInPlace(data, 'value', 'encryptionKeyUrl', webex);
|
|
76
|
+
case 2:
|
|
77
|
+
case "end":
|
|
78
|
+
return _context4.stop();
|
|
79
|
+
}
|
|
80
|
+
}, _callee4);
|
|
81
|
+
}));
|
|
82
|
+
return function decryptMessage(_x9, _x10) {
|
|
83
|
+
return _ref4.apply(this, arguments);
|
|
84
|
+
};
|
|
85
|
+
}();
|
|
86
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_lodash","require","decryptInPlace","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","item","valuePath","keyPath","webex","encryptedValue","encryptionKeyUrl","decryptedValue","wrap","_callee$","_context","prev","next","get","internal","encryption","decryptText","sent","set","stop","_x","_x2","_x3","_x4","apply","arguments","decryptToolUse","exports","_ref2","_callee2","data","_callee2$","_context2","_x5","_x6","decryptCitedAnswer","_ref3","_callee3","_callee3$","_context3","_x7","_x8","decryptMessage","_ref4","_callee4","_callee4$","_context4","_x9","_x10"],"sources":["utils.ts"],"sourcesContent":["import {get, set} from 'lodash';\n\nconst decryptInPlace = async (item, valuePath, keyPath, webex) => {\n const encryptedValue = get(item, valuePath);\n const encryptionKeyUrl = get(item, keyPath);\n\n const decryptedValue = await webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n encryptedValue\n );\n\n set(item, valuePath, decryptedValue);\n};\n\nexport const decryptToolUse = async (data, webex) => {\n await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);\n};\n\nexport const decryptCitedAnswer = async (data, webex) => {\n await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);\n};\n\nexport const decryptMessage = async (data, webex) => {\n await decryptInPlace(data, 'value', 'encryptionKeyUrl', webex);\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
]
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@webex/common": "3.8.1-next.
|
|
24
|
-
"@webex/common-timers": "3.8.1-next.
|
|
25
|
-
"@webex/internal-plugin-mercury": "3.
|
|
26
|
-
"@webex/webex-core": "3.
|
|
23
|
+
"@webex/common": "3.8.1-next.11",
|
|
24
|
+
"@webex/common-timers": "3.8.1-next.11",
|
|
25
|
+
"@webex/internal-plugin-mercury": "3.9.0-next.2",
|
|
26
|
+
"@webex/webex-core": "3.9.0-next.2",
|
|
27
27
|
"lodash": "^4.17.21",
|
|
28
28
|
"uuid": "^3.3.2"
|
|
29
29
|
},
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
34
34
|
"@webex/jest-config-legacy": "0.0.0",
|
|
35
35
|
"@webex/legacy-tools": "0.0.0",
|
|
36
|
-
"@webex/test-helper-chai": "3.8.1-next.
|
|
37
|
-
"@webex/test-helper-mock-webex": "3.8.1-next.
|
|
38
|
-
"@webex/test-helper-test-users": "3.8.1-next.
|
|
36
|
+
"@webex/test-helper-chai": "3.8.1-next.11",
|
|
37
|
+
"@webex/test-helper-mock-webex": "3.8.1-next.11",
|
|
38
|
+
"@webex/test-helper-test-users": "3.8.1-next.11",
|
|
39
39
|
"eslint": "^8.24.0",
|
|
40
40
|
"prettier": "^2.7.1",
|
|
41
41
|
"sinon": "^9.2.4"
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"test:style": "eslint ./src/**/*.*",
|
|
50
50
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
51
51
|
},
|
|
52
|
-
"version": "0.0.0-next.
|
|
52
|
+
"version": "0.0.0-next.21"
|
|
53
53
|
}
|
package/process
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = {browser: true};
|