quidproquo-actionprocessor-awslambda 0.0.262 → 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 (318) 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.d.ts +2 -0
  4. package/lib/commonjs/getActionProcessor/core/ai/aiModelMap.js +15 -0
  5. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.d.ts +2 -0
  6. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.js +42 -0
  7. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.d.ts +2 -0
  8. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +90 -0
  9. package/lib/commonjs/getActionProcessor/core/ai/index.d.ts +2 -0
  10. package/lib/commonjs/getActionProcessor/core/{config/getConfigGetGlobalActionProcessor.js → ai/index.js} +6 -13
  11. package/lib/commonjs/getActionProcessor/core/ai/logic/aiStreamPartMappers.d.ts +6 -0
  12. package/lib/commonjs/getActionProcessor/core/ai/logic/aiStreamPartMappers.js +57 -0
  13. package/lib/commonjs/getActionProcessor/core/ai/logic/index.d.ts +32 -0
  14. package/lib/commonjs/getActionProcessor/core/ai/logic/index.js +48 -0
  15. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamAbort.d.ts +3 -0
  16. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamAbort.js +9 -0
  17. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamCustom.d.ts +3 -0
  18. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamCustom.js +9 -0
  19. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamError.d.ts +3 -0
  20. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamError.js +10 -0
  21. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFilePart.d.ts +3 -0
  22. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFilePart.js +12 -0
  23. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.d.ts +3 -0
  24. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +11 -0
  25. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.d.ts +3 -0
  26. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +11 -0
  27. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamPart.d.ts +3 -0
  28. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamPart.js +9 -0
  29. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamRaw.d.ts +2 -0
  30. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamRaw.js +8 -0
  31. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.d.ts +3 -0
  32. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.js +10 -0
  33. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.d.ts +3 -0
  34. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.js +9 -0
  35. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.d.ts +3 -0
  36. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.js +12 -0
  37. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.d.ts +3 -0
  38. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.js +9 -0
  39. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.d.ts +3 -0
  40. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.js +16 -0
  41. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStart.d.ts +2 -0
  42. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStart.js +8 -0
  43. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStartStep.d.ts +2 -0
  44. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamStartStep.js +8 -0
  45. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.d.ts +3 -0
  46. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.js +10 -0
  47. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.d.ts +3 -0
  48. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.js +9 -0
  49. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextStart.d.ts +3 -0
  50. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamTextStart.js +9 -0
  51. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.d.ts +3 -0
  52. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.js +12 -0
  53. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.d.ts +3 -0
  54. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.js +13 -0
  55. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolCall.d.ts +3 -0
  56. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolCall.js +11 -0
  57. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolError.d.ts +3 -0
  58. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolError.js +13 -0
  59. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.d.ts +3 -0
  60. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.js +10 -0
  61. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.d.ts +3 -0
  62. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.js +9 -0
  63. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.d.ts +3 -0
  64. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.js +10 -0
  65. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.d.ts +3 -0
  66. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.js +10 -0
  67. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolResult.d.ts +3 -0
  68. package/lib/commonjs/getActionProcessor/core/ai/logic/mapAiStreamToolResult.js +12 -0
  69. package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.d.ts +19 -0
  70. package/lib/commonjs/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +53 -0
  71. package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamUsage.d.ts +6 -0
  72. package/lib/commonjs/getActionProcessor/core/ai/logic/toAiStreamUsage.js +9 -0
  73. package/lib/commonjs/getActionProcessor/core/ai/logic/toErrorMessage.d.ts +1 -0
  74. package/lib/commonjs/getActionProcessor/core/ai/logic/toErrorMessage.js +11 -0
  75. package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +3 -0
  76. package/lib/commonjs/getActionProcessor/core/ai/logic/toSdkMessages.js +82 -0
  77. package/lib/commonjs/getActionProcessor/core/ai/types/aiSdkStreamPart.d.ts +5 -0
  78. package/lib/commonjs/getActionProcessor/core/ai/types/aiSdkStreamPart.js +2 -0
  79. package/lib/commonjs/getActionProcessor/core/ai/types/index.d.ts +1 -0
  80. package/lib/commonjs/getActionProcessor/core/ai/types/index.js +17 -0
  81. package/lib/commonjs/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.d.ts +2 -0
  82. package/lib/commonjs/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.js +50 -0
  83. package/lib/commonjs/getActionProcessor/core/apiKeyValidation/index.d.ts +2 -0
  84. package/lib/commonjs/getActionProcessor/core/apiKeyValidation/index.js +17 -0
  85. package/lib/commonjs/getActionProcessor/core/config/getConfigGetSecretActionProcessor.js +10 -2
  86. package/lib/commonjs/getActionProcessor/core/config/getConfigSetParameterActionProcessor.js +10 -2
  87. package/lib/commonjs/getActionProcessor/core/config/index.js +1 -2
  88. package/lib/commonjs/getActionProcessor/core/event/apiGatwayEvent/api/getEventAutoRespondActionProcessor.js +2 -34
  89. package/lib/commonjs/getActionProcessor/core/event/apiGatwayEvent/api/getEventGetStorySessionActionProcessor.js +2 -31
  90. package/lib/commonjs/getActionProcessor/core/event/apiGatwayEvent/websocket/getEventTransformResponseResultActionProcessor.js +2 -2
  91. package/lib/commonjs/getActionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +16 -6
  92. package/lib/commonjs/getActionProcessor/core/file/getFileDeleteActionProcessor.js +17 -9
  93. package/lib/commonjs/getActionProcessor/core/file/getFileExistsActionProcessor.js +9 -1
  94. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +5 -0
  95. package/lib/commonjs/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +5 -0
  96. package/lib/commonjs/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +13 -2
  97. package/lib/commonjs/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +16 -7
  98. package/lib/commonjs/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +11 -2
  99. package/lib/commonjs/getActionProcessor/core/file/getFileStreamOpenActionProcessor.d.ts +2 -0
  100. package/lib/commonjs/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +105 -0
  101. package/lib/commonjs/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +11 -2
  102. package/lib/commonjs/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +11 -2
  103. package/lib/commonjs/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +11 -2
  104. package/lib/commonjs/getActionProcessor/core/file/index.js +2 -1
  105. package/lib/commonjs/getActionProcessor/core/index.d.ts +2 -0
  106. package/lib/commonjs/getActionProcessor/core/index.js +6 -1
  107. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +10 -2
  108. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +10 -2
  109. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +10 -2
  110. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +10 -2
  111. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +12 -3
  112. package/lib/commonjs/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +10 -2
  113. package/lib/commonjs/getActionProcessor/core/queue/getQueueSendMessageActionProcessor.js +17 -7
  114. package/lib/commonjs/getActionProcessor/core/system/getSystemExecuteStoryActionProcessor.js +5 -4
  115. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.d.ts +2 -0
  116. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.js +28 -0
  117. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryChangePasswordActionProcessor.js +11 -2
  118. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryConfirmEmailVerificationActionProcessor.js +11 -2
  119. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryConfirmForgotPasswordActionProcessor.js +12 -2
  120. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryCreateUserActionProcessor.js +12 -3
  121. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryDecodeAccessTokenActionProcessor.js +1 -1
  122. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryForgotPasswordActionProcessor.js +10 -2
  123. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUserAttributesByUserIdActionProcessor.js +9 -2
  124. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersActionProcessor.js +10 -2
  125. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersByAttributeActionProcessor.js +10 -2
  126. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRefreshTokenActionProcessor.js +17 -3
  127. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +11 -2
  128. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectoryRespondToAuthChallengeActionProcessor.js +34 -2
  129. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetPasswordActionProcessor.js +12 -2
  130. package/lib/commonjs/getActionProcessor/core/userDirectory/getUserDirectorySetUserAttributesActionProcessor.js +13 -2
  131. package/lib/commonjs/getActionProcessor/core/userDirectory/index.js +2 -1
  132. package/lib/commonjs/getActionProcessor/webserver/serviceFunction/getServiceFunctionExecuteActionProcessor.js +2 -2
  133. package/lib/commonjs/index.d.ts +1 -0
  134. package/lib/commonjs/index.js +3 -0
  135. package/lib/commonjs/lambdaExtensions/getLogExtensionLayerPath.d.ts +10 -0
  136. package/lib/commonjs/lambdaExtensions/getLogExtensionLayerPath.js +20 -0
  137. package/lib/commonjs/lambdaExtensions/logExtensionPort.d.ts +1 -0
  138. package/lib/commonjs/lambdaExtensions/logExtensionPort.js +7 -0
  139. package/lib/commonjs/lambdaHandlers/getApiGatewayEventHandler.js +4 -8
  140. package/lib/commonjs/lambdaHandlers/getApiGatewayEventHandler_redirect.js +0 -2
  141. package/lib/commonjs/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +2 -2
  142. package/lib/commonjs/lambdaHandlers/helpers/logger.d.ts +4 -1
  143. package/lib/commonjs/lambdaHandlers/helpers/logger.js +94 -36
  144. package/lib/commonjs/logic/cognito/associateSoftwareToken.d.ts +2 -0
  145. package/lib/commonjs/logic/cognito/associateSoftwareToken.js +28 -0
  146. package/lib/commonjs/logic/cognito/decodeValidJwt.js +2 -1
  147. package/lib/commonjs/logic/cognito/getUserAttributesBySub.d.ts +4 -0
  148. package/lib/commonjs/logic/cognito/getUserAttributesBySub.js +12 -2
  149. package/lib/commonjs/logic/cognito/utils/transformCognitoResponse.js +2 -0
  150. package/lib/commonjs/logic/cognito/verifySoftwareToken.d.ts +1 -0
  151. package/lib/commonjs/logic/cognito/verifySoftwareToken.js +28 -0
  152. package/lib/commonjs/logic/dynamo/qpqDynamoOrm/getDynamoTableIndexByConfigAndQuery.js +8 -2
  153. package/lib/commonjs/logic/s3/generatePresignedUploadUrl.js +8 -1
  154. package/lib/commonjs/logic/s3/objectExists.js +9 -3
  155. package/lib/esm/awsNamingUtils.d.ts +1 -0
  156. package/lib/esm/awsNamingUtils.js +10 -0
  157. package/lib/esm/getActionProcessor/core/ai/aiModelMap.d.ts +2 -0
  158. package/lib/esm/getActionProcessor/core/ai/aiModelMap.js +12 -0
  159. package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.d.ts +2 -0
  160. package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.js +33 -0
  161. package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.d.ts +2 -0
  162. package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +46 -0
  163. package/lib/esm/getActionProcessor/core/ai/index.d.ts +2 -0
  164. package/lib/esm/getActionProcessor/core/ai/index.js +6 -0
  165. package/lib/esm/getActionProcessor/core/ai/logic/aiStreamPartMappers.d.ts +6 -0
  166. package/lib/esm/getActionProcessor/core/ai/logic/aiStreamPartMappers.js +54 -0
  167. package/lib/esm/getActionProcessor/core/ai/logic/index.d.ts +32 -0
  168. package/lib/esm/getActionProcessor/core/ai/logic/index.js +32 -0
  169. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamAbort.d.ts +3 -0
  170. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamAbort.js +5 -0
  171. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamCustom.d.ts +3 -0
  172. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamCustom.js +5 -0
  173. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamError.d.ts +3 -0
  174. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamError.js +6 -0
  175. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFilePart.d.ts +3 -0
  176. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFilePart.js +8 -0
  177. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.d.ts +3 -0
  178. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinish.js +7 -0
  179. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.d.ts +3 -0
  180. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamFinishStep.js +7 -0
  181. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamPart.d.ts +3 -0
  182. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamPart.js +5 -0
  183. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamRaw.d.ts +2 -0
  184. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamRaw.js +4 -0
  185. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.d.ts +3 -0
  186. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningDelta.js +6 -0
  187. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.d.ts +3 -0
  188. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningEnd.js +5 -0
  189. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.d.ts +3 -0
  190. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningFilePart.js +8 -0
  191. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.d.ts +3 -0
  192. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamReasoningStart.js +5 -0
  193. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.d.ts +3 -0
  194. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamSourcePart.js +12 -0
  195. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStart.d.ts +2 -0
  196. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStart.js +4 -0
  197. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStartStep.d.ts +2 -0
  198. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamStartStep.js +4 -0
  199. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.d.ts +3 -0
  200. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextDelta.js +6 -0
  201. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.d.ts +3 -0
  202. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextEnd.js +5 -0
  203. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextStart.d.ts +3 -0
  204. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamTextStart.js +5 -0
  205. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.d.ts +3 -0
  206. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalRequest.js +8 -0
  207. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.d.ts +3 -0
  208. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolApprovalResponse.js +9 -0
  209. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolCall.d.ts +3 -0
  210. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolCall.js +7 -0
  211. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolError.d.ts +3 -0
  212. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolError.js +9 -0
  213. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.d.ts +3 -0
  214. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputDelta.js +6 -0
  215. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.d.ts +3 -0
  216. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputEnd.js +5 -0
  217. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.d.ts +3 -0
  218. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolInputStart.js +6 -0
  219. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.d.ts +3 -0
  220. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolOutputDenied.js +6 -0
  221. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolResult.d.ts +3 -0
  222. package/lib/esm/getActionProcessor/core/ai/logic/mapAiStreamToolResult.js +8 -0
  223. package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.d.ts +19 -0
  224. package/lib/esm/getActionProcessor/core/ai/logic/prepareAiPromptCall.js +40 -0
  225. package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamUsage.d.ts +6 -0
  226. package/lib/esm/getActionProcessor/core/ai/logic/toAiStreamUsage.js +5 -0
  227. package/lib/esm/getActionProcessor/core/ai/logic/toErrorMessage.d.ts +1 -0
  228. package/lib/esm/getActionProcessor/core/ai/logic/toErrorMessage.js +7 -0
  229. package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.d.ts +3 -0
  230. package/lib/esm/getActionProcessor/core/ai/logic/toSdkMessages.js +78 -0
  231. package/lib/esm/getActionProcessor/core/ai/types/aiSdkStreamPart.d.ts +5 -0
  232. package/lib/esm/getActionProcessor/core/ai/types/aiSdkStreamPart.js +1 -0
  233. package/lib/esm/getActionProcessor/core/ai/types/index.d.ts +1 -0
  234. package/lib/esm/getActionProcessor/core/ai/types/index.js +1 -0
  235. package/lib/esm/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.d.ts +2 -0
  236. package/lib/esm/getActionProcessor/core/apiKeyValidation/getApiKeyValidationValidateActionProcessor.js +35 -0
  237. package/lib/esm/getActionProcessor/core/apiKeyValidation/index.d.ts +2 -0
  238. package/lib/esm/getActionProcessor/core/apiKeyValidation/index.js +4 -0
  239. package/lib/esm/getActionProcessor/core/config/getConfigGetSecretActionProcessor.js +11 -3
  240. package/lib/esm/getActionProcessor/core/config/getConfigSetParameterActionProcessor.js +11 -3
  241. package/lib/esm/getActionProcessor/core/config/index.js +0 -2
  242. package/lib/esm/getActionProcessor/core/event/apiGatwayEvent/api/getEventAutoRespondActionProcessor.js +3 -32
  243. package/lib/esm/getActionProcessor/core/event/apiGatwayEvent/api/getEventGetStorySessionActionProcessor.js +3 -35
  244. package/lib/esm/getActionProcessor/core/event/apiGatwayEvent/websocket/getEventTransformResponseResultActionProcessor.js +2 -2
  245. package/lib/esm/getActionProcessor/core/eventBus/getEventBusSendMessagesActionProcessor.js +20 -13
  246. package/lib/esm/getActionProcessor/core/file/getFileDeleteActionProcessor.js +18 -10
  247. package/lib/esm/getActionProcessor/core/file/getFileExistsActionProcessor.js +10 -2
  248. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporarySecureUrlActionProcessor.js +6 -1
  249. package/lib/esm/getActionProcessor/core/file/getFileGenerateTemporaryUploadSecureUrlActionProcessor.js +6 -1
  250. package/lib/esm/getActionProcessor/core/file/getFileIsColdStorageActionProcessor.js +14 -3
  251. package/lib/esm/getActionProcessor/core/file/getFileListDirectoryActionProcessor.js +20 -11
  252. package/lib/esm/getActionProcessor/core/file/getFileReadBinaryContentsActionProcessor.js +12 -3
  253. package/lib/esm/getActionProcessor/core/file/getFileStreamOpenActionProcessor.d.ts +2 -0
  254. package/lib/esm/getActionProcessor/core/file/getFileStreamOpenActionProcessor.js +55 -0
  255. package/lib/esm/getActionProcessor/core/file/getFileWriteBinaryContentsActionProcessor.js +12 -3
  256. package/lib/esm/getActionProcessor/core/file/getFileWriteObjectJsonActionProcessor.js +12 -3
  257. package/lib/esm/getActionProcessor/core/file/getFileWriteTextContentsActionProcessor.js +12 -3
  258. package/lib/esm/getActionProcessor/core/file/index.js +2 -0
  259. package/lib/esm/getActionProcessor/core/index.d.ts +2 -0
  260. package/lib/esm/getActionProcessor/core/index.js +8 -0
  261. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreDeleteActionProcessor.js +11 -3
  262. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetActionProcessor.js +11 -3
  263. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreGetAllActionProcessor.js +11 -3
  264. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreQueryActionProcessor.js +12 -4
  265. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreScanActionProcessor.js +12 -3
  266. package/lib/esm/getActionProcessor/core/keyValueStore/getKeyValueStoreUpdateActionProcessor.js +11 -3
  267. package/lib/esm/getActionProcessor/core/queue/getQueueSendMessageActionProcessor.js +21 -14
  268. package/lib/esm/getActionProcessor/core/system/getSystemExecuteStoryActionProcessor.js +1 -0
  269. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.d.ts +2 -0
  270. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryAssociateSoftwareTokenActionProcessor.js +13 -0
  271. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryChangePasswordActionProcessor.js +12 -3
  272. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryConfirmEmailVerificationActionProcessor.js +12 -3
  273. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryConfirmForgotPasswordActionProcessor.js +13 -3
  274. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryCreateUserActionProcessor.js +13 -4
  275. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryDecodeAccessTokenActionProcessor.js +2 -2
  276. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryForgotPasswordActionProcessor.js +11 -3
  277. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUserAttributesByUserIdActionProcessor.js +10 -3
  278. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersActionProcessor.js +11 -3
  279. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryGetUsersByAttributeActionProcessor.js +11 -3
  280. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRefreshTokenActionProcessor.js +18 -4
  281. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRequestEmailVerificationActionProcessor.js +12 -3
  282. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectoryRespondToAuthChallengeActionProcessor.js +35 -3
  283. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetPasswordActionProcessor.js +13 -3
  284. package/lib/esm/getActionProcessor/core/userDirectory/getUserDirectorySetUserAttributesActionProcessor.js +14 -3
  285. package/lib/esm/getActionProcessor/core/userDirectory/index.js +2 -0
  286. package/lib/esm/getActionProcessor/webserver/serviceFunction/getServiceFunctionExecuteActionProcessor.js +3 -6
  287. package/lib/esm/index.d.ts +1 -0
  288. package/lib/esm/index.js +3 -0
  289. package/lib/esm/lambdaExtensions/getLogExtensionLayerPath.d.ts +10 -0
  290. package/lib/esm/lambdaExtensions/getLogExtensionLayerPath.js +13 -0
  291. package/lib/esm/lambdaExtensions/logExtensionPort.d.ts +1 -0
  292. package/lib/esm/lambdaExtensions/logExtensionPort.js +4 -0
  293. package/lib/esm/lambdaHandlers/getApiGatewayEventHandler.js +4 -8
  294. package/lib/esm/lambdaHandlers/getApiGatewayEventHandler_redirect.js +0 -2
  295. package/lib/esm/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +1 -1
  296. package/lib/esm/lambdaHandlers/helpers/logger.d.ts +4 -1
  297. package/lib/esm/lambdaHandlers/helpers/logger.js +94 -38
  298. package/lib/esm/logic/cognito/associateSoftwareToken.d.ts +2 -0
  299. package/lib/esm/logic/cognito/associateSoftwareToken.js +15 -0
  300. package/lib/esm/logic/cognito/decodeValidJwt.js +2 -1
  301. package/lib/esm/logic/cognito/getUserAttributesBySub.d.ts +4 -0
  302. package/lib/esm/logic/cognito/getUserAttributesBySub.js +10 -1
  303. package/lib/esm/logic/cognito/utils/transformCognitoResponse.js +2 -0
  304. package/lib/esm/logic/cognito/verifySoftwareToken.d.ts +1 -0
  305. package/lib/esm/logic/cognito/verifySoftwareToken.js +15 -0
  306. package/lib/esm/logic/dynamo/qpqDynamoOrm/getDynamoTableIndexByConfigAndQuery.js +7 -2
  307. package/lib/esm/logic/s3/generatePresignedUploadUrl.js +8 -1
  308. package/lib/esm/logic/s3/objectExists.js +8 -3
  309. package/lib/extension-layer/extensions/qpq-log-extension +2 -0
  310. package/lib/extension-layer/qpq-log-extension/index.js +58 -0
  311. package/package.json +11 -6
  312. package/lib/commonjs/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.d.ts +0 -2
  313. package/lib/commonjs/getActionProcessor/core/event/utils/isAuthValid.d.ts +0 -3
  314. package/lib/commonjs/getActionProcessor/core/event/utils/isAuthValid.js +0 -68
  315. package/lib/esm/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.d.ts +0 -2
  316. package/lib/esm/getActionProcessor/core/config/getConfigGetGlobalActionProcessor.js +0 -10
  317. package/lib/esm/getActionProcessor/core/event/utils/isAuthValid.d.ts +0 -3
  318. package/lib/esm/getActionProcessor/core/event/utils/isAuthValid.js +0 -55
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLogExtensionLayerPath = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ /**
9
+ * Absolute path to the built qpq-log-extension layer directory (contains the
10
+ * `extensions/` folder). Produced by scripts/buildLogExtensionLayer.mjs and
11
+ * shipped under lib/extension-layer. Used by the CDK layer construct as the
12
+ * LayerVersion asset source.
13
+ *
14
+ * Resolved relative to this compiled file: lib/<format>/lambdaExtensions/<this>
15
+ * -> ../../extension-layer.
16
+ */
17
+ const getLogExtensionLayerPath = () => {
18
+ return path_1.default.resolve(__dirname, '..', '..', 'extension-layer');
19
+ };
20
+ exports.getLogExtensionLayerPath = getLogExtensionLayerPath;
@@ -0,0 +1 @@
1
+ export declare const LOG_EXTENSION_PORT = 9009;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOG_EXTENSION_PORT = void 0;
4
+ // Fixed localhost port the function handler uses to reach the qpq-log-extension.
5
+ // Hardcoded on both ends — the handler and the extension always ship together, so
6
+ // there's no need to pass it through an env var.
7
+ exports.LOG_EXTENSION_PORT = 9009;
@@ -4,12 +4,8 @@ exports.getApiGatewayEventHandler = void 0;
4
4
  const quidproquo_core_1 = require("quidproquo-core");
