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

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 @@
1
+ {"version":3,"file":"ActionMenuService.mjs","names":["ActionMenuService"],"sources":["../../src/services/ActionMenuService.ts"],"sourcesContent":["import type { AgentContext, Logger, Query, QueryOptions } from '@credo-ts/core'\nimport { AgentConfig, CredoError, EventEmitter, injectable } from '@credo-ts/core'\nimport type { DidCommInboundMessageContext } from '@credo-ts/didcomm'\nimport type { ActionMenuStateChangedEvent } from '../ActionMenuEvents'\nimport { ActionMenuEventTypes } from '../ActionMenuEvents'\nimport { ActionMenuRole } from '../ActionMenuRole'\nimport { ActionMenuState } from '../ActionMenuState'\nimport { ActionMenuProblemReportError } from '../errors/ActionMenuProblemReportError'\nimport { ActionMenuProblemReportReason } from '../errors/ActionMenuProblemReportReason'\nimport type { ActionMenuProblemReportMessage } from '../messages'\nimport { MenuMessage, MenuRequestMessage, PerformMessage } from '../messages'\nimport { ActionMenu, ActionMenuSelection } from '../models'\nimport { ActionMenuRecord, ActionMenuRepository } from '../repository'\nimport type {\n ClearMenuOptions,\n CreateMenuOptions,\n CreatePerformOptions,\n CreateRequestOptions,\n FindMenuOptions,\n} from './ActionMenuServiceOptions'\n\n/**\n * @internal\n */\n@injectable()\nexport class ActionMenuService {\n private actionMenuRepository: ActionMenuRepository\n private eventEmitter: EventEmitter\n private logger: Logger\n\n public constructor(actionMenuRepository: ActionMenuRepository, agentConfig: AgentConfig, eventEmitter: EventEmitter) {\n this.actionMenuRepository = actionMenuRepository\n this.eventEmitter = eventEmitter\n this.logger = agentConfig.logger\n }\n\n public async createRequest(agentContext: AgentContext, options: CreateRequestOptions) {\n // Assert\n options.connection.assertReady()\n\n // Create message\n const menuRequestMessage = new MenuRequestMessage({})\n\n // Create record if not existent for connection/role\n let actionMenuRecord = await this.find(agentContext, {\n connectionId: options.connection.id,\n role: ActionMenuRole.Requester,\n })\n\n if (actionMenuRecord) {\n // Protocol will be restarted and menu cleared\n const previousState = actionMenuRecord.state\n actionMenuRecord.state = ActionMenuState.AwaitingRootMenu\n actionMenuRecord.threadId = menuRequestMessage.id\n actionMenuRecord.menu = undefined\n actionMenuRecord.performedAction = undefined\n\n await this.actionMenuRepository.update(agentContext, actionMenuRecord)\n this.emitStateChangedEvent(agentContext, actionMenuRecord, previousState)\n } else {\n actionMenuRecord = new ActionMenuRecord({\n connectionId: options.connection.id,\n role: ActionMenuRole.Requester,\n state: ActionMenuState.AwaitingRootMenu,\n threadId: menuRequestMessage.threadId,\n })\n\n await this.actionMenuRepository.save(agentContext, actionMenuRecord)\n this.emitStateChangedEvent(agentContext, actionMenuRecord, null)\n }\n\n return { message: menuRequestMessage, record: actionMenuRecord }\n }\n\n public async processRequest(messageContext: DidCommInboundMessageContext<MenuRequestMessage>) {\n const { message: menuRequestMessage, agentContext } = messageContext\n\n this.logger.debug(`Processing menu request with id ${menuRequestMessage.id}`)\n\n // Assert\n const connection = messageContext.assertReadyConnection()\n\n let actionMenuRecord = await this.find(agentContext, {\n connectionId: connection.id,\n role: ActionMenuRole.Responder,\n })\n\n if (actionMenuRecord) {\n // Protocol will be restarted and menu cleared\n const previousState = actionMenuRecord.state\n actionMenuRecord.state = ActionMenuState.PreparingRootMenu\n actionMenuRecord.threadId = menuRequestMessage.id\n actionMenuRecord.menu = undefined\n actionMenuRecord.performedAction = undefined\n\n await this.actionMenuRepository.update(agentContext, actionMenuRecord)\n this.emitStateChangedEvent(agentContext, actionMenuRecord, previousState)\n } else {\n // Create record\n actionMenuRecord = new ActionMenuRecord({\n connectionId: connection.id,\n role: ActionMenuRole.Responder,\n state: ActionMenuState.PreparingRootMenu,\n threadId: menuRequestMessage.threadId,\n })\n\n await this.actionMenuRepository.save(agentContext, actionMenuRecord)\n this.emitStateChangedEvent(agentContext, actionMenuRecord, null)\n }\n\n return actionMenuRecord\n }\n\n public async createMenu(agentContext: AgentContext, options: CreateMenuOptions) {\n // Assert connection ready\n options.connection.assertReady()\n\n const uniqueNames = new Set(options.menu.options.map((v) => v.name))\n if (uniqueNames.size < options.menu.options.length) {\n throw new CredoError('Action Menu contains duplicated options')\n }\n\n // Create message\n const menuMessage = new MenuMessage({\n title: options.menu.title,\n description: options.menu.description,\n options: options.menu.options,\n })\n\n // Check if there is an existing menu for this connection and role\n let actionMenuRecord = await this.find(agentContext, {\n connectionId: options.connection.id,\n role: ActionMenuRole.Responder,\n })\n\n // If so, continue existing flow\n if (actionMenuRecord) {\n actionMenuRecord.assertState([ActionMenuState.Null, ActionMenuState.PreparingRootMenu, ActionMenuState.Done])\n // The new menu will be bound to the existing thread\n // unless it is in null state (protocol reset)\n if (actionMenuRecord.state !== ActionMenuState.Null) {\n menuMessage.setThread({ threadId: actionMenuRecord.threadId })\n }\n\n const previousState = actionMenuRecord.state\n actionMenuRecord.menu = options.menu\n actionMenuRecord.state = ActionMenuState.AwaitingSelection\n actionMenuRecord.threadId = menuMessage.threadId\n\n await this.actionMenuRepository.update(agentContext, actionMenuRecord)\n this.emitStateChangedEvent(agentContext, actionMenuRecord, previousState)\n } else {\n // Create record\n actionMenuRecord = new ActionMenuRecord({\n connectionId: options.connection.id,\n role: ActionMenuRole.Responder,\n state: ActionMenuState.AwaitingSelection,\n menu: options.menu,\n threadId: menuMessage.threadId,\n })\n\n await this.actionMenuRepository.save(agentContext, actionMenuRecord)\n this.emitStateChangedEvent(agentContext, actionMenuRecord, null)\n }\n\n return { message: menuMessage, record: actionMenuRecord }\n }\n\n public async processMenu(messageContext: DidCommInboundMessageContext<MenuMessage>) {\n const { message: menuMessage, agentContext } = messageContext\n\n this.logger.debug(`Processing action menu with id ${menuMessage.id}`)\n\n // Assert\n const connection = messageContext.assertReadyConnection()\n\n // Check if there is an existing menu for this connection and role\n const record = await this.find(agentContext, {\n connectionId: connection.id,\n role: ActionMenuRole.Requester,\n })\n\n if (record) {\n // Record found: update with menu details\n const previousState = record.state\n\n record.state = ActionMenuState.PreparingSelection\n record.menu = new ActionMenu({\n title: menuMessage.title,\n description: menuMessage.description,\n options: menuMessage.options,\n })\n record.threadId = menuMessage.threadId\n record.performedAction = undefined\n\n await this.actionMenuRepository.update(agentContext, record)\n\n this.emitStateChangedEvent(agentContext, record, previousState)\n } else {\n // Record not found: create it\n const actionMenuRecord = new ActionMenuRecord({\n connectionId: connection.id,\n role: ActionMenuRole.Requester,\n state: ActionMenuState.PreparingSelection,\n threadId: menuMessage.threadId,\n menu: new ActionMenu({\n title: menuMessage.title,\n description: menuMessage.description,\n options: menuMessage.options,\n }),\n })\n\n await this.actionMenuRepository.save(agentContext, actionMenuRecord)\n\n this.emitStateChangedEvent(agentContext, actionMenuRecord, null)\n }\n }\n\n public async createPerform(agentContext: AgentContext, options: CreatePerformOptions) {\n const { actionMenuRecord: record, performedAction: performedSelection } = options\n\n // Assert\n record.assertRole(ActionMenuRole.Requester)\n record.assertState([ActionMenuState.PreparingSelection])\n\n const validSelection = record.menu?.options.some((item) => item.name === performedSelection.name)\n if (!validSelection) {\n throw new CredoError('Selection does not match valid actions')\n }\n\n const previousState = record.state\n\n // Create message\n const menuMessage = new PerformMessage({\n name: performedSelection.name,\n params: performedSelection.params,\n threadId: record.threadId,\n })\n\n // Update record\n record.performedAction = options.performedAction\n record.state = ActionMenuState.Done\n\n await this.actionMenuRepository.update(agentContext, record)\n\n this.emitStateChangedEvent(agentContext, record, previousState)\n\n return { message: menuMessage, record }\n }\n\n public async processPerform(messageContext: DidCommInboundMessageContext<PerformMessage>) {\n const { message: performMessage, agentContext } = messageContext\n\n this.logger.debug(`Processing action menu perform with id ${performMessage.id}`)\n\n const connection = messageContext.assertReadyConnection()\n\n // Check if there is an existing menu for this connection and role\n const record = await this.find(agentContext, {\n connectionId: connection.id,\n role: ActionMenuRole.Responder,\n threadId: performMessage.threadId,\n })\n\n if (record) {\n // Record found: check state and update with menu details\n\n // A Null state means that menu has been cleared by the responder.\n // Requester should be informed in order to request another menu\n if (record.state === ActionMenuState.Null) {\n throw new ActionMenuProblemReportError('Action Menu has been cleared by the responder', {\n problemCode: ActionMenuProblemReportReason.Timeout,\n })\n }\n record.assertState([ActionMenuState.AwaitingSelection])\n\n const validSelection = record.menu?.options.some((item) => item.name === performMessage.name)\n if (!validSelection) {\n throw new CredoError('Selection does not match valid actions')\n }\n\n const previousState = record.state\n\n record.state = ActionMenuState.Done\n record.performedAction = new ActionMenuSelection({ name: performMessage.name, params: performMessage.params })\n\n await this.actionMenuRepository.update(agentContext, record)\n\n this.emitStateChangedEvent(agentContext, record, previousState)\n } else {\n throw new CredoError(`No Action Menu found with thread id ${messageContext.message.threadId}`)\n }\n }\n\n public async clearMenu(agentContext: AgentContext, options: ClearMenuOptions) {\n const { actionMenuRecord: record } = options\n\n const previousState = record.state\n\n // Update record\n record.state = ActionMenuState.Null\n record.menu = undefined\n record.performedAction = undefined\n\n await this.actionMenuRepository.update(agentContext, record)\n\n this.emitStateChangedEvent(agentContext, record, previousState)\n\n return record\n }\n\n public async processProblemReport(\n messageContext: DidCommInboundMessageContext<ActionMenuProblemReportMessage>\n ): Promise<ActionMenuRecord> {\n const { message: actionMenuProblemReportMessage, agentContext } = messageContext\n\n const connection = messageContext.assertReadyConnection()\n\n this.logger.debug(`Processing problem report with id ${actionMenuProblemReportMessage.id}`)\n\n const actionMenuRecord = await this.find(agentContext, {\n role: ActionMenuRole.Requester,\n connectionId: connection.id,\n })\n\n if (!actionMenuRecord) {\n throw new CredoError(`Unable to process action menu problem: record not found for connection id ${connection.id}`)\n }\n // Clear menu to restart flow\n return await this.clearMenu(agentContext, { actionMenuRecord })\n }\n\n public async findById(agentContext: AgentContext, actionMenuRecordId: string) {\n return await this.actionMenuRepository.findById(agentContext, actionMenuRecordId)\n }\n\n public async find(agentContext: AgentContext, options: FindMenuOptions) {\n return await this.actionMenuRepository.findSingleByQuery(agentContext, {\n connectionId: options.connectionId,\n role: options.role,\n threadId: options.threadId,\n })\n }\n\n public async findAllByQuery(\n agentContext: AgentContext,\n options: Query<ActionMenuRecord>,\n queryOptions?: QueryOptions\n ) {\n return await this.actionMenuRepository.findByQuery(agentContext, options, queryOptions)\n }\n\n private emitStateChangedEvent(\n agentContext: AgentContext,\n actionMenuRecord: ActionMenuRecord,\n previousState: ActionMenuState | null\n ) {\n this.eventEmitter.emit<ActionMenuStateChangedEvent>(agentContext, {\n type: ActionMenuEventTypes.ActionMenuStateChanged,\n payload: {\n actionMenuRecord: actionMenuRecord.clone(),\n previousState: previousState,\n },\n })\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ActionMenuRole } from "../ActionMenuRole.mjs";
2
+ import { ActionMenu } from "../models/ActionMenu.mjs";
3
+ import { ActionMenuSelection } from "../models/ActionMenuSelection.mjs";
4
+ import { ActionMenuRecord } from "../repository/ActionMenuRecord.mjs";
5
+ import "../repository/index.mjs";
6
+ import { DidCommConnectionRecord } from "@credo-ts/didcomm";
7
+
8
+ //#region src/services/ActionMenuServiceOptions.d.ts
9
+ /**
10
+ * @internal
11
+ */
12
+ interface CreateRequestOptions {
13
+ connection: DidCommConnectionRecord;
14
+ }
15
+ /**
16
+ * @internal
17
+ */
18
+ interface CreateMenuOptions {
19
+ connection: DidCommConnectionRecord;
20
+ menu: ActionMenu;
21
+ }
22
+ /**
23
+ * @internal
24
+ */
25
+ interface CreatePerformOptions {
26
+ actionMenuRecord: ActionMenuRecord;
27
+ performedAction: ActionMenuSelection;
28
+ }
29
+ /**
30
+ * @internal
31
+ */
32
+ interface ClearMenuOptions {
33
+ actionMenuRecord: ActionMenuRecord;
34
+ }
35
+ /**
36
+ * @internal
37
+ */
38
+ interface FindMenuOptions {
39
+ connectionId: string;
40
+ role: ActionMenuRole;
41
+ threadId?: string;
42
+ }
43
+ //#endregion
44
+ export { ClearMenuOptions, CreateMenuOptions, CreatePerformOptions, CreateRequestOptions, FindMenuOptions };
45
+ //# sourceMappingURL=ActionMenuServiceOptions.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenuServiceOptions.d.mts","names":[],"sources":["../../src/services/ActionMenuServiceOptions.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AASiB,UAAA,oBAAA,CAAoB;EAOpB,UAAA,EANH,uBAOA;AAOd;AAQA;AAOA;;UAvBiB,iBAAA;cACH;QACN;;;;;UAMS,oBAAA;oBACG;mBACD;;;;;UAMF,gBAAA;oBACG;;;;;UAMH,eAAA;;QAET"}
@@ -0,0 +1,2 @@
1
+ import { ClearMenuOptions, CreateMenuOptions, CreatePerformOptions, CreateRequestOptions, FindMenuOptions } from "./ActionMenuServiceOptions.mjs";
2
+ import { ActionMenuService } from "./ActionMenuService.mjs";
@@ -0,0 +1 @@
1
+ import { ActionMenuService } from "./ActionMenuService.mjs";
package/package.json CHANGED
@@ -1,8 +1,10 @@
1
1
  {
2
2
  "name": "@credo-ts/action-menu",
3
- "main": "build/index",
4
- "types": "build/index",
5
- "version": "0.6.1-pr-2091-20241119140918",
3
+ "exports": {
4
+ ".": "./build/index.mjs",
5
+ "./package.json": "./package.json"
6
+ },
7
+ "version": "0.6.2-alpha-20251210145840",
6
8
  "files": [
7
9
  "build"
8
10
  ],
@@ -18,19 +20,18 @@
18
20
  },
19
21
  "dependencies": {
20
22
  "class-transformer": "0.5.1",
21
- "class-validator": "0.14.1",
22
- "rxjs": "^7.8.0",
23
- "@credo-ts/core": "0.6.1-pr-2091-20241119140918"
23
+ "class-validator": "^0.14.1",
24
+ "rxjs": "^7.8.2",
25
+ "@credo-ts/core": "0.6.2-alpha-20251210145840",
26
+ "@credo-ts/didcomm": "0.6.2-alpha-20251210145840"
24
27
  },
25
28
  "devDependencies": {
26
- "reflect-metadata": "^0.1.13",
27
- "rimraf": "^4.4.0",
28
- "typescript": "~5.5.2"
29
+ "reflect-metadata": "0.2.2",
30
+ "typescript": "~5.9.3"
29
31
  },
30
32
  "scripts": {
31
- "build": "pnpm run clean && pnpm run compile",
32
- "clean": "rimraf ./build",
33
- "compile": "tsc -p tsconfig.build.json",
34
- "test": "jest"
35
- }
33
+ "build": "tsdown --config-loader unconfig"
34
+ },
35
+ "types": "./build/index.d.mts",
36
+ "module": "./build/index.mjs"
36
37
  }
