quidproquo-actionprocessor-awslambda 0.0.263 → 0.1.0

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 (285) hide show
  1. package/lib/commonjs/awsNamingUtils.d.ts +1 -0
  2. package/lib/commonjs/awsNamingUtils.js +12 -1
  3. package/lib/commonjs/getActionProcessor/core/ai/aiModelMap.js +9 -9
  4. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.js +8 -41
  5. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +14 -50
  6. package/lib/commonjs/getActionProcessor/core/ai/logic/aiStreamPartMappers.d.ts +6 -0
  7. package/lib/commonjs/getActionProcessor/core/ai/logic/aiStreamPartMappers.js +57 -0
  8. package/lib/commonjs/getActionProcessor/core/ai/logic/index.d.ts +32 -0
  9. package/lib/commonjs/getActionProcessor/core/ai/logic/index.js +48 -0
  10. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamAbort.d.ts +3 -0
  11. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamAbort.js +9 -0
  12. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamCustom.d.ts +3 -0
  13. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamCustom.js +9 -0
  14. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamError.d.ts +3 -0
  15. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamError.js +10 -0
  16. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFilePart.d.ts +3 -0
  17. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFilePart.js +12 -0
  18. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.d.ts +3 -0
  19. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +11 -0
  20. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.d.ts +3 -0
  21. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +11 -0
  22. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamPart.d.ts +3 -0
  23. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamPart.js +9 -0
  24. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamRaw.d.ts +2 -0
  25. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamRaw.js +8 -0
  26. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.d.ts +3 -0
  27. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.js +10 -0
  28. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.d.ts +3 -0
  29. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.js +9 -0
  30. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.d.ts +3 -0
  31. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.js +12 -0
  32. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.d.ts +3 -0
  33. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.js +9 -0
  34. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.d.ts +3 -0
  35. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.js +16 -0
  36. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStart.d.ts +2 -0
  37. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStart.js +8 -0
  38. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStartStep.d.ts +2 -0
  39. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStartStep.js +8 -0
  40. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.d.ts +3 -0
  41. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.js +10 -0
  42. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.d.ts +3 -0
  43. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.js +9 -0
  44. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextStart.d.ts +3 -0
  45. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextStart.js +9 -0
  46. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.d.ts +3 -0
  47. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.js +12 -0
  48. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.d.ts +3 -0
  49. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.js +13 -0
  50. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolCall.d.ts +3 -0
  51. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolCall.js +11 -0
  52. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolError.d.ts +3 -0
  53. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolError.js +13 -0
  54. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.d.ts +3 -0
  55. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.js +10 -0
  56. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.d.ts +3 -0
  57. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.js +9 -0
  58. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.d.ts +3 -0
  59. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.js +10 -0
  60. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.d.ts +3 -0
  61. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.js +10 -0
  62. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolResult.d.ts +3 -0
  63. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolResult.js +12 -0
  64. package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.d.ts +19 -0
  65. package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +53 -0
  66. package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamUsage.d.ts +6 -0
  67. package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamUsage.js +9 -0
  68. package/lib/commonjs/getActionProcessor/core/ai/logic/toErrorMessage.d.ts +1 -0
  69. package/lib/commonjs/getActionProcessor/core/ai/logic/toErrorMessage.js +11 -0
  70. package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +3 -0
  71. package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.js +82 -0
  72. package/lib/commonjs/getActionProcessor/core/ai/types/aiSdkStreamPart.d.ts +5 -0
  73. package/lib/commonjs/getActionProcessor/core/ai/types/aiSdkStreamPart.js +2 -0
  74. package/lib/commonjs/getActionProcessor/core/ai/types/index.d.ts +1 -0
  75. package/lib/commonjs/getActionProcessor/core/ai/types/index.js +17 -0
  76. package/lib/commonjs/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.js +13 -2
  77. package/lib/commonjs/getActionProcessor/core/config/getConfigGetSecretActionProcessor.js +10 -2
  78. package/lib/commonjs/getActionProcessor/core/config/getConfigSetParameterActionProcessor.js +10 -2
  79. package/lib/commonjs/getActionProcessor/core/config/index.js +1 -2
  80. package/lib/commonjs/getActionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +15 -5
  81. package/lib/commonjs/getActionProcessor/core/file/getFileDeleteActionProcessor.js +17 -9
  82. package/lib/commonjs/getActionProcessor/core/file/getFileExistsActionProcessor.js +9 -1
  83. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +5 -0
  84. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +5 -0
  85. package/lib/commonjs/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +13 -2
  86. package/lib/commonjs/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +16 -7
  87. package/lib/commonjs/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +11 -2
  88. package/lib/commonjs/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +7 -2
  89. package/lib/commonjs/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +11 -2
  90. package/lib/commonjs/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +11 -2
  91. package/lib/commonjs/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +11 -2
  92. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +10 -2
  93. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +10 -2
  94. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +10 -2
  95. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +10 -2
  96. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +12 -3
  97. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +10 -2
  98. package/lib/commonjs/getActionProcessor/core/queue/getQueueSendMessageActionProcessor.js +16 -6
  99. package/lib/commonjs/getActionProcessor/core/system/getSystemExecuteStoryActionProcessor.js +5 -4
  100. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.d.ts +2 -0
  101. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.js +28 -0
  102. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryChangePasswordActionProcessor.js +11 -2
  103. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryConfirmEmailVerificationActionProcessor.js +11 -2
  104. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryConfirmForgotPasswordActionProcessor.js +12 -2
  105. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryCreateUserActionProcessor.js +12 -3
  106. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryDecodeAccessTokenActionProcessor.js +1 -1
  107. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryForgotPasswordActionProcessor.js +10 -2
  108. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUserAttributesByUserIdActionProcessor.js +9 -2
  109. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersActionProcessor.js +10 -2
  110. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersByAttributeActionProcessor.js +10 -2
  111. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRefreshTokenActionProcessor.js +17 -3
  112. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +11 -2
  113. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRespondToAuthChallengeActionProcessor.js +34 -2
  114. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetPasswordActionProcessor.js +12 -2
  115. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetUserAttributesActionProcessor.js +13 -2
  116. package/lib/commonjs/getActionProcessor/core/userDirectory/index.js +2 -1
  117. package/lib/commonjs/getActionProcessor/webserver/serviceFunction/getServiceFunctionExecuteActionProcessor.js +1 -1
  118. package/lib/commonjs/index.d.ts +1 -0
  119. package/lib/commonjs/index.js +3 -0
  120. package/lib/commonjs/lambdaExtensions/getLogExtensionLayerPath.d.ts +10 -0
  121. package/lib/commonjs/lambdaExtensions/getLogExtensionLayerPath.js +20 -0
  122. package/lib/commonjs/lambdaExtensions/logExtensionPort.d.ts +1 -0
  123. package/lib/commonjs/lambdaExtensions/logExtensionPort.js +7 -0
  124. package/lib/commonjs/lambdaHandlers/getApiGatewayEventHandler.js +4 -8
  125. package/lib/commonjs/lambdaHandlers/getApiGatewayEventHandler_redirect.js +0 -2
  126. package/lib/commonjs/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +2 -2
  127. package/lib/commonjs/lambdaHandlers/helpers/logger.d.ts +4 -1
  128. package/lib/commonjs/lambdaHandlers/helpers/logger.js +94 -36
  129. package/lib/commonjs/logic/cognito/associateSoftwareToken.d.ts +2 -0
  130. package/lib/commonjs/logic/cognito/associateSoftwareToken.js +28 -0
  131. package/lib/commonjs/logic/cognito/decodeValidJwt.js +2 -1
  132. package/lib/commonjs/logic/cognito/getUserAttributesBySub.d.ts +4 -0
  133. package/lib/commonjs/logic/cognito/getUserAttributesBySub.js +12 -2
  134. package/lib/commonjs/logic/cognito/utils/transformCognitoResponse.js +2 -0
  135. package/lib/commonjs/logic/cognito/verifySoftwareToken.d.ts +1 -0
  136. package/lib/commonjs/logic/cognito/verifySoftwareToken.js +28 -0
  137. package/lib/commonjs/logic/dynamo/qpqDynamoOrm/getDynamoTableIndexByConfigAndQuery.js +8 -2
  138. package/lib/commonjs/logic/s3/generatePresignedUploadUrl.js +8 -1
  139. package/lib/commonjs/logic/s3/objectExists.js +9 -3
  140. package/lib/esm/awsNamingUtils.d.ts +1 -0
  141. package/lib/esm/awsNamingUtils.js +10 -0
  142. package/lib/esm/getActionProcessor/core/ai/aiModelMap.js +9 -9
  143. package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.js +12 -39
  144. package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +18 -47
  145. package/lib/esm/getActionProcessor/core/ai/logic/aiStreamPartMappers.d.ts +6 -0
  146. package/lib/esm/getActionProcessor/core/ai/logic/aiStreamPartMappers.js +54 -0
  147. package/lib/esm/getActionProcessor/core/ai/logic/index.d.ts +32 -0
  148. package/lib/esm/getActionProcessor/core/ai/logic/index.js +32 -0
  149. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamAbort.d.ts +3 -0
  150. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamAbort.js +5 -0
  151. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamCustom.d.ts +3 -0
  152. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamCustom.js +5 -0
  153. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamError.d.ts +3 -0
  154. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamError.js +6 -0
  155. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFilePart.d.ts +3 -0
  156. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFilePart.js +8 -0
  157. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.d.ts +3 -0
  158. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +7 -0
  159. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.d.ts +3 -0
  160. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +7 -0
  161. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamPart.d.ts +3 -0
  162. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamPart.js +5 -0
  163. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamRaw.d.ts +2 -0
  164. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamRaw.js +4 -0
  165. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.d.ts +3 -0
  166. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.js +6 -0
  167. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.d.ts +3 -0
  168. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.js +5 -0
  169. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.d.ts +3 -0
  170. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.js +8 -0
  171. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.d.ts +3 -0
  172. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.js +5 -0
  173. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.d.ts +3 -0
  174. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.js +12 -0
  175. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStart.d.ts +2 -0
  176. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStart.js +4 -0
  177. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStartStep.d.ts +2 -0
  178. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStartStep.js +4 -0
  179. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.d.ts +3 -0
  180. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.js +6 -0
  181. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.d.ts +3 -0
  182. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.js +5 -0
  183. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextStart.d.ts +3 -0
  184. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextStart.js +5 -0
  185. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.d.ts +3 -0
  186. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.js +8 -0
  187. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.d.ts +3 -0
  188. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.js +9 -0
  189. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolCall.d.ts +3 -0
  190. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolCall.js +7 -0
  191. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolError.d.ts +3 -0
  192. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolError.js +9 -0
  193. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.d.ts +3 -0
  194. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.js +6 -0
  195. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.d.ts +3 -0
  196. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.js +5 -0
  197. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.d.ts +3 -0
  198. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.js +6 -0
  199. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.d.ts +3 -0
  200. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.js +6 -0
  201. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolResult.d.ts +3 -0
  202. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolResult.js +8 -0
  203. package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.d.ts +19 -0
  204. package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +40 -0
  205. package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamUsage.d.ts +6 -0
  206. package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamUsage.js +5 -0
  207. package/lib/esm/getActionProcessor/core/ai/logic/toErrorMessage.d.ts +1 -0
  208. package/lib/esm/getActionProcessor/core/ai/logic/toErrorMessage.js +7 -0
  209. package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +3 -0
  210. package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.js +78 -0
  211. package/lib/esm/getActionProcessor/core/ai/types/aiSdkStreamPart.d.ts +5 -0
  212. package/lib/esm/getActionProcessor/core/ai/types/aiSdkStreamPart.js +1 -0
  213. package/lib/esm/getActionProcessor/core/ai/types/index.d.ts +1 -0
  214. package/lib/esm/getActionProcessor/core/ai/types/index.js +1 -0
  215. package/lib/esm/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.js +13 -2
  216. package/lib/esm/getActionProcessor/core/config/getConfigGetSecretActionProcessor.js +11 -3
  217. package/lib/esm/getActionProcessor/core/config/getConfigSetParameterActionProcessor.js +11 -3
  218. package/lib/esm/getActionProcessor/core/config/index.js +0 -2
  219. package/lib/esm/getActionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +19 -9
  220. package/lib/esm/getActionProcessor/core/file/getFileDeleteActionProcessor.js +18 -10
  221. package/lib/esm/getActionProcessor/core/file/getFileExistsActionProcessor.js +10 -2
  222. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +6 -1
  223. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +6 -1
  224. package/lib/esm/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +14 -3
  225. package/lib/esm/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +20 -11
  226. package/lib/esm/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +12 -3
  227. package/lib/esm/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +8 -3
  228. package/lib/esm/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +12 -3
  229. package/lib/esm/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +12 -3
  230. package/lib/esm/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +12 -3
  231. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +11 -3
  232. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +11 -3
  233. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +11 -3
  234. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +12 -4
  235. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +12 -3
  236. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +11 -3
  237. package/lib/esm/getActionProcessor/core/queue/getQueueSendMessageActionProcessor.js +20 -10
  238. package/lib/esm/getActionProcessor/core/system/getSystemExecuteStoryActionProcessor.js +1 -0
  239. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.d.ts +2 -0
  240. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.js +13 -0
  241. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryChangePasswordActionProcessor.js +12 -3
  242. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryConfirmEmailVerificationActionProcessor.js +12 -3
  243. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryConfirmForgotPasswordActionProcessor.js +13 -3
  244. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryCreateUserActionProcessor.js +13 -4
  245. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryDecodeAccessTokenActionProcessor.js +2 -2
  246. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryForgotPasswordActionProcessor.js +11 -3
  247. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUserAttributesByUserIdActionProcessor.js +10 -3
  248. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersActionProcessor.js +11 -3
  249. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersByAttributeActionProcessor.js +11 -3
  250. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRefreshTokenActionProcessor.js +18 -4
  251. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +12 -3
  252. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRespondToAuthChallengeActionProcessor.js +35 -3
  253. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetPasswordActionProcessor.js +13 -3
  254. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetUserAttributesActionProcessor.js +14 -3
  255. package/lib/esm/getActionProcessor/core/userDirectory/index.js +2 -0
  256. package/lib/esm/getActionProcessor/webserver/serviceFunction/getServiceFunctionExecuteActionProcessor.js +2 -2
  257. package/lib/esm/index.d.ts +1 -0
  258. package/lib/esm/index.js +3 -0
  259. package/lib/esm/lambdaExtensions/getLogExtensionLayerPath.d.ts +10 -0
  260. package/lib/esm/lambdaExtensions/getLogExtensionLayerPath.js +13 -0
  261. package/lib/esm/lambdaExtensions/logExtensionPort.d.ts +1 -0
  262. package/lib/esm/lambdaExtensions/logExtensionPort.js +4 -0
  263. package/lib/esm/lambdaHandlers/getApiGatewayEventHandler.js +4 -8
  264. package/lib/esm/lambdaHandlers/getApiGatewayEventHandler_redirect.js +0 -2
  265. package/lib/esm/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +1 -1
  266. package/lib/esm/lambdaHandlers/helpers/logger.d.ts +4 -1
  267. package/lib/esm/lambdaHandlers/helpers/logger.js +94 -38
  268. package/lib/esm/logic/cognito/associateSoftwareToken.d.ts +2 -0
  269. package/lib/esm/logic/cognito/associateSoftwareToken.js +15 -0
  270. package/lib/esm/logic/cognito/decodeValidJwt.js +2 -1
  271. package/lib/esm/logic/cognito/getUserAttributesBySub.d.ts +4 -0
  272. package/lib/esm/logic/cognito/getUserAttributesBySub.js +10 -1
  273. package/lib/esm/logic/cognito/utils/transformCognitoResponse.js +2 -0
  274. package/lib/esm/logic/cognito/verifySoftwareToken.d.ts +1 -0
  275. package/lib/esm/logic/cognito/verifySoftwareToken.js +15 -0
  276. package/lib/esm/logic/dynamo/qpqDynamoOrm/getDynamoTableIndexByConfigAndQuery.js +7 -2
  277. package/lib/esm/logic/s3/generatePresignedUploadUrl.js +8 -1
  278. package/lib/esm/logic/s3/objectExists.js +8 -3
  279. package/lib/extension-layer/extensions/qpq-log-extension +2 -0
  280. package/lib/extension-layer/qpq-log-extension/index.js +58 -0
  281. package/package.json +10 -7
  282. package/lib/commonjs/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.d.ts +0 -2
  283. package/lib/commonjs/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.js +0 -25
  284. package/lib/esm/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.d.ts +0 -2
  285. package/lib/esm/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.js +0 -10