5
5
  const getActionProcessor_1 = require("../getActionProcessor");
6
6
  const getQpqLambdaRuntimeForEvent_1 = require("./helpers/getQpqLambdaRuntimeForEvent");
7
- const getApiGatewayEventHandler = (dynamicModuleLoader, qpqConfig) => (0, getQpqLambdaRuntimeForEvent_1.getQpqLambdaRuntimeForEvent)(quidproquo_core_1.QpqRuntimeType.API, (event) => {
8
- console.log('event', JSON.stringify(event, null, 2));
9
- console.log(event);
10
- return {
11
- depth: 0,
12
- context: {},
13
- };
14
- }, getActionProcessor_1.getApiGatewayApiEventEventProcessor, dynamicModuleLoader, qpqConfig);
7
+ const getApiGatewayEventHandler = (dynamicModuleLoader, qpqConfig) => (0, getQpqLambdaRuntimeForEvent_1.getQpqLambdaRuntimeForEvent)(quidproquo_core_1.QpqRuntimeType.API, () => ({
8
+ depth: 0,
9
+ context: {},
10
+ }), getActionProcessor_1.getApiGatewayApiEventEventProcessor, dynamicModuleLoader, qpqConfig);
15
11
  exports.getApiGatewayEventHandler = getApiGatewayEventHandler;
