@credo-ts/action-menu 0.6.1-pr-2091-20241119140918 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/build/ActionMenuApi.d.mts +59 -0
  2. package/build/ActionMenuApi.d.mts.map +1 -0
  3. package/build/ActionMenuApi.mjs +117 -0
  4. package/build/ActionMenuApi.mjs.map +1 -0
  5. package/build/ActionMenuApiOptions.d.mts +42 -0
  6. package/build/ActionMenuApiOptions.d.mts.map +1 -0
  7. package/build/ActionMenuEvents.d.mts +25 -0
  8. package/build/ActionMenuEvents.d.mts.map +1 -0
  9. package/build/ActionMenuEvents.mjs +12 -0
  10. package/build/ActionMenuEvents.mjs.map +1 -0
  11. package/build/ActionMenuModule.d.mts +19 -0
  12. package/build/ActionMenuModule.d.mts.map +1 -0
  13. package/build/ActionMenuModule.mjs +48 -0
  14. package/build/ActionMenuModule.mjs.map +1 -0
  15. package/build/ActionMenuRole.d.mts +14 -0
  16. package/build/ActionMenuRole.d.mts.map +1 -0
  17. package/build/ActionMenuRole.mjs +16 -0
  18. package/build/ActionMenuRole.mjs.map +1 -0
  19. package/build/ActionMenuState.d.mts +18 -0
  20. package/build/ActionMenuState.d.mts.map +1 -0
  21. package/build/ActionMenuState.mjs +20 -0
  22. package/build/ActionMenuState.mjs.map +1 -0
  23. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs +10 -0
  24. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs +7 -0
  25. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateParam.mjs +9 -0
  26. package/build/errors/ActionMenuProblemReportError.mjs +22 -0
  27. package/build/errors/ActionMenuProblemReportError.mjs.map +1 -0
  28. package/build/errors/ActionMenuProblemReportReason.mjs +15 -0
  29. package/build/errors/ActionMenuProblemReportReason.mjs.map +1 -0
  30. package/build/handlers/ActionMenuProblemReportHandler.mjs +20 -0
  31. package/build/handlers/ActionMenuProblemReportHandler.mjs.map +1 -0
  32. package/build/handlers/MenuMessageHandler.mjs +21 -0
  33. package/build/handlers/MenuMessageHandler.mjs.map +1 -0
  34. package/build/handlers/MenuRequestMessageHandler.mjs +21 -0
  35. package/build/handlers/MenuRequestMessageHandler.mjs.map +1 -0
  36. package/build/handlers/PerformMessageHandler.mjs +21 -0
  37. package/build/handlers/PerformMessageHandler.mjs.map +1 -0
  38. package/build/handlers/index.mjs +4 -0
  39. package/build/index.d.mts +20 -0
  40. package/build/index.mjs +21 -0
  41. package/build/messages/ActionMenuProblemReportMessage.d.mts +16 -0
  42. package/build/messages/ActionMenuProblemReportMessage.d.mts.map +1 -0
  43. package/build/messages/ActionMenuProblemReportMessage.mjs +21 -0
  44. package/build/messages/ActionMenuProblemReportMessage.mjs.map +1 -0
  45. package/build/messages/MenuMessage.d.mts +32 -0
  46. package/build/messages/MenuMessage.d.mts.map +1 -0
  47. package/build/messages/MenuMessage.mjs +45 -0
  48. package/build/messages/MenuMessage.mjs.map +1 -0
  49. package/build/messages/MenuRequestMessage.d.mts +21 -0
  50. package/build/messages/MenuRequestMessage.d.mts.map +1 -0
  51. package/build/messages/MenuRequestMessage.mjs +21 -0
  52. package/build/messages/MenuRequestMessage.mjs.map +1 -0
  53. package/build/messages/PerformMessage.d.mts +26 -0
  54. package/build/messages/PerformMessage.d.mts.map +1 -0
  55. package/build/messages/PerformMessage.mjs +34 -0
  56. package/build/messages/PerformMessage.mjs.map +1 -0
  57. package/build/messages/index.d.mts +4 -0
  58. package/build/messages/index.mjs +4 -0
  59. package/build/models/ActionMenu.d.mts +24 -0
  60. package/build/models/ActionMenu.d.mts.map +1 -0
  61. package/build/models/ActionMenu.mjs +30 -0
  62. package/build/models/ActionMenu.mjs.map +1 -0
  63. package/build/models/ActionMenuOption.d.mts +28 -0
  64. package/build/models/ActionMenuOption.d.mts.map +1 -0
  65. package/build/models/ActionMenuOption.mjs +40 -0
  66. package/build/models/ActionMenuOption.mjs.map +1 -0
  67. package/build/models/ActionMenuOptionForm.d.mts +24 -0
  68. package/build/models/ActionMenuOptionForm.d.mts.map +1 -0
  69. package/build/models/ActionMenuOptionForm.mjs +34 -0
  70. package/build/models/ActionMenuOptionForm.mjs.map +1 -0
  71. package/build/models/ActionMenuOptionFormParameter.d.mts +33 -0
  72. package/build/models/ActionMenuOptionFormParameter.d.mts.map +1 -0
  73. package/build/models/ActionMenuOptionFormParameter.mjs +50 -0
  74. package/build/models/ActionMenuOptionFormParameter.mjs.map +1 -0
  75. package/build/models/ActionMenuSelection.d.mts +19 -0
  76. package/build/models/ActionMenuSelection.d.mts.map +1 -0
  77. package/build/models/ActionMenuSelection.mjs +27 -0
  78. package/build/models/ActionMenuSelection.mjs.map +1 -0
  79. package/build/models/index.mjs +5 -0
  80. package/build/repository/ActionMenuRecord.d.mts +58 -0
  81. package/build/repository/ActionMenuRecord.d.mts.map +1 -0
  82. package/build/repository/ActionMenuRecord.mjs +52 -0
  83. package/build/repository/ActionMenuRecord.mjs.map +1 -0
  84. package/build/repository/ActionMenuRepository.d.mts +14 -0
  85. package/build/repository/ActionMenuRepository.d.mts.map +1 -0
  86. package/build/repository/ActionMenuRepository.mjs +22 -0
  87. package/build/repository/ActionMenuRepository.mjs.map +1 -0
  88. package/build/repository/index.d.mts +2 -0
  89. package/build/repository/index.mjs +2 -0
  90. package/build/services/ActionMenuService.d.mts +46 -0
  91. package/build/services/ActionMenuService.d.mts.map +1 -0
  92. package/build/services/ActionMenuService.mjs +258 -0
  93. package/build/services/ActionMenuService.mjs.map +1 -0
  94. package/build/services/ActionMenuServiceOptions.d.mts +45 -0
  95. package/build/services/ActionMenuServiceOptions.d.mts.map +1 -0
  96. package/build/services/index.d.mts +2 -0
  97. package/build/services/index.mjs +1 -0
  98. package/package.json +15 -14
  99. package/build/ActionMenuApi.d.ts +0 -50
  100. package/build/ActionMenuApi.js +0 -135
  101. package/build/ActionMenuApi.js.map +0 -1
  102. package/build/ActionMenuApiOptions.d.ts +0 -36
  103. package/build/ActionMenuApiOptions.js +0 -3
  104. package/build/ActionMenuApiOptions.js.map +0 -1
  105. package/build/ActionMenuEvents.d.ts +0 -19
  106. package/build/ActionMenuEvents.js +0 -11
  107. package/build/ActionMenuEvents.js.map +0 -1
  108. package/build/ActionMenuModule.d.ts +0 -12
  109. package/build/ActionMenuModule.js +0 -32
  110. package/build/ActionMenuModule.js.map +0 -1
  111. package/build/ActionMenuRole.d.ts +0 -10
  112. package/build/ActionMenuRole.js +0 -15
  113. package/build/ActionMenuRole.js.map +0 -1
  114. package/build/ActionMenuState.d.ts +0 -14
  115. package/build/ActionMenuState.js +0 -19
  116. package/build/ActionMenuState.js.map +0 -1
  117. package/build/errors/ActionMenuProblemReportError.d.ts +0 -19
  118. package/build/errors/ActionMenuProblemReportError.js +0 -22
  119. package/build/errors/ActionMenuProblemReportError.js.map +0 -1
  120. package/build/errors/ActionMenuProblemReportReason.d.ts +0 -9
  121. package/build/errors/ActionMenuProblemReportReason.js +0 -14
  122. package/build/errors/ActionMenuProblemReportReason.js.map +0 -1
  123. package/build/handlers/ActionMenuProblemReportHandler.d.ts +0 -12
  124. package/build/handlers/ActionMenuProblemReportHandler.js +0 -18
  125. package/build/handlers/ActionMenuProblemReportHandler.js.map +0 -1
  126. package/build/handlers/MenuMessageHandler.d.ts +0 -12
  127. package/build/handlers/MenuMessageHandler.js +0 -19
  128. package/build/handlers/MenuMessageHandler.js.map +0 -1
  129. package/build/handlers/MenuRequestMessageHandler.d.ts +0 -12
  130. package/build/handlers/MenuRequestMessageHandler.js +0 -19
  131. package/build/handlers/MenuRequestMessageHandler.js.map +0 -1
  132. package/build/handlers/PerformMessageHandler.d.ts +0 -12
  133. package/build/handlers/PerformMessageHandler.js +0 -19
  134. package/build/handlers/PerformMessageHandler.js.map +0 -1
  135. package/build/handlers/index.d.ts +0 -4
  136. package/build/handlers/index.js +0 -21
  137. package/build/handlers/index.js.map +0 -1
  138. package/build/index.d.ts +0 -9
  139. package/build/index.js +0 -26
  140. package/build/index.js.map +0 -1
  141. package/build/messages/ActionMenuProblemReportMessage.d.ts +0 -16
  142. package/build/messages/ActionMenuProblemReportMessage.js +0 -34
  143. package/build/messages/ActionMenuProblemReportMessage.js.map +0 -1
  144. package/build/messages/MenuMessage.d.ts +0 -26
  145. package/build/messages/MenuMessage.js +0 -64
  146. package/build/messages/MenuMessage.js.map +0 -1
  147. package/build/messages/MenuRequestMessage.d.ts +0 -15
  148. package/build/messages/MenuRequestMessage.js +0 -33
  149. package/build/messages/MenuRequestMessage.js.map +0 -1
  150. package/build/messages/PerformMessage.d.ts +0 -20
  151. package/build/messages/PerformMessage.js +0 -48
  152. package/build/messages/PerformMessage.js.map +0 -1
  153. package/build/messages/index.d.ts +0 -4
  154. package/build/messages/index.js +0 -21
  155. package/build/messages/index.js.map +0 -1
  156. package/build/models/ActionMenu.d.ts +0 -19
  157. package/build/models/ActionMenu.js +0 -42
  158. package/build/models/ActionMenu.js.map +0 -1
  159. package/build/models/ActionMenuOption.d.ts +0 -23
  160. package/build/models/ActionMenuOption.js +0 -56
  161. package/build/models/ActionMenuOption.js.map +0 -1
  162. package/build/models/ActionMenuOptionForm.d.ts +0 -19
  163. package/build/models/ActionMenuOptionForm.js +0 -43
  164. package/build/models/ActionMenuOptionForm.js.map +0 -1
  165. package/build/models/ActionMenuOptionFormParameter.d.ts +0 -29
  166. package/build/models/ActionMenuOptionFormParameter.js +0 -64
  167. package/build/models/ActionMenuOptionFormParameter.js.map +0 -1
  168. package/build/models/ActionMenuSelection.d.ts +0 -15
  169. package/build/models/ActionMenuSelection.js +0 -35
  170. package/build/models/ActionMenuSelection.js.map +0 -1
  171. package/build/models/index.d.ts +0 -5
  172. package/build/models/index.js +0 -22
  173. package/build/models/index.js.map +0 -1
  174. package/build/repository/ActionMenuRecord.d.ts +0 -52
  175. package/build/repository/ActionMenuRecord.js +0 -63
  176. package/build/repository/ActionMenuRecord.js.map +0 -1
  177. package/build/repository/ActionMenuRepository.d.ts +0 -8
  178. package/build/repository/ActionMenuRepository.js +0 -32
  179. package/build/repository/ActionMenuRepository.js.map +0 -1
  180. package/build/repository/index.d.ts +0 -2
  181. package/build/repository/index.js +0 -19
  182. package/build/repository/index.js.map +0 -1
  183. package/build/services/ActionMenuService.d.ts +0 -36
  184. package/build/services/ActionMenuService.js +0 -295
  185. package/build/services/ActionMenuService.js.map +0 -1
  186. package/build/services/ActionMenuServiceOptions.d.ts +0 -39
  187. package/build/services/ActionMenuServiceOptions.js +0 -3
  188. package/build/services/ActionMenuServiceOptions.js.map +0 -1
  189. package/build/services/index.d.ts +0 -2
  190. package/build/services/index.js +0 -19
  191. package/build/services/index.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs";
