@verana-labs/vs-agent-plugin-chat 2.0.0-dev.70 → 2.0.0-dev.73

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/build/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export { setupChatProtocols } from './sdk/setupChatProtocols';
2
2
  export type { ChatSdkPlugin } from './sdk/setupChatProtocols';
3
- export { ChatMessageHandler } from './handlers/ChatMessageHandler';
4
3
  export { chatEvents } from './events/ChatEvents';
5
4
  export type { ChatAgentModules } from './types';
6
5
  export { ChatPlugin } from './nestjs/ChatPlugin';
package/build/index.js CHANGED
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerDidcommModuleEvents = exports.V2DidcommUserProfileController = exports.V2DidcommReceiptsController = exports.V2DidcommReactionsController = exports.V2DidcommQuestionAnswerController = exports.V2DidcommMediaSharingController = exports.V2DidcommCallsController = exports.V2DidcommActionMenuController = exports.DEFAULT_PROFILE = exports.ChatPlugin = exports.chatEvents = exports.ChatMessageHandler = exports.setupChatProtocols = void 0;
3
+ exports.registerDidcommModuleEvents = exports.V2DidcommUserProfileController = exports.V2DidcommReceiptsController = exports.V2DidcommReactionsController = exports.V2DidcommQuestionAnswerController = exports.V2DidcommMediaSharingController = exports.V2DidcommCallsController = exports.V2DidcommActionMenuController = exports.DEFAULT_PROFILE = exports.ChatPlugin = exports.chatEvents = exports.setupChatProtocols = void 0;
4
4
  var setupChatProtocols_1 = require("./sdk/setupChatProtocols");
5
5
  Object.defineProperty(exports, "setupChatProtocols", { enumerable: true, get: function () { return setupChatProtocols_1.setupChatProtocols; } });
6
- var ChatMessageHandler_1 = require("./handlers/ChatMessageHandler");
7
- Object.defineProperty(exports, "ChatMessageHandler", { enumerable: true, get: function () { return ChatMessageHandler_1.ChatMessageHandler; } });
8
6
  var ChatEvents_1 = require("./events/ChatEvents");
9
7
  Object.defineProperty(exports, "chatEvents", { enumerable: true, get: function () { return ChatEvents_1.chatEvents; } });
10
8
  var ChatPlugin_1 = require("./nestjs/ChatPlugin");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAApD,wHAAA,kBAAkB,OAAA;AAG3B,oEAAkE;AAAzD,wHAAA,kBAAkB,OAAA;AAE3B,kDAAgD;AAAvC,wGAAA,UAAU,OAAA;AAInB,kDAAgD;AAAvC,wGAAA,UAAU,OAAA;AAEnB,0DAAyD;AAAhD,iHAAA,eAAe,OAAA;AAGxB,wFAAsF;AAA7E,8IAAA,6BAA6B,OAAA;AACtC,8EAA4E;AAAnE,oIAAA,wBAAwB,OAAA;AACjC,4FAA0F;AAAjF,kJAAA,+BAA+B,OAAA;AACxC,gGAA8F;AAArF,sJAAA,iCAAiC,OAAA;AAC1C,sFAAoF;AAA3E,4IAAA,4BAA4B,OAAA;AACrC,oFAAkF;AAAzE,0IAAA,2BAA2B,OAAA;AACpC,0FAAwF;AAA/E,gJAAA,8BAA8B,OAAA;AAEvC,oEAA0E;AAAjE,kIAAA,2BAA2B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAApD,wHAAA,kBAAkB,OAAA;AAG3B,kDAAgD;AAAvC,wGAAA,UAAU,OAAA;AAInB,kDAAgD;AAAvC,wGAAA,UAAU,OAAA;AAEnB,0DAAyD;AAAhD,iHAAA,eAAe,OAAA;AAGxB,wFAAsF;AAA7E,8IAAA,6BAA6B,OAAA;AACtC,8EAA4E;AAAnE,oIAAA,wBAAwB,OAAA;AACjC,4FAA0F;AAAjF,kJAAA,+BAA+B,OAAA;AACxC,gGAA8F;AAArF,sJAAA,iCAAiC,OAAA;AAC1C,sFAAoF;AAA3E,4IAAA,4BAA4B,OAAA;AACrC,oFAAkF;AAAzE,0IAAA,2BAA2B,OAAA;AACpC,0FAAwF;AAA/E,gJAAA,8BAA8B,OAAA;AAEvC,oEAA0E;AAAjE,kIAAA,2BAA2B,OAAA"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChatPlugin = void 0;
