@webex/internal-plugin-ai-assistant 3.11.0-next.10 → 3.11.0-next.12
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 +1 -1
- package/dist/utils.js +10 -1
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/utils.ts +8 -0
- package/test/unit/data/messages.ts +76 -0
- package/test/unit/spec/ai-assistant.ts +98 -0
package/dist/ai-assistant.js
CHANGED
|
@@ -501,7 +501,7 @@ var AIAssistant = _webexCore.WebexPlugin.extend({
|
|
|
501
501
|
contentValue: options.question
|
|
502
502
|
}));
|
|
503
503
|
},
|
|
504
|
-
version: "3.11.0-next.
|
|
504
|
+
version: "3.11.0-next.12"
|
|
505
505
|
});
|
|
506
506
|
var _default = exports.default = AIAssistant;
|
|
507
507
|
//# sourceMappingURL=ai-assistant.js.map
|
package/dist/utils.js
CHANGED
|
@@ -70,9 +70,18 @@ var decryptCitedAnswer = exports.decryptCitedAnswer = /*#__PURE__*/function () {
|
|
|
70
70
|
return decryptInPlace(data, "value.citations.".concat(index, ".name"), 'encryptionKeyUrl', webex);
|
|
71
71
|
}));
|
|
72
72
|
case 1:
|
|
73
|
+
if (!data.value.sources) {
|
|
74
|
+
_context3.next = 2;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
73
77
|
_context3.next = 2;
|
|
74
|
-
return
|
|
78
|
+
return _promise.default.all(data.value.sources.map(function (source, index) {
|
|
79
|
+
return decryptInPlace(data, "value.sources.".concat(index, ".name"), 'encryptionKeyUrl', webex);
|
|
80
|
+
}));
|
|
75
81
|
case 2:
|
|
82
|
+
_context3.next = 3;
|
|
83
|
+
return decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);
|
|
84
|
+
case 3:
|
|
76
85
|
case "end":
|
|
77
86
|
return _context3.stop();
|
|
78
87
|
}
|
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","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":"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
|
|
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","sources","source","_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 if (data.value.sources) {\n await Promise.all(\n data.value.sources.map((source, index) => {\n return decryptInPlace(data, `value.sources.${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":"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","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.8",
|
|
26
|
+
"@webex/webex-core": "3.11.0-next.7",
|
|
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.12"
|
|
53
53
|
}
|
package/src/utils.ts
CHANGED
|
@@ -29,6 +29,14 @@ export const decryptCitedAnswer = async (data, webex) => {
|
|
|
29
29
|
);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
if (data.value.sources) {
|
|
33
|
+
await Promise.all(
|
|
34
|
+
data.value.sources.map((source, index) => {
|
|
35
|
+
return decryptInPlace(data, `value.sources.${index}.name`, 'encryptionKeyUrl', webex);
|
|
36
|
+
})
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
32
40
|
await decryptInPlace(data, 'value.value', 'encryptionKeyUrl', webex);
|
|
33
41
|
};
|
|
34
42
|
export const decryptScheduleMeeting = async (data, webex) => {
|
|
@@ -709,6 +709,82 @@ export const scheduleMeetingResponse = [
|
|
|
709
709
|
},
|
|
710
710
|
];
|
|
711
711
|
|
|
712
|
+
export const citedAnswerWithSourcesResponse = [
|
|
713
|
+
{
|
|
714
|
+
eventType: 'assistant-api.response',
|
|
715
|
+
sequence: 1,
|
|
716
|
+
finished: true,
|
|
717
|
+
clientRequestId: 'test-request-id',
|
|
718
|
+
responseId: '3c1a4b30-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
719
|
+
responseType: 'response',
|
|
720
|
+
response: {
|
|
721
|
+
sessionId: '3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
722
|
+
sessionUrl:
|
|
723
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
724
|
+
messageId: '3c19fd10-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
725
|
+
messageUrl:
|
|
726
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5/messages/3c19fd10-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
727
|
+
responseId: '3c1a4b30-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
728
|
+
responseUrl:
|
|
729
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5/messages/3c1a4b30-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
730
|
+
content: {
|
|
731
|
+
name: 'cited_answer',
|
|
732
|
+
type: 'json',
|
|
733
|
+
encryptionKeyUrl: 'kms://kms-us.wbx2.com/keys/9565506d-78b1-4742-b0fd-63719748282e',
|
|
734
|
+
value: {
|
|
735
|
+
value: 'json_1_encrypted_value',
|
|
736
|
+
type: 'markdown',
|
|
737
|
+
citations: [
|
|
738
|
+
{
|
|
739
|
+
id: '6ccc8286e2084e05a6b9a29faae77095',
|
|
740
|
+
index: 1,
|
|
741
|
+
name: 'json_1_encrypted_citation_0',
|
|
742
|
+
url: 'https://co.webex.com/webappng/sites/co/recording/playback/6ccc8286e2084e05a6b9a29faae77095',
|
|
743
|
+
metadata: {
|
|
744
|
+
provider: 'webex',
|
|
745
|
+
type: 'meeting_recording',
|
|
746
|
+
},
|
|
747
|
+
},
|
|
748
|
+
],
|
|
749
|
+
sources: [
|
|
750
|
+
{
|
|
751
|
+
id: '6ccc8286e2084e05a6b9a29faae77096',
|
|
752
|
+
index: 1,
|
|
753
|
+
type: 'post_meeting',
|
|
754
|
+
name: 'json_1_encrypted_source_0',
|
|
755
|
+
metadata: {
|
|
756
|
+
meetingContainerId: 'mccc8286e2084e05a6b9a29faae77096',
|
|
757
|
+
},
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
id: '6ccc8286e2084e05a6b9a29faae77096',
|
|
761
|
+
index: 2,
|
|
762
|
+
type: 'post_call',
|
|
763
|
+
name: 'json_1_encrypted_source_1',
|
|
764
|
+
metadata: {
|
|
765
|
+
callContainerId: 'mccc8286e2084e05a6b9a29faae77096',
|
|
766
|
+
},
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
id: '6ccc8286e2084e05a6b9a29faae77096',
|
|
770
|
+
index: 3,
|
|
771
|
+
type: 'message',
|
|
772
|
+
name: 'json_1_encrypted_source_2',
|
|
773
|
+
metadata: {
|
|
774
|
+
spaceId: 'mccc8286e2084e05a6b9a29faae77096',
|
|
775
|
+
},
|
|
776
|
+
},
|
|
777
|
+
],
|
|
778
|
+
},
|
|
779
|
+
},
|
|
780
|
+
createdAt: '2025-09-16T13:08:30.594220705Z',
|
|
781
|
+
creator: {
|
|
782
|
+
role: 'assistant',
|
|
783
|
+
},
|
|
784
|
+
},
|
|
785
|
+
},
|
|
786
|
+
];
|
|
787
|
+
|
|
712
788
|
export const assistantActivity = [
|
|
713
789
|
{
|
|
714
790
|
eventType: 'assistant-api.activity',
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
workspaceResponse,
|
|
23
23
|
scheduleMeetingResponse,
|
|
24
24
|
assistantActivity,
|
|
25
|
+
citedAnswerWithSourcesResponse,
|
|
25
26
|
} from '../data/messages';
|
|
26
27
|
|
|
27
28
|
const waitForAsync = () =>
|
|
@@ -717,6 +718,103 @@ describe('plugin-ai-assistant', () => {
|
|
|
717
718
|
expect(triggerSpy.getCall(0).args[1]).to.deep.equal(expectedResult);
|
|
718
719
|
});
|
|
719
720
|
|
|
721
|
+
it('handles a cited answer with sources response', async () => {
|
|
722
|
+
const triggerSpy = sinon.spy(webex.internal.aiAssistant, 'trigger');
|
|
723
|
+
webex.internal.encryption.decryptText.callsFake(async (keyUrl, value) => {
|
|
724
|
+
return `decrypted-with-${keyUrl}-${value}`;
|
|
725
|
+
});
|
|
726
|
+
|
|
727
|
+
await webex.internal.aiAssistant._request({
|
|
728
|
+
resource: 'test-resource',
|
|
729
|
+
params: {param1: 'value1'},
|
|
730
|
+
});
|
|
731
|
+
|
|
732
|
+
const event = cloneDeep(citedAnswerWithSourcesResponse[0]);
|
|
733
|
+
event.clientRequestId = 'test-request-id';
|
|
734
|
+
|
|
735
|
+
await webex.internal.aiAssistant._handleEvent(event);
|
|
736
|
+
|
|
737
|
+
expect(triggerSpy.getCall(0).args[0]).to.equal(`aiassistant:result:test-request-id`);
|
|
738
|
+
|
|
739
|
+
await waitForAsync();
|
|
740
|
+
|
|
741
|
+
const expectedResult = {
|
|
742
|
+
sessionId: '3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
743
|
+
sessionUrl:
|
|
744
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
745
|
+
messageId: '3c19fd10-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
746
|
+
messageUrl:
|
|
747
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5/messages/3c19fd10-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
748
|
+
responseId: '3c1a4b30-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
749
|
+
responseUrl:
|
|
750
|
+
'https://assistant-api-a.wbx2.com:443/assistant-api/api/v1/sessions/3c1939c0-92fe-11f0-8e9f-1bafc66fbbc5/messages/3c1a4b30-92fe-11f0-8e9f-1bafc66fbbc5',
|
|
751
|
+
content: {
|
|
752
|
+
name: 'cited_answer',
|
|
753
|
+
type: 'json',
|
|
754
|
+
encryptionKeyUrl: 'kms://kms-us.wbx2.com/keys/9565506d-78b1-4742-b0fd-63719748282e',
|
|
755
|
+
value: {
|
|
756
|
+
value:
|
|
757
|
+
'decrypted-with-kms://kms-us.wbx2.com/keys/9565506d-78b1-4742-b0fd-63719748282e-json_1_encrypted_value',
|
|
758
|
+
type: 'markdown',
|
|
759
|
+
citations: [
|
|
760
|
+
{
|
|
761
|
+
id: '6ccc8286e2084e05a6b9a29faae77095',
|
|
762
|
+
index: 1,
|
|
763
|
+
name: 'decrypted-with-kms://kms-us.wbx2.com/keys/9565506d-78b1-4742-b0fd-63719748282e-json_1_encrypted_citation_0',
|
|
764
|
+
url: 'https://co.webex.com/webappng/sites/co/recording/playback/6ccc8286e2084e05a6b9a29faae77095',
|
|
765
|
+
metadata: {
|
|
766
|
+
provider: 'webex',
|
|
767
|
+
type: 'meeting_recording',
|
|
768
|
+
},
|
|
769
|
+
},
|
|
770
|
+
],
|
|
771
|
+
sources: [
|
|
772
|
+
{
|
|
773
|
+
id: '6ccc8286e2084e05a6b9a29faae77096',
|
|
774
|
+
index: 1,
|
|
775
|
+
type: 'post_meeting',
|
|
776
|
+
name: 'decrypted-with-kms://kms-us.wbx2.com/keys/9565506d-78b1-4742-b0fd-63719748282e-json_1_encrypted_source_0',
|
|
777
|
+
metadata: {
|
|
778
|
+
meetingContainerId: 'mccc8286e2084e05a6b9a29faae77096',
|
|
779
|
+
},
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
id: '6ccc8286e2084e05a6b9a29faae77096',
|
|
783
|
+
index: 2,
|
|
784
|
+
type: 'post_call',
|
|
785
|
+
name: 'decrypted-with-kms://kms-us.wbx2.com/keys/9565506d-78b1-4742-b0fd-63719748282e-json_1_encrypted_source_1',
|
|
786
|
+
metadata: {
|
|
787
|
+
callContainerId: 'mccc8286e2084e05a6b9a29faae77096',
|
|
788
|
+
},
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
id: '6ccc8286e2084e05a6b9a29faae77096',
|
|
792
|
+
index: 3,
|
|
793
|
+
type: 'message',
|
|
794
|
+
name: 'decrypted-with-kms://kms-us.wbx2.com/keys/9565506d-78b1-4742-b0fd-63719748282e-json_1_encrypted_source_2',
|
|
795
|
+
metadata: {
|
|
796
|
+
spaceId: 'mccc8286e2084e05a6b9a29faae77096',
|
|
797
|
+
},
|
|
798
|
+
},
|
|
799
|
+
],
|
|
800
|
+
},
|
|
801
|
+
},
|
|
802
|
+
createdAt: '2025-09-16T13:08:30.594220705Z',
|
|
803
|
+
creator: {
|
|
804
|
+
role: 'assistant',
|
|
805
|
+
},
|
|
806
|
+
// the below fields are added by the SDK
|
|
807
|
+
errorCode: undefined,
|
|
808
|
+
errorMessage: undefined,
|
|
809
|
+
finished: true,
|
|
810
|
+
requestId: 'test-request-id',
|
|
811
|
+
responseType: 'response',
|
|
812
|
+
};
|
|
813
|
+
|
|
814
|
+
expect(triggerSpy.getCall(1).args[0]).to.deep.equal('aiassistant:stream:test-request-id');
|
|
815
|
+
expect(triggerSpy.getCall(1).args[1]).to.deep.equal(expectedResult);
|
|
816
|
+
});
|
|
817
|
+
|
|
720
818
|
it('decrypts and emits data when receiving event data', async () => {
|
|
721
819
|
const triggerSpy = sinon.spy(webex.internal.aiAssistant, 'trigger');
|
|
722
820
|
|