@webex/internal-plugin-ai-assistant 3.11.0-next.7 → 3.11.0-next.9
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/dist/ai-assistant.js +91 -65
- package/dist/ai-assistant.js.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/utils.js +18 -1
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/ai-assistant.ts +19 -0
- package/src/constants.ts +2 -0
- package/src/utils.ts +4 -0
- package/test/unit/data/messages.ts +46 -21
- package/test/unit/spec/ai-assistant.ts +35 -7
package/dist/ai-assistant.js
CHANGED
|
@@ -100,6 +100,9 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
100
100
|
this.webex.internal.mercury.on(_constants.ASSISTANT_API_RESPONSE_EVENT, function (envelope) {
|
|
101
101
|
_this2._handleEvent(envelope.data);
|
|
102
102
|
});
|
|
103
|
+
this.webex.internal.mercury.on(_constants.ASSISTANT_API_ACTIVITY, function (envelope) {
|
|
104
|
+
_this2._handleAssistantActivity(envelope.data);
|
|
105
|
+
});
|
|
103
106
|
},
|
|
104
107
|
/**
|
|
105
108
|
* unregisteres all the Assistant API events from mercury
|
|
@@ -108,6 +111,7 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
108
111
|
*/
|
|
109
112
|
stopListeningForEvents: function stopListeningForEvents() {
|
|
110
113
|
this.webex.internal.mercury.off(_constants.ASSISTANT_API_RESPONSE_EVENT);
|
|
114
|
+
this.webex.internal.mercury.off(_constants.ASSISTANT_API_ACTIVITY);
|
|
111
115
|
},
|
|
112
116
|
/**
|
|
113
117
|
* constructs the event name based on request id
|
|
@@ -135,55 +139,77 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
135
139
|
_handleEvent: function _handleEvent(data) {
|
|
136
140
|
this.trigger(this._getResultEventName(data.clientRequestId), data);
|
|
137
141
|
},
|
|
142
|
+
/**
|
|
143
|
+
* Handles an incoming activity event from the assistant API and triggers the correct event for consumers to listen to
|
|
144
|
+
* @param {Object} data the event data
|
|
145
|
+
* @returns {undefined}
|
|
146
|
+
*/
|
|
147
|
+
_handleAssistantActivity: function _handleAssistantActivity(data) {
|
|
148
|
+
var _this3 = this;
|
|
149
|
+
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
150
|
+
return _regenerator.default.wrap(function (_context) {
|
|
151
|
+
while (1) switch (_context.prev = _context.next) {
|
|
152
|
+
case 0:
|
|
153
|
+
_context.next = 1;
|
|
154
|
+
return (0, _utils.decryptAssistantActivity)(data.activity, _this3.webex);
|
|
155
|
+
case 1:
|
|
156
|
+
_this3.trigger(_constants.AI_ASSISTANT_ACTIVITY_RECEIVED, data);
|
|
157
|
+
case 2:
|
|
158
|
+
case "end":
|
|
159
|
+
return _context.stop();
|
|
160
|
+
}
|
|
161
|
+
}, _callee);
|
|
162
|
+
}))();
|
|
163
|
+
},
|
|
138
164
|
/**
|
|
139
165
|
* Decrypts the response content in place
|
|
140
166
|
* @param {any} responseContent the content object from the assistant-api response
|
|
141
167
|
* @returns {Promise} resolves once decryption is complete
|
|
142
168
|
*/
|
|
143
169
|
_decryptContent: function _decryptContent(responseContent) {
|
|
144
|
-
var
|
|
145
|
-
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function
|
|
170
|
+
var _this4 = this;
|
|
171
|
+
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
146
172
|
var _t;
|
|
147
|
-
return _regenerator.default.wrap(function (
|
|
148
|
-
while (1) switch (
|
|
173
|
+
return _regenerator.default.wrap(function (_context2) {
|
|
174
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
149
175
|
case 0:
|
|
150
176
|
_t = responseContent.name;
|
|
151
|
-
|
|
177
|
+
_context2.next = _t === _constants.RESPONSE_NAMES.MESSAGE ? 1 : _t === _constants.RESPONSE_NAMES.CITED_ANSWER ? 3 : _t === _constants.RESPONSE_NAMES.SCHEDULE_MEETING ? 5 : _t === _constants.RESPONSE_NAMES.TOOL_RESULT ? 7 : _t === _constants.RESPONSE_NAMES.TOOL_USE ? 8 : _t === _constants.RESPONSE_NAMES.WORKSPACE ? 10 : 12;
|
|
152
178
|
break;
|
|
153
179
|
case 1:
|
|
154
|
-
|
|
155
|
-
return (0, _utils.decryptMessage)(responseContent,
|
|
180
|
+
_context2.next = 2;
|
|
181
|
+
return (0, _utils.decryptMessage)(responseContent, _this4.webex);
|
|
156
182
|
case 2:
|
|
157
|
-
return
|
|
183
|
+
return _context2.abrupt("continue", 13);
|
|
158
184
|
case 3:
|
|
159
|
-
|
|
160
|
-
return (0, _utils.decryptCitedAnswer)(responseContent,
|
|
185
|
+
_context2.next = 4;
|
|
186
|
+
return (0, _utils.decryptCitedAnswer)(responseContent, _this4.webex);
|
|
161
187
|
case 4:
|
|
162
|
-
return
|
|
188
|
+
return _context2.abrupt("continue", 13);
|
|
163
189
|
case 5:
|
|
164
|
-
|
|
165
|
-
return (0, _utils.decryptScheduleMeeting)(responseContent,
|
|
190
|
+
_context2.next = 6;
|
|
191
|
+
return (0, _utils.decryptScheduleMeeting)(responseContent, _this4.webex);
|
|
166
192
|
case 6:
|
|
167
|
-
return
|
|
193
|
+
return _context2.abrupt("continue", 13);
|
|
168
194
|
case 7:
|
|
169
|
-
return
|
|
195
|
+
return _context2.abrupt("continue", 13);
|
|
170
196
|
case 8:
|
|
171
|
-
|
|
172
|
-
return (0, _utils.decryptToolUse)(responseContent,
|
|
197
|
+
_context2.next = 9;
|
|
198
|
+
return (0, _utils.decryptToolUse)(responseContent, _this4.webex);
|
|
173
199
|
case 9:
|
|
174
|
-
return
|
|
200
|
+
return _context2.abrupt("continue", 13);
|
|
175
201
|
case 10:
|
|
176
|
-
|
|
177
|
-
return (0, _utils.decryptWorkspace)(responseContent,
|
|
202
|
+
_context2.next = 11;
|
|
203
|
+
return (0, _utils.decryptWorkspace)(responseContent, _this4.webex);
|
|
178
204
|
case 11:
|
|
179
|
-
return
|
|
205
|
+
return _context2.abrupt("continue", 13);
|
|
180
206
|
case 12:
|
|
181
|
-
|
|
207
|
+
_this4.logger.error("AI assistant->_decryptContent#ERROR, Unknown response content name: ".concat(responseContent.name));
|
|
182
208
|
case 13:
|
|
183
209
|
case "end":
|
|
184
|
-
return
|
|
210
|
+
return _context2.stop();
|
|
185
211
|
}
|
|
186
|
-
},
|
|
212
|
+
}, _callee2);
|
|
187
213
|
}))();
|
|
188
214
|
},
|
|
189
215
|
/**
|
|
@@ -194,7 +220,7 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
194
220
|
* @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName
|
|
195
221
|
*/
|
|
196
222
|
_request: function _request(options) {
|
|
197
|
-
var
|
|
223
|
+
var _this5 = this;
|
|
198
224
|
var resource = options.resource,
|
|
199
225
|
params = options.params,
|
|
200
226
|
headers = options.headers;
|
|
@@ -206,19 +232,19 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
206
232
|
// eslint-disable-next-line no-async-promise-executor
|
|
207
233
|
return new _promise.default(function (resolve, reject) {
|
|
208
234
|
var timer = new _commonTimers.Timer(function () {
|
|
209
|
-
|
|
210
|
-
|
|
235
|
+
_this5.stopListening(_this5, eventName);
|
|
236
|
+
_this5.trigger(streamEventName, {
|
|
211
237
|
requestId: requestId,
|
|
212
238
|
finished: true,
|
|
213
239
|
errorMessage: _constants.AI_ASSISTANT_ERRORS.AI_ASSISTANT_TIMEOUT,
|
|
214
240
|
errorCode: _constants.AI_ASSISTANT_ERROR_CODES.AI_ASSISTANT_TIMEOUT
|
|
215
241
|
});
|
|
216
242
|
}, timeout);
|
|
217
|
-
|
|
218
|
-
var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function
|
|
243
|
+
_this5.listenTo(_this5, eventName, /*#__PURE__*/function () {
|
|
244
|
+
var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(data) {
|
|
219
245
|
var resultData, errorMessage, errorCode, responseType, decryptErrorMessage, _t2;
|
|
220
|
-
return _regenerator.default.wrap(function (
|
|
221
|
-
while (1) switch (
|
|
246
|
+
return _regenerator.default.wrap(function (_context3) {
|
|
247
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
222
248
|
case 0:
|
|
223
249
|
timer.reset();
|
|
224
250
|
resultData = (0, _lodash.get)(data, 'response.content', {});
|
|
@@ -227,24 +253,24 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
227
253
|
responseType = (0, _lodash.get)(data, 'responseType');
|
|
228
254
|
if (data.finished) {
|
|
229
255
|
timer.cancel();
|
|
230
|
-
|
|
256
|
+
_this5.stopListening(_this5, eventName);
|
|
231
257
|
}
|
|
232
|
-
|
|
258
|
+
_context3.prev = 1;
|
|
233
259
|
if (errorCode) {
|
|
234
|
-
|
|
260
|
+
_context3.next = 2;
|
|
235
261
|
break;
|
|
236
262
|
}
|
|
237
|
-
|
|
238
|
-
return
|
|
263
|
+
_context3.next = 2;
|
|
264
|
+
return _this5._decryptContent(resultData);
|
|
239
265
|
case 2:
|
|
240
|
-
|
|
266
|
+
_context3.next = 4;
|
|
241
267
|
break;
|
|
242
268
|
case 3:
|
|
243
|
-
|
|
244
|
-
_t2 =
|
|
269
|
+
_context3.prev = 3;
|
|
270
|
+
_t2 = _context3["catch"](1);
|
|
245
271
|
decryptErrorMessage = _t2.message;
|
|
246
272
|
case 4:
|
|
247
|
-
|
|
273
|
+
_this5.trigger(streamEventName, (0, _lodash.merge)({}, data.response, {
|
|
248
274
|
responseType: responseType,
|
|
249
275
|
requestId: requestId,
|
|
250
276
|
finished: data.finished,
|
|
@@ -253,15 +279,15 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
253
279
|
}));
|
|
254
280
|
case 5:
|
|
255
281
|
case "end":
|
|
256
|
-
return
|
|
282
|
+
return _context3.stop();
|
|
257
283
|
}
|
|
258
|
-
},
|
|
284
|
+
}, _callee3, null, [[1, 3]]);
|
|
259
285
|
}));
|
|
260
286
|
return function (_x) {
|
|
261
287
|
return _ref.apply(this, arguments);
|
|
262
288
|
};
|
|
263
289
|
}());
|
|
264
|
-
|
|
290
|
+
_this5.webex.request({
|
|
265
291
|
service: _constants.AI_ASSISTANT_SERVICE_NAME,
|
|
266
292
|
resource: resource,
|
|
267
293
|
method: 'POST',
|
|
@@ -301,24 +327,24 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
301
327
|
* @memberof AIAssistant
|
|
302
328
|
*/
|
|
303
329
|
makeAiAssistantRequest: function makeAiAssistantRequest(options) {
|
|
304
|
-
var
|
|
305
|
-
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function
|
|
330
|
+
var _this6 = this;
|
|
331
|
+
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
306
332
|
var value, content, headers;
|
|
307
|
-
return _regenerator.default.wrap(function (
|
|
308
|
-
while (1) switch (
|
|
333
|
+
return _regenerator.default.wrap(function (_context4) {
|
|
334
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
309
335
|
case 0:
|
|
310
336
|
value = options.contentValue;
|
|
311
337
|
if (!(options.contentType === 'message')) {
|
|
312
|
-
|
|
338
|
+
_context4.next = 2;
|
|
313
339
|
break;
|
|
314
340
|
}
|
|
315
|
-
|
|
316
|
-
return
|
|
341
|
+
_context4.next = 1;
|
|
342
|
+
return _this6._encryptData({
|
|
317
343
|
text: options.contentValue,
|
|
318
344
|
encryptionKeyUrl: options.encryptionKeyUrl
|
|
319
345
|
});
|
|
320
346
|
case 1:
|
|
321
|
-
value =
|
|
347
|
+
value = _context4.sent;
|
|
322
348
|
case 2:
|
|
323
349
|
content = {
|
|
324
350
|
context: {
|
|
@@ -335,7 +361,7 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
335
361
|
if (options.renderProtocolVersion) {
|
|
336
362
|
headers['AI-Assistant-Render-Protocol'] = options.renderProtocolVersion;
|
|
337
363
|
}
|
|
338
|
-
return
|
|
364
|
+
return _context4.abrupt("return", _this6._request(_objectSpread(_objectSpread({
|
|
339
365
|
resource: options.sessionId ? "sessions/".concat(options.sessionId, "/messages") : 'sessions/messages',
|
|
340
366
|
params: _objectSpread(_objectSpread({
|
|
341
367
|
async: 'chunked',
|
|
@@ -353,9 +379,9 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
353
379
|
})));
|
|
354
380
|
case 3:
|
|
355
381
|
case "end":
|
|
356
|
-
return
|
|
382
|
+
return _context4.stop();
|
|
357
383
|
}
|
|
358
|
-
},
|
|
384
|
+
}, _callee4);
|
|
359
385
|
}))();
|
|
360
386
|
},
|
|
361
387
|
/**
|
|
@@ -434,23 +460,23 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
434
460
|
* @returns {Promise<string>} returns a promise that resolves with the encrypted text
|
|
435
461
|
*/
|
|
436
462
|
_encryptData: function _encryptData(_ref3) {
|
|
437
|
-
var
|
|
438
|
-
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function
|
|
463
|
+
var _this7 = this;
|
|
464
|
+
return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
439
465
|
var text, encryptionKeyUrl, result;
|
|
440
|
-
return _regenerator.default.wrap(function (
|
|
441
|
-
while (1) switch (
|
|
466
|
+
return _regenerator.default.wrap(function (_context5) {
|
|
467
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
442
468
|
case 0:
|
|
443
469
|
text = _ref3.text, encryptionKeyUrl = _ref3.encryptionKeyUrl;
|
|
444
|
-
|
|
445
|
-
return
|
|
470
|
+
_context5.next = 1;
|
|
471
|
+
return _this7.webex.internal.encryption.encryptText(encryptionKeyUrl, text);
|
|
446
472
|
case 1:
|
|
447
|
-
result =
|
|
448
|
-
return
|
|
473
|
+
result = _context5.sent;
|
|
474
|
+
return _context5.abrupt("return", result);
|
|
449
475
|
case 2:
|
|
450
476
|
case "end":
|
|
451
|
-
return
|
|
477
|
+
return _context5.stop();
|
|
452
478
|
}
|
|
453
|
-
},
|
|
479
|
+
}, _callee5);
|
|
454
480
|
}))();
|
|
455
481
|
},
|
|
456
482
|
/**
|
|
@@ -475,7 +501,7 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
475
501
|
contentValue: options.question
|
|
476
502
|
}));
|
|
477
503
|
},
|
|
478
|
-
version: "3.11.0-next.
|
|
504
|
+
version: "3.11.0-next.9"
|
|
479
505
|
});
|
|
480
506
|
var _default = exports.default = AIAssistant;
|
|
481
507
|
//# 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","_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","stopListeningForEvents","AI_ASSISTANT_UNREGISTERED","_this2","on","ASSISTANT_API_RESPONSE_EVENT","envelope","_handleEvent","data","off","_getResultEventName","requestId","AI_ASSISTANT_RESULT","_getStreamEventName","AI_ASSISTANT_STREAM","clientRequestId","_decryptContent","responseContent","_this3","_asyncToGenerator2","_regenerator","mark","_callee","_t","wrap","_context","prev","next","name","RESPONSE_NAMES","MESSAGE","CITED_ANSWER","SCHEDULE_MEETING","TOOL_RESULT","TOOL_USE","WORKSPACE","decryptMessage","abrupt","decryptCitedAnswer","decryptScheduleMeeting","decryptToolUse","decryptWorkspace","stop","_request","options","_this4","resource","params","headers","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","_t2","_context2","reset","get","cancel","merge","response","_x","request","service","AI_ASSISTANT_SERVICE_NAME","method","contentType","body","_ref2","start","makeAiAssistantRequest","_this5","_callee3","value","content","_context3","contentValue","_encryptData","text","encryptionKeyUrl","sent","context","resources","contextResources","type","parameters","renderProtocolVersion","sessionId","async","locale","entryPoint","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","_this6","_callee4","result","_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 AiAssistantRequestOptions,\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 {\n decryptCitedAnswer,\n decryptMessage,\n decryptScheduleMeeting,\n decryptToolUse,\n decryptWorkspace,\n} 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 this.trigger(AI_ASSISTANT_UNREGISTERED);\n this.registered = false;\n\n return Promise.resolve();\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.SCHEDULE_MEETING: {\n await decryptScheduleMeeting(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 case RESPONSE_NAMES.WORKSPACE: {\n await decryptWorkspace(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, headers} = options;\n\n const timeout = this.config.requestTimeout;\n const requestId = options.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 headers,\n })\n .then(({body}) => {\n resolve({...body, requestId, streamEventName});\n })\n .catch((error) => {\n reject(error);\n });\n\n timer.start();\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @param {string} options.entryPoint optional entryPoint to use for this request\n * @param {string} options.renderProtocolVersion optional render protocol version to use for this request\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n * @public\n * @memberof AIAssistant\n */\n async makeAiAssistantRequest(options: AiAssistantRequestOptions): 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 const headers = {};\n\n if (options.renderProtocolVersion) {\n headers['AI-Assistant-Render-Protocol'] = options.renderProtocolVersion;\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.entryPoint ? {entryPoint: options.entryPoint} : {}),\n ...(options.assistant ? {assistant: options.assistant} : {}),\n },\n ...(options.requestId ? {requestId: options.requestId} : {}),\n headers,\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n summarizeMeeting(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this.makeAiAssistantRequest({\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n wasMyNameMentioned(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this.makeAiAssistantRequest({\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n showAllActionItems(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this.makeAiAssistantRequest({\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\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.makeAiAssistantRequest({\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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","ignoreList":[]}
|
|
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","stopListeningForEvents","AI_ASSISTANT_UNREGISTERED","_this2","on","ASSISTANT_API_RESPONSE_EVENT","envelope","_handleEvent","data","ASSISTANT_API_ACTIVITY","_handleAssistantActivity","off","_getResultEventName","requestId","AI_ASSISTANT_RESULT","_getStreamEventName","AI_ASSISTANT_STREAM","clientRequestId","_this3","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","decryptAssistantActivity","activity","AI_ASSISTANT_ACTIVITY_RECEIVED","stop","_decryptContent","responseContent","_this4","_callee2","_t","_context2","name","RESPONSE_NAMES","MESSAGE","CITED_ANSWER","SCHEDULE_MEETING","TOOL_RESULT","TOOL_USE","WORKSPACE","decryptMessage","abrupt","decryptCitedAnswer","decryptScheduleMeeting","decryptToolUse","decryptWorkspace","_request","options","_this5","resource","params","headers","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","_callee3","resultData","responseType","decryptErrorMessage","_t2","_context3","reset","get","cancel","merge","response","_x","request","service","AI_ASSISTANT_SERVICE_NAME","method","contentType","body","_ref2","start","makeAiAssistantRequest","_this6","_callee4","value","content","_context4","contentValue","_encryptData","text","encryptionKeyUrl","sent","context","resources","contextResources","type","parameters","renderProtocolVersion","sessionId","async","locale","entryPoint","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","_callee5","result","_context5","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 AiAssistantRequestOptions,\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 ASSISTANT_API_ACTIVITY,\n ACTION_TYPES,\n CONTENT_TYPES,\n CONTEXT_RESOURCE_TYPES,\n RESPONSE_NAMES,\n AI_ASSISTANT_ACTIVITY_RECEIVED,\n} from './constants';\nimport {\n decryptAssistantActivity,\n decryptCitedAnswer,\n decryptMessage,\n decryptScheduleMeeting,\n decryptToolUse,\n decryptWorkspace,\n} 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 this.trigger(AI_ASSISTANT_UNREGISTERED);\n this.registered = false;\n\n return Promise.resolve();\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 this.webex.internal.mercury.on(ASSISTANT_API_ACTIVITY, (envelope) => {\n this._handleAssistantActivity(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 this.webex.internal.mercury.off(ASSISTANT_API_ACTIVITY);\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 * Handles an incoming activity event from the assistant API and triggers the correct event for consumers to listen to\n * @param {Object} data the event data\n * @returns {undefined}\n */\n async _handleAssistantActivity(data) {\n await decryptAssistantActivity(data.activity, this.webex);\n\n this.trigger(AI_ASSISTANT_ACTIVITY_RECEIVED, 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.SCHEDULE_MEETING: {\n await decryptScheduleMeeting(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 case RESPONSE_NAMES.WORKSPACE: {\n await decryptWorkspace(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, headers} = options;\n\n const timeout = this.config.requestTimeout;\n const requestId = options.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 headers,\n })\n .then(({body}) => {\n resolve({...body, requestId, streamEventName});\n })\n .catch((error) => {\n reject(error);\n });\n\n timer.start();\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @param {string} options.entryPoint optional entryPoint to use for this request\n * @param {string} options.renderProtocolVersion optional render protocol version to use for this request\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n * @public\n * @memberof AIAssistant\n */\n async makeAiAssistantRequest(options: AiAssistantRequestOptions): 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 const headers = {};\n\n if (options.renderProtocolVersion) {\n headers['AI-Assistant-Render-Protocol'] = options.renderProtocolVersion;\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.entryPoint ? {entryPoint: options.entryPoint} : {}),\n ...(options.assistant ? {assistant: options.assistant} : {}),\n },\n ...(options.requestId ? {requestId: options.requestId} : {}),\n headers,\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n summarizeMeeting(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this.makeAiAssistantRequest({\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n wasMyNameMentioned(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this.makeAiAssistantRequest({\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\n * @returns {Promise<Object>} Resolves with an object containing the requestId, sessionId and streamEventName\n */\n showAllActionItems(options: SummarizeMeetingOptions): Promise<RequestResponse> {\n return this.makeAiAssistantRequest({\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 * @param {string} options.requestId optional request ID to use for this request, if not provided a new UUID will be generated\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.makeAiAssistantRequest({\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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","ignoreList":[]}
|
package/dist/constants.js
CHANGED
|
@@ -4,12 +4,14 @@ 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.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;
|
|
7
|
+
exports.RESPONSE_NAMES = exports.CONTEXT_RESOURCE_TYPES = exports.CONTENT_TYPES = exports.ASSISTANT_API_RESPONSE_EVENT = exports.ASSISTANT_API_ACTIVITY = 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.AI_ASSISTANT_ACTIVITY_RECEIVED = 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';
|
|
11
|
+
var ASSISTANT_API_ACTIVITY = exports.ASSISTANT_API_ACTIVITY = 'assistant-api.activity';
|
|
11
12
|
var AI_ASSISTANT_SERVICE_NAME = exports.AI_ASSISTANT_SERVICE_NAME = 'assistant-api';
|
|
12
13
|
var AI_ASSISTANT_RESULT = exports.AI_ASSISTANT_RESULT = 'aiassistant:result';
|
|
14
|
+
var AI_ASSISTANT_ACTIVITY_RECEIVED = exports.AI_ASSISTANT_ACTIVITY_RECEIVED = 'aiassistant:activityReceived';
|
|
13
15
|
var AI_ASSISTANT_STREAM = exports.AI_ASSISTANT_STREAM = 'aiassistant:stream';
|
|
14
16
|
var AI_ASSISTANT_ERRORS = exports.AI_ASSISTANT_ERRORS = /*#__PURE__*/function (AI_ASSISTANT_ERRORS) {
|
|
15
17
|
AI_ASSISTANT_ERRORS["NOT_ENOUGH_CONTENT"] = "NO_ENOUGH_MEETING_TRANSCRIPT";
|
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","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 WORKSPACE = 'workspace',\n SCHEDULE_MEETING = 'schedule_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,
|
|
1
|
+
{"version":3,"names":["AI_ASSISTANT_REGISTERED","exports","AI_ASSISTANT_UNREGISTERED","ASSISTANT_API_RESPONSE_EVENT","ASSISTANT_API_ACTIVITY","AI_ASSISTANT_SERVICE_NAME","AI_ASSISTANT_RESULT","AI_ASSISTANT_ACTIVITY_RECEIVED","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 ASSISTANT_API_ACTIVITY = 'assistant-api.activity';\nexport const AI_ASSISTANT_SERVICE_NAME = 'assistant-api';\nexport const AI_ASSISTANT_RESULT = 'aiassistant:result';\nexport const AI_ASSISTANT_ACTIVITY_RECEIVED = 'aiassistant:activityReceived';\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 WORKSPACE = 'workspace',\n SCHEDULE_MEETING = 'schedule_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,sBAAsB,GAAAH,OAAA,CAAAG,sBAAA,GAAG,wBAAwB;AACvD,IAAMC,yBAAyB,GAAAJ,OAAA,CAAAI,yBAAA,GAAG,eAAe;AACjD,IAAMC,mBAAmB,GAAAL,OAAA,CAAAK,mBAAA,GAAG,oBAAoB;AAChD,IAAMC,8BAA8B,GAAAN,OAAA,CAAAM,8BAAA,GAAG,8BAA8B;AACrE,IAAMC,mBAAmB,GAAAP,OAAA,CAAAO,mBAAA,GAAG,oBAAoB;AAAC,IAE5CC,mBAAmB,GAAAR,OAAA,CAAAQ,mBAAA,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB,mDAGkB;EAAA,OAHrCA,mBAAmB;AAAA;AAAA,IAMnBC,wBAAwB,GAAAT,OAAA,CAAAS,wBAAA,0BAAxBA,wBAAwB;EAAxBA,wBAAwB,CAAxBA,wBAAwB;EACL;EADnBA,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,GAAAV,OAAA,CAAAU,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AAAA,IAMZC,aAAa,GAAAX,OAAA,CAAAW,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAA,IAKbC,sBAAsB,GAAAZ,OAAA,CAAAY,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAItBC,cAAc,GAAAb,OAAA,CAAAa,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA","ignoreList":[]}
|
package/dist/utils.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
|
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.decryptWorkspace = exports.decryptToolUse = exports.decryptScheduleMeeting = exports.decryptMessage = exports.decryptCitedAnswer = void 0;
|
|
8
|
+
exports.decryptWorkspace = exports.decryptToolUse = exports.decryptScheduleMeeting = exports.decryptMessage = exports.decryptCitedAnswer = exports.decryptAssistantActivity = void 0;
|
|
9
9
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
11
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
@@ -152,4 +152,21 @@ var decryptWorkspace = exports.decryptWorkspace = /*#__PURE__*/function () {
|
|
|
152
152
|
return _ref6.apply(this, arguments);
|
|
153
153
|
};
|
|
154
154
|
}();
|
|
155
|
+
var decryptAssistantActivity = exports.decryptAssistantActivity = /*#__PURE__*/function () {
|
|
156
|
+
var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(data, webex) {
|
|
157
|
+
return _regenerator.default.wrap(function (_context7) {
|
|
158
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
159
|
+
case 0:
|
|
160
|
+
_context7.next = 1;
|
|
161
|
+
return decryptInPlace(data, 'content.value.message', 'encryptionKeyUrl', webex);
|
|
162
|
+
case 1:
|
|
163
|
+
case "end":
|
|
164
|
+
return _context7.stop();
|
|
165
|
+
}
|
|
166
|
+
}, _callee7);
|
|
167
|
+
}));
|
|
168
|
+
return function decryptAssistantActivity(_x13, _x14) {
|
|
169
|
+
return _ref7.apply(this, arguments);
|
|
170
|
+
};
|
|
171
|
+
}();
|
|
155
172
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","decryptInPlace","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","item","valuePath","keyPath","webex","encryptedValue","encryptionKeyUrl","decryptedValue","wrap","_context","prev","next","get","abrupt","internal","encryption","decryptText","sent","set","stop","_x","_x2","_x3","_x4","apply","arguments","decryptToolUse","exports","_ref2","_callee2","data","_context2","_x5","_x6","decryptCitedAnswer","_ref3","_callee3","_context3","value","citations","_promise","all","map","citation","index","concat","_x7","_x8","decryptScheduleMeeting","_ref4","_callee4","_data$value","_data$value$results","meetingData","_context4","results","attendees","attendee","_x9","_x0","decryptMessage","_ref5","_callee5","_context5","_x1","_x10","decryptWorkspace","_ref6","_callee6","_context6","_x11","_x12"],"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 if (!encryptedValue || !encryptionKeyUrl) {\n return;\n }\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 if (data.value.citations) {\n await Promise.all(\n data.value.citations.map((citation, index) => {\n return decryptInPlace(data, `value.citations.${index}.name`, 'encryptionKeyUrl', webex);\n })\n );\n }\n\n await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);\n};\nexport const decryptScheduleMeeting = async (data, webex) => {\n // Decrypt commentary in parameters\n await decryptInPlace(data, 'parameters.commentary', 'encryptionKeyUrl', webex);\n\n const meetingData = data.value?.results?.data;\n if (meetingData) {\n // Decrypt attendee emails\n if (meetingData.attendees) {\n await Promise.all(\n meetingData.attendees.map((attendee, index) => {\n return decryptInPlace(\n data,\n `value.results.data.attendees.${index}.email`,\n 'encryptionKeyUrl',\n webex\n );\n })\n );\n }\n\n // Decrypt other fields in the meeting data\n await Promise.all([\n decryptInPlace(data, 'value.results.data.title', 'encryptionKeyUrl', webex),\n decryptInPlace(data, 'value.results.data.inScopeReply', 'encryptionKeyUrl', webex),\n decryptInPlace(data, 'value.results.data.meetingLink', 'encryptionKeyUrl', webex),\n decryptInPlace(data, 'value.results.data.description', 'encryptionKeyUrl', webex),\n ]);\n }\n};\n\nexport const decryptMessage = async (data, webex) => {\n await decryptInPlace(data, 'value', 'encryptionKeyUrl', webex);\n};\n\nexport const decryptWorkspace = async (data, webex) => {\n await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lodash","require","decryptInPlace","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","item","valuePath","keyPath","webex","encryptedValue","encryptionKeyUrl","decryptedValue","wrap","_context","prev","next","get","abrupt","internal","encryption","decryptText","sent","set","stop","_x","_x2","_x3","_x4","apply","arguments","decryptToolUse","exports","_ref2","_callee2","data","_context2","_x5","_x6","decryptCitedAnswer","_ref3","_callee3","_context3","value","citations","_promise","all","map","citation","index","concat","_x7","_x8","decryptScheduleMeeting","_ref4","_callee4","_data$value","_data$value$results","meetingData","_context4","results","attendees","attendee","_x9","_x0","decryptMessage","_ref5","_callee5","_context5","_x1","_x10","decryptWorkspace","_ref6","_callee6","_context6","_x11","_x12","decryptAssistantActivity","_ref7","_callee7","_context7","_x13","_x14"],"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 if (!encryptedValue || !encryptionKeyUrl) {\n return;\n }\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 if (data.value.citations) {\n await Promise.all(\n data.value.citations.map((citation, index) => {\n return decryptInPlace(data, `value.citations.${index}.name`, 'encryptionKeyUrl', webex);\n })\n );\n }\n\n await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);\n};\nexport const decryptScheduleMeeting = async (data, webex) => {\n // Decrypt commentary in parameters\n await decryptInPlace(data, 'parameters.commentary', 'encryptionKeyUrl', webex);\n\n const meetingData = data.value?.results?.data;\n if (meetingData) {\n // Decrypt attendee emails\n if (meetingData.attendees) {\n await Promise.all(\n meetingData.attendees.map((attendee, index) => {\n return decryptInPlace(\n data,\n `value.results.data.attendees.${index}.email`,\n 'encryptionKeyUrl',\n webex\n );\n })\n );\n }\n\n // Decrypt other fields in the meeting data\n await Promise.all([\n decryptInPlace(data, 'value.results.data.title', 'encryptionKeyUrl', webex),\n decryptInPlace(data, 'value.results.data.inScopeReply', 'encryptionKeyUrl', webex),\n decryptInPlace(data, 'value.results.data.meetingLink', 'encryptionKeyUrl', webex),\n decryptInPlace(data, 'value.results.data.description', 'encryptionKeyUrl', webex),\n ]);\n }\n};\n\nexport const decryptMessage = async (data, webex) => {\n await decryptInPlace(data, 'value', 'encryptionKeyUrl', webex);\n};\n\nexport const decryptWorkspace = async (data, webex) => {\n await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);\n};\n\nexport const decryptAssistantActivity = async (data, webex) => {\n await decryptInPlace(data, 'content.value.message', 'encryptionKeyUrl', webex);\n};\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAMC,cAAc;EAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QAAOC,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAEC,KAAK;IAAA,IAAAC,cAAA,EAAAC,gBAAA,EAAAC,cAAA;IAAA,OAAAT,YAAA,CAAAD,OAAA,CAAAW,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACrDN,cAAc,GAAG,IAAAO,WAAG,EAACX,IAAI,EAAEC,SAAS,CAAC;UACrCI,gBAAgB,GAAG,IAAAM,WAAG,EAACX,IAAI,EAAEE,OAAO,CAAC;UAAA,MAEvC,CAACE,cAAc,IAAI,CAACC,gBAAgB;YAAAG,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,OAAAF,QAAA,CAAAI,MAAA;QAAA;UAAAJ,QAAA,CAAAE,IAAA;UAAA,OAIXP,KAAK,CAACU,QAAQ,CAACC,UAAU,CAACC,WAAW,CAChEV,gBAAgB,EAChBD,cACF,CAAC;QAAA;UAHKE,cAAc,GAAAE,QAAA,CAAAQ,IAAA;UAKpB,IAAAC,WAAG,EAACjB,IAAI,EAAEC,SAAS,EAAEK,cAAc,CAAC;QAAC;QAAA;UAAA,OAAAE,QAAA,CAAAU,IAAA;MAAA;IAAA,GAAAnB,OAAA;EAAA,CACtC;EAAA,gBAdKN,cAAcA,CAAA0B,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAA5B,IAAA,CAAA6B,KAAA,OAAAC,SAAA;EAAA;AAAA,GAcnB;AAEM,IAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA;EAAA,IAAAE,KAAA,OAAAhC,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAA8B,SAAOC,IAAI,EAAE1B,KAAK;IAAA,OAAAN,YAAA,CAAAD,OAAA,CAAAW,IAAA,WAAAuB,SAAA;MAAA,kBAAAA,SAAA,CAAArB,IAAA,GAAAqB,SAAA,CAAApB,IAAA;QAAA;UAAAoB,SAAA,CAAApB,IAAA;UAAA,OACxCjB,cAAc,CAACoC,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE1B,KAAK,CAAC;QAAA;QAAA;UAAA,OAAA2B,SAAA,CAAAZ,IAAA;MAAA;IAAA,GAAAU,QAAA;EAAA,CACrE;EAAA,gBAFYH,cAAcA,CAAAM,GAAA,EAAAC,GAAA;IAAA,OAAAL,KAAA,CAAAJ,KAAA,OAAAC,SAAA;EAAA;AAAA,GAE1B;AAEM,IAAMS,kBAAkB,GAAAP,OAAA,CAAAO,kBAAA;EAAA,IAAAC,KAAA,OAAAvC,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAqC,SAAON,IAAI,EAAE1B,KAAK;IAAA,OAAAN,YAAA,CAAAD,OAAA,CAAAW,IAAA,WAAA6B,SAAA;MAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAA1B,IAAA;QAAA;UAAA,KAC9CmB,IAAI,CAACQ,KAAK,CAACC,SAAS;YAAAF,SAAA,CAAA1B,IAAA;YAAA;UAAA;UAAA0B,SAAA,CAAA1B,IAAA;UAAA,OAChB6B,QAAA,CAAA3C,OAAA,CAAQ4C,GAAG,CACfX,IAAI,CAACQ,KAAK,CAACC,SAAS,CAACG,GAAG,CAAC,UAACC,QAAQ,EAAEC,KAAK,EAAK;YAC5C,OAAOlD,cAAc,CAACoC,IAAI,qBAAAe,MAAA,CAAqBD,KAAK,YAAS,kBAAkB,EAAExC,KAAK,CAAC;UACzF,CAAC,CACH,CAAC;QAAA;UAAAiC,SAAA,CAAA1B,IAAA;UAAA,OAGGjB,cAAc,CAACoC,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE1B,KAAK,CAAC;QAAA;QAAA;UAAA,OAAAiC,SAAA,CAAAlB,IAAA;MAAA;IAAA,GAAAiB,QAAA;EAAA,CACrE;EAAA,gBAVYF,kBAAkBA,CAAAY,GAAA,EAAAC,GAAA;IAAA,OAAAZ,KAAA,CAAAX,KAAA,OAAAC,SAAA;EAAA;AAAA,GAU9B;AACM,IAAMuB,sBAAsB,GAAArB,OAAA,CAAAqB,sBAAA;EAAA,IAAAC,KAAA,OAAArD,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAmD,SAAOpB,IAAI,EAAE1B,KAAK;IAAA,IAAA+C,WAAA,EAAAC,mBAAA;IAAA,IAAAC,WAAA;IAAA,OAAAvD,YAAA,CAAAD,OAAA,CAAAW,IAAA,WAAA8C,SAAA;MAAA,kBAAAA,SAAA,CAAA5C,IAAA,GAAA4C,SAAA,CAAA3C,IAAA;QAAA;UAAA2C,SAAA,CAAA3C,IAAA;UAAA,OAEhDjB,cAAc,CAACoC,IAAI,EAAE,uBAAuB,EAAE,kBAAkB,EAAE1B,KAAK,CAAC;QAAA;UAExEiD,WAAW,IAAAF,WAAA,GAAGrB,IAAI,CAACQ,KAAK,cAAAa,WAAA,wBAAAC,mBAAA,GAAVD,WAAA,CAAYI,OAAO,cAAAH,mBAAA,uBAAnBA,mBAAA,CAAqBtB,IAAI;UAAA,KACzCuB,WAAW;YAAAC,SAAA,CAAA3C,IAAA;YAAA;UAAA;UAAA,KAET0C,WAAW,CAACG,SAAS;YAAAF,SAAA,CAAA3C,IAAA;YAAA;UAAA;UAAA2C,SAAA,CAAA3C,IAAA;UAAA,OACjB6B,QAAA,CAAA3C,OAAA,CAAQ4C,GAAG,CACfY,WAAW,CAACG,SAAS,CAACd,GAAG,CAAC,UAACe,QAAQ,EAAEb,KAAK,EAAK;YAC7C,OAAOlD,cAAc,CACnBoC,IAAI,kCAAAe,MAAA,CAC4BD,KAAK,aACrC,kBAAkB,EAClBxC,KACF,CAAC;UACH,CAAC,CACH,CAAC;QAAA;UAAAkD,SAAA,CAAA3C,IAAA;UAAA,OAIG6B,QAAA,CAAA3C,OAAA,CAAQ4C,GAAG,CAAC,CAChB/C,cAAc,CAACoC,IAAI,EAAE,0BAA0B,EAAE,kBAAkB,EAAE1B,KAAK,CAAC,EAC3EV,cAAc,CAACoC,IAAI,EAAE,iCAAiC,EAAE,kBAAkB,EAAE1B,KAAK,CAAC,EAClFV,cAAc,CAACoC,IAAI,EAAE,gCAAgC,EAAE,kBAAkB,EAAE1B,KAAK,CAAC,EACjFV,cAAc,CAACoC,IAAI,EAAE,gCAAgC,EAAE,kBAAkB,EAAE1B,KAAK,CAAC,CAClF,CAAC;QAAA;QAAA;UAAA,OAAAkD,SAAA,CAAAnC,IAAA;MAAA;IAAA,GAAA+B,QAAA;EAAA,CAEL;EAAA,gBA5BYF,sBAAsBA,CAAAU,GAAA,EAAAC,GAAA;IAAA,OAAAV,KAAA,CAAAzB,KAAA,OAAAC,SAAA;EAAA;AAAA,GA4BlC;AAEM,IAAMmC,cAAc,GAAAjC,OAAA,CAAAiC,cAAA;EAAA,IAAAC,KAAA,OAAAjE,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAA+D,SAAOhC,IAAI,EAAE1B,KAAK;IAAA,OAAAN,YAAA,CAAAD,OAAA,CAAAW,IAAA,WAAAuD,SAAA;MAAA,kBAAAA,SAAA,CAAArD,IAAA,GAAAqD,SAAA,CAAApD,IAAA;QAAA;UAAAoD,SAAA,CAAApD,IAAA;UAAA,OACxCjB,cAAc,CAACoC,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE1B,KAAK,CAAC;QAAA;QAAA;UAAA,OAAA2D,SAAA,CAAA5C,IAAA;MAAA;IAAA,GAAA2C,QAAA;EAAA,CAC/D;EAAA,gBAFYF,cAAcA,CAAAI,GAAA,EAAAC,IAAA;IAAA,OAAAJ,KAAA,CAAArC,KAAA,OAAAC,SAAA;EAAA;AAAA,GAE1B;AAEM,IAAMyC,gBAAgB,GAAAvC,OAAA,CAAAuC,gBAAA;EAAA,IAAAC,KAAA,OAAAvE,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAqE,SAAOtC,IAAI,EAAE1B,KAAK;IAAA,OAAAN,YAAA,CAAAD,OAAA,CAAAW,IAAA,WAAA6D,SAAA;MAAA,kBAAAA,SAAA,CAAA3D,IAAA,GAAA2D,SAAA,CAAA1D,IAAA;QAAA;UAAA0D,SAAA,CAAA1D,IAAA;UAAA,OAC1CjB,cAAc,CAACoC,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE1B,KAAK,CAAC;QAAA;QAAA;UAAA,OAAAiE,SAAA,CAAAlD,IAAA;MAAA;IAAA,GAAAiD,QAAA;EAAA,CACrE;EAAA,gBAFYF,gBAAgBA,CAAAI,IAAA,EAAAC,IAAA;IAAA,OAAAJ,KAAA,CAAA3C,KAAA,OAAAC,SAAA;EAAA;AAAA,GAE5B;AAEM,IAAM+C,wBAAwB,GAAA7C,OAAA,CAAA6C,wBAAA;EAAA,IAAAC,KAAA,OAAA7E,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAA2E,SAAO5C,IAAI,EAAE1B,KAAK;IAAA,OAAAN,YAAA,CAAAD,OAAA,CAAAW,IAAA,WAAAmE,SAAA;MAAA,kBAAAA,SAAA,CAAAjE,IAAA,GAAAiE,SAAA,CAAAhE,IAAA;QAAA;UAAAgE,SAAA,CAAAhE,IAAA;UAAA,OAClDjB,cAAc,CAACoC,IAAI,EAAE,uBAAuB,EAAE,kBAAkB,EAAE1B,KAAK,CAAC;QAAA;QAAA;UAAA,OAAAuE,SAAA,CAAAxD,IAAA;MAAA;IAAA,GAAAuD,QAAA;EAAA,CAC/E;EAAA,gBAFYF,wBAAwBA,CAAAI,IAAA,EAAAC,IAAA;IAAA,OAAAJ,KAAA,CAAAjD,KAAA,OAAAC,SAAA;EAAA;AAAA,GAEpC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@webex/common": "3.11.0-next.1",
|
|
24
24
|
"@webex/common-timers": "3.11.0-next.1",
|
|
25
|
-
"@webex/internal-plugin-mercury": "3.11.0-next.
|
|
26
|
-
"@webex/webex-core": "3.11.0-next.
|
|
25
|
+
"@webex/internal-plugin-mercury": "3.11.0-next.6",
|
|
26
|
+
"@webex/webex-core": "3.11.0-next.5",
|
|
27
27
|
"lodash": "^4.17.21",
|
|
28
28
|
"uuid": "^3.3.2"
|
|
29
29
|
},
|
|
@@ -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": "3.11.0-next.
|
|
52
|
+
"version": "3.11.0-next.9"
|
|
53
53
|
}
|
package/src/ai-assistant.ts
CHANGED
|
@@ -22,12 +22,15 @@ import {
|
|
|
22
22
|
AI_ASSISTANT_UNREGISTERED,
|
|
23
23
|
AI_ASSISTANT_SERVICE_NAME,
|
|
24
24
|
ASSISTANT_API_RESPONSE_EVENT,
|
|
25
|
+
ASSISTANT_API_ACTIVITY,
|
|
25
26
|
ACTION_TYPES,
|
|
26
27
|
CONTENT_TYPES,
|
|
27
28
|
CONTEXT_RESOURCE_TYPES,
|
|
28
29
|
RESPONSE_NAMES,
|
|
30
|
+
AI_ASSISTANT_ACTIVITY_RECEIVED,
|
|
29
31
|
} from './constants';
|
|
30
32
|
import {
|
|
33
|
+
decryptAssistantActivity,
|
|
31
34
|
decryptCitedAnswer,
|
|
32
35
|
decryptMessage,
|
|
33
36
|
decryptScheduleMeeting,
|
|
@@ -120,6 +123,10 @@ const AIAssistant = WebexPlugin.extend({
|
|
|
120
123
|
this.webex.internal.mercury.on(ASSISTANT_API_RESPONSE_EVENT, (envelope) => {
|
|
121
124
|
this._handleEvent(envelope.data);
|
|
122
125
|
});
|
|
126
|
+
|
|
127
|
+
this.webex.internal.mercury.on(ASSISTANT_API_ACTIVITY, (envelope) => {
|
|
128
|
+
this._handleAssistantActivity(envelope.data);
|
|
129
|
+
});
|
|
123
130
|
},
|
|
124
131
|
|
|
125
132
|
/**
|
|
@@ -129,6 +136,7 @@ const AIAssistant = WebexPlugin.extend({
|
|
|
129
136
|
*/
|
|
130
137
|
stopListeningForEvents() {
|
|
131
138
|
this.webex.internal.mercury.off(ASSISTANT_API_RESPONSE_EVENT);
|
|
139
|
+
this.webex.internal.mercury.off(ASSISTANT_API_ACTIVITY);
|
|
132
140
|
},
|
|
133
141
|
|
|
134
142
|
/**
|
|
@@ -160,6 +168,17 @@ const AIAssistant = WebexPlugin.extend({
|
|
|
160
168
|
this.trigger(this._getResultEventName(data.clientRequestId), data);
|
|
161
169
|
},
|
|
162
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Handles an incoming activity event from the assistant API and triggers the correct event for consumers to listen to
|
|
173
|
+
* @param {Object} data the event data
|
|
174
|
+
* @returns {undefined}
|
|
175
|
+
*/
|
|
176
|
+
async _handleAssistantActivity(data) {
|
|
177
|
+
await decryptAssistantActivity(data.activity, this.webex);
|
|
178
|
+
|
|
179
|
+
this.trigger(AI_ASSISTANT_ACTIVITY_RECEIVED, data);
|
|
180
|
+
},
|
|
181
|
+
|
|
163
182
|
/**
|
|
164
183
|
* Decrypts the response content in place
|
|
165
184
|
* @param {any} responseContent the content object from the assistant-api response
|
package/src/constants.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export const AI_ASSISTANT_REGISTERED = 'aiassistant:registered';
|
|
2
2
|
export const AI_ASSISTANT_UNREGISTERED = 'aiassistant:unregistered';
|
|
3
3
|
export const ASSISTANT_API_RESPONSE_EVENT = 'event:assistant-api.response';
|
|
4
|
+
export const ASSISTANT_API_ACTIVITY = 'assistant-api.activity';
|
|
4
5
|
export const AI_ASSISTANT_SERVICE_NAME = 'assistant-api';
|
|
5
6
|
export const AI_ASSISTANT_RESULT = 'aiassistant:result';
|
|
7
|
+
export const AI_ASSISTANT_ACTIVITY_RECEIVED = 'aiassistant:activityReceived';
|
|
6
8
|
export const AI_ASSISTANT_STREAM = 'aiassistant:stream';
|
|
7
9
|
|
|
8
10
|
export enum AI_ASSISTANT_ERRORS {
|
package/src/utils.ts
CHANGED
|
@@ -68,3 +68,7 @@ export const decryptMessage = async (data, webex) => {
|
|
|
68
68
|
export const decryptWorkspace = async (data, webex) => {
|
|
69
69
|
await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);
|
|
70
70
|
};
|
|
71
|
+
|
|
72
|
+
export const decryptAssistantActivity = async (data, webex) => {
|
|
73
|
+
await decryptInPlace(data, 'content.value.message', 'encryptionKeyUrl', webex);
|
|
74
|
+
};
|
|
@@ -295,8 +295,7 @@ export const workspaceResponse = [
|
|
|
295
295
|
type: 'json',
|
|
296
296
|
encryptionKeyUrl: 'workspace_0_encryption_key_url',
|
|
297
297
|
value: {
|
|
298
|
-
value:
|
|
299
|
-
'workspace_0_encrypted_value',
|
|
298
|
+
value: 'workspace_0_encrypted_value',
|
|
300
299
|
type: 'markdown',
|
|
301
300
|
},
|
|
302
301
|
},
|
|
@@ -328,8 +327,7 @@ export const workspaceResponse = [
|
|
|
328
327
|
type: 'json',
|
|
329
328
|
encryptionKeyUrl: 'workspace_1_encryption_key_url',
|
|
330
329
|
value: {
|
|
331
|
-
value:
|
|
332
|
-
'workspace_1_encrypted_value',
|
|
330
|
+
value: 'workspace_1_encrypted_value',
|
|
333
331
|
type: 'markdown',
|
|
334
332
|
},
|
|
335
333
|
},
|
|
@@ -361,8 +359,7 @@ export const workspaceResponse = [
|
|
|
361
359
|
type: 'json',
|
|
362
360
|
encryptionKeyUrl: 'workspace_2_encryption_key_url',
|
|
363
361
|
value: {
|
|
364
|
-
value:
|
|
365
|
-
'workspace_2_encrypted_value',
|
|
362
|
+
value: 'workspace_2_encrypted_value',
|
|
366
363
|
type: 'markdown',
|
|
367
364
|
},
|
|
368
365
|
},
|
|
@@ -394,8 +391,7 @@ export const workspaceResponse = [
|
|
|
394
391
|
type: 'json',
|
|
395
392
|
encryptionKeyUrl: 'workspace_3_encryption_key_url',
|
|
396
393
|
value: {
|
|
397
|
-
value:
|
|
398
|
-
'workspace_3_encrypted_value',
|
|
394
|
+
value: 'workspace_3_encrypted_value',
|
|
399
395
|
type: 'markdown',
|
|
400
396
|
},
|
|
401
397
|
},
|
|
@@ -427,8 +423,7 @@ export const workspaceResponse = [
|
|
|
427
423
|
type: 'json',
|
|
428
424
|
encryptionKeyUrl: 'workspace_4_encryption_key_url',
|
|
429
425
|
value: {
|
|
430
|
-
value:
|
|
431
|
-
'workspace_4_encrypted_value',
|
|
426
|
+
value: 'workspace_4_encrypted_value',
|
|
432
427
|
type: 'markdown',
|
|
433
428
|
},
|
|
434
429
|
},
|
|
@@ -460,8 +455,7 @@ export const workspaceResponse = [
|
|
|
460
455
|
type: 'json',
|
|
461
456
|
encryptionKeyUrl: 'workspace_5_encryption_key_url',
|
|
462
457
|
value: {
|
|
463
|
-
value:
|
|
464
|
-
'workspace_5_encrypted_value',
|
|
458
|
+
value: 'workspace_5_encrypted_value',
|
|
465
459
|
type: 'markdown',
|
|
466
460
|
},
|
|
467
461
|
},
|
|
@@ -493,8 +487,7 @@ export const workspaceResponse = [
|
|
|
493
487
|
type: 'json',
|
|
494
488
|
encryptionKeyUrl: 'workspace_6_encryption_key_url',
|
|
495
489
|
value: {
|
|
496
|
-
value:
|
|
497
|
-
'workspace_6_encrypted_value',
|
|
490
|
+
value: 'workspace_6_encrypted_value',
|
|
498
491
|
type: 'markdown',
|
|
499
492
|
},
|
|
500
493
|
},
|
|
@@ -526,8 +519,7 @@ export const workspaceResponse = [
|
|
|
526
519
|
type: 'json',
|
|
527
520
|
encryptionKeyUrl: 'workspace_7_encryption_key_url',
|
|
528
521
|
value: {
|
|
529
|
-
value:
|
|
530
|
-
'workspace_7_encrypted_value',
|
|
522
|
+
value: 'workspace_7_encrypted_value',
|
|
531
523
|
type: 'markdown',
|
|
532
524
|
},
|
|
533
525
|
},
|
|
@@ -559,8 +551,7 @@ export const workspaceResponse = [
|
|
|
559
551
|
type: 'json',
|
|
560
552
|
encryptionKeyUrl: 'workspace_8_encryption_key_url',
|
|
561
553
|
value: {
|
|
562
|
-
value:
|
|
563
|
-
'workspace_8_encrypted_value',
|
|
554
|
+
value: 'workspace_8_encrypted_value',
|
|
564
555
|
type: 'markdown',
|
|
565
556
|
},
|
|
566
557
|
},
|
|
@@ -592,8 +583,7 @@ export const workspaceResponse = [
|
|
|
592
583
|
type: 'json',
|
|
593
584
|
encryptionKeyUrl: 'workspace_9_encryption_key_url',
|
|
594
585
|
value: {
|
|
595
|
-
value:
|
|
596
|
-
'workspace_9_encrypted_value',
|
|
586
|
+
value: 'workspace_9_encrypted_value',
|
|
597
587
|
type: 'markdown',
|
|
598
588
|
},
|
|
599
589
|
},
|
|
@@ -717,4 +707,39 @@ export const scheduleMeetingResponse = [
|
|
|
717
707
|
creator: {role: 'assistant'},
|
|
718
708
|
},
|
|
719
709
|
},
|
|
720
|
-
];
|
|
710
|
+
];
|
|
711
|
+
|
|
712
|
+
export const assistantActivity = [
|
|
713
|
+
{
|
|
714
|
+
eventType: 'assistant-api.activity',
|
|
715
|
+
sequence: 1,
|
|
716
|
+
finished: true,
|
|
717
|
+
clientRequestId: '',
|
|
718
|
+
responseId: '267533f0-566b-11f0-88f7-9bd287b85bcb',
|
|
719
|
+
responseType: 'activity',
|
|
720
|
+
activity: {
|
|
721
|
+
sessionId: '05779da0-566b-11f0-913c-035e874e536f',
|
|
722
|
+
sessionUrl:
|
|
723
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/05779da0-566b-11f0-913c-035e874e536f',
|
|
724
|
+
messageId: '2674e5d0-566b-11f0-88f7-9bd287b85bcb',
|
|
725
|
+
messageUrl:
|
|
726
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/05779da0-566b-11f0-913c-035e874e536f/messages/2674e5d0-566b-11f0-88f7-9bd287b85bcb',
|
|
727
|
+
responseId: '267533f0-566b-11f0-88f7-9bd287b85bcb',
|
|
728
|
+
responseUrl:
|
|
729
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/05779da0-566b-11f0-913c-035e874e536f/messages/267533f0-566b-11f0-88f7-9bd287b85bcb',
|
|
730
|
+
content: {
|
|
731
|
+
type: 'json',
|
|
732
|
+
name: 'alert_create_poll',
|
|
733
|
+
value: {
|
|
734
|
+
pollType: 'poll',
|
|
735
|
+
message: 'message_encrypted_value_for_activity',
|
|
736
|
+
},
|
|
737
|
+
},
|
|
738
|
+
encryptionKeyUrl: 'kms://kms-cisco.wbx2.com/keys/9b838423-f31b-49d5-a7c7-182572340a37',
|
|
739
|
+
createdAt: '2025-07-01T11:04:27.082430261Z',
|
|
740
|
+
creator: {
|
|
741
|
+
role: 'assistant',
|
|
742
|
+
},
|
|
743
|
+
},
|
|
744
|
+
},
|
|
745
|
+
];
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
messageResponse,
|
|
22
22
|
workspaceResponse,
|
|
23
23
|
scheduleMeetingResponse,
|
|
24
|
+
assistantActivity,
|
|
24
25
|
} from '../data/messages';
|
|
25
26
|
|
|
26
27
|
const waitForAsync = () =>
|
|
@@ -83,12 +84,15 @@ describe('plugin-ai-assistant', () => {
|
|
|
83
84
|
it('registers correctly', async () => {
|
|
84
85
|
await webex.internal.aiAssistant.register();
|
|
85
86
|
|
|
86
|
-
assert.callCount(webex.internal.mercury.on,
|
|
87
|
+
assert.callCount(webex.internal.mercury.on, 2);
|
|
87
88
|
|
|
88
|
-
const
|
|
89
|
+
const firstCallArgs = webex.internal.mercury.on.getCall(0).args;
|
|
90
|
+
expect(firstCallArgs[0]).to.equal('event:assistant-api.response');
|
|
91
|
+
expect(firstCallArgs[1]).to.be.a('function');
|
|
89
92
|
|
|
90
|
-
|
|
91
|
-
expect(
|
|
93
|
+
const secondCallArgs = webex.internal.mercury.on.getCall(1).args;
|
|
94
|
+
expect(secondCallArgs[0]).to.equal('assistant-api.activity');
|
|
95
|
+
expect(secondCallArgs[1]).to.be.a('function');
|
|
92
96
|
|
|
93
97
|
assert.equal(webex.internal.aiAssistant.registered, true);
|
|
94
98
|
});
|
|
@@ -120,11 +124,13 @@ describe('plugin-ai-assistant', () => {
|
|
|
120
124
|
|
|
121
125
|
await webex.internal.aiAssistant.unregister();
|
|
122
126
|
|
|
123
|
-
assert.callCount(webex.internal.mercury.off,
|
|
127
|
+
assert.callCount(webex.internal.mercury.off, 2);
|
|
124
128
|
|
|
125
|
-
const
|
|
129
|
+
const firstCallOrg = webex.internal.mercury.off.getCall(0).args;
|
|
130
|
+
expect(firstCallOrg[0]).to.equal('event:assistant-api.response');
|
|
126
131
|
|
|
127
|
-
|
|
132
|
+
const secondCallOrg = webex.internal.mercury.off.getCall(1).args;
|
|
133
|
+
expect(secondCallOrg[0]).to.equal('assistant-api.activity');
|
|
128
134
|
|
|
129
135
|
assert.equal(webex.internal.aiAssistant.registered, false);
|
|
130
136
|
});
|
|
@@ -327,6 +333,28 @@ describe('plugin-ai-assistant', () => {
|
|
|
327
333
|
expect(triggerSpy.getCall(2).args[1]).to.deep.equal(expectedResult);
|
|
328
334
|
});
|
|
329
335
|
|
|
336
|
+
it('handles an activity', async () => {
|
|
337
|
+
const triggerSpy = sinon.spy(webex.internal.aiAssistant, 'trigger');
|
|
338
|
+
|
|
339
|
+
webex.internal.encryption.decryptText.callsFake(async (keyUrl, value) => {
|
|
340
|
+
return `decrypted-with-${keyUrl}-${value}`;
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// assume assistant event is received
|
|
344
|
+
await webex.internal.aiAssistant._handleAssistantActivity(cloneDeep(assistantActivity[0]));
|
|
345
|
+
|
|
346
|
+
await waitForAsync();
|
|
347
|
+
|
|
348
|
+
let expectedResult = set(
|
|
349
|
+
cloneDeep(assistantActivity[0]),
|
|
350
|
+
'activity.content.value.message',
|
|
351
|
+
'decrypted-with-kms://kms-cisco.wbx2.com/keys/9b838423-f31b-49d5-a7c7-182572340a37-message_encrypted_value_for_activity'
|
|
352
|
+
);
|
|
353
|
+
|
|
354
|
+
expect(triggerSpy.getCall(0).args[0]).to.deep.equal('aiassistant:activityReceived');
|
|
355
|
+
expect(triggerSpy.getCall(0).args[1]).to.deep.equal(expectedResult);
|
|
356
|
+
});
|
|
357
|
+
|
|
330
358
|
it('decrypts a chunked json response', async () => {
|
|
331
359
|
const triggerSpy = sinon.spy(webex.internal.aiAssistant, 'trigger');
|
|
332
360
|
webex.internal.encryption.decryptText.callsFake(async (keyUrl, value) => {
|