4
4
  const ChatEvents_1 = require("../events/ChatEvents");
5
5
  const didcommModuleEvents_1 = require("../events/didcommModuleEvents");
6
- const ChatMessageHandler_1 = require("../handlers/ChatMessageHandler");
7
6
  const setupChatProtocols_1 = require("../sdk/setupChatProtocols");
8
7
  const didcommModules_1 = require("./didcommModules");
9
8
  const defaultProfile_1 = require("./defaultProfile");
@@ -27,8 +26,7 @@ const ChatPlugin = (options) => ({
27
26
  V2DidcommQuestionAnswerController_1.V2DidcommQuestionAnswerController,
28
27
  ],
29
28
  didcommModules: [...didcommModules_1.CHAT_DIDCOMM_MODULES],
30
- providers: [ChatMessageHandler_1.ChatMessageHandler, { provide: defaultProfile_1.DEFAULT_PROFILE, useValue: options === null || options === void 0 ? void 0 : options.defaultProfile }],
31
- messageHandlers: [ChatMessageHandler_1.ChatMessageHandler],
29
+ providers: [{ provide: defaultProfile_1.DEFAULT_PROFILE, useValue: options === null || options === void 0 ? void 0 : options.defaultProfile }],
32
30
  registerEvents: (agent, config) => {
33
31
  (0, ChatEvents_1.chatEvents)(agent, config);
34
32
  (0, didcommModuleEvents_1.registerDidcommModuleEvents)(agent);
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPlugin.js","sourceRoot":"","sources":["../../src/nestjs/ChatPlugin.ts"],"names":[],"mappings":";;;AAGA,qDAAiD;AACjD,uEAA2E;AAC3E,uEAAmE;AACnE,kEAA8D;AAE9D,qDAAuD;AACvD,qDAAuE;AACvE,mFAA+E;AAC/E,yEAAqE;AACrE,uFAAmF;AACnF,2FAAuF;AACvF,iFAA6E;AAC7E,+EAA2E;AAC3E,qFAAiF;AAM1E,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAqB,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,IAAA,uCAAkB,GAAE;IACjC,WAAW,EAAE;QACX,yDAA2B;QAC3B,2DAA4B;QAC5B,+DAA8B;QAC9B,iEAA+B;QAC/B,mDAAwB;QACxB,6DAA6B;QAC7B,qEAAiC;KAClC;IACD,cAAc,EAAE,CAAC,GAAG,qCAAoB,CAAC;IACzC,SAAS,EAAE,CAAC,uCAAkB,EAAE,EAAE,OAAO,EAAE,gCAAe,EAAE,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAAE,CAAC;IAChG,eAAe,EAAE,CAAC,uCAAkB,CAAC;IACrC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,IAAA,uBAAU,EAAC,KAAkC,EAAE,MAAM,CAAC,CAAA;QACtD,IAAA,iDAA2B,EAAC,KAAK,CAAC,CAAA;IACpC,CAAC;CACF,CAAC,CAAA;AAnBW,QAAA,UAAU,cAmBrB"}
1
+ {"version":3,"file":"ChatPlugin.js","sourceRoot":"","sources":["../../src/nestjs/ChatPlugin.ts"],"names":[],"mappings":";;;AAGA,qDAAiD;AACjD,uEAA2E;AAC3E,kEAA8D;AAE9D,qDAAuD;AACvD,qDAAuE;AACvE,mFAA+E;AAC/E,yEAAqE;AACrE,uFAAmF;AACnF,2FAAuF;AACvF,iFAA6E;AAC7E,+EAA2E;AAC3E,qFAAiF;AAM1E,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAqB,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,IAAA,uCAAkB,GAAE;IACjC,WAAW,EAAE;QACX,yDAA2B;QAC3B,2DAA4B;QAC5B,+DAA8B;QAC9B,iEAA+B;QAC/B,mDAAwB;QACxB,6DAA6B;QAC7B,qEAAiC;KAClC;IACD,cAAc,EAAE,CAAC,GAAG,qCAAoB,CAAC;IACzC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gCAAe,EAAE,QAAQ,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAAE,CAAC;IAC5E,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,IAAA,uBAAU,EAAC,KAAkC,EAAE,MAAM,CAAC,CAAA;QACtD,IAAA,iDAA2B,EAAC,KAAK,CAAC,CAAA;IACpC,CAAC;CACF,CAAC,CAAA;AAlBW,QAAA,UAAU,cAkBrB"}
@@ -1,11 +1,2 @@
1
- import { DidCommMessageReceipt } from '@2060.io/credo-ts-didcomm-receipts';
2
1
  import { PictureData } from '@2060.io/credo-ts-didcomm-user-profile';
3
- import { VsAgentMessageReceipt } from '@verana-labs/vs-agent-model';
4
- export declare const UriValidator: RegExp;
5
- export declare function parseDataUrl(dataUrl: string): {
6
- mimeType: string;
7
- data: string;
8
- } | null;
9
- export declare function parsePictureData(pictureData: string): PictureData | undefined;
10
2
  export declare function createDataUrl(pictureData: PictureData): string | undefined;
11
- export declare const didcommReceiptFromVsAgentReceipt: (receipt: VsAgentMessageReceipt) => DidCommMessageReceipt;
@@ -1,28 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.didcommReceiptFromVsAgentReceipt = exports.UriValidator = void 0;
4
- exports.parseDataUrl = parseDataUrl;
5
- exports.parsePictureData = parsePictureData;
6
3
  exports.createDataUrl = createDataUrl;
7
- const credo_ts_didcomm_receipts_1 = require("@2060.io/credo-ts-didcomm-receipts");
8
- const vs_agent_model_1 = require("@verana-labs/vs-agent-model");
9
- exports.UriValidator = /\w+:(\/?\/?)[^\s]+/;
10
- function parseDataUrl(dataUrl) {
11
- const regex = /^data:(.+);base64,(.*)$/;
12
- const matches = dataUrl.match(regex);
13
- if (!matches)
14
- return null;
15
- return { mimeType: matches[1], data: matches[2] };
16
- }
17
- function parsePictureData(pictureData) {
18
- const parsedDataUrl = parseDataUrl(pictureData);
19
- if (parsedDataUrl) {
20
- return { base64: parsedDataUrl.data, mimeType: parsedDataUrl.mimeType };
21
- }
22
- else if (exports.UriValidator.test(pictureData)) {
23
- return { links: [pictureData] };
24
- }
25
- }
26
4
  function createDataUrl(pictureData) {
27
5
  if (pictureData.base64 && pictureData.mimeType) {
28
6
  return `data:${pictureData.mimeType};base64,${pictureData.base64}`;
@@ -31,6 +9,4 @@ function createDataUrl(pictureData) {
31
9
  return pictureData.links[0];
32
10
  }
33
11
  }
34
- const didcommReceiptFromVsAgentReceipt = (receipt) => new credo_ts_didcomm_receipts_1.DidCommMessageReceipt(Object.assign(Object.assign({}, receipt), { state: vs_agent_model_1.didcommMessageState[receipt.state.toLowerCase()] }));
35
- exports.didcommReceiptFromVsAgentReceipt = didcommReceiptFromVsAgentReceipt;
36
12
  //# sourceMappingURL=parsers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/utils/parsers.ts"],"names":[],"mappings":";;;AAKA,oCAOC;AAED,4CAOC;AAED,sCAMC;AA7BD,kFAA0E;AAE1E,gEAAwF;AAE3E,QAAA,YAAY,GAAG,oBAAoB,CAAA;AAChD,SAAgB,YAAY,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,yBAAyB,CAAA;IAEvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;AACnD,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAAmB;IAClD,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;IAC/C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAA;IACzE,CAAC;SAAM,IAAI,oBAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAA;IACjC,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,WAAwB;IACpD,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,OAAO,QAAQ,WAAW,CAAC,QAAQ,WAAW,WAAW,CAAC,MAAM,EAAE,CAAA;IACpE,CAAC;SAAM,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAEM,MAAM,gCAAgC,GAAG,CAAC,OAA8B,EAAE,EAAE,CACjF,IAAI,iDAAqB,iCAAM,OAAO,KAAE,KAAK,EAAE,oCAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAG,CAAA;AADvF,QAAA,gCAAgC,oCACuD"}
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/utils/parsers.ts"],"names":[],"mappings":";;AAEA,sCAMC;AAND,SAAgB,aAAa,CAAC,WAAwB;IACpD,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,OAAO,QAAQ,WAAW,CAAC,QAAQ,WAAW,WAAW,CAAC,MAAM,EAAE,CAAA;IACpE,CAAC;SAAM,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "default": "./build/index.js"
10
10
  }
11
11
  },
12
- "version": "2.0.0-dev.70",
12
+ "version": "2.0.0-dev.73",
13
13
  "repository": {
14
14
  "type": "git",
15
15
  "url": "https://github.com/verana-labs/vs-agent"
@@ -36,8 +36,8 @@
36
36
  "@nestjs/swagger": "^8.0.7",
37
37
  "class-transformer": "0.5.1",
38
38
  "class-validator": "0.14.1",
39
- "@verana-labs/vs-agent-sdk": "2.0.0-dev.70",
40
- "@verana-labs/vs-agent-model": "2.0.0-dev.70"
39
+ "@verana-labs/vs-agent-model": "2.0.0-dev.73",
40
+ "@verana-labs/vs-agent-sdk": "2.0.0-dev.73"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "@credo-ts/core": "0.7.1-pr-2704-20260909134930"
@@ -1,13 +0,0 @@
1
- import type { MessageHandler } from '@verana-labs/vs-agent-sdk';
2
- import { DidCommConnectionRecord } from '@credo-ts/didcomm';
3
- import { IBaseMessage, MessageType } from '@verana-labs/vs-agent-model';
4
- import { VsAgent } from '@verana-labs/vs-agent-sdk';
5
- export declare class ChatMessageHandler implements MessageHandler {
6
- readonly supportedTypes: MessageType[];
7
- readonly openApiExamples: Record<string, {
8
- summary: string;
9
- description: string;
10
- value: object;
11
- }>;
12
- handle(agent: VsAgent<any>, message: IBaseMessage, connection: DidCommConnectionRecord): Promise<string | undefined>;
13
- }
@@ -1,273 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ChatMessageHandler = void 0;
10
- const action_menu_1 = require("@credo-ts/action-menu");
11
- const core_1 = require("@credo-ts/core");
12
- const question_answer_1 = require("@credo-ts/question-answer");
13
- const common_1 = require("@nestjs/common");
14
- const vs_agent_model_1 = require("@verana-labs/vs-agent-model");
15
- const parsers_1 = require("../utils/parsers");
16
- let ChatMessageHandler = class ChatMessageHandler {
17
- constructor() {
18
- this.supportedTypes = [
19
- vs_agent_model_1.MessageType.TextMessage,
20
- vs_agent_model_1.MessageType.MediaMessage,
21
- vs_agent_model_1.MessageType.ReceiptsMessage,
22
- vs_agent_model_1.MessageType.ReactionMessage,
23
- vs_agent_model_1.MessageType.MenuDisplayMessage,
24
- vs_agent_model_1.MessageType.ContextualMenuUpdateMessage,
25
- vs_agent_model_1.MessageType.ProfileMessage,
26
- vs_agent_model_1.MessageType.CallOfferRequestMessage,
27
- vs_agent_model_1.MessageType.CallEndRequestMessage,
28
- ];
29
- this.openApiExamples = {
30
- callAccept: {
31
- summary: 'Call Accept',
32
- description: '#### Call Accept\n\nAccept a call offer from a third party to initiate a WebRTC call. This message will return a `threadId`, which can be used to track the subsequent status of the call. Additional parameters related to the `wsUrl` of the WebRTC server connection are expected to notify the other party.',
33
- value: { type: 'call-accept', parameters: { key: 'value' } },
34
- },
35
- callReject: {
36
- summary: 'Call Reject',
37
- description: '#### Call Reject\n\nReject a call offer from a third party to initiate a WebRTC call. This message will return a `threadId`, which can be used to identify which offer has been terminated.',
38
- value: { type: 'call-reject' },
39
- },
40
- callEnd: {
41
- summary: 'Call End',
42
- description: '#### Call End\n\nEnd a call offer from a third party to initiate a WebRTC call. This message will return a `threadId`, which can be used to identify which offer has been terminated.',
43
- value: { type: 'call-end' },
44
- },
45
- callOffer: {
46
- summary: 'Call Offer',
47
- description: '#### Call Offer\n\nCreate a call offer from a service to initiate a WebRTC call and notify the other party of the created request. This message will return a `threadId`, which can be used to track the subsequent status of the call. Additional parameters related to the `wsUrl` of the WebRTC server connection are expected to notify the other party.',
48
- value: { type: 'call-offer', parameters: { key: 'value' } },
49
- },
50
- contextualMenuRequest: {
51
- summary: 'Contextual Menu Request',
52
- description: '#### Contextual Menu Request\n\nRequests a destination agent context menu root (if any). The other side should always respond with a [Context Menu Update](#contextual-menu-update) even if no context menu is available (in such case, an empty payload will be sent).',
53
- value: { type: 'contextual-menu-request' },
54
- },
55
- contextualMenuSelect: {
56
- summary: 'Contextual Menu Select',
57
- description: '#### Contextual Menu Select\n\nSubmits the selected item of context menu.',
58
- value: { type: 'contextual-menu-select', selectionId: 'string' },
59
- },
60
- contextualMenuUpdate: {
61
- summary: 'Contextual Menu Update',
62
- description: '#### Contextual Menu Update\n\nSends or updates the contents for the contextual menu to destination agent.',
63
- value: {
64
- type: 'contextual-menu-update',
65
- payload: {
66
- title: 'string',
67
- description: 'string',
68
- options: [{ id: 'string', title: 'string', description: 'string' }],
69
- },
70
- },
71
- },
72
- media: {
73
- summary: 'Media',
74
- description: '#### Media\n\nShares media files to a destination. They might be previously encrypted and stored in an URL reachable by the destination agent.',
75
- value: {
76
- type: 'media',
77
- description: 'string',
78
- items: [
79
- {
80
- mimeType: 'string',
81
- filename: 'string',
82
- description: 'string',
83
- byteCount: 'number',
84
- uri: 'string',
85
- ciphering: { algorithm: 'string' },
86
- preview: 'string',
87
- width: 'number',
88
- height: 'number',
89
- duration: 'number',
90
- title: 'string',
91
- icon: 'string',
92
- openingMode: 'string',
93
- screenOrientaton: 'string',
94
- },
95
- ],
96
- },
97
- },
98
- menuDisplay: {
99
- summary: 'Menu Display',
100
- description: 'Menu Display\n\nAuto-generated example .',
101
- value: {
102
- type: 'menu-display',
103
- connectionId: 'REPLACE_WITH_CONNECTION_ID',
104
- timestamp: '2025-08-19T16:17:08.871Z',
105
- },
106
- },
107
- menuSelect: {
108
- summary: 'Menu Select',
109
- description: '#### Menu Select\n\nSubmits the selected item of a presented menu, defined in `threadId` field.',
110
- value: { type: 'menu-select', menuItems: [{ id: 'string' }], content: 'string' },
111
- },
112
- profile: {
113
- summary: 'Profile',
114
- description: '#### Profile\n\nSends User Profile to a particular connection. An Agent may have its default profile settings, but also override them and send any arbitrary value to each connection. All items are optional.\n\n> **Notes**:\n\n- Display Image and Contextual Menu Image are sent as a Data URL or regular URL\n- A null value means to delete any existing one. A missing value means to keep the previous one.',
115
- value: { type: 'profile', displayName: 'string', displayImageUrl: 'string', displayIconUrl: 'string' },
116
- },
117
- reaction: {
118
- summary: 'Reaction',
119
- description: '#### Reaction\n\nSends emoji reactions to previously received messages. Each reaction references a `message_id` and an `emoji`. Use `action: "react"` to add a reaction or `action: "unreact"` to remove it.',
120
- value: {
121
- type: 'reaction',
122
- reactions: [{ message_id: 'uuid-of-original-message', emoji: '👍', action: 'react' }],
123
- },
124
- },
125
- receipts: {
126
- summary: 'Receipts',
127
- description: '#### Receipts\n\nSends message updates for a number of messages.',
128
- value: {
129
- type: 'receipts',
130
- receipts: [{ messageId: 'string', state: 'MessageState', timestamp: 'Date' }],
131
- },
132
- },
133
- text: {
134
- summary: 'Text',
135
- description: '#### Text\n\nSends a simple text to a destination',
136
- value: { type: 'text', content: 'string' },
137
- },
138
- };
139
- }
140
- async handle(agent, message, connection) {
141
- var _a;
142
- const messageType = message.type;
143
- let messageId;
144
- if (messageType === vs_agent_model_1.TextMessage.type) {
145
- const textMsg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.TextMessage);
146
- const record = await agent.didcomm.basicMessages.sendMessage(textMsg.connectionId, textMsg.content);
147
- messageId = record.threadId;
148
- }
149
- else if (messageType === vs_agent_model_1.MediaMessage.type) {
150
- const mediaMsg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.MediaMessage);
151
- const mediaRecord = await agent.modules.media.create({ connectionId: mediaMsg.connectionId });
152
- const record = await agent.modules.media.share({
153
- recordId: mediaRecord.id,
154
- description: mediaMsg.description,
155
- items: mediaMsg.items.map(item => {
156
- var _a, _b;
157
- return ({
158
- id: item.id,
159
- uri: item.uri,
160
- description: item.description,
161
- mimeType: item.mimeType,
162
- byteCount: item.byteCount,
163
- ciphering: ((_a = item.ciphering) === null || _a === void 0 ? void 0 : _a.algorithm)
164
- ? Object.assign(Object.assign({}, item.ciphering), { parameters: (_b = item.ciphering.parameters) !== null && _b !== void 0 ? _b : {} }) : undefined,
165
- fileName: item.filename,
166
- metadata: {
167
- preview: item.preview,
168
- width: item.width,
169
- height: item.height,
170
- duration: item.duration,
171
- title: item.title,
172
- icon: item.icon,
173
- openingMode: item.openingMode,
174
- screenOrientation: item.screenOrientation,
175
- },
176
- });
177
- }),
178
- });
179
- messageId = record.threadId;
180
- }
181
- else if (messageType === vs_agent_model_1.ReceiptsMessage.type) {
182
- const textMsg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.ReceiptsMessage);
183
- await agent.modules.receipts.send({
184
- connectionId: textMsg.connectionId,
185
- receipts: textMsg.receipts.map(parsers_1.didcommReceiptFromVsAgentReceipt),
186
- });
187
- }
188
- else if (messageType === vs_agent_model_1.ReactionMessage.type) {
189
- const msg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.ReactionMessage);
190
- await agent.modules.reactions.send({
191
- connectionId: msg.connectionId,
192
- reactions: msg.reactions.map(r => ({
193
- messageId: r.messageId,
194
- emoji: r.emoji,
195
- action: r.action,
196
- timestamp: r.timestamp,
197
- })),
198
- });
199
- }
200
- else if (messageType === vs_agent_model_1.MenuDisplayMessage.type) {
201
- const msg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.MenuDisplayMessage);
202
- const record = await agent.modules.questionAnswer.sendQuestion(msg.connectionId, {
203
- question: msg.prompt,
204
- validResponses: msg.menuItems.map(item => new question_answer_1.ValidResponse({ text: item.text })),
205
- });
206
- messageId = record.threadId;
207
- record.metadata.add('text-id-mapping', msg.menuItems.reduce((acc, curr) => ((acc[curr.text] = curr.id), acc), {}));
208
- await agent.dependencyManager.resolve(question_answer_1.QuestionAnswerRepository).update(agent.context, record);
209
- }
210
- else if (messageType === vs_agent_model_1.ContextualMenuUpdateMessage.type) {
211
- const msg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.ContextualMenuUpdateMessage);
212
- await agent.modules.actionMenu.clearActiveMenu({
213
- connectionId: msg.connectionId,
214
- role: action_menu_1.ActionMenuRole.Responder,
215
- });
216
- await agent.modules.actionMenu.sendMenu({
217
- connectionId: msg.connectionId,
218
- menu: {
219
- title: msg.title,
220
- description: (_a = msg.description) !== null && _a !== void 0 ? _a : '',
221
- options: msg.options.map(item => {
222
- var _a;
223
- return new action_menu_1.ActionMenuOption({
224
- title: item.title,
225
- name: item.id,
226
- description: (_a = item.description) !== null && _a !== void 0 ? _a : '',
227
- });
228
- }),
229
- },
230
- });
231
- }
232
- else if (messageType === vs_agent_model_1.ProfileMessage.type) {
233
- const msg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.ProfileMessage);
234
- const { displayImageUrl, displayName, displayIconUrl, description, preferredLanguage } = msg;
235
- await agent.modules.userProfile.sendUserProfile({
236
- connectionId: connection.id,
237
- profileData: {
238
- displayName: displayName !== null && displayName !== void 0 ? displayName : undefined,
239
- displayPicture: displayImageUrl ? (0, parsers_1.parsePictureData)(displayImageUrl) : undefined,
240
- displayIcon: displayIconUrl ? (0, parsers_1.parsePictureData)(displayIconUrl) : undefined,
241
- description: description !== null && description !== void 0 ? description : undefined,
242
- preferredLanguage: preferredLanguage !== null && preferredLanguage !== void 0 ? preferredLanguage : undefined,
243
- },
244
- });
245
- }
246
- else if (messageType === vs_agent_model_1.CallOfferRequestMessage.type) {
247
- const msg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.CallOfferRequestMessage);
248
- const callOffer = await agent.modules.calls.offer({
249
- connectionId: connection.id,
250
- offerExpirationTime: msg.offerExpirationTime,
251
- offerStartTime: msg.offerStartTime,
252
- description: msg.description,
253
- callType: 'service',
254
- parameters: msg.parameters,
255
- });
256
- messageId = callOffer.messageId;
257
- }
258
- else if (messageType === vs_agent_model_1.CallEndRequestMessage.type) {
259
- const msg = core_1.JsonTransformer.fromJSON(message, vs_agent_model_1.CallEndRequestMessage);
260
- const hangup = await agent.modules.calls.hangup({
261
- connectionId: connection.id,
262
- threadId: msg.threadId,
263
- });
264
- messageId = hangup.messageId;
265
- }
266
- return messageId;
267
- }
268
- };
269
- exports.ChatMessageHandler = ChatMessageHandler;
270
- exports.ChatMessageHandler = ChatMessageHandler = __decorate([
271
- (0, common_1.Injectable)()
272
- ], ChatMessageHandler);
273
- //# sourceMappingURL=ChatMessageHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChatMessageHandler.js","sourceRoot":"","sources":["../../src/handlers/ChatMessageHandler.ts"],"names":[],"mappings":"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"}