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
@@ -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
+ };
@@ -1,12 +1,12 @@
1
1
  import { AiModel } from 'quidproquo-core';
2
2
  export const bedrockModelMap = {
3
- [AiModel.ClaudeHaiku35]: 'us.anthropic.claude-3-5-haiku-20241022-v1:0',
4
- [AiModel.ClaudeSonnet35]: 'us.anthropic.claude-3-5-sonnet-20241022-v2:0',
5
- [AiModel.ClaudeSonnet4]: 'us.anthropic.claude-sonnet-4-20250514-v1:0',
6
- [AiModel.ClaudeOpus4]: 'us.anthropic.claude-opus-4-20250514-v1:0',
7
- [AiModel.ClaudeHaiku45]: 'us.anthropic.claude-haiku-4-5-20251001-v1:0',
8
- [AiModel.ClaudeSonnet45]: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
9
- [AiModel.ClaudeOpus45]: 'us.anthropic.claude-opus-4-5-20251101-v1:0',
10
- [AiModel.ClaudeSonnet46]: 'us.anthropic.claude-sonnet-4-6',
11
- [AiModel.ClaudeOpus46]: 'us.anthropic.claude-opus-4-6-v1',
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
12
  };
@@ -1,48 +1,21 @@
1
- import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, actionResultError, AiActionType, askInlineFunctionExecute, createImplementationRuntime, ErrorTypeEnum, qpqCoreUtils, } from 'quidproquo-core';
3
- import { generateText, jsonSchema, stepCountIs } from 'ai';
4
- import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock';
5
- import { randomGuid } from '../../../awsLambdaUtils';
6
- import { bedrockModelMap } from './aiModelMap';
1
+ import { actionResult, actionResultError, AiActionType, ErrorTypeEnum, } from 'quidproquo-core';
2
+ import { generateText, stepCountIs } from 'ai';
3
+ import { prepareAiPromptCall, toSdkMessages } from './logic';
7
4
  const getProcessAiPrompt = (qpqConfig) => {
8
5
  return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {
9
- const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
10
- const bedrock = createAmazonBedrock({ region });
11
- const bedrockModelId = bedrockModelMap[payload.model];
12
- if (!bedrockModelId) {
13
- return actionResultError(ErrorTypeEnum.NotImplemented, `Unsupported AI model: ${payload.model}`);
14
- }
15
- // Build tools from defineAi config if aiName is provided
16
- const aiTools = {};
17
- if (payload.aiName) {
18
- const aiConfigs = qpqCoreUtils.getAllAiConfigs(qpqConfig);
19
- const aiConfig = aiConfigs.find((c) => c.aiName === payload.aiName);
20
- if (!aiConfig) {
21
- return actionResultError(ErrorTypeEnum.NotFound, `AI config not found: ${payload.aiName}`);
22
- }
23
- for (const toolDef of aiConfig.tools) {
24
- aiTools[toolDef.name] = {
25
- description: toolDef.description,
26
- inputSchema: jsonSchema(toolDef.inputSchema),
27
- execute: async (args) => {
28
- const resolveStory = createImplementationRuntime(qpqConfig, [`AI Tool: ${toolDef.name}`], () => new Date().toISOString(), randomGuid, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);
29
- const storyResult = await resolveStory(function* () {
30
- return yield* askInlineFunctionExecute(toolDef.executor, args);
31
- }, []);
32
- if (storyResult.error) {
33
- throw new Error(storyResult.error.errorText);
34
- }
35
- return storyResult.result;
36
- },
37
- };
38
- }
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);
39
9
  }
10
+ const promptOrMessages = payload.messages
11
+ ? { messages: toSdkMessages(payload.messages) }
12
+ : { prompt: payload.prompt };
40
13
  try {
41
14
  const result = await generateText({
42
- model: bedrock(bedrockModelId),
15
+ model: prepared.model,
43
16
  system: payload.system,
44
- prompt: payload.prompt,
45
- tools: Object.keys(aiTools).length > 0 ? aiTools : undefined,
17
+ ...promptOrMessages,
18
+ tools: prepared.tools,
46
19
  stopWhen: stepCountIs(10),
47
20
  });
48
21
  return actionResult({ text: result.text });
@@ -1,62 +1,33 @@
1
- import { qpqConfigAwsUtils } from 'quidproquo-config-aws';
2
- import { actionResult, actionResultError, AiActionType, askInlineFunctionExecute, createImplementationRuntime, ErrorTypeEnum, qpqCoreUtils, } from 'quidproquo-core';
3
- import { jsonSchema, stepCountIs, streamText } from 'ai';
4
- import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock';
1
+ import { actionResult, actionResultError, AiActionType, ErrorTypeEnum, } from 'quidproquo-core';
2
+ import { stepCountIs, streamText } from 'ai';
5
3
  import { randomGuid } from '../../../awsLambdaUtils';
6
- import { bedrockModelMap } from './aiModelMap';
4
+ import { mapAiStreamPart, prepareAiPromptCall, toSdkMessages } from './logic';
7
5
  const getProcessAiPromptStream = (qpqConfig) => {
8
6
  return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {
9
- const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
10
- const bedrock = createAmazonBedrock({ region });
11
- const bedrockModelId = bedrockModelMap[payload.model];
12
- if (!bedrockModelId) {
13
- return actionResultError(ErrorTypeEnum.NotImplemented, `Unsupported AI model: ${payload.model}`);
14
- }
15
- // Build tools from defineAi config if aiName is provided
16
- const aiTools = {};
17
- if (payload.aiName) {
18
- const aiConfigs = qpqCoreUtils.getAllAiConfigs(qpqConfig);
19
- const aiConfig = aiConfigs.find((c) => c.aiName === payload.aiName);
20
- if (!aiConfig) {
21
- return actionResultError(ErrorTypeEnum.NotFound, `AI config not found: ${payload.aiName}`);
22
- }
23
- for (const toolDef of aiConfig.tools) {
24
- aiTools[toolDef.name] = {
25
- description: toolDef.description,
26
- inputSchema: jsonSchema(toolDef.inputSchema),
27
- execute: async (args) => {
28
- const resolveStory = createImplementationRuntime(qpqConfig, [`AI Tool: ${toolDef.name}`], () => new Date().toISOString(), randomGuid, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);
29
- const storyResult = await resolveStory(function* () {
30
- return yield* askInlineFunctionExecute(toolDef.executor, args);
31
- }, []);
32
- if (storyResult.error) {
33
- throw new Error(storyResult.error.errorText);
34
- }
35
- return storyResult.result;
36
- },
37
- };
38
- }
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);
39
10
  }
11
+ const promptOrMessages = payload.messages
12
+ ? { messages: toSdkMessages(payload.messages) }
13
+ : { prompt: payload.prompt };
40
14
  try {
41
15
  const { fullStream } = streamText({
42
- model: bedrock(bedrockModelId),
16
+ model: prepared.model,
43
17
  system: payload.system,
44
- prompt: payload.messages ?? payload.prompt,
45
- tools: Object.keys(aiTools).length > 0 ? aiTools : undefined,
18
+ ...promptOrMessages,
19
+ tools: prepared.tools,
46
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
+ },
47
26
  });
48
27
  const streamId = `ai-prompt-${Date.now()}-${randomGuid()}`;
49
28
  async function* aiStreamIterator() {
50
29
  for await (const part of fullStream) {
51
- if (part.type === 'text-delta') {
52
- yield JSON.stringify({ type: 'text-delta', text: part.text });
53
- }
54
- else if (part.type === 'tool-call') {
55
- yield JSON.stringify({ type: 'tool-call', toolName: part.toolName, input: part.input });
56
- }
57
- else if (part.type === 'tool-result') {
58
- yield JSON.stringify({ type: 'tool-result', toolName: part.toolName, output: part.output });
59
- }
30
+ yield JSON.stringify(mapAiStreamPart(part));
60
31
  }
61
32
  }
62
33
  streamRegistry.register(streamId, aiStreamIterator());
@@ -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;
@@ -0,0 +1,54 @@
1
+ import { mapAiStreamAbort } from './mapAiStreamAbort';
2
+ import { mapAiStreamCustom } from './mapAiStreamCustom';
3
+ import { mapAiStreamError } from './mapAiStreamError';
4
+ import { mapAiStreamFilePart } from './mapAiStreamFilePart';
5
+ import { mapAiStreamFinish } from './mapAiStreamFinish';
6
+ import { mapAiStreamFinishStep } from './mapAiStreamFinishStep';
7
+ import { mapAiStreamRaw } from './mapAiStreamRaw';
8
+ import { mapAiStreamReasoningDelta } from './mapAiStreamReasoningDelta';
9
+ import { mapAiStreamReasoningEnd } from './mapAiStreamReasoningEnd';
10
+ import { mapAiStreamReasoningFilePart } from './mapAiStreamReasoningFilePart';
11
+ import { mapAiStreamReasoningStart } from './mapAiStreamReasoningStart';
12
+ import { mapAiStreamSourcePart } from './mapAiStreamSourcePart';
13
+ import { mapAiStreamStart } from './mapAiStreamStart';
14
+ import { mapAiStreamStartStep } from './mapAiStreamStartStep';
15
+ import { mapAiStreamTextDelta } from './mapAiStreamTextDelta';
16
+ import { mapAiStreamTextEnd } from './mapAiStreamTextEnd';
17
+ import { mapAiStreamTextStart } from './mapAiStreamTextStart';
18
+ import { mapAiStreamToolApprovalRequest } from './mapAiStreamToolApprovalRequest';
19
+ import { mapAiStreamToolApprovalResponse } from './mapAiStreamToolApprovalResponse';
20
+ import { mapAiStreamToolCall } from './mapAiStreamToolCall';
21
+ import { mapAiStreamToolError } from './mapAiStreamToolError';
22
+ import { mapAiStreamToolInputDelta } from './mapAiStreamToolInputDelta';
23
+ import { mapAiStreamToolInputEnd } from './mapAiStreamToolInputEnd';
24
+ import { mapAiStreamToolInputStart } from './mapAiStreamToolInputStart';
25
+ import { mapAiStreamToolOutputDenied } from './mapAiStreamToolOutputDenied';
26
+ import { mapAiStreamToolResult } from './mapAiStreamToolResult';
27
+ export const aiStreamPartMappers = {
28
+ 'start': mapAiStreamStart,
29
+ 'finish': mapAiStreamFinish,
30
+ 'start-step': mapAiStreamStartStep,
31
+ 'finish-step': mapAiStreamFinishStep,
32
+ 'abort': mapAiStreamAbort,
33
+ 'error': mapAiStreamError,
34
+ 'raw': mapAiStreamRaw,
35
+ 'source': mapAiStreamSourcePart,
36
+ 'file': mapAiStreamFilePart,
37
+ 'reasoning-file': mapAiStreamReasoningFilePart,
38
+ 'custom': mapAiStreamCustom,
39
+ 'text-start': mapAiStreamTextStart,
40
+ 'text-end': mapAiStreamTextEnd,
41
+ 'text-delta': mapAiStreamTextDelta,
42
+ 'reasoning-start': mapAiStreamReasoningStart,
43
+ 'reasoning-end': mapAiStreamReasoningEnd,
44
+ 'reasoning-delta': mapAiStreamReasoningDelta,
45
+ 'tool-input-start': mapAiStreamToolInputStart,
46
+ 'tool-input-end': mapAiStreamToolInputEnd,
47
+ 'tool-input-delta': mapAiStreamToolInputDelta,
48
+ 'tool-call': mapAiStreamToolCall,
49
+ 'tool-result': mapAiStreamToolResult,
50
+ 'tool-error': mapAiStreamToolError,
51
+ 'tool-output-denied': mapAiStreamToolOutputDenied,
52
+ 'tool-approval-request': mapAiStreamToolApprovalRequest,
53
+ 'tool-approval-response': mapAiStreamToolApprovalResponse,
54
+ };
@@ -0,0 +1,32 @@
1
+ export * from './aiStreamPartMappers';
2
+ export * from './mapAiStreamAbort';
3
+ export * from './mapAiStreamCustom';
4
+ export * from './mapAiStreamError';
5
+ export * from './mapAiStreamFilePart';
6
+ export * from './mapAiStreamFinish';
7
+ export * from './mapAiStreamFinishStep';
8
+ export * from './mapAiStreamPart';
9
+ export * from './mapAiStreamRaw';
10
+ export * from './mapAiStreamReasoningDelta';
11
+ export * from './mapAiStreamReasoningEnd';
12
+ export * from './mapAiStreamReasoningFilePart';
13
+ export * from './mapAiStreamReasoningStart';
14
+ export * from './mapAiStreamSourcePart';
15
+ export * from './mapAiStreamStart';
16
+ export * from './mapAiStreamStartStep';
17
+ export * from './mapAiStreamTextDelta';
18
+ export * from './mapAiStreamTextEnd';
19
+ export * from './mapAiStreamTextStart';
20
+ export * from './mapAiStreamToolApprovalRequest';
21
+ export * from './mapAiStreamToolApprovalResponse';
22
+ export * from './mapAiStreamToolCall';
23
+ export * from './mapAiStreamToolError';
24
+ export * from './mapAiStreamToolInputDelta';
25
+ export * from './mapAiStreamToolInputEnd';
26
+ export * from './mapAiStreamToolInputStart';
27
+ export * from './mapAiStreamToolOutputDenied';
28
+ export * from './mapAiStreamToolResult';
29
+ export * from './prepareAiPromptCall';
30
+ export * from './toAiStreamUsage';
31
+ export * from './toErrorMessage';
32
+ export * from './toSdkMessages';
@@ -0,0 +1,32 @@
1
+ export * from './aiStreamPartMappers';
2
+ export * from './mapAiStreamAbort';
3
+ export * from './mapAiStreamCustom';
4
+ export * from './mapAiStreamError';
5
+ export * from './mapAiStreamFilePart';
6
+ export * from './mapAiStreamFinish';
7
+ export * from './mapAiStreamFinishStep';
8
+ export * from './mapAiStreamPart';
9
+ export * from './mapAiStreamRaw';
10
+ export * from './mapAiStreamReasoningDelta';
11
+ export * from './mapAiStreamReasoningEnd';
12
+ export * from './mapAiStreamReasoningFilePart';
13
+ export * from './mapAiStreamReasoningStart';
14
+ export * from './mapAiStreamSourcePart';
15
+ export * from './mapAiStreamStart';
16
+ export * from './mapAiStreamStartStep';
17
+ export * from './mapAiStreamTextDelta';
18
+ export * from './mapAiStreamTextEnd';
19
+ export * from './mapAiStreamTextStart';
20
+ export * from './mapAiStreamToolApprovalRequest';
21
+ export * from './mapAiStreamToolApprovalResponse';
22
+ export * from './mapAiStreamToolCall';
23
+ export * from './mapAiStreamToolError';
24
+ export * from './mapAiStreamToolInputDelta';
25
+ export * from './mapAiStreamToolInputEnd';
26
+ export * from './mapAiStreamToolInputStart';
27
+ export * from './mapAiStreamToolOutputDenied';
28
+ export * from './mapAiStreamToolResult';
29
+ export * from './prepareAiPromptCall';
30
+ export * from './toAiStreamUsage';
31
+ export * from './toErrorMessage';
32
+ export * from './toSdkMessages';
@@ -0,0 +1,3 @@
1
+ import { AiStreamAbort } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamAbort: (part: AiSdkStreamPartOfType<"abort">) => AiStreamAbort;
@@ -0,0 +1,5 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamAbort = (part) => ({
3
+ type: AiStreamPartType.Abort,
4
+ reason: part.reason,
5
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamCustom } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamCustom: (part: AiSdkStreamPartOfType<"custom">) => AiStreamCustom;
@@ -0,0 +1,5 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamCustom = (part) => ({
3
+ type: AiStreamPartType.Custom,
4
+ kind: part.kind,
5
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamError } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamError: (part: AiSdkStreamPartOfType<"error">) => AiStreamError;
@@ -0,0 +1,6 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ import { toErrorMessage } from './toErrorMessage';
3
+ export const mapAiStreamError = (part) => ({
4
+ type: AiStreamPartType.Error,
5
+ message: toErrorMessage(part.error),
6
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamFilePart } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamFilePart: (part: AiSdkStreamPartOfType<"file">) => AiStreamFilePart;
@@ -0,0 +1,8 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamFilePart = (part) => ({
3
+ type: AiStreamPartType.File,
4
+ file: {
5
+ base64: part.file.base64,
6
+ mediaType: part.file.mediaType,
7
+ },
8
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamFinish } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamFinish: (part: AiSdkStreamPartOfType<"finish">) => AiStreamFinish;
@@ -0,0 +1,7 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ import { toAiStreamUsage } from './toAiStreamUsage';
3
+ export const mapAiStreamFinish = (part) => ({
4
+ type: AiStreamPartType.Finish,
5
+ finishReason: part.finishReason,
6
+ usage: toAiStreamUsage(part.totalUsage),
7
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamFinishStep } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamFinishStep: (part: AiSdkStreamPartOfType<"finish-step">) => AiStreamFinishStep;
@@ -0,0 +1,7 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ import { toAiStreamUsage } from './toAiStreamUsage';
3
+ export const mapAiStreamFinishStep = (part) => ({
4
+ type: AiStreamPartType.FinishStep,
5
+ finishReason: part.finishReason,
6
+ usage: toAiStreamUsage(part.usage),
7
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamPart } from 'quidproquo-core';
2
+ import { AiSdkStreamPart } from '../types';
3
+ export declare const mapAiStreamPart: (part: AiSdkStreamPart) => AiStreamPart;
@@ -0,0 +1,5 @@
1
+ import { aiStreamPartMappers } from './aiStreamPartMappers';
2
+ export const mapAiStreamPart = (part) => {
3
+ const mapper = aiStreamPartMappers[part.type];
4
+ return mapper(part);
5
+ };
@@ -0,0 +1,2 @@
1
+ import { AiStreamRaw } from 'quidproquo-core';
2
+ export declare const mapAiStreamRaw: () => AiStreamRaw;
@@ -0,0 +1,4 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamRaw = () => ({
3
+ type: AiStreamPartType.Raw,
4
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamReasoningDelta } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamReasoningDelta: (part: AiSdkStreamPartOfType<"reasoning-delta">) => AiStreamReasoningDelta;
@@ -0,0 +1,6 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamReasoningDelta = (part) => ({
3
+ type: AiStreamPartType.ReasoningDelta,
4
+ id: part.id,
5
+ text: part.text,
6
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamReasoningEnd } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamReasoningEnd: (part: AiSdkStreamPartOfType<"reasoning-end">) => AiStreamReasoningEnd;
@@ -0,0 +1,5 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamReasoningEnd = (part) => ({
3
+ type: AiStreamPartType.ReasoningEnd,
4
+ id: part.id,
5
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamReasoningFilePart } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamReasoningFilePart: (part: AiSdkStreamPartOfType<"reasoning-file">) => AiStreamReasoningFilePart;
@@ -0,0 +1,8 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamReasoningFilePart = (part) => ({
3
+ type: AiStreamPartType.ReasoningFile,
4
+ file: {
5
+ base64: part.file.base64,
6
+ mediaType: part.file.mediaType,
7
+ },
8
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamReasoningStart } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamReasoningStart: (part: AiSdkStreamPartOfType<"reasoning-start">) => AiStreamReasoningStart;
@@ -0,0 +1,5 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamReasoningStart = (part) => ({
3
+ type: AiStreamPartType.ReasoningStart,
4
+ id: part.id,
5
+ });
@@ -0,0 +1,3 @@
1
+ import { AiStreamSourcePart } from 'quidproquo-core';
2
+ import { AiSdkStreamPartOfType } from '../types';
3
+ export declare const mapAiStreamSourcePart: (part: AiSdkStreamPartOfType<"source">) => AiStreamSourcePart;
@@ -0,0 +1,12 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamSourcePart = (part) => ({
3
+ type: AiStreamPartType.Source,
4
+ source: {
5
+ sourceType: part.sourceType,
6
+ id: part.id,
7
+ url: 'url' in part ? part.url : undefined,
8
+ title: 'title' in part ? part.title : undefined,
9
+ mediaType: 'mediaType' in part ? part.mediaType : undefined,
10
+ filename: 'filename' in part ? part.filename : undefined,
11
+ },
12
+ });
@@ -0,0 +1,2 @@
1
+ import { AiStreamStart } from 'quidproquo-core';
2
+ export declare const mapAiStreamStart: () => AiStreamStart;
@@ -0,0 +1,4 @@
1
+ import { AiStreamPartType } from 'quidproquo-core';
2
+ export const mapAiStreamStart = () => ({
3
+ type: AiStreamPartType.Start,
4
+ });
@@ -0,0 +1,2 @@
1
+ import { AiStreamStartStep } from 'quidproquo-core';
2
+ export declare const mapAiStreamStartStep: () => AiStreamStartStep;