@@ -11,8 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.getApiGatewayEventHandler_redirect = void 0;
13
13
  const apiGatewayEventHandler_redirect = (event, context) => __awaiter(void 0, void 0, void 0, function* () {
14
- console.log('event: ', JSON.stringify(event, null, 2));
15
- console.log('process.env: ', JSON.stringify(process.env, null, 2));
16
14
  const redirectConfig = JSON.parse(process.env.redirectConfig);
17
15
  // For direct urls ~ Go straight to the url
18
16
  let redirectUrl = redirectConfig.redirectUrl;
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.getQpqLambdaRuntimeForEvent = void 0;
13
- const quidproquo_actionprocessor_node_1 = require("quidproquo-actionprocessor-node");
13
+ const quidproquo_actionprocessor_js_1 = require("quidproquo-actionprocessor-js");
14
14
  const quidproquo_core_1 = require("quidproquo-core");
15
15
  const getActionProcessor_1 = require("../../getActionProcessor");
16
16
  const dynamicModuleLoaderWarmer_1 = require("./dynamicModuleLoaderWarmer");
@@ -28,7 +28,7 @@ const getQpqLambdaRuntimeForEvent = (runtimeType, getStorySession, getActionProc
28
28
  console.log('tick: ', JSON.stringify(event, null, 2));
29
29
  const logger = (0, logger_1.getLogger)(qpqConfig);
30
30
  const resolveStory = (0, quidproquo_core_1.createRuntime)(qpqConfig, getStorySession(event), () => __awaiter(void 0, void 0, void 0, function* () {
31
- return (Object.assign(Object.assign(Object.assign({}, (yield (0, getActionProcessor_1.getAwsActionProcessors)(qpqConfig, dynamicModuleLoader))), (yield getActionProcessorList(qpqConfig, dynamicModuleLoader))), (yield (0, quidproquo_actionprocessor_node_1.getCustomActionActionProcessor)(qpqConfig, dynamicModuleLoader))));
31
+ return (Object.assign(Object.assign(Object.assign({}, (yield (0, getActionProcessor_1.getAwsActionProcessors)(qpqConfig, dynamicModuleLoader))), (yield getActionProcessorList(qpqConfig, dynamicModuleLoader))), (yield (0, quidproquo_actionprocessor_js_1.getCustomActionActionProcessor)(qpqConfig, dynamicModuleLoader))));
32
32
  }), () => new Date().toISOString(), logger, (0, getRuntimeCorrelation_1.getRuntimeCorrelation)(qpqConfig), runtimeType, dynamicModuleLoader);
33
33
  const processEvent = () => __awaiter(void 0, void 0, void 0, function* () {
34
34
  const result = yield resolveStory(quidproquo_core_1.askProcessEvent, [event, context]);
@@ -1,5 +1,8 @@
1
1
  import { QPQConfig, QpqLogger, StoryResult } from 'quidproquo-core';
2
- export declare const storyLogger: (result: StoryResult<any>, bucketName: string, region: string) => Promise<void>;
2
+ import { S3Client } from '@aws-sdk/client-s3';
3
+ export declare const storyLogger: (result: StoryResult<any>, bucketName: string, s3Client: S3Client) => Promise<void>;
3
4
  export declare const storyLoggerFs: (result: StoryResult<any>) => Promise<void>;
4
5
  export declare const moveLogsToPerminateStorage: (bucketName: string, region: string) => Promise<void>;
6
+ export declare const getS3Logger: (qpqConfig: QPQConfig) => QpqLogger;
7
+ export declare const getS3LoggerViaExtension: (qpqConfig: QPQConfig) => QpqLogger;
5
8
  export declare const getLogger: (qpqConfig: QPQConfig) => QpqLogger;
@@ -12,18 +12,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getLogger = exports.moveLogsToPerminateStorage = exports.storyLoggerFs = exports.storyLogger = void 0;
15
+ exports.getLogger = exports.getS3LoggerViaExtension = exports.getS3Logger = exports.moveLogsToPerminateStorage = exports.storyLoggerFs = exports.storyLogger = void 0;
16
16
  const quidproquo_core_1 = require("quidproquo-core");
17
17
  const fs_1 = __importDefault(require("fs"));
18
18
  const path_1 = __importDefault(require("path"));
19
19
  const client_s3_1 = require("@aws-sdk/client-s3");
20
20
  const awsNamingUtils_1 = require("../../awsNamingUtils");
21
+ const logExtensionPort_1 = require("../../lambdaExtensions/logExtensionPort");
21
22
  const tempDirectory = '/tmp/qpqlogs';
22
23
  const quidproquo_config_aws_1 = require("quidproquo-config-aws");
23
24
  const quidproquo_core_2 = require("quidproquo-core");
24
- const storyLogger = (result, bucketName, region) => __awaiter(void 0, void 0, void 0, function* () {
25
+ const storyLogger = (result, bucketName, s3Client) => __awaiter(void 0, void 0, void 0, function* () {
25
26
  try {
26
- const s3Client = new client_s3_1.S3Client({ region });
27
27
  const commandParams = {
28
28
  Key: `${result.correlation}.json`,
29
29
  Bucket: bucketName,
@@ -54,11 +54,12 @@ const moveLogsToPerminateStorage = (bucketName, region) => __awaiter(void 0, voi
54
54
  try {
55
55
  yield fs_1.default.promises.mkdir(tempDirectory, { recursive: true });
56
56
  const files = yield fs_1.default.promises.readdir(tempDirectory);
57
+ const s3Client = new client_s3_1.S3Client({ region });
57
58
  for (const file of files) {
58
59
  const filePath = path_1.default.join(tempDirectory, file);
59
60
  const data = yield fs_1.default.promises.readFile(filePath, 'utf-8');
60
61
  const result = JSON.parse(data);
61
- yield (0, exports.storyLogger)(result, bucketName, region);
62
+ yield (0, exports.storyLogger)(result, bucketName, s3Client);
62
63
  yield fs_1.default.promises.unlink(filePath);
63
64
  console.log(`Moved log file [${file}] to S3 and deleted from temporary directory`);
64
65
  }
@@ -69,50 +70,52 @@ const moveLogsToPerminateStorage = (bucketName, region) => __awaiter(void 0, voi
69
70
  }
70
71
  });
71
72
  exports.moveLogsToPerminateStorage = moveLogsToPerminateStorage;
72
- const getLogger = (qpqConfig) => {
73
- const awsSettings = (0, quidproquo_config_aws_1.getAwsServiceAccountInfoConfig)(qpqConfig);
74
- // If we have no log service, just return nothing.
75
- if (!awsSettings.logServiceName || awsSettings.disableLogs || process.env.storageDriveName === 'qpq-logs') {
76
- return {
77
- enableLogs: () => __awaiter(void 0, void 0, void 0, function* () { }),
78
- log: () => __awaiter(void 0, void 0, void 0, function* () { }),
79
- waitToFinishWriting: () => __awaiter(void 0, void 0, void 0, function* () { }),
80
- moveToPermanentStorage: () => __awaiter(void 0, void 0, void 0, function* () { }),
81
- };
82
- }
83
- const service = awsSettings.logServiceName;
73
+ const noopLogger = {
74
+ enableLogs: () => __awaiter(void 0, void 0, void 0, function* () { }),
75
+ log: () => { },
76
+ waitToFinishWriting: () => __awaiter(void 0, void 0, void 0, function* () { }),
77
+ moveToPermanentStorage: () => __awaiter(void 0, void 0, void 0, function* () { }),
78
+ };
79
+ // Resolves which S3 bucket (and its region) story logs go to for this config.
80
+ const resolveLogTarget = (qpqConfig) => {
81
+ const service = (0, quidproquo_config_aws_1.getAwsServiceAccountInfoConfig)(qpqConfig).logServiceName;
84
82
  const application = quidproquo_core_1.qpqCoreUtils.getApplicationName(qpqConfig);
85
83
  const environment = quidproquo_core_1.qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig);
86
84
  const feature = quidproquo_core_1.qpqCoreUtils.getApplicationModuleFeature(qpqConfig);
87
- // Workout the bucket name.
88
- const bucketName = (0, awsNamingUtils_1.getConfigRuntimeResourceName)('qpq-logs', application, service, environment, feature);
89
- // Where is this bucket?
85
+ const bucketName = (0, awsNamingUtils_1.getConfigRuntimeResourceName)(quidproquo_core_1.QPQ_LOGS_STORAGE_DRIVE_NAME, application, service, environment, feature);
90
86
  const regionForBucket = (0, quidproquo_config_aws_1.getAwsServiceAccountInfoByDeploymentInfo)(qpqConfig, service, environment, feature, application).awsRegion;
87
+ return { bucketName, regionForBucket };
88
+ };
89
+ // Shared plumbing for both loggers: defers each log to a microtask, applies the
90
+ // disabled-correlation history filter, and tracks the promises so
91
+ // waitToFinishWriting can await them. Only `ship` (how a log reaches S3) differs.
92
+ const createBufferedLogger = (bucketName, regionForBucket, ship) => {
91
93
  const logs = [];
92
94
  let disabledLogCorrelations = [];
93
95
  return {
94
96
  enableLogs: (enable, reason, correlation) => __awaiter(void 0, void 0, void 0, function* () {
95
- if (!enable) {
96
- disabledLogCorrelations = [...disabledLogCorrelations, correlation];
97
- }
98
- else {
99
- disabledLogCorrelations = disabledLogCorrelations.filter((dlc) => dlc !== correlation);
100
- }
97
+ disabledLogCorrelations = enable
98
+ ? disabledLogCorrelations.filter((dlc) => dlc !== correlation)
99
+ : [...disabledLogCorrelations, correlation];
101
100
  }),
102
- log: (result) => __awaiter(void 0, void 0, void 0, function* () {
103
- let modifyableResult = !disabledLogCorrelations.includes(result.correlation)
104
- ? result
105
- : Object.assign(Object.assign({}, result), { history: (0, quidproquo_core_2.filterLogHistoryByActionTypes)(result.history, [
106
- quidproquo_core_1.LogActionType.Create,
107
- quidproquo_core_1.LogActionType.TemplateLiteral,
108
- quidproquo_core_1.LogActionType.DisableEventHistory,
109
- ]) });
110
- // TODO: Filter and flatten histories log histories
111
- const promise = (0, exports.storyLogger)(modifyableResult, bucketName, regionForBucket).catch((e) => {
101
+ log: (result) => {
102
+ // Defer all work (including JSON.stringify) to a microtask so the caller is not blocked.
103
+ const promise = Promise.resolve()
104
+ .then(() => {
105
+ const modifyableResult = !disabledLogCorrelations.includes(result.correlation)
106
+ ? result
107
+ : Object.assign(Object.assign({}, result), { history: (0, quidproquo_core_2.filterLogHistoryByActionTypes)(result.history, [
108
+ quidproquo_core_1.LogActionType.Create,
109
+ quidproquo_core_1.LogActionType.TemplateLiteral,
110
+ quidproquo_core_1.LogActionType.DisableEventHistory,
111
+ ]) });
112
+ return ship(modifyableResult);
113
+ })
114
+ .catch((e) => {
112
115
  console.log('Failed to log story result to S3', JSON.stringify(e, null, 2));
113
116
  });
114
117
  logs.push(promise);
115
- }),
118
+ },
116
119
  waitToFinishWriting: () => __awaiter(void 0, void 0, void 0, function* () {
117
120
  yield Promise.all(logs);
118
121
  }),
@@ -121,4 +124,59 @@ const getLogger = (qpqConfig) => {
121
124
  }),
122
125
  };
123
126
  };
127
+ // Logs straight to S3: the handler awaits the PutObject itself. Simple and fully
128
+ // durable, but the invoke waits on S3. No extension required.
129
+ const getS3Logger = (qpqConfig) => {
130
+ const { bucketName, regionForBucket } = resolveLogTarget(qpqConfig);
131
+ const s3Client = new client_s3_1.S3Client({ region: regionForBucket });
132
+ return createBufferedLogger(bucketName, regionForBucket, (result) => (0, exports.storyLogger)(result, bucketName, s3Client));
133
+ };
134
+ exports.getS3Logger = getS3Logger;
135
+ // Logs via the qpq-log-extension: a fast local HTTP POST hands the log off so the
136
+ // response is not blocked on S3. Falls back to a direct S3 write if the extension
137
+ // is unreachable, so a log is never silently dropped.
138
+ const getS3LoggerViaExtension = (qpqConfig) => {
139
+ const { bucketName, regionForBucket } = resolveLogTarget(qpqConfig);
140
+ const s3Client = new client_s3_1.S3Client({ region: regionForBucket });
141
+ const sendToExtension = (result) => __awaiter(void 0, void 0, void 0, function* () {
142
+ const res = yield fetch(`http://127.0.0.1:${logExtensionPort_1.LOG_EXTENSION_PORT}/log`, {
143
+ method: 'POST',
144
+ headers: { 'Content-Type': 'application/json' },
145
+ body: JSON.stringify({
146
+ bucketName,
147
+ region: regionForBucket,
148
+ key: `${result.correlation}.json`,
149
+ body: JSON.stringify(result),
150
+ storageClass: 'INTELLIGENT_TIERING',
151
+ }),
152
+ });
153
+ if (!res.ok) {
154
+ throw new Error(`extension responded ${res.status}`);
155
+ }
156
+ });
157
+ return createBufferedLogger(bucketName, regionForBucket, (result) => __awaiter(void 0, void 0, void 0, function* () {
158
+ try {
159
+ yield sendToExtension(result);
160
+ }
161
+ catch (error) {
162
+ console.log(`qpq-log-extension unreachable, writing [${result.correlation}] to S3 directly:`, error);
163
+ yield (0, exports.storyLogger)(result, bucketName, s3Client);
164
+ }
165
+ }));
166
+ };
167
+ exports.getS3LoggerViaExtension = getS3LoggerViaExtension;
168
+ const getLogger = (qpqConfig) => {
169
+ const awsSettings = (0, quidproquo_config_aws_1.getAwsServiceAccountInfoConfig)(qpqConfig);
170
+ // If we have no log service, just return nothing.
171
+ if (!awsSettings.logServiceName || awsSettings.disableLogs || process.env.storageDriveName === quidproquo_core_1.QPQ_LOGS_STORAGE_DRIVE_NAME) {
172
+ return noopLogger;
173
+ }
174
+ // instantLogs forces the synchronous direct-to-S3 path, bypassing the extension.
175
+ if (awsSettings.instantLogs) {
176
+ return (0, exports.getS3Logger)(qpqConfig);
177
+ }
178
+ // Use the off-response-path extension when running inside a real Lambda (where it
179
+ // is always attached); otherwise log directly to S3.
180
+ return process.env.AWS_LAMBDA_RUNTIME_API ? (0, exports.getS3LoggerViaExtension)(qpqConfig) : (0, exports.getS3Logger)(qpqConfig);
181
+ };
124
182
  exports.getLogger = getLogger;
@@ -0,0 +1,2 @@
1
+ import { AssociateSoftwareTokenResult } from 'quidproquo-core';
2
+ export declare const associateSoftwareToken: (region: string, session: string) => Promise<AssociateSoftwareTokenResult>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.associateSoftwareToken = void 0;
13
+ const client_cognito_identity_provider_1 = require("@aws-sdk/client-cognito-identity-provider");
14
+ const createAwsClient_1 = require("../createAwsClient");
15
+ // Begins TOTP enrollment for the MFA_SETUP challenge. Cognito returns the
16
+ // shared secret to seed the authenticator app and a refreshed session that must
17
+ // be used for the subsequent VerifySoftwareToken / RespondToAuthChallenge calls.
18
+ const associateSoftwareToken = (region, session) => __awaiter(void 0, void 0, void 0, function* () {
19
+ const cognitoClient = (0, createAwsClient_1.createAwsClient)(client_cognito_identity_provider_1.CognitoIdentityProviderClient, {
20
+ region,
21
+ });
22
+ const response = yield cognitoClient.send(new client_cognito_identity_provider_1.AssociateSoftwareTokenCommand({ Session: session }));
23
+ return {
24
+ secretCode: response.SecretCode || '',
25
+ session: response.Session || '',
26
+ };
27
+ });
28
+ exports.associateSoftwareToken = associateSoftwareToken;
@@ -42,7 +42,8 @@ const decodeValidJwt = (userPoolId, region, ignoreExpiration, accessToken) => __
42
42
  return decodedAccessToken;
43
43
  }
44
44
  catch (e) {
45
- console.log('Failed to decode jwt token', e);
45
+ const summary = e instanceof Error ? `${e.name}: ${e.message}` : 'unknown error';
46
+ console.log('Failed to decode jwt token:', summary);
46
47
  return null;
47
48
  }
48
49
  });
@@ -1,2 +1,6 @@
1
1
  import { UserAttributes } from 'quidproquo-core';
2
+ export declare class UserNotFoundError extends Error {
3
+ readonly code = "USER_NOT_FOUND";
4
+ constructor();
5
+ }
2
6
  export declare const getUserAttributesBySub: (userPoolId: string, region: string, sub: string) => Promise<UserAttributes>;
@@ -9,10 +9,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getUserAttributesBySub = void 0;
12
+ exports.getUserAttributesBySub = exports.UserNotFoundError = void 0;
13
13
  const client_cognito_identity_provider_1 = require("@aws-sdk/client-cognito-identity-provider");
14
14
  const createAwsClient_1 = require("../createAwsClient");
15
15
  const cognitoAttributeMap_1 = require("./cognitoAttributeMap");
16
+ // ListUsers returns an empty list rather than throwing for no match, so we throw
17
+ // our own error with a discriminable `code` for the processor's catch to map.
18
+ class UserNotFoundError extends Error {
19
+ constructor() {
20
+ super('User not found');
21
+ this.code = 'USER_NOT_FOUND';
22
+ this.name = 'UserNotFoundError';
23
+ }
24
+ }
25
+ exports.UserNotFoundError = UserNotFoundError;
16
26
  const getUserAttributesBySub = (userPoolId, region, sub) => __awaiter(void 0, void 0, void 0, function* () {
17
27
  const cognitoClient = (0, createAwsClient_1.createAwsClient)(client_cognito_identity_provider_1.CognitoIdentityProviderClient, {
18
28
  region,
@@ -23,7 +33,7 @@ const getUserAttributesBySub = (userPoolId, region, sub) => __awaiter(void 0, vo
23
33
  }));
24
34
  const [user] = (response === null || response === void 0 ? void 0 : response.Users) || [];
25
35
  if (!user) {
26
- throw new Error('User not found');
36
+ throw new UserNotFoundError();
27
37
  }
28
38
  const validAttributes = (user.Attributes || []).filter((attr) => attr.Name && attr.Value);
29
39
  return (0, cognitoAttributeMap_1.getQpqAttributesFromCognitoUserAttributes)(validAttributes);
@@ -25,6 +25,8 @@ const cognitoChallengeNameTypeToQpqAuthenticateUserChallenge = (cognitoChallenge
25
25
  const map = {
26
26
  [client_cognito_identity_provider_1.ChallengeNameType.NEW_PASSWORD_REQUIRED]: quidproquo_core_1.AuthenticateUserChallenge.NEW_PASSWORD_REQUIRED,
27
27
  [client_cognito_identity_provider_1.ChallengeNameType.CUSTOM_CHALLENGE]: quidproquo_core_1.AuthenticateUserChallenge.CUSTOM_CHALLENGE,
28
+ [client_cognito_identity_provider_1.ChallengeNameType.SOFTWARE_TOKEN_MFA]: quidproquo_core_1.AuthenticateUserChallenge.SOFTWARE_TOKEN_MFA,
29
+ [client_cognito_identity_provider_1.ChallengeNameType.MFA_SETUP]: quidproquo_core_1.AuthenticateUserChallenge.MFA_SETUP,
28
30
  };
29
31
  // TODO: handle the NOT-IMP cases
30
32
  const challenge = map[cognitoChallengeName] || `QPQ-NOT-IMP-${cognitoChallengeName}`;
@@ -0,0 +1 @@
1
+ export declare const verifySoftwareToken: (region: string, session: string, userCode: string) => Promise<string>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.verifySoftwareToken = void 0;
13
+ const client_cognito_identity_provider_1 = require("@aws-sdk/client-cognito-identity-provider");
14
+ const createAwsClient_1 = require("../createAwsClient");
15
+ // Verifies the first TOTP code during MFA_SETUP. On success Cognito returns a
16
+ // fresh session that must be passed to RespondToAuthChallenge to complete login.
17
+ // A bad code throws (e.g. CodeMismatchException / EnableSoftwareTokenMFAException).
18
+ const verifySoftwareToken = (region, session, userCode) => __awaiter(void 0, void 0, void 0, function* () {
19
+ const cognitoClient = (0, createAwsClient_1.createAwsClient)(client_cognito_identity_provider_1.CognitoIdentityProviderClient, {
20
+ region,
21
+ });
22
+ const response = yield cognitoClient.send(new client_cognito_identity_provider_1.VerifySoftwareTokenCommand({
23
+ Session: session,
24
+ UserCode: userCode,
25
+ }));
26
+ return response.Session || '';
27
+ });
28
+ exports.verifySoftwareToken = verifySoftwareToken;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDynamoTableIndexByConfigAndQuery = void 0;
4
4
  const buildDynamoQuery_1 = require("./buildDynamoQuery");
5
5
  const getDynamoTableIndexByConfigAndQuery = (setting, query) => {
6
+ var _a;
6
7
  // Function to extract keys from a query
7
8
  const extractKeysFromQuery = (query) => {
8
9
  if ((0, buildDynamoQuery_1.isKvsQueryCondition)(query)) {
@@ -14,13 +15,18 @@ const getDynamoTableIndexByConfigAndQuery = (setting, query) => {
14
15
  return [];
15
16
  };
16
17
  const queriedKeys = extractKeysFromQuery(query);
17
- // Find a matching index
18
+ // If the query includes the primary sort key, the primary table is a direct match —
19
+ // prefer it over any GSI so we never land on a GSI with a non-SK condition.
20
+ const primarySortKey = (_a = setting.sortKeys[0]) === null || _a === void 0 ? void 0 : _a.key;
21
+ if (primarySortKey && queriedKeys.includes(primarySortKey)) {
22
+ return undefined;
23
+ }
24
+ // Find a GSI whose partition key is in the query.
18
25
  for (const index of setting.indexes) {
19
26
  if (queriedKeys.includes(index.partitionKey.key)) {
20
27
  return index.partitionKey.key;
21
28
  }
22
29
  }
23
- // No matching index found
24
30
  return undefined;
25
31
  };
26
32
  exports.getDynamoTableIndexByConfigAndQuery = getDynamoTableIndexByConfigAndQuery;
@@ -44,7 +44,14 @@ const createAwsClient_1 = require("../createAwsClient");
44
44
  // };
45
45
  // };
46
46
  const generatePresignedUploadUrl = (bucketName, objectKey, region, expirationMs, correlationId, contentType) => __awaiter(void 0, void 0, void 0, function* () {
47
- const s3Client = (0, createAwsClient_1.createAwsClient)(client_s3_1.S3Client, { region });
47
+ // WHEN_REQUIRED disables the SDK v3 default request checksum (CRC32). Otherwise the
48
+ // presigner bakes an empty-body checksum (x-amz-checksum-crc32=AAAAAA==) into the signed
49
+ // URL, which never matches the real body the browser PUTs — S3 then rejects the upload and
50
+ // the failure surfaces in the browser as a CORS error (the error response has no ACAO header).
51
+ const s3Client = (0, createAwsClient_1.createAwsClient)(client_s3_1.S3Client, {
52
+ region,
53
+ requestChecksumCalculation: 'WHEN_REQUIRED',
54
+ });
48
55
  const putObjectCommand = new client_s3_1.PutObjectCommand({
49
56
  Bucket: bucketName,
50
57
  Key: objectKey,
@@ -14,16 +14,22 @@ const client_s3_1 = require("@aws-sdk/client-s3");
14
14
  const client_s3_2 = require("@aws-sdk/client-s3");
15
15
  const createAwsClient_1 = require("../createAwsClient");
16
16
  const objectExists = (bucketName, key, region) => __awaiter(void 0, void 0, void 0, function* () {
17
+ var _a;
18
+ const s3Client = (0, createAwsClient_1.createAwsClient)(client_s3_1.S3Client, { region });
17
19
  try {
18
- const s3Client = (0, createAwsClient_1.createAwsClient)(client_s3_1.S3Client, { region });
19
20
  yield s3Client.send(new client_s3_2.HeadObjectCommand({
20
21
  Key: key,
21
22
  Bucket: bucketName,
22
23
  }));
23
24
  return true;
24
25
  }
25
- catch (_a) {
26
- return false;
26
+ catch (error) {
27
+ // A 404 is a definitive "does not exist"; anything else (access denied,
28
+ // throttling, ...) must surface rather than masquerade as a missing file.
29
+ if ((error === null || error === void 0 ? void 0 : error.name) === 'NotFound' || ((_a = error === null || error === void 0 ? void 0 : error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 404) {
30
+ return false;
31
+ }
32
+ throw error;
27
33
  }
28
34
  });
29
35
  exports.objectExists = objectExists;
@@ -23,3 +23,4 @@ export declare const getInfStackName: (qpqConfig: QPQConfig) => string;
23
23
  export declare const getWebStackName: (qpqConfig: QPQConfig) => string;
24
24
  export declare const getApiStackName: (qpqConfig: QPQConfig) => string;
25
25
  export declare const getBootstrapStackName: (qpqConfig: QPQConfig) => string;
26
+ export declare const getDomainStackName: (qpqConfig: QPQConfig) => string;
@@ -168,3 +168,13 @@ export const getBootstrapStackName = (qpqConfig) => {
168
168
  }
169
169
  return `${baseName}-bs`;
170
170
  };
171
+ export const getDomainStackName = (qpqConfig) => {
172
+ const appName = qpqCoreUtils.getApplicationName(qpqConfig);
173
+ const environment = qpqCoreUtils.getApplicationModuleEnvironment(qpqConfig);
174
+ const feature = qpqCoreUtils.getApplicationModuleFeature(qpqConfig);
175
+ const baseName = `${appName}-${environment}`;
176
+ if (feature) {
177
+ return `${baseName}-${feature}-domain`;
178
+ }
179
+ return `${baseName}-domain`;
180
+ };
@@ -0,0 +1,2 @@
1
+ import { AiModel } from 'quidproquo-core';
2
+ export declare const bedrockModelMap: Record<AiModel, string>;
@@ -0,0 +1,12 @@
1
+ import { AiModel } from 'quidproquo-core';
2
+ export const bedrockModelMap = {
3
+ [AiModel.ClaudeHaiku35]: 'au.anthropic.claude-3-5-haiku-20241022-v1:0',
4
+ [AiModel.ClaudeSonnet35]: 'au.anthropic.claude-3-5-sonnet-20241022-v2:0',
5
+ [AiModel.ClaudeSonnet4]: 'au.anthropic.claude-sonnet-4-20250514-v1:0',
6
+ [AiModel.ClaudeOpus4]: 'au.anthropic.claude-opus-4-20250514-v1:0',
7
+ [AiModel.ClaudeHaiku45]: 'au.anthropic.claude-haiku-4-5-20251001-v1:0',
8
+ [AiModel.ClaudeSonnet45]: 'au.anthropic.claude-sonnet-4-5-20250929-v1:0',
9
+ [AiModel.ClaudeOpus45]: 'au.anthropic.claude-opus-4-5-20251101-v1:0',
10
+ [AiModel.ClaudeSonnet46]: 'au.anthropic.claude-sonnet-4-6',
11
+ [AiModel.ClaudeOpus46]: 'au.anthropic.claude-opus-4-6-v1',
12
+ };
@@ -0,0 +1,2 @@
1
+ import { ActionProcessorListResolver } from 'quidproquo-core';
2
+ export declare const getAiPromptActionProcessor: ActionProcessorListResolver;
@@ -0,0 +1,33 @@
1
+ import { actionResult, actionResultError, AiActionType, ErrorTypeEnum, } from 'quidproquo-core';
2
+ import { generateText, stepCountIs } from 'ai';
3
+ import { prepareAiPromptCall, toSdkMessages } from './logic';
4
+ const getProcessAiPrompt = (qpqConfig) => {
5
+ return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {
6
+ const prepared = prepareAiPromptCall(qpqConfig, payload, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);
7
+ if ('error' in prepared) {
8
+ return actionResultError(prepared.error.type, prepared.error.message);
9
+ }
10
+ const promptOrMessages = payload.messages
11
+ ? { messages: toSdkMessages(payload.messages) }
12
+ : { prompt: payload.prompt };
13
+ try {
14
+ const result = await generateText({
15
+ model: prepared.model,
16
+ system: payload.system,
17
+ ...promptOrMessages,
18
+ tools: prepared.tools,
19
+ stopWhen: stepCountIs(10),
20
+ });
21
+ return actionResult({ text: result.text });
22
+ }
23
+ catch (error) {
24
+ if (error instanceof Error) {
25
+ return actionResultError(ErrorTypeEnum.GenericError, error.message);
26
+ }
27
+ return actionResultError(ErrorTypeEnum.GenericError, 'An error occurred during AI prompt execution.');
28
+ }
29
+ };
30
+ };
31
+ export const getAiPromptActionProcessor = async (qpqConfig) => ({
32
+ [AiActionType.Prompt]: getProcessAiPrompt(qpqConfig),
33
+ });
@@ -0,0 +1,2 @@
1
+ import { ActionProcessorListResolver } from 'quidproquo-core';
2
+ export declare const getAiPromptStreamActionProcessor: ActionProcessorListResolver;
@@ -0,0 +1,46 @@
1
+ import { actionResult, actionResultError, AiActionType, ErrorTypeEnum, } from 'quidproquo-core';
2
+ import { stepCountIs, streamText } from 'ai';
3
+ import { randomGuid } from '../../../awsLambdaUtils';
4
+ import { mapAiStreamPart, prepareAiPromptCall, toSdkMessages } from './logic';
5
+ const getProcessAiPromptStream = (qpqConfig) => {
6
+ return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {
7
+ const prepared = prepareAiPromptCall(qpqConfig, payload, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);
8
+ if ('error' in prepared) {
9
+ return actionResultError(prepared.error.type, prepared.error.message);
10
+ }
11
+ const promptOrMessages = payload.messages
12
+ ? { messages: toSdkMessages(payload.messages) }
13
+ : { prompt: payload.prompt };
14
+ try {
15
+ const { fullStream } = streamText({
16
+ model: prepared.model,
17
+ system: payload.system,
18
+ ...promptOrMessages,
19
+ tools: prepared.tools,
20
+ stopWhen: stepCountIs(10),
21
+ // streamText swallows errors by default to keep the server alive — surface them to CloudWatch.
22
+ onError: ({ error }) => {
23
+ // todo yeild this out
24
+ console.error('AI prompt stream error:', error);
25
+ },
26
+ });
27
+ const streamId = `ai-prompt-${Date.now()}-${randomGuid()}`;
28
+ async function* aiStreamIterator() {
29
+ for await (const part of fullStream) {
30
+ yield JSON.stringify(mapAiStreamPart(part));
31
+ }
32
+ }
33
+ streamRegistry.register(streamId, aiStreamIterator());
34
+ return actionResult({ id: streamId, encoding: 'json' });
35
+ }
36
+ catch (error) {
37
+ if (error instanceof Error) {
38
+ return actionResultError(ErrorTypeEnum.GenericError, error.message);
39
+ }
40
+ return actionResultError(ErrorTypeEnum.GenericError, 'An error occurred during AI prompt stream.');
41
+ }
42
+ };
43
+ };
44
+ export const getAiPromptStreamActionProcessor = async (qpqConfig) => ({
45
+ [AiActionType.PromptStream]: getProcessAiPromptStream(qpqConfig),
46
+ });
@@ -0,0 +1,2 @@
1
+ import { ActionProcessorListResolver } from 'quidproquo-core';
2
+ export declare const getAiActionProcessor: ActionProcessorListResolver;
@@ -0,0 +1,6 @@
1
+ import { getAiPromptActionProcessor } from './getAiPromptActionProcessor';
2
+ import { getAiPromptStreamActionProcessor } from './getAiPromptStreamActionProcessor';
3
+ export const getAiActionProcessor = async (qpqConfig, dynamicModuleLoader) => ({
4
+ ...(await getAiPromptActionProcessor(qpqConfig, dynamicModuleLoader)),
5
+ ...(await getAiPromptStreamActionProcessor(qpqConfig, dynamicModuleLoader)),
6
+ });
@@ -0,0 +1,6 @@
1
+ import { AiStreamPart } from 'quidproquo-core';
2
+ import { AiSdkStreamPart, AiSdkStreamPartOfType } from '../types';
3
+ export type AiStreamPartMappers = {
4
+ [K in AiSdkStreamPart['type']]: (part: AiSdkStreamPartOfType<K>) => AiStreamPart;
5
+ };
6
+ export declare const aiStreamPartMappers: AiStreamPartMappers;