2
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs";
3
+ import { IsBoolean, IsEnum, IsOptional, IsString } from "class-validator";
4
+
5
+ //#region src/models/ActionMenuOptionFormParameter.ts
6
+ var _ref;
7
+ /**
8
+ * @public
9
+ */
10
+ let ActionMenuFormInputType = /* @__PURE__ */ function(ActionMenuFormInputType$1) {
11
+ ActionMenuFormInputType$1["Text"] = "text";
12
+ return ActionMenuFormInputType$1;
13
+ }({});
14
+ /**
15
+ * @public
16
+ */
17
+ var ActionMenuFormParameter = class {
18
+ constructor(options) {
19
+ if (options) {
20
+ this.name = options.name;
21
+ this.title = options.title;
22
+ this.default = options.default;
23
+ this.description = options.description;
24
+ this.required = options.required;
25
+ this.type = options.type;
26
+ }
27
+ }
28
+ };
29
+ __decorate([IsString(), __decorateMetadata("design:type", String)], ActionMenuFormParameter.prototype, "name", void 0);
30
+ __decorate([IsString(), __decorateMetadata("design:type", String)], ActionMenuFormParameter.prototype, "title", void 0);
31
+ __decorate([
32
+ IsString(),
33
+ IsOptional(),
34
+ __decorateMetadata("design:type", String)
35
+ ], ActionMenuFormParameter.prototype, "default", void 0);
36
+ __decorate([IsString(), __decorateMetadata("design:type", String)], ActionMenuFormParameter.prototype, "description", void 0);
37
+ __decorate([
38
+ IsBoolean(),
39
+ IsOptional(),
40
+ __decorateMetadata("design:type", Boolean)
41
+ ], ActionMenuFormParameter.prototype, "required", void 0);
42
+ __decorate([
43
+ IsEnum(ActionMenuFormInputType),
44
+ IsOptional(),
45
+ __decorateMetadata("design:type", typeof (_ref = typeof ActionMenuFormInputType !== "undefined" && ActionMenuFormInputType) === "function" ? _ref : Object)
46
+ ], ActionMenuFormParameter.prototype, "type", void 0);
47
+
48
+ //#endregion
49
+ export { ActionMenuFormInputType, ActionMenuFormParameter };
50
+ //# sourceMappingURL=ActionMenuOptionFormParameter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuOptionFormParameter.mjs","names":[],"sources":["../../src/models/ActionMenuOptionFormParameter.ts"],"sourcesContent":["import { IsBoolean, IsEnum, IsOptional, IsString } from 'class-validator'\n\n/**\n * @public\n */\nexport enum ActionMenuFormInputType {\n Text = 'text',\n}\n\n/**\n * @public\n */\nexport interface ActionMenuFormParameterOptions {\n name: string\n title: string\n default?: string\n description: string\n required?: boolean\n type?: ActionMenuFormInputType\n}\n\n/**\n * @public\n */\nexport class ActionMenuFormParameter {\n public constructor(options: ActionMenuFormParameterOptions) {\n if (options) {\n this.name = options.name\n this.title = options.title\n this.default = options.default\n this.description = options.description\n this.required = options.required\n this.type = options.type\n }\n }\n\n @IsString()\n public name!: string\n\n @IsString()\n public title!: string\n\n @IsString()\n @IsOptional()\n public default?: string\n\n @IsString()\n public description!: string\n\n @IsBoolean()\n @IsOptional()\n public required?: boolean\n\n @IsEnum(ActionMenuFormInputType)\n @IsOptional()\n public type?: ActionMenuFormInputType\n}\n"],"mappings":";;;;;;;;;AAKA,IAAY,8EAAL;AACL;;;;;;AAkBF,IAAa,0BAAb,MAAqC;CACnC,AAAO,YAAY,SAAyC;AAC1D,MAAI,SAAS;AACX,QAAK,OAAO,QAAQ;AACpB,QAAK,QAAQ,QAAQ;AACrB,QAAK,UAAU,QAAQ;AACvB,QAAK,cAAc,QAAQ;AAC3B,QAAK,WAAW,QAAQ;AACxB,QAAK,OAAO,QAAQ;;;;YAIvB,UAAU;YAGV,UAAU;;CAGV,UAAU;CACV,YAAY;;;YAGZ,UAAU;;CAGV,WAAW;CACX,YAAY;;;;CAGZ,OAAO,wBAAwB;CAC/B,YAAY"}
@@ -0,0 +1,19 @@
1
+ //#region src/models/ActionMenuSelection.d.ts
2
+ /**
3
+ * @public
4
+ */
5
+ interface ActionMenuSelectionOptions {
6
+ name: string;
7
+ params?: Record<string, string>;
8
+ }
9
+ /**
10
+ * @public
11
+ */
12
+ declare class ActionMenuSelection {
13
+ constructor(options: ActionMenuSelectionOptions);
14
+ name: string;
15
+ params?: Record<string, string>;
16
+ }
17
+ //#endregion
18
+ export { ActionMenuSelection, ActionMenuSelectionOptions };
19
+ //# sourceMappingURL=ActionMenuSelection.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuSelection.d.mts","names":[],"sources":["../../src/models/ActionMenuSelection.ts"],"sourcesContent":[],"mappings":";;AAKA;AAQA;UARiB,0BAAA;;WAEN;;;;;cAME,mBAAA;uBACiB;;WAYZ"}
@@ -0,0 +1,27 @@
1
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs";
2
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs";
3
+ import { IsOptional, IsString } from "class-validator";
4
+
5
+ //#region src/models/ActionMenuSelection.ts
6
+ var _ref;
7
+ /**
8
+ * @public
9
+ */
10
+ var ActionMenuSelection = class {
11
+ constructor(options) {
12
+ if (options) {
13
+ this.name = options.name;
14
+ this.params = options.params;
15
+ }
16
+ }
17
+ };
18
+ __decorate([IsString(), __decorateMetadata("design:type", String)], ActionMenuSelection.prototype, "name", void 0);
19
+ __decorate([
20
+ IsString({ each: true }),
21
+ IsOptional(),
22
+ __decorateMetadata("design:type", typeof (_ref = typeof Record !== "undefined" && Record) === "function" ? _ref : Object)
23
+ ], ActionMenuSelection.prototype, "params", void 0);
24
+
25
+ //#endregion
26
+ export { ActionMenuSelection };
27
+ //# sourceMappingURL=ActionMenuSelection.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuSelection.mjs","names":[],"sources":["../../src/models/ActionMenuSelection.ts"],"sourcesContent":["import { IsOptional, IsString } from 'class-validator'\n\n/**\n * @public\n */\nexport interface ActionMenuSelectionOptions {\n name: string\n params?: Record<string, string>\n}\n\n/**\n * @public\n */\nexport class ActionMenuSelection {\n public constructor(options: ActionMenuSelectionOptions) {\n if (options) {\n this.name = options.name\n this.params = options.params\n }\n }\n\n @IsString()\n public name!: string\n\n @IsString({ each: true })\n @IsOptional()\n public params?: Record<string, string>\n}\n"],"mappings":";;;;;;;;;AAaA,IAAa,sBAAb,MAAiC;CAC/B,AAAO,YAAY,SAAqC;AACtD,MAAI,SAAS;AACX,QAAK,OAAO,QAAQ;AACpB,QAAK,SAAS,QAAQ;;;;YAIzB,UAAU;;CAGV,SAAS,EAAE,MAAM,MAAM,CAAC;CACxB,YAAY"}
@@ -0,0 +1,5 @@
1
+ import { ActionMenuFormInputType, ActionMenuFormParameter } from "./ActionMenuOptionFormParameter.mjs";
2
+ import { ActionMenuForm } from "./ActionMenuOptionForm.mjs";
3
+ import { ActionMenuOption } from "./ActionMenuOption.mjs";
4
+ import { ActionMenu } from "./ActionMenu.mjs";
5
+ import { ActionMenuSelection } from "./ActionMenuSelection.mjs";
@@ -0,0 +1,58 @@
1
+ import { ActionMenuRole } from "../ActionMenuRole.mjs";
2
+ import { ActionMenuState } from "../ActionMenuState.mjs";
3
+ import { ActionMenu } from "../models/ActionMenu.mjs";
4
+ import { ActionMenuSelection } from "../models/ActionMenuSelection.mjs";
5
+ import { BaseRecord, TagsBase } from "@credo-ts/core";
6
+
7
+ //#region src/repository/ActionMenuRecord.d.ts
8
+
9
+ /**
10
+ * @public
11
+ */
12
+ interface ActionMenuRecordProps {
13
+ id?: string;
14
+ state: ActionMenuState;
15
+ role: ActionMenuRole;
16
+ createdAt?: Date;
17
+ connectionId: string;
18
+ threadId: string;
19
+ menu?: ActionMenu;
20
+ performedAction?: ActionMenuSelection;
21
+ tags?: CustomActionMenuTags;
22
+ }
23
+ /**
24
+ * @public
25
+ */
26
+ type CustomActionMenuTags = TagsBase;
27
+ /**
28
+ * @public
29
+ */
30
+ type DefaultActionMenuTags = {
31
+ role: ActionMenuRole;
32
+ connectionId: string;
33
+ threadId: string;
34
+ };
35
+ /**
36
+ * @public
37
+ */
38
+ declare class ActionMenuRecord extends BaseRecord<DefaultActionMenuTags, CustomActionMenuTags> implements ActionMenuRecordProps {
39
+ state: ActionMenuState;
40
+ role: ActionMenuRole;
41
+ connectionId: string;
42
+ threadId: string;
43
+ menu?: ActionMenu;
44
+ performedAction?: ActionMenuSelection;
45
+ static readonly type = "ActionMenuRecord";
46
+ readonly type = "ActionMenuRecord";
47
+ constructor(props: ActionMenuRecordProps);
48
+ getTags(): {
49
+ role: ActionMenuRole;
50
+ connectionId: string;
51
+ threadId: string;
52
+ };
53
+ assertState(expectedStates: ActionMenuState | ActionMenuState[]): void;
54
+ assertRole(expectedRole: ActionMenuRole): void;
55
+ }
56
+ //#endregion
57
+ export { ActionMenuRecord, ActionMenuRecordProps, CustomActionMenuTags, DefaultActionMenuTags };
58
+ //# sourceMappingURL=ActionMenuRecord.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuRecord.d.mts","names":[],"sources":["../../src/repository/ActionMenuRecord.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAWA;AAES,UAFQ,qBAAA,CAER;EACD,EAAA,CAAA,EAAA,MAAA;EACM,KAAA,EAFL,eAEK;EAGL,IAAA,EAJD,cAIC;EACW,SAAA,CAAA,EAJN,IAIM;EACX,YAAA,EAAA,MAAA;EAAoB,QAAA,EAAA,MAAA;EAMjB,IAAA,CAAA,EARH,UAQG;EAKA,eAAA,CAAA,EAZQ,mBAaZ;EAQK,IAAA,CAAA,EApBJ,oBAqBP;;;;;AASc,KAxBJ,oBAAA,GAAuB,QAwBnB;;;;AAiCqB,KApDzB,qBAAA,GAoDyB;EAAkB,IAAA,EAnD/C,cAmD+C;EAYrB,YAAA,EAAA,MAAA;EAtDxB,QAAA,EAAA,MAAA;CACG;;;;cAFA,gBAAA,SACH,WAAW,uBAAuB,iCAC/B;SAEI;QACD;;;SAKA;oBAGW;;;qBAKC;;;;;;8BAyBS,kBAAkB;2BAYrB"}
@@ -0,0 +1,52 @@
1
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs";
2
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs";
3
+ import { ActionMenu } from "../models/ActionMenu.mjs";
4
+ import { ActionMenuSelection } from "../models/ActionMenuSelection.mjs";
5
+ import "../models/index.mjs";
6
+ import { BaseRecord, CredoError, utils } from "@credo-ts/core";
7
+ import { Type } from "class-transformer";
8
+
9
+ //#region src/repository/ActionMenuRecord.ts
10
+ var _ref, _ref2;
11
+ /**
12
+ * @public
13
+ */
14
+ var ActionMenuRecord = class ActionMenuRecord extends BaseRecord {
15
+ constructor(props) {
16
+ super();
17
+ this.type = ActionMenuRecord.type;
18
+ if (props) {
19
+ this.id = props.id ?? utils.uuid();
20
+ this.createdAt = props.createdAt ?? /* @__PURE__ */ new Date();
21
+ this.connectionId = props.connectionId;
22
+ this.threadId = props.threadId;
23
+ this.state = props.state;
24
+ this.role = props.role;
25
+ this.menu = props.menu;
26
+ this.performedAction = props.performedAction;
27
+ this._tags = props.tags ?? {};
28
+ }
29
+ }
30
+ getTags() {
31
+ return {
32
+ ...this._tags,
33
+ role: this.role,
34
+ connectionId: this.connectionId,
35
+ threadId: this.threadId
36
+ };
37
+ }
38
+ assertState(expectedStates) {
39
+ if (!Array.isArray(expectedStates)) expectedStates = [expectedStates];
40
+ if (!expectedStates.includes(this.state)) throw new CredoError(`Action Menu record is in invalid state ${this.state}. Valid states are: ${expectedStates.join(", ")}.`);
41
+ }
42
+ assertRole(expectedRole) {
43
+ if (this.role !== expectedRole) throw new CredoError(`Action Menu record has invalid role ${this.role}. Expected role ${expectedRole}.`);
44
+ }
45
+ };
46
+ ActionMenuRecord.type = "ActionMenuRecord";
47
+ __decorate([Type(() => ActionMenu), __decorateMetadata("design:type", typeof (_ref = typeof ActionMenu !== "undefined" && ActionMenu) === "function" ? _ref : Object)], ActionMenuRecord.prototype, "menu", void 0);
48
+ __decorate([Type(() => ActionMenuSelection), __decorateMetadata("design:type", typeof (_ref2 = typeof ActionMenuSelection !== "undefined" && ActionMenuSelection) === "function" ? _ref2 : Object)], ActionMenuRecord.prototype, "performedAction", void 0);
49
+
50
+ //#endregion
51
+ export { ActionMenuRecord };
52
+ //# sourceMappingURL=ActionMenuRecord.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuRecord.mjs","names":[],"sources":["../../src/repository/ActionMenuRecord.ts"],"sourcesContent":["import type { TagsBase } from '@credo-ts/core'\nimport { BaseRecord, CredoError, utils } from '@credo-ts/core'\nimport { Type } from 'class-transformer'\nimport type { ActionMenuRole } from '../ActionMenuRole'\nimport type { ActionMenuState } from '../ActionMenuState'\n\nimport { ActionMenu, ActionMenuSelection } from '../models'\n\n/**\n * @public\n */\nexport interface ActionMenuRecordProps {\n id?: string\n state: ActionMenuState\n role: ActionMenuRole\n createdAt?: Date\n connectionId: string\n threadId: string\n menu?: ActionMenu\n performedAction?: ActionMenuSelection\n tags?: CustomActionMenuTags\n}\n\n/**\n * @public\n */\nexport type CustomActionMenuTags = TagsBase\n\n/**\n * @public\n */\nexport type DefaultActionMenuTags = {\n role: ActionMenuRole\n connectionId: string\n threadId: string\n}\n\n/**\n * @public\n */\nexport class ActionMenuRecord\n extends BaseRecord<DefaultActionMenuTags, CustomActionMenuTags>\n implements ActionMenuRecordProps\n{\n public state!: ActionMenuState\n public role!: ActionMenuRole\n public connectionId!: string\n public threadId!: string\n\n @Type(() => ActionMenu)\n public menu?: ActionMenu\n\n @Type(() => ActionMenuSelection)\n public performedAction?: ActionMenuSelection\n\n public static readonly type = 'ActionMenuRecord'\n public readonly type = ActionMenuRecord.type\n\n public constructor(props: ActionMenuRecordProps) {\n super()\n\n if (props) {\n this.id = props.id ?? utils.uuid()\n this.createdAt = props.createdAt ?? new Date()\n this.connectionId = props.connectionId\n this.threadId = props.threadId\n this.state = props.state\n this.role = props.role\n this.menu = props.menu\n this.performedAction = props.performedAction\n this._tags = props.tags ?? {}\n }\n }\n\n public getTags() {\n return {\n ...this._tags,\n role: this.role,\n connectionId: this.connectionId,\n threadId: this.threadId,\n }\n }\n\n public assertState(expectedStates: ActionMenuState | ActionMenuState[]) {\n if (!Array.isArray(expectedStates)) {\n expectedStates = [expectedStates]\n }\n\n if (!expectedStates.includes(this.state)) {\n throw new CredoError(\n `Action Menu record is in invalid state ${this.state}. Valid states are: ${expectedStates.join(', ')}.`\n )\n }\n }\n\n public assertRole(expectedRole: ActionMenuRole) {\n if (this.role !== expectedRole) {\n throw new CredoError(`Action Menu record has invalid role ${this.role}. Expected role ${expectedRole}.`)\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAwCA,IAAa,mBAAb,MAAa,yBACH,WAEV;CAeE,AAAO,YAAY,OAA8B;AAC/C,SAAO;OAHO,OAAO,iBAAiB;AAKtC,MAAI,OAAO;AACT,QAAK,KAAK,MAAM,MAAM,MAAM,MAAM;AAClC,QAAK,YAAY,MAAM,6BAAa,IAAI,MAAM;AAC9C,QAAK,eAAe,MAAM;AAC1B,QAAK,WAAW,MAAM;AACtB,QAAK,QAAQ,MAAM;AACnB,QAAK,OAAO,MAAM;AAClB,QAAK,OAAO,MAAM;AAClB,QAAK,kBAAkB,MAAM;AAC7B,QAAK,QAAQ,MAAM,QAAQ,EAAE;;;CAIjC,AAAO,UAAU;AACf,SAAO;GACL,GAAG,KAAK;GACR,MAAM,KAAK;GACX,cAAc,KAAK;GACnB,UAAU,KAAK;GAChB;;CAGH,AAAO,YAAY,gBAAqD;AACtE,MAAI,CAAC,MAAM,QAAQ,eAAe,CAChC,kBAAiB,CAAC,eAAe;AAGnC,MAAI,CAAC,eAAe,SAAS,KAAK,MAAM,CACtC,OAAM,IAAI,WACR,0CAA0C,KAAK,MAAM,sBAAsB,eAAe,KAAK,KAAK,CAAC,GACtG;;CAIL,AAAO,WAAW,cAA8B;AAC9C,MAAI,KAAK,SAAS,aAChB,OAAM,IAAI,WAAW,uCAAuC,KAAK,KAAK,kBAAkB,aAAa,GAAG;;;iBA1CrF,OAAO;YAN7B,WAAW,WAAW;YAGtB,WAAW,oBAAoB"}
@@ -0,0 +1,14 @@
1
+ import { ActionMenuRecord } from "./ActionMenuRecord.mjs";
2
+ import { EventEmitter, Repository, StorageService } from "@credo-ts/core";
3
+
4
+ //#region src/repository/ActionMenuRepository.d.ts
5
+
6
+ /**
7
+ * @internal
8
+ */
9
+ declare class ActionMenuRepository extends Repository<ActionMenuRecord> {
10
+ constructor(storageService: StorageService<ActionMenuRecord>, eventEmitter: EventEmitter);
11
+ }
12
+ //#endregion
13
+ export { ActionMenuRepository };
14
+ //# sourceMappingURL=ActionMenuRepository.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuRepository.d.mts","names":[],"sources":["../../src/repository/ActionMenuRepository.ts"],"sourcesContent":[],"mappings":";;;;;;;AAOA;AACqD,cAAxC,oBAAA,SAA6B,UAAW,CAAA,gBAAA,CAAA,CAAA;EAEuB,WAAA,CAAA,cAAA,EAAf,cAAe,CAAA,gBAAA,CAAA,EAAA,YAAA,EAC1D,YAD0D"}
@@ -0,0 +1,22 @@
1
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs";
2
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs";
3
+ import { ActionMenuRecord } from "./ActionMenuRecord.mjs";
4
+ import { __decorateParam } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateParam.mjs";
5
+ import { EventEmitter, InjectionSymbols, Repository, inject, injectable } from "@credo-ts/core";
6
+
7
+ //#region src/repository/ActionMenuRepository.ts
8
+ var _ref;
9
+ let ActionMenuRepository = class ActionMenuRepository$1 extends Repository {
10
+ constructor(storageService, eventEmitter) {
11
+ super(ActionMenuRecord, storageService, eventEmitter);
12
+ }
13
+ };
14
+ ActionMenuRepository = __decorate([
15
+ injectable(),
16
+ __decorateParam(0, inject(InjectionSymbols.StorageService)),
17
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref = typeof EventEmitter !== "undefined" && EventEmitter) === "function" ? _ref : Object])
18
+ ], ActionMenuRepository);
19
+
20
+ //#endregion
21
+ export { ActionMenuRepository };
22
+ //# sourceMappingURL=ActionMenuRepository.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuRepository.mjs","names":["ActionMenuRepository","storageService: StorageService<ActionMenuRecord>"],"sources":["../../src/repository/ActionMenuRepository.ts"],"sourcesContent":["import { EventEmitter, InjectionSymbols, inject, injectable, Repository, type StorageService } from '@credo-ts/core'\n\nimport { ActionMenuRecord } from './ActionMenuRecord'\n\n/**\n * @internal\n */\n@injectable()\nexport class ActionMenuRepository extends Repository<ActionMenuRecord> {\n public constructor(\n @inject(InjectionSymbols.StorageService) storageService: StorageService<ActionMenuRecord>,\n eventEmitter: EventEmitter\n ) {\n super(ActionMenuRecord, storageService, eventEmitter)\n }\n}\n"],"mappings":";;;;;;;;AAQO,iCAAMA,+BAA6B,WAA6B;CACrE,AAAO,YACL,AAAyCC,gBACzC,cACA;AACA,QAAM,kBAAkB,gBAAgB,aAAa;;;;CANxD,YAAY;oBAGR,OAAO,iBAAiB,eAAe"}
@@ -0,0 +1,2 @@
1
+ import { ActionMenuRecord, ActionMenuRecordProps, CustomActionMenuTags, DefaultActionMenuTags } from "./ActionMenuRecord.mjs";
2
+ import { ActionMenuRepository } from "./ActionMenuRepository.mjs";
@@ -0,0 +1,2 @@
1
+ import { ActionMenuRecord } from "./ActionMenuRecord.mjs";
2
+ import { ActionMenuRepository } from "./ActionMenuRepository.mjs";
@@ -0,0 +1,46 @@
1
+ import { ActionMenuRecord } from "../repository/ActionMenuRecord.mjs";
2
+ import { ActionMenuRepository } from "../repository/ActionMenuRepository.mjs";
3
+ import "../repository/index.mjs";
4
+ import { ActionMenuProblemReportMessage } from "../messages/ActionMenuProblemReportMessage.mjs";
5
+ import { MenuMessage } from "../messages/MenuMessage.mjs";
6
+ import { MenuRequestMessage } from "../messages/MenuRequestMessage.mjs";
7
+ import { PerformMessage } from "../messages/PerformMessage.mjs";
8
+ import "../messages/index.mjs";
9
+ import { ClearMenuOptions, CreateMenuOptions, CreatePerformOptions, CreateRequestOptions, FindMenuOptions } from "./ActionMenuServiceOptions.mjs";
10
+ import { AgentConfig, AgentContext, EventEmitter, Query, QueryOptions } from "@credo-ts/core";
11
+ import { DidCommInboundMessageContext } from "@credo-ts/didcomm";
12
+
13
+ //#region src/services/ActionMenuService.d.ts
14
+ /**
15
+ * @internal
16
+ */
17
+ declare class ActionMenuService {
18
+ private actionMenuRepository;
19
+ private eventEmitter;
20
+ private logger;
21
+ constructor(actionMenuRepository: ActionMenuRepository, agentConfig: AgentConfig, eventEmitter: EventEmitter);
22
+ createRequest(agentContext: AgentContext, options: CreateRequestOptions): Promise<{
23
+ message: MenuRequestMessage;
24
+ record: ActionMenuRecord;
25
+ }>;
26
+ processRequest(messageContext: DidCommInboundMessageContext<MenuRequestMessage>): Promise<ActionMenuRecord>;
27
+ createMenu(agentContext: AgentContext, options: CreateMenuOptions): Promise<{
28
+ message: MenuMessage;
29
+ record: ActionMenuRecord;
30
+ }>;
31
+ processMenu(messageContext: DidCommInboundMessageContext<MenuMessage>): Promise<void>;
32
+ createPerform(agentContext: AgentContext, options: CreatePerformOptions): Promise<{
33
+ message: PerformMessage;
34
+ record: ActionMenuRecord;
35
+ }>;
36
+ processPerform(messageContext: DidCommInboundMessageContext<PerformMessage>): Promise<void>;
37
+ clearMenu(agentContext: AgentContext, options: ClearMenuOptions): Promise<ActionMenuRecord>;
38
+ processProblemReport(messageContext: DidCommInboundMessageContext<ActionMenuProblemReportMessage>): Promise<ActionMenuRecord>;
39
+ findById(agentContext: AgentContext, actionMenuRecordId: string): Promise<ActionMenuRecord | null>;
40
+ find(agentContext: AgentContext, options: FindMenuOptions): Promise<ActionMenuRecord | null>;
41
+ findAllByQuery(agentContext: AgentContext, options: Query<ActionMenuRecord>, queryOptions?: QueryOptions): Promise<ActionMenuRecord[]>;
42
+ private emitStateChangedEvent;
43
+ }
44
+ //#endregion
45
+ export { ActionMenuService };
46
+ //# sourceMappingURL=ActionMenuService.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuService.d.mts","names":[],"sources":["../../src/services/ActionMenuService.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;cAyBa,iBAAA;;;EAAA,QAAA,MAAA;EAK8B,WAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,WAAA,EAAmC,WAAnC,EAAA,YAAA,EAA8D,YAA9D;EAAmC,aAAA,CAAA,YAAA,EAMnC,YANmC,EAAA,OAAA,EAMZ,oBANY,CAAA,EAMQ,OANR,CAAA;IAA2B,OAAA,oBAAA;IAM9D,MAAA,kBAAA;EAAuB,CAAA,CAAA;iCAsCpB,6BAA6B,sBAAmB,QAAA;2BAuCtD,uBAAuB,oBAAiB;IA7EM,OAAA,aAAA;IAsCX,MAAA,kBAAA;EAA7B,CAAA,CAAA;EAAgD,WAAA,CAAA,cAAA,EA8FnD,4BA9FmD,CA8FtB,WA9FsB,CAAA,CAAA,EA8FV,OA9FU,CAAA,IAAA,CAAA;EAAA,aAAA,CAAA,YAAA,EAgJnD,YAhJmD,EAAA,OAAA,EAgJ5B,oBAhJ4B,CAAA,EAgJR,OAhJQ,CAAA;IAuCtD,OAAA,gBAAA;IAAuB,MAAA,kBAAA;;iCAyIjB,6BAA6B,kBAAe;EAzIV,SAAA,CAAA,YAAA,EAqLzC,YArLyC,EAAA,OAAA,EAqLlB,gBArLkB,CAAA,EAqLF,OArLE,CAqLF,gBArLE,CAAA;EAuDR,oBAAA,CAAA,cAAA,EAgJpD,4BAhJoD,CAgJvB,8BAhJuB,CAAA,CAAA,EAiJnE,OAjJmE,CAiJ3D,gBAjJ2D,CAAA;EAA7B,QAAA,CAAA,YAAA,EAoKL,YApKK,EAAA,kBAAA,EAAA,MAAA,CAAA,EAoKmC,OApKnC,CAoKmC,gBApKnC,GAAA,IAAA,CAAA;EAAyC,IAAA,CAAA,YAAA,EAwKlD,YAxKkD,EAAA,OAAA,EAwK3B,eAxK2B,CAAA,EAwKZ,OAxKY,CAwKZ,gBAxKY,GAAA,IAAA,CAAA;EAkDzC,cAAA,CAAA,YAAA,EA+HzB,YA/HyB,EAAA,OAAA,EAgI9B,KAhI8B,CAgIxB,gBAhIwB,CAAA,EAAA,YAAA,CAAA,EAiIxB,YAjIwB,CAAA,EAiIZ,OAjIY,CAiIZ,gBAjIY,EAAA,CAAA;EAAuB,QAAA,qBAAA"}
@@ -0,0 +1,258 @@
1
+ import { ActionMenuRole } from "../ActionMenuRole.mjs";
2
+ import { ActionMenuEventTypes } from "../ActionMenuEvents.mjs";
3
+ import { ActionMenuState } from "../ActionMenuState.mjs";
4
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs";
5
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs";
6
+ import { ActionMenu } from "../models/ActionMenu.mjs";
7
+ import { ActionMenuSelection } from "../models/ActionMenuSelection.mjs";
8
+ import "../models/index.mjs";
9
+ import { MenuMessage } from "../messages/MenuMessage.mjs";
10
+ import { MenuRequestMessage } from "../messages/MenuRequestMessage.mjs";
11
+ import { PerformMessage } from "../messages/PerformMessage.mjs";
12
+ import "../messages/index.mjs";
13
+ import { ActionMenuProblemReportError } from "../errors/ActionMenuProblemReportError.mjs";
14
+ import { ActionMenuProblemReportReason } from "../errors/ActionMenuProblemReportReason.mjs";
15
+ import { ActionMenuRecord } from "../repository/ActionMenuRecord.mjs";
16
+ import { ActionMenuRepository } from "../repository/ActionMenuRepository.mjs";
17
+ import "../repository/index.mjs";
18
+ import { AgentConfig, CredoError, EventEmitter, injectable } from "@credo-ts/core";
19
+
20
+ //#region src/services/ActionMenuService.ts
21
+ var _ref, _ref2, _ref3;
22
+ let ActionMenuService = class ActionMenuService$1 {
23
+ constructor(actionMenuRepository, agentConfig, eventEmitter) {
24
+ this.actionMenuRepository = actionMenuRepository;
25
+ this.eventEmitter = eventEmitter;
26
+ this.logger = agentConfig.logger;
27
+ }
28
+ async createRequest(agentContext, options) {
29
+ options.connection.assertReady();
30
+ const menuRequestMessage = new MenuRequestMessage({});
31
+ let actionMenuRecord = await this.find(agentContext, {
32
+ connectionId: options.connection.id,
33
+ role: ActionMenuRole.Requester
34
+ });
35
+ if (actionMenuRecord) {
36
+ const previousState = actionMenuRecord.state;
37
+ actionMenuRecord.state = ActionMenuState.AwaitingRootMenu;
38
+ actionMenuRecord.threadId = menuRequestMessage.id;
39
+ actionMenuRecord.menu = void 0;
40
+ actionMenuRecord.performedAction = void 0;
41
+ await this.actionMenuRepository.update(agentContext, actionMenuRecord);
42
+ this.emitStateChangedEvent(agentContext, actionMenuRecord, previousState);
43
+ } else {
44
+ actionMenuRecord = new ActionMenuRecord({
45
+ connectionId: options.connection.id,
46
+ role: ActionMenuRole.Requester,
47
+ state: ActionMenuState.AwaitingRootMenu,
48
+ threadId: menuRequestMessage.threadId
49
+ });
50
+ await this.actionMenuRepository.save(agentContext, actionMenuRecord);
51
+ this.emitStateChangedEvent(agentContext, actionMenuRecord, null);
52
+ }
53
+ return {
54
+ message: menuRequestMessage,
55
+ record: actionMenuRecord
56
+ };
57
+ }
58
+ async processRequest(messageContext) {
59
+ const { message: menuRequestMessage, agentContext } = messageContext;
60
+ this.logger.debug(`Processing menu request with id ${menuRequestMessage.id}`);
61
+ const connection = messageContext.assertReadyConnection();
62
+ let actionMenuRecord = await this.find(agentContext, {
63
+ connectionId: connection.id,
64
+ role: ActionMenuRole.Responder
65
+ });
66
+ if (actionMenuRecord) {
67
+ const previousState = actionMenuRecord.state;
68
+ actionMenuRecord.state = ActionMenuState.PreparingRootMenu;
69
+ actionMenuRecord.threadId = menuRequestMessage.id;
70
+ actionMenuRecord.menu = void 0;
71
+ actionMenuRecord.performedAction = void 0;
72
+ await this.actionMenuRepository.update(agentContext, actionMenuRecord);
73
+ this.emitStateChangedEvent(agentContext, actionMenuRecord, previousState);
74
+ } else {
75
+ actionMenuRecord = new ActionMenuRecord({
76
+ connectionId: connection.id,
77
+ role: ActionMenuRole.Responder,
78
+ state: ActionMenuState.PreparingRootMenu,
79
+ threadId: menuRequestMessage.threadId
80
+ });
81
+ await this.actionMenuRepository.save(agentContext, actionMenuRecord);
82
+ this.emitStateChangedEvent(agentContext, actionMenuRecord, null);
83
+ }
84
+ return actionMenuRecord;
85
+ }
86
+ async createMenu(agentContext, options) {
87
+ options.connection.assertReady();
88
+ if (new Set(options.menu.options.map((v) => v.name)).size < options.menu.options.length) throw new CredoError("Action Menu contains duplicated options");
89
+ const menuMessage = new MenuMessage({
90
+ title: options.menu.title,
91
+ description: options.menu.description,
92
+ options: options.menu.options
93
+ });
94
+ let actionMenuRecord = await this.find(agentContext, {
95
+ connectionId: options.connection.id,
96
+ role: ActionMenuRole.Responder
97
+ });
98
+ if (actionMenuRecord) {
99
+ actionMenuRecord.assertState([
100
+ ActionMenuState.Null,
101
+ ActionMenuState.PreparingRootMenu,
102
+ ActionMenuState.Done
103
+ ]);
104
+ if (actionMenuRecord.state !== ActionMenuState.Null) menuMessage.setThread({ threadId: actionMenuRecord.threadId });
105
+ const previousState = actionMenuRecord.state;
106
+ actionMenuRecord.menu = options.menu;
107
+ actionMenuRecord.state = ActionMenuState.AwaitingSelection;
108
+ actionMenuRecord.threadId = menuMessage.threadId;
109
+ await this.actionMenuRepository.update(agentContext, actionMenuRecord);
110
+ this.emitStateChangedEvent(agentContext, actionMenuRecord, previousState);
111
+ } else {
112
+ actionMenuRecord = new ActionMenuRecord({
113
+ connectionId: options.connection.id,
114
+ role: ActionMenuRole.Responder,
115
+ state: ActionMenuState.AwaitingSelection,
116
+ menu: options.menu,
117
+ threadId: menuMessage.threadId
118
+ });
119
+ await this.actionMenuRepository.save(agentContext, actionMenuRecord);
120
+ this.emitStateChangedEvent(agentContext, actionMenuRecord, null);
121
+ }
122
+ return {
123
+ message: menuMessage,
124
+ record: actionMenuRecord
125
+ };
126
+ }
127
+ async processMenu(messageContext) {
128
+ const { message: menuMessage, agentContext } = messageContext;
129
+ this.logger.debug(`Processing action menu with id ${menuMessage.id}`);
130
+ const connection = messageContext.assertReadyConnection();
131
+ const record = await this.find(agentContext, {
132
+ connectionId: connection.id,
133
+ role: ActionMenuRole.Requester
134
+ });
135
+ if (record) {
136
+ const previousState = record.state;
137
+ record.state = ActionMenuState.PreparingSelection;
138
+ record.menu = new ActionMenu({
139
+ title: menuMessage.title,
140
+ description: menuMessage.description,
141
+ options: menuMessage.options
142
+ });
143
+ record.threadId = menuMessage.threadId;
144
+ record.performedAction = void 0;
145
+ await this.actionMenuRepository.update(agentContext, record);
146
+ this.emitStateChangedEvent(agentContext, record, previousState);
147
+ } else {
148
+ const actionMenuRecord = new ActionMenuRecord({
149
+ connectionId: connection.id,
150
+ role: ActionMenuRole.Requester,
151
+ state: ActionMenuState.PreparingSelection,
152
+ threadId: menuMessage.threadId,
153
+ menu: new ActionMenu({
154
+ title: menuMessage.title,
155
+ description: menuMessage.description,
156
+ options: menuMessage.options
157
+ })
158
+ });
159
+ await this.actionMenuRepository.save(agentContext, actionMenuRecord);
160
+ this.emitStateChangedEvent(agentContext, actionMenuRecord, null);
161
+ }
162
+ }
163
+ async createPerform(agentContext, options) {
164
+ const { actionMenuRecord: record, performedAction: performedSelection } = options;
165
+ record.assertRole(ActionMenuRole.Requester);
166
+ record.assertState([ActionMenuState.PreparingSelection]);
167
+ if (!record.menu?.options.some((item) => item.name === performedSelection.name)) throw new CredoError("Selection does not match valid actions");
168
+ const previousState = record.state;
169
+ const menuMessage = new PerformMessage({
170
+ name: performedSelection.name,
171
+ params: performedSelection.params,
172
+ threadId: record.threadId
173
+ });
174
+ record.performedAction = options.performedAction;
175
+ record.state = ActionMenuState.Done;
176
+ await this.actionMenuRepository.update(agentContext, record);
177
+ this.emitStateChangedEvent(agentContext, record, previousState);
178
+ return {
179
+ message: menuMessage,
180
+ record
181
+ };
182
+ }
183
+ async processPerform(messageContext) {
184
+ const { message: performMessage, agentContext } = messageContext;
185
+ this.logger.debug(`Processing action menu perform with id ${performMessage.id}`);
186
+ const connection = messageContext.assertReadyConnection();
187
+ const record = await this.find(agentContext, {
188
+ connectionId: connection.id,
189
+ role: ActionMenuRole.Responder,
190
+ threadId: performMessage.threadId
191
+ });
192
+ if (record) {
193
+ if (record.state === ActionMenuState.Null) throw new ActionMenuProblemReportError("Action Menu has been cleared by the responder", { problemCode: ActionMenuProblemReportReason.Timeout });
194
+ record.assertState([ActionMenuState.AwaitingSelection]);
195
+ if (!record.menu?.options.some((item) => item.name === performMessage.name)) throw new CredoError("Selection does not match valid actions");
196
+ const previousState = record.state;
197
+ record.state = ActionMenuState.Done;
198
+ record.performedAction = new ActionMenuSelection({
199
+ name: performMessage.name,
200
+ params: performMessage.params
201
+ });
202
+ await this.actionMenuRepository.update(agentContext, record);
203
+ this.emitStateChangedEvent(agentContext, record, previousState);
204
+ } else throw new CredoError(`No Action Menu found with thread id ${messageContext.message.threadId}`);
205
+ }
206
+ async clearMenu(agentContext, options) {
207
+ const { actionMenuRecord: record } = options;
208
+ const previousState = record.state;
209
+ record.state = ActionMenuState.Null;
210
+ record.menu = void 0;
211
+ record.performedAction = void 0;
212
+ await this.actionMenuRepository.update(agentContext, record);
213
+ this.emitStateChangedEvent(agentContext, record, previousState);
214
+ return record;
215
+ }
216
+ async processProblemReport(messageContext) {
217
+ const { message: actionMenuProblemReportMessage, agentContext } = messageContext;
218
+ const connection = messageContext.assertReadyConnection();
219
+ this.logger.debug(`Processing problem report with id ${actionMenuProblemReportMessage.id}`);
220
+ const actionMenuRecord = await this.find(agentContext, {
221
+ role: ActionMenuRole.Requester,
222
+ connectionId: connection.id
223
+ });
224
+ if (!actionMenuRecord) throw new CredoError(`Unable to process action menu problem: record not found for connection id ${connection.id}`);
225
+ return await this.clearMenu(agentContext, { actionMenuRecord });
226
+ }
227
+ async findById(agentContext, actionMenuRecordId) {
228
+ return await this.actionMenuRepository.findById(agentContext, actionMenuRecordId);
229
+ }
230
+ async find(agentContext, options) {
231
+ return await this.actionMenuRepository.findSingleByQuery(agentContext, {
232
+ connectionId: options.connectionId,
233
+ role: options.role,
234
+ threadId: options.threadId
235
+ });
236
+ }
237
+ async findAllByQuery(agentContext, options, queryOptions) {
238
+ return await this.actionMenuRepository.findByQuery(agentContext, options, queryOptions);
239
+ }
240
+ emitStateChangedEvent(agentContext, actionMenuRecord, previousState) {
241
+ this.eventEmitter.emit(agentContext, {
242
+ type: ActionMenuEventTypes.ActionMenuStateChanged,
243
+ payload: {
244
+ actionMenuRecord: actionMenuRecord.clone(),
245
+ previousState
246
+ }
247
+ });
248
+ }
249
+ };
250
+ ActionMenuService = __decorate([injectable(), __decorateMetadata("design:paramtypes", [
251
+ typeof (_ref = typeof ActionMenuRepository !== "undefined" && ActionMenuRepository) === "function" ? _ref : Object,
252
+ typeof (_ref2 = typeof AgentConfig !== "undefined" && AgentConfig) === "function" ? _ref2 : Object,
253
+ typeof (_ref3 = typeof EventEmitter !== "undefined" && EventEmitter) === "function" ? _ref3 : Object
254
+ ])], ActionMenuService);
255
+
256
+ //#endregion
257
+ export { ActionMenuService };
258
+ //# sourceMappingURL=ActionMenuService.mjs.map