@@ -1,50 +0,0 @@
1
- import type { ClearActiveMenuOptions, FindActiveMenuOptions, PerformActionOptions, RequestMenuOptions, SendMenuOptions } from './ActionMenuApiOptions';
2
- import { AgentContext, ConnectionService, MessageSender } from '@credo-ts/core';
3
- import { ActionMenuService } from './services';
4
- /**
5
- * @public
6
- */
7
- export declare class ActionMenuApi {
8
- private connectionService;
9
- private messageSender;
10
- private actionMenuService;
11
- private agentContext;
12
- constructor(connectionService: ConnectionService, messageSender: MessageSender, actionMenuService: ActionMenuService, agentContext: AgentContext);
13
- /**
14
- * Start Action Menu protocol as requester, asking for root menu. Any active menu will be cleared.
15
- *
16
- * @param options options for requesting menu
17
- * @returns Action Menu record associated to this new request
18
- */
19
- requestMenu(options: RequestMenuOptions): Promise<import("./repository").ActionMenuRecord>;
20
- /**
21
- * Send a new Action Menu as responder. This menu will be sent as response if there is an
22
- * existing menu thread.
23
- *
24
- * @param options options for sending menu
25
- * @returns Action Menu record associated to this action
26
- */
27
- sendMenu(options: SendMenuOptions): Promise<import("./repository").ActionMenuRecord>;
28
- /**
29
- * Perform action in active Action Menu, as a requester. The related
30
- * menu will be closed.
31
- *
32
- * @param options options for requesting menu
33
- * @returns Action Menu record associated to this selection
34
- */
35
- performAction(options: PerformActionOptions): Promise<import("./repository").ActionMenuRecord>;
36
- /**
37
- * Find the current active menu for a given connection and the specified role.
38
- *
39
- * @param options options for requesting active menu
40
- * @returns Active Action Menu record, or null if no active menu found
41
- */
42
- findActiveMenu(options: FindActiveMenuOptions): Promise<import("./repository").ActionMenuRecord | null>;
43
- /**
44
- * Clears the current active menu for a given connection and the specified role.
45
- *
46
- * @param options options for clearing active menu
47
- * @returns Active Action Menu record, or null if no active menu record found
48
- */
49
- clearActiveMenu(options: ClearActiveMenuOptions): Promise<import("./repository").ActionMenuRecord | null>;
50
- }
@@ -1,135 +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
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ActionMenuApi = void 0;
13
- const core_1 = require("@credo-ts/core");
14
- const ActionMenuRole_1 = require("./ActionMenuRole");
15
- const handlers_1 = require("./handlers");
16
- const services_1 = require("./services");
17
- /**
18
- * @public
19
- */
20
- let ActionMenuApi = class ActionMenuApi {
21
- constructor(connectionService, messageSender, actionMenuService, agentContext) {
22
- this.connectionService = connectionService;
23
- this.messageSender = messageSender;
24
- this.actionMenuService = actionMenuService;
25
- this.agentContext = agentContext;
26
- this.agentContext.dependencyManager.registerMessageHandlers([
27
- new handlers_1.ActionMenuProblemReportHandler(this.actionMenuService),
28
- new handlers_1.MenuMessageHandler(this.actionMenuService),
29
- new handlers_1.MenuRequestMessageHandler(this.actionMenuService),
30
- new handlers_1.PerformMessageHandler(this.actionMenuService),
31
- ]);
32
- }
33
- /**
34
- * Start Action Menu protocol as requester, asking for root menu. Any active menu will be cleared.
35
- *
36
- * @param options options for requesting menu
37
- * @returns Action Menu record associated to this new request
38
- */
39
- async requestMenu(options) {
40
- const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
41
- const { message, record } = await this.actionMenuService.createRequest(this.agentContext, {
42
- connection,
43
- });
44
- const outboundMessageContext = await (0, core_1.getOutboundMessageContext)(this.agentContext, {
45
- message,
46
- associatedRecord: record,
47
- connectionRecord: connection,
48
- });
49
- await this.messageSender.sendMessage(outboundMessageContext);
50
- return record;
51
- }
52
- /**
53
- * Send a new Action Menu as responder. This menu will be sent as response if there is an
54
- * existing menu thread.
55
- *
56
- * @param options options for sending menu
57
- * @returns Action Menu record associated to this action
58
- */
59
- async sendMenu(options) {
60
- const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
61
- const { message, record } = await this.actionMenuService.createMenu(this.agentContext, {
62
- connection,
63
- menu: options.menu,
64
- });
65
- const outboundMessageContext = await (0, core_1.getOutboundMessageContext)(this.agentContext, {
66
- message,
67
- associatedRecord: record,
68
- connectionRecord: connection,
69
- });
70
- await this.messageSender.sendMessage(outboundMessageContext);
71
- return record;
72
- }
73
- /**
74
- * Perform action in active Action Menu, as a requester. The related
75
- * menu will be closed.
76
- *
77
- * @param options options for requesting menu
78
- * @returns Action Menu record associated to this selection
79
- */
80
- async performAction(options) {
81
- const connection = await this.connectionService.getById(this.agentContext, options.connectionId);
82
- const actionMenuRecord = await this.actionMenuService.find(this.agentContext, {
83
- connectionId: connection.id,
84
- role: ActionMenuRole_1.ActionMenuRole.Requester,
85
- });
86
- if (!actionMenuRecord) {
87
- throw new core_1.CredoError(`No active menu found for connection id ${options.connectionId}`);
88
- }
89
- const { message, record } = await this.actionMenuService.createPerform(this.agentContext, {
90
- actionMenuRecord,
91
- performedAction: options.performedAction,
92
- });
93
- const outboundMessageContext = await (0, core_1.getOutboundMessageContext)(this.agentContext, {
94
- message,
95
- associatedRecord: record,
96
- connectionRecord: connection,
97
- });
98
- await this.messageSender.sendMessage(outboundMessageContext);
99
- return record;
100
- }
101
- /**
102
- * Find the current active menu for a given connection and the specified role.
103
- *
104
- * @param options options for requesting active menu
105
- * @returns Active Action Menu record, or null if no active menu found
106
- */
107
- async findActiveMenu(options) {
108
- return this.actionMenuService.find(this.agentContext, {
109
- connectionId: options.connectionId,
110
- role: options.role,
111
- });
112
- }
113
- /**
114
- * Clears the current active menu for a given connection and the specified role.
115
- *
116
- * @param options options for clearing active menu
117
- * @returns Active Action Menu record, or null if no active menu record found
118
- */
119
- async clearActiveMenu(options) {
120
- const actionMenuRecord = await this.actionMenuService.find(this.agentContext, {
121
- connectionId: options.connectionId,
122
- role: options.role,
123
- });
124
- return actionMenuRecord ? await this.actionMenuService.clearMenu(this.agentContext, { actionMenuRecord }) : null;
125
- }
126
- };
127
- exports.ActionMenuApi = ActionMenuApi;
128
- exports.ActionMenuApi = ActionMenuApi = __decorate([
129
- (0, core_1.injectable)(),
130
- __metadata("design:paramtypes", [core_1.ConnectionService,
131
- core_1.MessageSender,
132
- services_1.ActionMenuService,
133
- core_1.AgentContext])
134
- ], ActionMenuApi);
135
- //# sourceMappingURL=ActionMenuApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuApi.js","sourceRoot":"","sources":["../src/ActionMenuApi.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import type { ActionMenuRole } from './ActionMenuRole';
2
- import type { ActionMenu, ActionMenuSelection } from './models';
3
- /**
4
- * @public
5
- */
6
- export interface FindActiveMenuOptions {
7
- connectionId: string;
8
- role: ActionMenuRole;
9
- }
10
- /**
11
- * @public
12
- */
13
- export interface ClearActiveMenuOptions {
14
- connectionId: string;
15
- role: ActionMenuRole;
16
- }
17
- /**
18
- * @public
19
- */
20
- export interface RequestMenuOptions {
21
- connectionId: string;
22
- }
23
- /**
24
- * @public
25
- */
26
- export interface SendMenuOptions {
27
- connectionId: string;
28
- menu: ActionMenu;
29
- }
30
- /**
31
- * @public
32
- */
33
- export interface PerformActionOptions {
34
- connectionId: string;
35
- performedAction: ActionMenuSelection;
36
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ActionMenuApiOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuApiOptions.js","sourceRoot":"","sources":["../src/ActionMenuApiOptions.ts"],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- import type { ActionMenuState } from './ActionMenuState';
2
- import type { ActionMenuRecord } from './repository';
3
- import type { BaseEvent } from '@credo-ts/core';
4
- /**
5
- * @public
6
- */
7
- export declare enum ActionMenuEventTypes {
8
- ActionMenuStateChanged = "ActionMenuStateChanged"
9
- }
10
- /**
11
- * @public
12
- */
13
- export interface ActionMenuStateChangedEvent extends BaseEvent {
14
- type: typeof ActionMenuEventTypes.ActionMenuStateChanged;
15
- payload: {
16
- actionMenuRecord: ActionMenuRecord;
17
- previousState: ActionMenuState | null;
18
- };
19
- }
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActionMenuEventTypes = void 0;
4
- /**
5
- * @public
6
- */
7
- var ActionMenuEventTypes;
8
- (function (ActionMenuEventTypes) {
9
- ActionMenuEventTypes["ActionMenuStateChanged"] = "ActionMenuStateChanged";
10
- })(ActionMenuEventTypes || (exports.ActionMenuEventTypes = ActionMenuEventTypes = {}));
11
- //# sourceMappingURL=ActionMenuEvents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuEvents.js","sourceRoot":"","sources":["../src/ActionMenuEvents.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,IAAY,oBAEX;AAFD,WAAY,oBAAoB;IAC9B,yEAAiD,CAAA;AACnD,CAAC,EAFW,oBAAoB,oCAApB,oBAAoB,QAE/B"}
@@ -1,12 +0,0 @@
1
- import type { DependencyManager, FeatureRegistry, Module } from '@credo-ts/core';
2
- import { ActionMenuApi } from './ActionMenuApi';
3
- /**
4
- * @public
5
- */
6
- export declare class ActionMenuModule implements Module {
7
- readonly api: typeof ActionMenuApi;
8
- /**
9
- * Registers the dependencies of the question answer module on the dependency manager.
10
- */
11
- register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry): void;
12
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActionMenuModule = void 0;
4
- const core_1 = require("@credo-ts/core");
5
- const ActionMenuApi_1 = require("./ActionMenuApi");
6
- const ActionMenuRole_1 = require("./ActionMenuRole");
7
- const repository_1 = require("./repository");
8
- const services_1 = require("./services");
9
- /**
10
- * @public
11
- */
12
- class ActionMenuModule {
13
- constructor() {
14
- this.api = ActionMenuApi_1.ActionMenuApi;
15
- }
16
- /**
17
- * Registers the dependencies of the question answer module on the dependency manager.
18
- */
19
- register(dependencyManager, featureRegistry) {
20
- // Services
21
- dependencyManager.registerSingleton(services_1.ActionMenuService);
22
- // Repositories
23
- dependencyManager.registerSingleton(repository_1.ActionMenuRepository);
24
- // Feature Registry
25
- featureRegistry.register(new core_1.Protocol({
26
- id: 'https://didcomm.org/action-menu/1.0',
27
- roles: [ActionMenuRole_1.ActionMenuRole.Requester, ActionMenuRole_1.ActionMenuRole.Responder],
28
- }));
29
- }
30
- }
31
- exports.ActionMenuModule = ActionMenuModule;
32
- //# sourceMappingURL=ActionMenuModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuModule.js","sourceRoot":"","sources":["../src/ActionMenuModule.ts"],"names":[],"mappings":";;;AAEA,yCAAyC;AAEzC,mDAA+C;AAC/C,qDAAiD;AACjD,6CAAmD;AACnD,yCAA8C;AAE9C;;GAEG;AACH,MAAa,gBAAgB;IAA7B;QACkB,QAAG,GAAG,6BAAa,CAAA;IAoBrC,CAAC;IAlBC;;OAEG;IACI,QAAQ,CAAC,iBAAoC,EAAE,eAAgC;QACpF,WAAW;QACX,iBAAiB,CAAC,iBAAiB,CAAC,4BAAiB,CAAC,CAAA;QAEtD,eAAe;QACf,iBAAiB,CAAC,iBAAiB,CAAC,iCAAoB,CAAC,CAAA;QAEzD,mBAAmB;QACnB,eAAe,CAAC,QAAQ,CACtB,IAAI,eAAQ,CAAC;YACX,EAAE,EAAE,qCAAqC;YACzC,KAAK,EAAE,CAAC,+BAAc,CAAC,SAAS,EAAE,+BAAc,CAAC,SAAS,CAAC;SAC5D,CAAC,CACH,CAAA;IACH,CAAC;CACF;AArBD,4CAqBC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Action Menu roles based on the flow defined in RFC 0509.
3
- *
4
- * @see https://github.com/hyperledger/aries-rfcs/tree/main/features/0509-action-menu#roles
5
- * @public
6
- */
7
- export declare enum ActionMenuRole {
8
- Requester = "requester",
9
- Responder = "responder"
10
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActionMenuRole = void 0;
4
- /**
5
- * Action Menu roles based on the flow defined in RFC 0509.
6
- *
7
- * @see https://github.com/hyperledger/aries-rfcs/tree/main/features/0509-action-menu#roles
8
- * @public
9
- */
10
- var ActionMenuRole;
11
- (function (ActionMenuRole) {
12
- ActionMenuRole["Requester"] = "requester";
13
- ActionMenuRole["Responder"] = "responder";
14
- })(ActionMenuRole || (exports.ActionMenuRole = ActionMenuRole = {}));
15
- //# sourceMappingURL=ActionMenuRole.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuRole.js","sourceRoot":"","sources":["../src/ActionMenuRole.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;AACzB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Action Menu states based on the flow defined in RFC 0509.
3
- *
4
- * @see https://github.com/hyperledger/aries-rfcs/tree/main/features/0509-action-menu#states
5
- * @public
6
- */
7
- export declare enum ActionMenuState {
8
- Null = "null",
9
- AwaitingRootMenu = "awaiting-root-menu",
10
- PreparingRootMenu = "preparing-root-menu",
11
- PreparingSelection = "preparing-selection",
12
- AwaitingSelection = "awaiting-selection",
13
- Done = "done"
14
- }
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActionMenuState = void 0;
4
- /**
5
- * Action Menu states based on the flow defined in RFC 0509.
6
- *
7
- * @see https://github.com/hyperledger/aries-rfcs/tree/main/features/0509-action-menu#states
8
- * @public
9
- */
10
- var ActionMenuState;
11
- (function (ActionMenuState) {
12
- ActionMenuState["Null"] = "null";
13
- ActionMenuState["AwaitingRootMenu"] = "awaiting-root-menu";
14
- ActionMenuState["PreparingRootMenu"] = "preparing-root-menu";
15
- ActionMenuState["PreparingSelection"] = "preparing-selection";
16
- ActionMenuState["AwaitingSelection"] = "awaiting-selection";
17
- ActionMenuState["Done"] = "done";
18
- })(ActionMenuState || (exports.ActionMenuState = ActionMenuState = {}));
19
- //# sourceMappingURL=ActionMenuState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuState.js","sourceRoot":"","sources":["../src/ActionMenuState.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,0DAAuC,CAAA;IACvC,4DAAyC,CAAA;IACzC,6DAA0C,CAAA;IAC1C,2DAAwC,CAAA;IACxC,gCAAa,CAAA;AACf,CAAC,EAPW,eAAe,+BAAf,eAAe,QAO1B"}
@@ -1,19 +0,0 @@
1
- import type { ActionMenuProblemReportReason } from './ActionMenuProblemReportReason';
2
- import type { ProblemReportErrorOptions } from '@credo-ts/core';
3
- import { ProblemReportError } from '@credo-ts/core';
4
- import { ActionMenuProblemReportMessage } from '../messages';
5
- /**
6
- * @internal
7
- */
8
- interface ActionMenuProblemReportErrorOptions extends ProblemReportErrorOptions {
9
- problemCode: ActionMenuProblemReportReason;
10
- }
11
- /**
12
- * @internal
13
- */
14
- export declare class ActionMenuProblemReportError extends ProblemReportError {
15
- message: string;
16
- problemReport: ActionMenuProblemReportMessage;
17
- constructor(message: string, { problemCode }: ActionMenuProblemReportErrorOptions);
18
- }
19
- export {};
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActionMenuProblemReportError = void 0;
4
- const core_1 = require("@credo-ts/core");
5
- const messages_1 = require("../messages");
6
- /**
7
- * @internal
8
- */
9
- class ActionMenuProblemReportError extends core_1.ProblemReportError {
10
- constructor(message, { problemCode }) {
11
- super(message, { problemCode });
12
- this.message = message;
13
- this.problemReport = new messages_1.ActionMenuProblemReportMessage({
14
- description: {
15
- en: message,
16
- code: problemCode,
17
- },
18
- });
19
- }
20
- }
21
- exports.ActionMenuProblemReportError = ActionMenuProblemReportError;
22
- //# sourceMappingURL=ActionMenuProblemReportError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuProblemReportError.js","sourceRoot":"","sources":["../../src/errors/ActionMenuProblemReportError.ts"],"names":[],"mappings":";;;AAGA,yCAAmD;AAEnD,0CAA4D;AAS5D;;GAEG;AACH,MAAa,4BAA6B,SAAQ,yBAAkB;IAGlE,YAA0B,OAAe,EAAE,EAAE,WAAW,EAAuC;QAC7F,KAAK,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;QADP,YAAO,GAAP,OAAO,CAAQ;QAEvC,IAAI,CAAC,aAAa,GAAG,IAAI,yCAA8B,CAAC;YACtD,WAAW,EAAE;gBACX,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,WAAW;aAClB;SACF,CAAC,CAAA;IACJ,CAAC;CACF;AAZD,oEAYC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Action Menu errors discussed in RFC 0509.
3
- *
4
- * @see https://github.com/hyperledger/aries-rfcs/tree/main/features/0509-action-menu#unresolved-questions
5
- * @internal
6
- */
7
- export declare enum ActionMenuProblemReportReason {
8
- Timeout = "timeout"
9
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ActionMenuProblemReportReason = void 0;
4
- /**
5
- * Action Menu errors discussed in RFC 0509.
6
- *
7
- * @see https://github.com/hyperledger/aries-rfcs/tree/main/features/0509-action-menu#unresolved-questions
8
- * @internal
9
- */
10
- var ActionMenuProblemReportReason;
11
- (function (ActionMenuProblemReportReason) {
12
- ActionMenuProblemReportReason["Timeout"] = "timeout";
13
- })(ActionMenuProblemReportReason || (exports.ActionMenuProblemReportReason = ActionMenuProblemReportReason = {}));
14
- //# sourceMappingURL=ActionMenuProblemReportReason.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActionMenuProblemReportReason.js","sourceRoot":"","sources":["../../src/errors/ActionMenuProblemReportReason.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,IAAY,6BAEX;AAFD,WAAY,6BAA6B;IACvC,oDAAmB,CAAA;AACrB,CAAC,EAFW,6BAA6B,6CAA7B,6BAA6B,QAExC"}
@@ -1,12 +0,0 @@
1
- import type { ActionMenuService } from '../services';
2
- import type { MessageHandler, MessageHandlerInboundMessage } from '@credo-ts/core';
3
- import { ActionMenuProblemReportMessage } from '../messages';
4
- /**
5
- * @internal
6
- */
7
- export declare class ActionMenuProblemReportHandler implements MessageHandler {
8
- private actionMenuService;
9
- supportedMessages: (typeof ActionMenuProblemReportMessage)[];
10
- constructor(actionMenuService: ActionMenuService);
11
- handle(messageContext: MessageHandlerInboundMessage<ActionMenuProblemReportHandler>): Promise<void>;
12
- }