@@ -0,0 +1,4 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamStartStep = () => ({
3
+ type: AiStreamPartType.StartStep,
4
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamTextDelta } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamTextDelta: (part: AiSdkStreamPartOfType<"text-delta">) => AiStreamTextDelta;
@@ -0,0 +1,6 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamTextDelta = (part) => ({
3
+ type: AiStreamPartType.TextDelta,
4
+ id: part.id,
5
+ text: part.text,
6
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamTextEnd } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamTextEnd: (part: AiSdkStreamPartOfType<"text-end">) => AiStreamTextEnd;
@@ -0,0 +1,5 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamTextEnd = (part) => ({
3
+ type: AiStreamPartType.TextEnd,
4
+ id: part.id,
5
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamTextStart } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamTextStart: (part: AiSdkStreamPartOfType<"text-start">) => AiStreamTextStart;
@@ -0,0 +1,5 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamTextStart = (part) => ({
3
+ type: AiStreamPartType.TextStart,
4
+ id: part.id,
5
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolApprovalRequest } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolApprovalRequest: (part: AiSdkStreamPartOfType<"tool-approval-request">) => AiStreamToolApprovalRequest;
@@ -0,0 +1,8 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolApprovalRequest = (part) => ({
3
+ type: AiStreamPartType.ToolApprovalRequest,
4
+ approvalId: part.approvalId,
5
+ toolCallId: part.toolCall.toolCallId,
6
+ toolName: part.toolCall.toolName,
7
+ input: part.toolCall.input,
8
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolApprovalResponse } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolApprovalResponse: (part: AiSdkStreamPartOfType<"tool-approval-response">) => AiStreamToolApprovalResponse;
@@ -0,0 +1,9 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolApprovalResponse = (part) => ({
3
+ type: AiStreamPartType.ToolApprovalResponse,
4
+ approvalId: part.approvalId,
5
+ toolCallId: part.toolCall.toolCallId,
6
+ toolName: part.toolCall.toolName,
7
+ approved: part.approved,
8
+ reason: part.reason,
9
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolCall } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolCall: (part: AiSdkStreamPartOfType<"tool-call">) => AiStreamToolCall;
@@ -0,0 +1,7 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolCall = (part) => ({
3
+ type: AiStreamPartType.ToolCall,
4
+ toolCallId: part.toolCallId,
5
+ toolName: part.toolName,
6
+ input: part.input,
7
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolError } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolError: (part: AiSdkStreamPartOfType<"tool-error">) => AiStreamToolError;
@@ -0,0 +1,9 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ import { toErrorMessage } from './toErrorMessage';
3
+ export const mapAiStreamToolError = (part) => ({
4
+ type: AiStreamPartType.ToolError,
5
+ toolCallId: part.toolCallId,
6
+ toolName: part.toolName,
7
+ input: part.input,
8
+ message: toErrorMessage(part.error),
9
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolInputDelta } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolInputDelta: (part: AiSdkStreamPartOfType<"tool-input-delta">) => AiStreamToolInputDelta;
@@ -0,0 +1,6 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolInputDelta = (part) => ({
3
+ type: AiStreamPartType.ToolInputDelta,
4
+ id: part.id,
5
+ delta: part.delta,
6
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolInputEnd } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolInputEnd: (part: AiSdkStreamPartOfType<"tool-input-end">) => AiStreamToolInputEnd;
@@ -0,0 +1,5 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolInputEnd = (part) => ({
3
+ type: AiStreamPartType.ToolInputEnd,
4
+ id: part.id,
5
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolInputStart } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolInputStart: (part: AiSdkStreamPartOfType<"tool-input-start">) => AiStreamToolInputStart;
@@ -0,0 +1,6 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolInputStart = (part) => ({
3
+ type: AiStreamPartType.ToolInputStart,
4
+ id: part.id,
5
+ toolName: part.toolName,
6
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolOutputDenied } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolOutputDenied: (part: AiSdkStreamPartOfType<"tool-output-denied">) => AiStreamToolOutputDenied;
@@ -0,0 +1,6 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolOutputDenied = (part) => ({
3
+ type: AiStreamPartType.ToolOutputDenied,
4
+ toolCallId: part.toolCallId,
5
+ toolName: part.toolName,
6
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamToolResult } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamToolResult: (part: AiSdkStreamPartOfType<"tool-result">) => AiStreamToolResult;
@@ -0,0 +1,8 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamToolResult = (part) => ({
3
+ type: AiStreamPartType.ToolResult,
4
+ toolCallId: part.toolCallId,
5
+ toolName: part.toolName,
6
+ input: part.input,
7
+ output: part.output,
8
+ });
@@ -0,0 +1,19 @@
1
+ import { ActionProcessorList, AiModel, DynamicModuleLoader, ErrorTypeEnum, QPQConfig, QpqLogger, StorySession, StreamRegistry } from 'quidproquo-core';
2
+ import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock';
3
+ export interface PrepareAiPromptCallPayload {
4
+ model: AiModel;
5
+ aiName?: string;
6
+ }
7
+ type BedrockProvider = ReturnType<typeof createAmazonBedrock>;
8
+ type BedrockLanguageModel = ReturnType<BedrockProvider>;
9
+ export type PrepareAiPromptCallResult = {
10
+ error: {
11
+ type: ErrorTypeEnum;
12
+ message: string;
13
+ };
14
+ } | {
15
+ model: BedrockLanguageModel;
16
+ tools: Record<string, any> | undefined;
17
+ };
18
+ export declare const prepareAiPromptCall: (qpqConfig: QPQConfig, payload: PrepareAiPromptCallPayload, session: StorySession, actionProcessorList: ActionProcessorList, logger: QpqLogger, dynamicModuleLoader: DynamicModuleLoader, streamRegistry?: StreamRegistry) => PrepareAiPromptCallResult;
19
+ export {};
@@ -0,0 +1,40 @@
1
+ import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
+ import { askInlineFunctionExecute, createImplementationRuntime, ErrorTypeEnum, qpqCoreUtils, } from 'quidproquo-core';
3
+ import { jsonSchema } from 'ai';
4
+ import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock';
5
+ import { randomGuid } from '../../../../awsLambdaUtils';
6
+ import { bedrockModelMap } from '../aiModelMap';
7
+ export const prepareAiPromptCall = (qpqConfig, payload, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry) => {
8
+ const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
9
+ const bedrock = createAmazonBedrock({ region });
10
+ const bedrockModelId = bedrockModelMap[payload.model];
11
+ if (!bedrockModelId) {
12
+ return { error: { type: ErrorTypeEnum.NotImplemented, message: `Unsupported AI model: ${payload.model}` } };
13
+ }
14
+ const aiTools = {};
15
+ if (payload.aiName) {
16
+ const aiConfigs = qpqCoreUtils.getAllAiConfigs(qpqConfig);
17
+ const aiConfig = aiConfigs.find((c) => c.aiName === payload.aiName);
18
+ if (!aiConfig) {
19
+ return { error: { type: ErrorTypeEnum.NotFound, message: `AI config not found: ${payload.aiName}` } };
20
+ }
21
+ for (const toolDef of aiConfig.tools) {
22
+ aiTools[toolDef.name] = {
23
+ description: toolDef.description,
24
+ inputSchema: jsonSchema(toolDef.inputSchema),
25
+ execute: async (args) => {
26
+ const resolveStory = createImplementationRuntime(qpqConfig, [`AI Tool: ${toolDef.name}`], () => new Date().toISOString(), randomGuid, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);
27
+ const storyResult = await resolveStory(askInlineFunctionExecute, [toolDef.executor, args]);
28
+ if (storyResult.error) {
29
+ throw new Error(storyResult.error.errorText);
30
+ }
31
+ return storyResult.result;
32
+ },
33
+ };
34
+ }
35
+ }
36
+ return {
37
+ model: bedrock(bedrockModelId),
38
+ tools: Object.keys(aiTools).length > 0 ? aiTools : undefined,
39
+ };
40
+ };
@@ -0,0 +1,6 @@
1
+ import { AiStreamUsage } from 'quidproquo-core';
2
+ export declare const toAiStreamUsage: (usage: {
3
+ inputTokens?: number;
4
+ outputTokens?: number;
5
+ totalTokens?: number;
6
+ }) => AiStreamUsage;
@@ -0,0 +1,5 @@
1
+ export const toAiStreamUsage = (usage) => ({
2
+ inputTokens: usage.inputTokens,
3
+ outputTokens: usage.outputTokens,
4
+ totalTokens: usage.totalTokens,
5
+ });
@@ -0,0 +1 @@
1
+ export declare const toErrorMessage: (error: unknown) => string;
@@ -0,0 +1,7 @@
1
+ export const toErrorMessage = (error) => {
2
+ if (error instanceof Error)
3
+ return error.message;
4
+ if (typeof error === 'string')
5
+ return error;
6
+ return JSON.stringify(error);
7
+ };
@@ -0,0 +1,3 @@
1
+ import { AiMessage } from 'quidproquo-core';
2
+ import type { ModelMessage } from 'ai';
3
+ export declare const toSdkMessages: (messages: AiMessage[]) => ModelMessage[];
@@ -0,0 +1,78 @@
1
+ const mapUserPart = (part) => {
2
+ if (part.type === 'text') {
3
+ return { type: 'text', text: part.text };
4
+ }
5
+ return {
6
+ type: 'file',
7
+ data: new URL(part.url),
8
+ mediaType: part.mediaType,
9
+ filename: part.filename,
10
+ };
11
+ };
12
+ const mapAssistantPart = (part) => {
13
+ switch (part.type) {
14
+ case 'text':
15
+ return { type: 'text', text: part.text };
16
+ case 'file':
17
+ return {
18
+ type: 'file',
19
+ data: new URL(part.url),
20
+ mediaType: part.mediaType,
21
+ filename: part.filename,
22
+ };
23
+ case 'tool-call':
24
+ return {
25
+ type: 'tool-call',
26
+ toolCallId: part.toolCallId,
27
+ toolName: part.toolName,
28
+ input: part.input,
29
+ };
30
+ case 'reasoning':
31
+ return {
32
+ type: 'reasoning',
33
+ text: part.text,
34
+ providerOptions: part.providerOptions,
35
+ };
36
+ }
37
+ };
38
+ const mapToolResult = (part) => {
39
+ const output = part.isError
40
+ ? typeof part.output === 'string'
41
+ ? { type: 'error-text', value: part.output }
42
+ : { type: 'error-json', value: part.output }
43
+ : typeof part.output === 'string'
44
+ ? { type: 'text', value: part.output }
45
+ : { type: 'json', value: part.output };
46
+ return {
47
+ type: 'tool-result',
48
+ toolCallId: part.toolCallId,
49
+ toolName: part.toolName,
50
+ output,
51
+ };
52
+ };
53
+ const mapUserMessage = (message) => {
54
+ if (typeof message.content === 'string') {
55
+ return { role: 'user', content: message.content };
56
+ }
57
+ return { role: 'user', content: message.content.map(mapUserPart) };
58
+ };
59
+ const mapAssistantMessage = (message) => {
60
+ if (typeof message.content === 'string') {
61
+ return { role: 'assistant', content: message.content };
62
+ }
63
+ return { role: 'assistant', content: message.content.map(mapAssistantPart) };
64
+ };
65
+ const mapToolMessage = (message) => ({
66
+ role: 'tool',
67
+ content: message.content.map(mapToolResult),
68
+ });
69
+ export const toSdkMessages = (messages) => messages.map((message) => {
70
+ switch (message.role) {
71
+ case 'user':
72
+ return mapUserMessage(message);
73
+ case 'assistant':
74
+ return mapAssistantMessage(message);
75
+ case 'tool':
76
+ return mapToolMessage(message);
77
+ }
78
+ });
@@ -0,0 +1,5 @@
1
+ import { TextStreamPart, ToolSet } from 'ai';
2
+ export type AiSdkStreamPart = TextStreamPart<ToolSet>;
3
+ export type AiSdkStreamPartOfType<K extends AiSdkStreamPart['type']> = Extract<AiSdkStreamPart, {
4
+ type: K;
5
+ }>;
@@ -0,0 +1 @@
1
+ export * from './aiSdkStreamPart';
@@ -0,0 +1 @@
1
+ export * from './aiSdkStreamPart';
@@ -1,8 +1,19 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
2
  import { actionResult, qpqCoreUtils, } from 'quidproquo-core';
3
3
  import { ApiKeyValidationActionType } from 'quidproquo-webserver';
4
+ import { timingSafeEqual } from 'crypto';
4
5
  import { getConfigRuntimeResourceName } from '../../../awsNamingUtils';
5
6
  import { getApiKeys } from '../../../logic/apiGateway/getApiKeys';
7
+ // Constant-time string equality. `timingSafeEqual` throws on length mismatch,
8
+ // so guard the length check — the length itself isn't secret for API keys.
9
+ const safeEqual = (a, b) => {
10
+ if (!a || !b || a.length != b.length) {
11
+ return false;
12
+ }
13
+ const aBuf = Buffer.from(a, 'utf8');
14
+ const bBuf = Buffer.from(b, 'utf8');
15
+ return timingSafeEqual(aBuf, bBuf);
16
+ };
6
17
  const getProcessApiKeyValidationValidate = (qpqConfig) => {
7
18
  const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
8
19
  const application = qpqCoreUtils.getApplicationName(qpqConfig);
@@ -15,8 +26,8 @@ const getProcessApiKeyValidationValidate = (qpqConfig) => {
15
26
  const apiKeyService = apiKey.serviceName || service;
16
27
  return getConfigRuntimeResourceName(apiKey.name, apiKeyApplication, apiKeyService, environment, feature);
17
28
  }));
18
- const index = realApiKeys.findIndex((apiKey) => apiKey.value === apiKeyValue);
19
- return actionResult(index >= 0);
29
+ const matched = realApiKeys.some((apiKey) => safeEqual(apiKey.value, apiKeyValue));
30
+ return actionResult(matched);
20
31
  };
21
32
  };
22
33
  export const getApiKeyValidationValidateActionProcessor = async (qpqConfig) => ({
@@ -1,12 +1,20 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, ConfigActionType, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, ConfigActionType, ConfigGetSecretErrorTypeEnum, } from 'quidproquo-core';
3
3
  import { getSecret } from '../../../logic/secretsManager/getSecret';
4
4
  import { resolveSecretResourceName } from './utils';
5
5
  const getProcessConfigGetSecret = (qpqConfig) => {
6
6
  return async ({ secretName }) => {
7
7
  const awsSecretKey = resolveSecretResourceName(secretName, qpqConfig);
8
- const secretValue = await getSecret(awsSecretKey, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));
9
- return actionResult(secretValue);
8
+ try {
9
+ const secretValue = await getSecret(awsSecretKey, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));
10
+ return actionResult(secretValue);
11
+ }
12
+ catch (error) {
13
+ return actionResultErrorFromCaughtError(error, {
14
+ ResourceNotFoundException: () => actionResultError(ConfigGetSecretErrorTypeEnum.ResourceNotFound, `Secret not found: [${secretName}]`),
15
+ ThrottlingException: () => actionResultError(ConfigGetSecretErrorTypeEnum.Throttling, 'Throttling: Rate exceeded'),
16
+ });
17
+ }
10
18
  };
11
19
  };
12
20
  export const getConfigGetSecretActionProcessor = async (qpqConfig) => ({
@@ -1,12 +1,20 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, ConfigActionType, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, ConfigActionType, ConfigSetParameterErrorTypeEnum, } from 'quidproquo-core';
3
3
  import { setParameter } from '../../../logic/parametersManager/setParameter';
4
4
  import { resolveParameterKey } from '../../../runtimeConfig/qpqAwsLambdaRuntimeConfigUtils';
5
5
  const getProcessConfigSetParameter = (qpqConfig) => {
6
6
  return async ({ parameterName, parameterValue }) => {
7
7
  const awsParameterKey = resolveParameterKey(parameterName, qpqConfig);
8
- await setParameter(awsParameterKey, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), parameterValue);
9
- return actionResult(void 0);
8
+ try {
9
+ await setParameter(awsParameterKey, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), parameterValue);
10
+ return actionResult(void 0);
11
+ }
12
+ catch (error) {
13
+ return actionResultErrorFromCaughtError(error, {
14
+ ThrottlingException: () => actionResultError(ConfigSetParameterErrorTypeEnum.Throttling, 'Throttling: Rate exceeded'),
15
+ ParameterLimitExceeded: () => actionResultError(ConfigSetParameterErrorTypeEnum.QuotaExceeded, 'Parameter store limit exceeded'),
16
+ });
17
+ }
10
18
  };
11
19
  };
12
20
  export const getConfigSetParameterActionProcessor = async (qpqConfig) => ({
@@ -1,11 +1,9 @@
1
- import { getConfigGetGlobalActionProcessor } from './getConfigGetGlobalActionProcessor';
2
1
  import { getConfigGetParameterActionProcessor } from './getConfigGetParameterActionProcessor';
3
2
  import { getConfigGetParametersActionProcessor } from './getConfigGetParametersActionProcessor';
4
3
  import { getConfigGetSecretActionProcessor } from './getConfigGetSecretActionProcessor';
5
4
  import { getConfigListParametersActionProcessor } from './getConfigListParametersActionProcessor';
6
5
  import { getConfigSetParameterActionProcessor } from './getConfigSetParameterActionProcessor';
7
6
  export const getConfigActionProcessor = async (qpqConfig, dynamicModuleLoader) => ({
8
- ...(await getConfigGetGlobalActionProcessor(qpqConfig, dynamicModuleLoader)),
9
7
  ...(await getConfigGetParameterActionProcessor(qpqConfig, dynamicModuleLoader)),
10
8
  ...(await getConfigGetParametersActionProcessor(qpqConfig, dynamicModuleLoader)),
11
9
  ...(await getConfigGetSecretActionProcessor(qpqConfig, dynamicModuleLoader)),
@@ -1,5 +1,5 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, actionResultError, ErrorTypeEnum, EventBusActionType, qpqCoreUtils, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, ErrorTypeEnum, EventBusActionType, EventBusSendMessagesErrorTypeEnum, qpqCoreUtils, toCrossServiceSession, } from 'quidproquo-core';
3
3
  import { getEventBusSnsTopicArn } from '../../../awsNamingUtils';
4
4
  import { publishMessage } from '../../../logic/sns/publishMessage';
5
5
  const getProcessEventBusSendMessage = (qpqConfig) => {
@@ -10,14 +10,24 @@ const getProcessEventBusSendMessage = (qpqConfig) => {
10
10
  return actionResultError(ErrorTypeEnum.NotFound, `Event bus ${eventBusName} not found`);
11
11
  }
12
12
  const topicArn = getEventBusSnsTopicArn(eventBusConfig.owner?.resourceNameOverride || eventBusName, qpqConfig, eventBusConfig.owner?.module || qpqCoreUtils.getApplicationModuleName(qpqConfig), eventBusConfig.owner?.environment || qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig), eventBusConfig.owner?.application || qpqCoreUtils.getApplicationName(qpqConfig), eventBusConfig.owner?.feature || qpqCoreUtils.getApplicationModuleFeature(qpqConfig));
13
- await publishMessage(topicArn, region, eventBusMessages.map((message) => {
14
- const eventBusMessageWithSession = {
15
- ...message,
16
- storySession: session,
17
- };
18
- return JSON.stringify(eventBusMessageWithSession);
19
- }));
20
- return actionResult(void 0);
13
+ try {
14
+ await publishMessage(topicArn, region, eventBusMessages.map((message) => {
15
+ const eventBusMessageWithSession = {
16
+ ...message,
17
+ storySession: toCrossServiceSession(session),
18
+ };
19
+ return JSON.stringify(eventBusMessageWithSession);
20
+ }));
21
+ return actionResult(void 0);
22
+ }
23
+ catch (error) {
24
+ return actionResultErrorFromCaughtError(error, {
25
+ AuthorizationErrorException: () => actionResultError(EventBusSendMessagesErrorTypeEnum.AccessDenied, 'Access denied publishing to event bus'),
26
+ NotFoundException: () => actionResultError(EventBusSendMessagesErrorTypeEnum.TopicNotFound, `Event bus topic not found: ${eventBusName}`),
27
+ InternalErrorException: () => actionResultError(EventBusSendMessagesErrorTypeEnum.ServiceUnavailable, 'Event bus service unavailable'),
28
+ ThrottledException: () => actionResultError(EventBusSendMessagesErrorTypeEnum.ServiceUnavailable, 'Event bus throttled'),
29
+ });
30
+ }
21
31
  };
22
32
  };
23
33
  export const getEventBusSendMessagesActionProcessor = async (qpqConfig) => ({
@@ -1,19 +1,27 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, FileActionType } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, FileActionType, FileDeleteErrorTypeEnum } from 'quidproquo-core';
3
3
  import { deleteFiles } from '../../../logic/s3/s3Utils';
4
4
  import { resolveStorageDriveBucketName } from './utils';
5
5
  const getProcessFileDelete = (qpqConfig) => {
6
6
  return async ({ drive, filepaths }) => {
7
7
  const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);
8
- const errored = await deleteFiles(s3BucketName, filepaths, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));
9
- // errored deletes are a graceful success ~ Retry
10
- // if (errored.length > 0) {
11
- // return actionResultError(
12
- // ErrorTypeEnum.GenericError,
13
- // `Could not delete files ${errored.length}`,
14
- // );
15
- // }
16
- return actionResult(errored);
8
+ try {
9
+ const errored = await deleteFiles(s3BucketName, filepaths, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));
10
+ // errored deletes are a graceful success ~ Retry
11
+ // if (errored.length > 0) {
12
+ // return actionResultError(
13
+ // ErrorTypeEnum.GenericError,
14
+ // `Could not delete files ${errored.length}`,
15
+ // );
16
+ // }
17
+ return actionResult(errored);
18
+ }
19
+ catch (error) {
20
+ return actionResultErrorFromCaughtError(error, {
21
+ AccessDenied: () => actionResultError(FileDeleteErrorTypeEnum.AccessDenied, 'Access denied deleting files'),
22
+ NoSuchBucket: () => actionResultError(FileDeleteErrorTypeEnum.DriveNotFound, `Storage drive not found: ${drive}`),
23
+ });
24
+ }
17
25
  };
18
26
  };
19
27
  export const getFileDeleteActionProcessor = async (qpqConfig) => ({
@@ -1,11 +1,19 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, FileActionType, } from 'quidproquo-core';
2
+ import { actionResult, actionResultError, actionResultErrorFromCaughtError, FileActionType, FileExistsErrorTypeEnum, } from 'quidproquo-core';
3
3
  import { objectExists } from '../../../logic/s3/s3Utils';
4
4
  import { resolveStorageDriveBucketName } from './utils';
5
5
  const getProcessFileExists = (qpqConfig) => {
6
6
  return async ({ drive, filepath }) => {
7
7
  const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);
8
- return actionResult(await objectExists(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));
8
+ try {
9
+ return actionResult(await objectExists(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig)));
10
+ }
11
+ catch (error) {
12
+ return actionResultErrorFromCaughtError(error, {
13
+ AccessDenied: () => actionResultError(FileExistsErrorTypeEnum.AccessDenied, 'Access denied checking file existence'),
14
+ Forbidden: () => actionResultError(FileExistsErrorTypeEnum.AccessDenied, 'Access denied checking file existence'),
15
+ });
16
+ }
9
17
  };
10
18
  };
11
19
  export const getFileExistsActionProcessor = async (qpqConfig) => ({
@@ -1,10 +1,15 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
2
  import { actionResultError, ErrorTypeEnum } from 'quidproquo-core';
3
- import { actionResult, FileActionType } from 'quidproquo-core';
3
+ import { actionResult, FileActionType, FileGenerateTemporarySecureUrlErrorTypeEnum } from 'quidproquo-core';
4
4
  import { generatePresignedUrl } from '../../../logic/s3/generatePresignedUrl';
5
5
  import { resolveStorageDriveBucketName } from './utils';
6
+ // SigV4 presigned URLs cannot expire more than 7 days in the future
7
+ const maxExpirationMs = 7 * 24 * 60 * 60 * 1000;
6
8
  const getProcessFileGenerateTemporarySecureUrl = (qpqConfig) => {
7
9
  return async ({ drive, filepath, expirationMs }) => {
10
+ if (expirationMs > maxExpirationMs) {
11
+ return actionResultError(FileGenerateTemporarySecureUrlErrorTypeEnum.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
12
+ }
8
13
  try {
9
14
  const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);
10
15
  const url = await generatePresignedUrl(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), expirationMs);
@@ -1,10 +1,15 @@
1
1
  import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
2
  import { actionResultError, ErrorTypeEnum } from 'quidproquo-core';
3
- import { actionResult, FileActionType } from 'quidproquo-core';
3
+ import { actionResult, FileActionType, FileGenerateTemporaryUploadSecureUrlErrorTypeEnum } from 'quidproquo-core';
4
4
  import { generatePresignedUploadUrl } from '../../../logic/s3/generatePresignedUploadUrl';
5
5
  import { resolveStorageDriveBucketName } from './utils';
6
+ // SigV4 presigned URLs cannot expire more than 7 days in the future
7
+ const maxExpirationMs = 7 * 24 * 60 * 60 * 1000;
6
8
  const getProcessFileGenerateTemporaryUploadSecureUrl = (qpqConfig) => {
7
9
  return async ({ drive, filepath, expirationMs, contentType }, session) => {
10
+ if (expirationMs > maxExpirationMs) {
11
+ return actionResultError(FileGenerateTemporaryUploadSecureUrlErrorTypeEnum.ExpirationTooLong, 'Expiration exceeds the 7 day maximum for presigned URLs');
12
+ }
8
13
  try {
9
14
  const s3BucketName = resolveStorageDriveBucketName(drive, qpqConfig);
10
15
  const url = await generatePresignedUploadUrl(s3BucketName, filepath, qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig), expirationMs, session.correlation, contentType);