quidproquo-actionprocessor-awslambda 0.1.23 → 0.1.25

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 (111) hide show
  1. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.js +1 -1
  2. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptActionProcessor.js.map +1 -1
  3. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +1 -4
  4. package/lib/commonjs/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js.map +1 -1
  5. package/lib/commonjs/getActionProcessor/core/ai/logic/buildAiStopConditions.d.ts +13 -0
  6. package/lib/commonjs/getActionProcessor/core/ai/logic/buildAiStopConditions.js +24 -0
  7. package/lib/commonjs/getActionProcessor/core/ai/logic/buildAiStopConditions.js.map +1 -0
  8. package/lib/commonjs/getActionProcessor/core/ai/logic/index.d.ts +1 -0
  9. package/lib/commonjs/getActionProcessor/core/ai/logic/index.js +1 -0
  10. package/lib/commonjs/getActionProcessor/core/ai/logic/index.js.map +1 -1
  11. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoGetPublicKeyActionProcessor.d.ts +1 -0
  12. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoGetPublicKeyActionProcessor.js +34 -0
  13. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoGetPublicKeyActionProcessor.js.map +1 -0
  14. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoSignActionProcessor.d.ts +1 -0
  15. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoSignActionProcessor.js +36 -0
  16. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoSignActionProcessor.js.map +1 -0
  17. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoVerifyActionProcessor.d.ts +1 -0
  18. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoVerifyActionProcessor.js +38 -0
  19. package/lib/commonjs/getActionProcessor/core/crypto/getCryptoVerifyActionProcessor.js.map +1 -0
  20. package/lib/commonjs/getActionProcessor/core/crypto/index.js +4 -1
  21. package/lib/commonjs/getActionProcessor/core/crypto/index.js.map +1 -1
  22. package/lib/commonjs/getActionProcessor/core/crypto/kmsSigningErrorMap.d.ts +13 -0
  23. package/lib/commonjs/getActionProcessor/core/crypto/kmsSigningErrorMap.js +17 -0
  24. package/lib/commonjs/getActionProcessor/core/crypto/kmsSigningErrorMap.js.map +1 -0
  25. package/lib/commonjs/getActionProcessor/core/crypto/utils/index.d.ts +1 -0
  26. package/lib/commonjs/getActionProcessor/core/crypto/utils/index.js +1 -0
  27. package/lib/commonjs/getActionProcessor/core/crypto/utils/index.js.map +1 -1
  28. package/lib/commonjs/getActionProcessor/core/crypto/utils/resolveSigningKeyAlias.d.ts +2 -0
  29. package/lib/commonjs/getActionProcessor/core/crypto/utils/resolveSigningKeyAlias.js +19 -0
  30. package/lib/commonjs/getActionProcessor/core/crypto/utils/resolveSigningKeyAlias.js.map +1 -0
  31. package/lib/commonjs/getActionProcessor/core/file/getFileCopyActionProcessor.d.ts +1 -0
  32. package/lib/commonjs/getActionProcessor/core/file/getFileCopyActionProcessor.js +37 -0
  33. package/lib/commonjs/getActionProcessor/core/file/getFileCopyActionProcessor.js.map +1 -0
  34. package/lib/commonjs/getActionProcessor/core/file/index.js +2 -1
  35. package/lib/commonjs/getActionProcessor/core/file/index.js.map +1 -1
  36. package/lib/commonjs/lambdaHandlers/helpers/getLambdaRuntimeRemainingTimeActionProcessor.d.ts +8 -0
  37. package/lib/commonjs/lambdaHandlers/helpers/getLambdaRuntimeRemainingTimeActionProcessor.js +26 -0
  38. package/lib/commonjs/lambdaHandlers/helpers/getLambdaRuntimeRemainingTimeActionProcessor.js.map +1 -0
  39. package/lib/commonjs/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +6 -3
  40. package/lib/commonjs/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js.map +1 -1
  41. package/lib/commonjs/lambdaHandlers/helpers/index.d.ts +1 -0
  42. package/lib/commonjs/lambdaHandlers/helpers/index.js +1 -0
  43. package/lib/commonjs/lambdaHandlers/helpers/index.js.map +1 -1
  44. package/lib/commonjs/logic/kms/getCachedPublicKey.d.ts +1 -0
  45. package/lib/commonjs/logic/kms/getCachedPublicKey.js +45 -0
  46. package/lib/commonjs/logic/kms/getCachedPublicKey.js.map +1 -0
  47. package/lib/commonjs/logic/kms/signWithKey.d.ts +1 -0
  48. package/lib/commonjs/logic/kms/signWithKey.js +34 -0
  49. package/lib/commonjs/logic/kms/signWithKey.js.map +1 -0
  50. package/lib/commonjs/logic/s3/copyFile.d.ts +5 -0
  51. package/lib/commonjs/logic/s3/copyFile.js +31 -0
  52. package/lib/commonjs/logic/s3/copyFile.js.map +1 -0
  53. package/lib/commonjs/logic/s3/s3Utils.d.ts +1 -0
  54. package/lib/commonjs/logic/s3/s3Utils.js +1 -0
  55. package/lib/commonjs/logic/s3/s3Utils.js.map +1 -1
  56. package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.js +4 -3
  57. package/lib/esm/getActionProcessor/core/ai/getAiPromptActionProcessor.js.map +1 -1
  58. package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js +4 -5
  59. package/lib/esm/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.js.map +1 -1
  60. package/lib/esm/getActionProcessor/core/ai/logic/buildAiStopConditions.d.ts +13 -0
  61. package/lib/esm/getActionProcessor/core/ai/logic/buildAiStopConditions.js +20 -0
  62. package/lib/esm/getActionProcessor/core/ai/logic/buildAiStopConditions.js.map +1 -0
  63. package/lib/esm/getActionProcessor/core/ai/logic/index.d.ts +1 -0
  64. package/lib/esm/getActionProcessor/core/ai/logic/index.js +1 -0
  65. package/lib/esm/getActionProcessor/core/ai/logic/index.js.map +1 -1
  66. package/lib/esm/getActionProcessor/core/crypto/getCryptoGetPublicKeyActionProcessor.d.ts +1 -0
  67. package/lib/esm/getActionProcessor/core/crypto/getCryptoGetPublicKeyActionProcessor.js +22 -0
  68. package/lib/esm/getActionProcessor/core/crypto/getCryptoGetPublicKeyActionProcessor.js.map +1 -0
  69. package/lib/esm/getActionProcessor/core/crypto/getCryptoSignActionProcessor.d.ts +1 -0
  70. package/lib/esm/getActionProcessor/core/crypto/getCryptoSignActionProcessor.js +24 -0
  71. package/lib/esm/getActionProcessor/core/crypto/getCryptoSignActionProcessor.js.map +1 -0
  72. package/lib/esm/getActionProcessor/core/crypto/getCryptoVerifyActionProcessor.d.ts +1 -0
  73. package/lib/esm/getActionProcessor/core/crypto/getCryptoVerifyActionProcessor.js +29 -0
  74. package/lib/esm/getActionProcessor/core/crypto/getCryptoVerifyActionProcessor.js.map +1 -0
  75. package/lib/esm/getActionProcessor/core/crypto/index.js +6 -0
  76. package/lib/esm/getActionProcessor/core/crypto/index.js.map +1 -1
  77. package/lib/esm/getActionProcessor/core/crypto/kmsSigningErrorMap.d.ts +13 -0
  78. package/lib/esm/getActionProcessor/core/crypto/kmsSigningErrorMap.js +12 -0
  79. package/lib/esm/getActionProcessor/core/crypto/kmsSigningErrorMap.js.map +1 -0
  80. package/lib/esm/getActionProcessor/core/crypto/utils/index.d.ts +1 -0
  81. package/lib/esm/getActionProcessor/core/crypto/utils/index.js +1 -0
  82. package/lib/esm/getActionProcessor/core/crypto/utils/index.js.map +1 -1
  83. package/lib/esm/getActionProcessor/core/crypto/utils/resolveSigningKeyAlias.d.ts +2 -0
  84. package/lib/esm/getActionProcessor/core/crypto/utils/resolveSigningKeyAlias.js +14 -0
  85. package/lib/esm/getActionProcessor/core/crypto/utils/resolveSigningKeyAlias.js.map +1 -0
  86. package/lib/esm/getActionProcessor/core/file/getFileCopyActionProcessor.d.ts +1 -0
  87. package/lib/esm/getActionProcessor/core/file/getFileCopyActionProcessor.js +25 -0
  88. package/lib/esm/getActionProcessor/core/file/getFileCopyActionProcessor.js.map +1 -0
  89. package/lib/esm/getActionProcessor/core/file/index.js +2 -0
  90. package/lib/esm/getActionProcessor/core/file/index.js.map +1 -1
  91. package/lib/esm/lambdaHandlers/helpers/getLambdaRuntimeRemainingTimeActionProcessor.d.ts +8 -0
  92. package/lib/esm/lambdaHandlers/helpers/getLambdaRuntimeRemainingTimeActionProcessor.js +13 -0
  93. package/lib/esm/lambdaHandlers/helpers/getLambdaRuntimeRemainingTimeActionProcessor.js.map +1 -0
  94. package/lib/esm/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js +6 -2
  95. package/lib/esm/lambdaHandlers/helpers/getQpqLambdaRuntimeForEvent.js.map +1 -1
  96. package/lib/esm/lambdaHandlers/helpers/index.d.ts +1 -0
  97. package/lib/esm/lambdaHandlers/helpers/index.js +1 -0
  98. package/lib/esm/lambdaHandlers/helpers/index.js.map +1 -1
  99. package/lib/esm/logic/kms/getCachedPublicKey.d.ts +1 -0
  100. package/lib/esm/logic/kms/getCachedPublicKey.js +32 -0
  101. package/lib/esm/logic/kms/getCachedPublicKey.js.map +1 -0
  102. package/lib/esm/logic/kms/signWithKey.d.ts +1 -0
  103. package/lib/esm/logic/kms/signWithKey.js +21 -0
  104. package/lib/esm/logic/kms/signWithKey.js.map +1 -0
  105. package/lib/esm/logic/s3/copyFile.d.ts +5 -0
  106. package/lib/esm/logic/s3/copyFile.js +18 -0
  107. package/lib/esm/logic/s3/copyFile.js.map +1 -0
  108. package/lib/esm/logic/s3/s3Utils.d.ts +1 -0
  109. package/lib/esm/logic/s3/s3Utils.js +1 -0
  110. package/lib/esm/logic/s3/s3Utils.js.map +1 -1
  111. package/package.json +7 -7
@@ -30,7 +30,7 @@ const getProcessAiPrompt = (qpqConfig) => {
30
30
  const providerOptions = payload.reasoning
31
31
  ? { bedrock: { reasoningConfig: { type: 'enabled', budgetTokens: (_a = payload.reasoning.budgetTokens) !== null && _a !== void 0 ? _a : 4096 } } }
32
32
  : undefined;
33
- const result = yield (0, ai_1.generateText)(Object.assign(Object.assign({ model: prepared.model, system: (0, logic_1.toCacheableSystem)(payload.system, payload.caching) }, promptOrMessages), { tools: prepared.tools, providerOptions, stopWhen: (0, ai_1.stepCountIs)(20) }));
33
+ const result = yield (0, ai_1.generateText)(Object.assign(Object.assign({ model: prepared.model, system: (0, logic_1.toCacheableSystem)(payload.system, payload.caching) }, promptOrMessages), { tools: prepared.tools, providerOptions, stopWhen: (0, logic_1.buildAiStopConditions)(payload), maxOutputTokens: payload.maxOutputTokens }));
34
34
  if (payload.caching) {
35
35
  // The SDK's cross-provider usage breakdown, not providerMetadata.bedrock.usage; that
36
36
  // field never carries cacheReadInputTokens through on @ai-sdk/amazon-bedrock (5.0.11).
@@ -1 +1 @@
1
- {"version":3,"file":"getAiPromptActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/ai/getAiPromptActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDASyB;AAEzB,2BAA+C;AAE/C,mCAA8H;AAE9H,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAoC,EAAE;IACpF,OAAO,CAAO,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE;;QACjH,MAAM,QAAQ,GAAG,IAAA,2BAAmB,EAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;QACpI,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAA,mCAAiB,EAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ;gBACvC,CAAC,CAAC;oBACE,QAAQ,EAAE,IAAA,2BAAmB,EAC3B,MAAM,IAAA,qBAAa,EACjB,OAAO,CAAC,QAAQ,EAChB,IAAA,+BAAuB,EAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAC9G,EACD,OAAO,CAAC,OAAO,CAChB;iBACF;gBACH,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAE/B,kFAAkF;YAClF,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS;gBACvC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,YAAY,EAAE,MAAA,OAAO,CAAC,SAAS,CAAC,YAAY,mCAAI,IAAI,EAAE,EAAE,EAAE;gBACtH,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAY,gCAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,MAAM,EAAE,IAAA,yBAAiB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IACvD,gBAAgB,KACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,eAAe,EACf,QAAQ,EAAE,IAAA,gBAAW,EAAC,EAAE,CAAC,IACzB,CAAC;YAEH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,qFAAqF;gBACrF,uFAAuF;gBACvF,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,KAAK,0CAAE,iBAAiB,CAAC,CAAC;YACpF,CAAC;YAED,OAAO,IAAA,8BAAY,EAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC;YAED,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,+CAA+C,CAAC,CAAC;QACxG,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,0BAA0B,GAAG,IAAA,uCAAqB,EAAC,6BAAW,EAAE,kBAAkB,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n AiActionType,\n askAiPrompt,\n createActionProcessor,\n ErrorTypeEnum,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { generateText, stepCountIs } from 'ai';\n\nimport { createDriveFileResolver, prepareAiPromptCall, toCacheableMessages, toCacheableSystem, toSdkMessages } from './logic';\n\nconst getProcessAiPrompt = (qpqConfig: QPQConfig): ProcessorFor<typeof askAiPrompt> => {\n return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n const prepared = prepareAiPromptCall(qpqConfig, payload, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);\n if ('error' in prepared) {\n return actionResultError(prepared.error.type, prepared.error.message);\n }\n\n try {\n const promptOrMessages = payload.messages\n ? {\n messages: toCacheableMessages(\n await toSdkMessages(\n payload.messages,\n createDriveFileResolver(qpqConfig, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry),\n ),\n payload.caching,\n ),\n }\n : { prompt: payload.prompt };\n\n // Extended thinking: the model reasons before answering, within the token budget.\n const providerOptions = payload.reasoning\n ? { bedrock: { reasoningConfig: { type: 'enabled' as const, budgetTokens: payload.reasoning.budgetTokens ?? 4096 } } }\n : undefined;\n\n const result = await generateText({\n model: prepared.model,\n system: toCacheableSystem(payload.system, payload.caching),\n ...promptOrMessages,\n tools: prepared.tools,\n providerOptions,\n stopWhen: stepCountIs(20),\n });\n\n if (payload.caching) {\n // The SDK's cross-provider usage breakdown, not providerMetadata.bedrock.usage; that\n // field never carries cacheReadInputTokens through on @ai-sdk/amazon-bedrock (5.0.11).\n console.log('AI prompt cache usage:', result.finalStep?.usage?.inputTokenDetails);\n }\n\n return actionResult({ text: result.text });\n } catch (error) {\n if (error instanceof Error) {\n return actionResultError(ErrorTypeEnum.GenericError, error.message);\n }\n\n return actionResultError(ErrorTypeEnum.GenericError, 'An error occurred during AI prompt execution.');\n }\n };\n};\n\nexport const getAiPromptActionProcessor = createActionProcessor(askAiPrompt, getProcessAiPrompt);\n"]}
1
+ {"version":3,"file":"getAiPromptActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/ai/getAiPromptActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDASyB;AAEzB,2BAAkC;AAElC,mCAAqJ;AAErJ,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAoC,EAAE;IACpF,OAAO,CAAO,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,EAAE;;QACjH,MAAM,QAAQ,GAAG,IAAA,2BAAmB,EAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;QACpI,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAA,mCAAiB,EAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ;gBACvC,CAAC,CAAC;oBACE,QAAQ,EAAE,IAAA,2BAAmB,EAC3B,MAAM,IAAA,qBAAa,EACjB,OAAO,CAAC,QAAQ,EAChB,IAAA,+BAAuB,EAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAC9G,EACD,OAAO,CAAC,OAAO,CAChB;iBACF;gBACH,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAE/B,kFAAkF;YAClF,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS;gBACvC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,YAAY,EAAE,MAAA,OAAO,CAAC,SAAS,CAAC,YAAY,mCAAI,IAAI,EAAE,EAAE,EAAE;gBACtH,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAY,gCAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,MAAM,EAAE,IAAA,yBAAiB,EAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,IACvD,gBAAgB,KACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,eAAe,EACf,QAAQ,EAAE,IAAA,6BAAqB,EAAC,OAAO,CAAC,EACxC,eAAe,EAAE,OAAO,CAAC,eAAe,IACxC,CAAC;YAEH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,qFAAqF;gBACrF,uFAAuF;gBACvF,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,KAAK,0CAAE,iBAAiB,CAAC,CAAC;YACpF,CAAC;YAED,OAAO,IAAA,8BAAY,EAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC;YAED,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,YAAY,EAAE,+CAA+C,CAAC,CAAC;QACxG,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,0BAA0B,GAAG,IAAA,uCAAqB,EAAC,6BAAW,EAAE,kBAAkB,CAAC,CAAC","sourcesContent":["import {\n actionResult,\n actionResultError,\n AiActionType,\n askAiPrompt,\n createActionProcessor,\n ErrorTypeEnum,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { generateText } from 'ai';\n\nimport { buildAiStopConditions, createDriveFileResolver, prepareAiPromptCall, toCacheableMessages, toCacheableSystem, toSdkMessages } from './logic';\n\nconst getProcessAiPrompt = (qpqConfig: QPQConfig): ProcessorFor<typeof askAiPrompt> => {\n return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n const prepared = prepareAiPromptCall(qpqConfig, payload, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);\n if ('error' in prepared) {\n return actionResultError(prepared.error.type, prepared.error.message);\n }\n\n try {\n const promptOrMessages = payload.messages\n ? {\n messages: toCacheableMessages(\n await toSdkMessages(\n payload.messages,\n createDriveFileResolver(qpqConfig, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry),\n ),\n payload.caching,\n ),\n }\n : { prompt: payload.prompt };\n\n // Extended thinking: the model reasons before answering, within the token budget.\n const providerOptions = payload.reasoning\n ? { bedrock: { reasoningConfig: { type: 'enabled' as const, budgetTokens: payload.reasoning.budgetTokens ?? 4096 } } }\n : undefined;\n\n const result = await generateText({\n model: prepared.model,\n system: toCacheableSystem(payload.system, payload.caching),\n ...promptOrMessages,\n tools: prepared.tools,\n providerOptions,\n stopWhen: buildAiStopConditions(payload),\n maxOutputTokens: payload.maxOutputTokens,\n });\n\n if (payload.caching) {\n // The SDK's cross-provider usage breakdown, not providerMetadata.bedrock.usage; that\n // field never carries cacheReadInputTokens through on @ai-sdk/amazon-bedrock (5.0.11).\n console.log('AI prompt cache usage:', result.finalStep?.usage?.inputTokenDetails);\n }\n\n return actionResult({ text: result.text });\n } catch (error) {\n if (error instanceof Error) {\n return actionResultError(ErrorTypeEnum.GenericError, error.message);\n }\n\n return actionResultError(ErrorTypeEnum.GenericError, 'An error occurred during AI prompt execution.');\n }\n };\n};\n\nexport const getAiPromptActionProcessor = createActionProcessor(askAiPrompt, getProcessAiPrompt);\n"]}
@@ -51,10 +51,7 @@ const getProcessAiPromptStream = (qpqConfig) => {
51
51
  const providerOptions = payload.reasoning
52
52
  ? { bedrock: { reasoningConfig: { type: 'enabled', budgetTokens: (_a = payload.reasoning.budgetTokens) !== null && _a !== void 0 ? _a : 4096 } } }
53
53
  : undefined;
54
- const { fullStream, finalStep } = (0, ai_1.streamText)(Object.assign(Object.assign({ model: prepared.model, system: (0, logic_1.toCacheableSystem)(payload.system, payload.caching) }, promptOrMessages), { tools: prepared.tools, providerOptions,
55
- // Caps the server-side tool loop. Client-side tools (no executor) still halt
56
- // immediately with finishReason 'tool-calls' so the caller can resume the turn.
57
- stopWhen: (0, ai_1.stepCountIs)(20),
54
+ const { fullStream, finalStep } = (0, ai_1.streamText)(Object.assign(Object.assign({ model: prepared.model, system: (0, logic_1.toCacheableSystem)(payload.system, payload.caching) }, promptOrMessages), { tools: prepared.tools, providerOptions, stopWhen: (0, logic_1.buildAiStopConditions)(payload), maxOutputTokens: payload.maxOutputTokens,
58
55
  // streamText swallows errors by default to keep the server alive; surface them to
59
56
  // CloudWatch. The same error also reaches the consumer as an Error stream part.
60
57
  onError: ({ error }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"getAiPromptStreamActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n actionResult,\n actionResultError,\n AiActionType,\n askAiPromptStream,\n createActionProcessor,\n ErrorTypeEnum,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { stepCountIs, streamText } from 'ai';\n\nimport { randomGuid } from '../../../awsLambdaUtils';\nimport {\n createDriveFileResolver,\n mapAiStreamPart,\n prepareAiPromptCall,\n toCacheableMessages,\n toCacheableSystem,\n toErrorMessage,\n toSdkMessages,\n} from './logic';\n\nconst getProcessAiPromptStream = (qpqConfig: QPQConfig): ProcessorFor<typeof askAiPromptStream> => {\n return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n const prepared = prepareAiPromptCall(qpqConfig, payload, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);\n if ('error' in prepared) {\n return actionResultError(prepared.error.type, prepared.error.message);\n }\n\n try {\n const promptOrMessages = payload.messages\n ? {\n messages: toCacheableMessages(\n await toSdkMessages(\n payload.messages,\n createDriveFileResolver(qpqConfig, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry),\n ),\n payload.caching,\n ),\n }\n : { prompt: payload.prompt };\n\n // Extended thinking: thinking progress streams out as Reasoning* parts.\n const providerOptions = payload.reasoning\n ? { bedrock: { reasoningConfig: { type: 'enabled' as const, budgetTokens: payload.reasoning.budgetTokens ?? 4096 } } }\n : undefined;\n\n const { fullStream, finalStep } = streamText({\n model: prepared.model,\n system: toCacheableSystem(payload.system, payload.caching),\n ...promptOrMessages,\n tools: prepared.tools,\n providerOptions,\n // Caps the server-side tool loop. Client-side tools (no executor) still halt\n // immediately with finishReason 'tool-calls' so the caller can resume the turn.\n stopWhen: stepCountIs(20),\n // streamText swallows errors by default to keep the server alive; surface them to\n // CloudWatch. The same error also reaches the consumer as an Error stream part.\n onError: ({ error }) => {\n console.error('AI prompt stream error:', error);\n },\n });\n\n const streamId = `ai-prompt-${Date.now()}-${randomGuid()}`;\n\n async function* aiStreamIterator(): AsyncIterableIterator<string> {\n for await (const part of fullStream) {\n yield JSON.stringify(mapAiStreamPart(part));\n }\n\n if (payload.caching) {\n try {\n // The SDK's cross-provider usage breakdown, not providerMetadata.bedrock.usage; that\n // field never carries cacheReadInputTokens through on @ai-sdk/amazon-bedrock (5.0.11).\n const step = await finalStep;\n console.log('AI prompt cache usage:', step.usage?.inputTokenDetails);\n } catch (error) {\n // finalStep rejects (AI_NoOutputGeneratedError) when the stream errored before\n // completing a step. The error part has already been streamed to the consumer;\n // throwing here would replace that real error with the unhelpful wrapper.\n console.warn('AI prompt cache usage unavailable:', toErrorMessage(error));\n }\n }\n }\n\n streamRegistry.register(streamId, aiStreamIterator());\n\n return actionResult({ id: streamId, encoding: 'json' as const });\n } catch (error) {\n if (error instanceof Error) {\n return actionResultError(ErrorTypeEnum.GenericError, error.message);\n }\n\n return actionResultError(ErrorTypeEnum.GenericError, 'An error occurred during AI prompt stream.');\n }\n };\n};\n\nexport const getAiPromptStreamActionProcessor = createActionProcessor(askAiPromptStream, getProcessAiPromptStream);\n"]}
1
+ {"version":3,"file":"getAiPromptStreamActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/ai/getAiPromptStreamActionProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n actionResult,\n actionResultError,\n AiActionType,\n askAiPromptStream,\n createActionProcessor,\n ErrorTypeEnum,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { streamText } from 'ai';\n\nimport { randomGuid } from '../../../awsLambdaUtils';\nimport {\n buildAiStopConditions,\n createDriveFileResolver,\n mapAiStreamPart,\n prepareAiPromptCall,\n toCacheableMessages,\n toCacheableSystem,\n toErrorMessage,\n toSdkMessages,\n} from './logic';\n\nconst getProcessAiPromptStream = (qpqConfig: QPQConfig): ProcessorFor<typeof askAiPromptStream> => {\n return async (payload, session, actionProcessorList, logger, updateSession, dynamicModuleLoader, streamRegistry) => {\n const prepared = prepareAiPromptCall(qpqConfig, payload, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry);\n if ('error' in prepared) {\n return actionResultError(prepared.error.type, prepared.error.message);\n }\n\n try {\n const promptOrMessages = payload.messages\n ? {\n messages: toCacheableMessages(\n await toSdkMessages(\n payload.messages,\n createDriveFileResolver(qpqConfig, session, actionProcessorList, logger, dynamicModuleLoader, streamRegistry),\n ),\n payload.caching,\n ),\n }\n : { prompt: payload.prompt };\n\n // Extended thinking: thinking progress streams out as Reasoning* parts.\n const providerOptions = payload.reasoning\n ? { bedrock: { reasoningConfig: { type: 'enabled' as const, budgetTokens: payload.reasoning.budgetTokens ?? 4096 } } }\n : undefined;\n\n const { fullStream, finalStep } = streamText({\n model: prepared.model,\n system: toCacheableSystem(payload.system, payload.caching),\n ...promptOrMessages,\n tools: prepared.tools,\n providerOptions,\n stopWhen: buildAiStopConditions(payload),\n maxOutputTokens: payload.maxOutputTokens,\n // streamText swallows errors by default to keep the server alive; surface them to\n // CloudWatch. The same error also reaches the consumer as an Error stream part.\n onError: ({ error }) => {\n console.error('AI prompt stream error:', error);\n },\n });\n\n const streamId = `ai-prompt-${Date.now()}-${randomGuid()}`;\n\n async function* aiStreamIterator(): AsyncIterableIterator<string> {\n for await (const part of fullStream) {\n yield JSON.stringify(mapAiStreamPart(part));\n }\n\n if (payload.caching) {\n try {\n // The SDK's cross-provider usage breakdown, not providerMetadata.bedrock.usage; that\n // field never carries cacheReadInputTokens through on @ai-sdk/amazon-bedrock (5.0.11).\n const step = await finalStep;\n console.log('AI prompt cache usage:', step.usage?.inputTokenDetails);\n } catch (error) {\n // finalStep rejects (AI_NoOutputGeneratedError) when the stream errored before\n // completing a step. The error part has already been streamed to the consumer;\n // throwing here would replace that real error with the unhelpful wrapper.\n console.warn('AI prompt cache usage unavailable:', toErrorMessage(error));\n }\n }\n }\n\n streamRegistry.register(streamId, aiStreamIterator());\n\n return actionResult({ id: streamId, encoding: 'json' as const });\n } catch (error) {\n if (error instanceof Error) {\n return actionResultError(ErrorTypeEnum.GenericError, error.message);\n }\n\n return actionResultError(ErrorTypeEnum.GenericError, 'An error occurred during AI prompt stream.');\n }\n };\n};\n\nexport const getAiPromptStreamActionProcessor = createActionProcessor(askAiPromptStream, getProcessAiPromptStream);\n"]}
@@ -0,0 +1,13 @@
1
+ import { StopCondition, ToolSet } from 'ai';
2
+ export type AiStopLimits = {
3
+ maxSteps?: number;
4
+ maxDurationMs?: number;
5
+ };
6
+ /**
7
+ * The `stopWhen` set for a prompt. The SDK defaults to a single step, so this always
8
+ * returns a list, even an empty one: with no limits the loop runs until the model stops
9
+ * on its own (a client-side tool call still halts it). Conditions only run between
10
+ * steps, so the time cap can overrun by one step; callers leave headroom. Its clock
11
+ * starts when this is built, which is just before the SDK call.
12
+ */
13
+ export declare const buildAiStopConditions: ({ maxSteps, maxDurationMs }: AiStopLimits, now?: () => number) => StopCondition<ToolSet>[];
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAiStopConditions = void 0;
4
+ const ai_1 = require("ai");
5
+ /**
6
+ * The `stopWhen` set for a prompt. The SDK defaults to a single step, so this always
7
+ * returns a list, even an empty one: with no limits the loop runs until the model stops
8
+ * on its own (a client-side tool call still halts it). Conditions only run between
9
+ * steps, so the time cap can overrun by one step; callers leave headroom. Its clock
10
+ * starts when this is built, which is just before the SDK call.
11
+ */
12
+ const buildAiStopConditions = ({ maxSteps, maxDurationMs }, now = Date.now) => {
13
+ const conditions = [];
14
+ if (maxSteps !== undefined) {
15
+ conditions.push((0, ai_1.stepCountIs)(maxSteps));
16
+ }
17
+ if (maxDurationMs !== undefined) {
18
+ const startedAt = now();
19
+ conditions.push(() => now() - startedAt >= maxDurationMs);
20
+ }
21
+ return conditions;
22
+ };
23
+ exports.buildAiStopConditions = buildAiStopConditions;
24
+ //# sourceMappingURL=buildAiStopConditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildAiStopConditions.js","sourceRoot":"","sources":["../../../../../../src/getActionProcessor/core/ai/logic/buildAiStopConditions.ts"],"names":[],"mappings":";;;AAAA,2BAAyD;AAOzD;;;;;;GAMG;AACI,MAAM,qBAAqB,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAgB,EAAE,MAAoB,IAAI,CAAC,GAAG,EAA4B,EAAE;IACzI,MAAM,UAAU,GAA6B,EAAE,CAAC;IAEhD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAbW,QAAA,qBAAqB,yBAahC","sourcesContent":["import { stepCountIs, StopCondition, ToolSet } from 'ai';\n\nexport type AiStopLimits = {\n maxSteps?: number;\n maxDurationMs?: number;\n};\n\n/**\n * The `stopWhen` set for a prompt. The SDK defaults to a single step, so this always\n * returns a list, even an empty one: with no limits the loop runs until the model stops\n * on its own (a client-side tool call still halts it). Conditions only run between\n * steps, so the time cap can overrun by one step; callers leave headroom. Its clock\n * starts when this is built, which is just before the SDK call.\n */\nexport const buildAiStopConditions = ({ maxSteps, maxDurationMs }: AiStopLimits, now: () => number = Date.now): StopCondition<ToolSet>[] => {\n const conditions: StopCondition<ToolSet>[] = [];\n\n if (maxSteps !== undefined) {\n conditions.push(stepCountIs(maxSteps));\n }\n\n if (maxDurationMs !== undefined) {\n const startedAt = now();\n conditions.push(() => now() - startedAt >= maxDurationMs);\n }\n\n return conditions;\n};\n"]}
@@ -1,4 +1,5 @@
1
1
  export * from './aiStreamPartMappers';
2
+ export * from './buildAiStopConditions';
2
3
  export * from './createDriveFileResolver';
3
4
  export * from './mapAiStreamAbort';
4
5
  export * from './mapAiStreamCustom';
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./aiStreamPartMappers"), exports);
18
+ __exportStar(require("./buildAiStopConditions"), exports);
18
19
  __exportStar(require("./createDriveFileResolver"), exports);
19
20
  __exportStar(require("./mapAiStreamAbort"), exports);
20
21
  __exportStar(require("./mapAiStreamCustom"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/getActionProcessor/core/ai/logic/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,4DAA0C;AAC1C,qDAAmC;AACnC,sDAAoC;AACpC,qDAAmC;AACnC,wDAAsC;AACtC,sDAAoC;AACpC,0DAAwC;AACxC,oDAAkC;AAClC,mDAAiC;AACjC,8DAA4C;AAC5C,4DAA0C;AAC1C,iEAA+C;AAC/C,8DAA4C;AAC5C,0DAAwC;AACxC,qDAAmC;AACnC,yDAAuC;AACvC,yDAAuC;AACvC,uDAAqC;AACrC,yDAAuC;AACvC,mEAAiD;AACjD,oEAAkD;AAClD,wDAAsC;AACtC,yDAAuC;AACvC,8DAA4C;AAC5C,4DAA0C;AAC1C,8DAA4C;AAC5C,gEAA8C;AAC9C,0DAAwC;AACxC,wDAAsC;AACtC,2DAAyC;AACzC,oDAAkC;AAClC,wDAAsC;AACtC,sDAAoC;AACpC,mDAAiC;AACjC,kDAAgC","sourcesContent":["export * from './aiStreamPartMappers';\nexport * from './createDriveFileResolver';\nexport * from './mapAiStreamAbort';\nexport * from './mapAiStreamCustom';\nexport * from './mapAiStreamError';\nexport * from './mapAiStreamFilePart';\nexport * from './mapAiStreamFinish';\nexport * from './mapAiStreamFinishStep';\nexport * from './mapAiStreamPart';\nexport * from './mapAiStreamRaw';\nexport * from './mapAiStreamReasoningDelta';\nexport * from './mapAiStreamReasoningEnd';\nexport * from './mapAiStreamReasoningFilePart';\nexport * from './mapAiStreamReasoningStart';\nexport * from './mapAiStreamSourcePart';\nexport * from './mapAiStreamStart';\nexport * from './mapAiStreamStartStep';\nexport * from './mapAiStreamTextDelta';\nexport * from './mapAiStreamTextEnd';\nexport * from './mapAiStreamTextStart';\nexport * from './mapAiStreamToolApprovalRequest';\nexport * from './mapAiStreamToolApprovalResponse';\nexport * from './mapAiStreamToolCall';\nexport * from './mapAiStreamToolError';\nexport * from './mapAiStreamToolInputDelta';\nexport * from './mapAiStreamToolInputEnd';\nexport * from './mapAiStreamToolInputStart';\nexport * from './mapAiStreamToolOutputDenied';\nexport * from './mapAiStreamToolResult';\nexport * from './prepareAiPromptCall';\nexport * from './toAiStreamFinishReason';\nexport * from './toAiStreamUsage';\nexport * from './toCacheableMessages';\nexport * from './toCacheableSystem';\nexport * from './toErrorMessage';\nexport * from './toSdkMessages';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/getActionProcessor/core/ai/logic/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,0DAAwC;AACxC,4DAA0C;AAC1C,qDAAmC;AACnC,sDAAoC;AACpC,qDAAmC;AACnC,wDAAsC;AACtC,sDAAoC;AACpC,0DAAwC;AACxC,oDAAkC;AAClC,mDAAiC;AACjC,8DAA4C;AAC5C,4DAA0C;AAC1C,iEAA+C;AAC/C,8DAA4C;AAC5C,0DAAwC;AACxC,qDAAmC;AACnC,yDAAuC;AACvC,yDAAuC;AACvC,uDAAqC;AACrC,yDAAuC;AACvC,mEAAiD;AACjD,oEAAkD;AAClD,wDAAsC;AACtC,yDAAuC;AACvC,8DAA4C;AAC5C,4DAA0C;AAC1C,8DAA4C;AAC5C,gEAA8C;AAC9C,0DAAwC;AACxC,wDAAsC;AACtC,2DAAyC;AACzC,oDAAkC;AAClC,wDAAsC;AACtC,sDAAoC;AACpC,mDAAiC;AACjC,kDAAgC","sourcesContent":["export * from './aiStreamPartMappers';\nexport * from './buildAiStopConditions';\nexport * from './createDriveFileResolver';\nexport * from './mapAiStreamAbort';\nexport * from './mapAiStreamCustom';\nexport * from './mapAiStreamError';\nexport * from './mapAiStreamFilePart';\nexport * from './mapAiStreamFinish';\nexport * from './mapAiStreamFinishStep';\nexport * from './mapAiStreamPart';\nexport * from './mapAiStreamRaw';\nexport * from './mapAiStreamReasoningDelta';\nexport * from './mapAiStreamReasoningEnd';\nexport * from './mapAiStreamReasoningFilePart';\nexport * from './mapAiStreamReasoningStart';\nexport * from './mapAiStreamSourcePart';\nexport * from './mapAiStreamStart';\nexport * from './mapAiStreamStartStep';\nexport * from './mapAiStreamTextDelta';\nexport * from './mapAiStreamTextEnd';\nexport * from './mapAiStreamTextStart';\nexport * from './mapAiStreamToolApprovalRequest';\nexport * from './mapAiStreamToolApprovalResponse';\nexport * from './mapAiStreamToolCall';\nexport * from './mapAiStreamToolError';\nexport * from './mapAiStreamToolInputDelta';\nexport * from './mapAiStreamToolInputEnd';\nexport * from './mapAiStreamToolInputStart';\nexport * from './mapAiStreamToolOutputDenied';\nexport * from './mapAiStreamToolResult';\nexport * from './prepareAiPromptCall';\nexport * from './toAiStreamFinishReason';\nexport * from './toAiStreamUsage';\nexport * from './toCacheableMessages';\nexport * from './toCacheableSystem';\nexport * from './toErrorMessage';\nexport * from './toSdkMessages';\n"]}
@@ -0,0 +1 @@
1
+ export declare const getCryptoGetPublicKeyActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -0,0 +1,34 @@
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.getCryptoGetPublicKeyActionProcessor = void 0;
13
+ const quidproquo_config_aws_1 = require("quidproquo-config-aws");
14
+ const quidproquo_core_1 = require("quidproquo-core");
15
+ const getCachedPublicKey_1 = require("../../../logic/kms/getCachedPublicKey");
16
+ const kmsSigningErrorMap_1 = require("./kmsSigningErrorMap");
17
+ const utils_1 = require("./utils");
18
+ const getProcessCryptoGetPublicKey = (qpqConfig) => {
19
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyName }) {
20
+ const keyAlias = (0, utils_1.resolveSigningKeyAlias)(keyName, qpqConfig);
21
+ if (!keyAlias) {
22
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askCryptoGetPublicKey.errorType.KeyNotConfigured, (0, kmsSigningErrorMap_1.signingKeyNotConfiguredMessage)(keyName));
23
+ }
24
+ const region = quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
25
+ try {
26
+ return (0, quidproquo_core_1.actionResult)(yield (0, getCachedPublicKey_1.getCachedPublicKey)(keyAlias, region));
27
+ }
28
+ catch (error) {
29
+ return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, (0, kmsSigningErrorMap_1.kmsSigningErrorMap)(quidproquo_core_1.askCryptoGetPublicKey.errorType, keyName));
30
+ }
31
+ });
32
+ };
33
+ exports.getCryptoGetPublicKeyActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askCryptoGetPublicKey, getProcessCryptoGetPublicKey);
34
+ //# sourceMappingURL=getCryptoGetPublicKeyActionProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCryptoGetPublicKeyActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/crypto/getCryptoGetPublicKeyActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAQyB;AAEzB,8EAA2E;AAC3E,6DAA0F;AAC1F,mCAAiD;AAEjD,MAAM,4BAA4B,GAAG,CAAC,SAAoB,EAA8C,EAAE;IACxG,OAAO,KAAoB,EAAE,4CAAf,EAAE,OAAO,EAAE;QACvB,MAAM,QAAQ,GAAG,IAAA,8BAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAA,mCAAiB,EAAC,uCAAqB,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAA,mDAA8B,EAAC,OAAO,CAAC,CAAC,CAAC;QACtH,CAAC;QAED,MAAM,MAAM,GAAG,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,OAAO,IAAA,8BAAY,EAAC,MAAM,IAAA,uCAAkB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE,IAAA,uCAAkB,EAAC,uCAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,oCAAoC,GAAG,IAAA,uCAAqB,EAAC,uCAAqB,EAAE,4BAA4B,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askCryptoGetPublicKey,\n createActionProcessor,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getCachedPublicKey } from '../../../logic/kms/getCachedPublicKey';\nimport { kmsSigningErrorMap, signingKeyNotConfiguredMessage } from './kmsSigningErrorMap';\nimport { resolveSigningKeyAlias } from './utils';\n\nconst getProcessCryptoGetPublicKey = (qpqConfig: QPQConfig): ProcessorFor<typeof askCryptoGetPublicKey> => {\n return async ({ keyName }) => {\n const keyAlias = resolveSigningKeyAlias(keyName, qpqConfig);\n if (!keyAlias) {\n return actionResultError(askCryptoGetPublicKey.errorType.KeyNotConfigured, signingKeyNotConfiguredMessage(keyName));\n }\n\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n return actionResult(await getCachedPublicKey(keyAlias, region));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, kmsSigningErrorMap(askCryptoGetPublicKey.errorType, keyName));\n }\n };\n};\n\nexport const getCryptoGetPublicKeyActionProcessor = createActionProcessor(askCryptoGetPublicKey, getProcessCryptoGetPublicKey);\n"]}
@@ -0,0 +1 @@
1
+ export declare const getCryptoSignActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -0,0 +1,36 @@
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.getCryptoSignActionProcessor = void 0;
13
+ const quidproquo_actionprocessor_node_1 = require("quidproquo-actionprocessor-node");
14
+ const quidproquo_config_aws_1 = require("quidproquo-config-aws");
15
+ const quidproquo_core_1 = require("quidproquo-core");
16
+ const signWithKey_1 = require("../../../logic/kms/signWithKey");
17
+ const kmsSigningErrorMap_1 = require("./kmsSigningErrorMap");
18
+ const utils_1 = require("./utils");
19
+ const getProcessCryptoSign = (qpqConfig) => {
20
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyName, message }) {
21
+ const keyAlias = (0, utils_1.resolveSigningKeyAlias)(keyName, qpqConfig);
22
+ if (!keyAlias) {
23
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askCryptoSign.errorType.KeyNotConfigured, (0, kmsSigningErrorMap_1.signingKeyNotConfiguredMessage)(keyName));
24
+ }
25
+ const region = quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
26
+ try {
27
+ const signature = yield (0, signWithKey_1.signWithKey)(keyAlias, message, region);
28
+ return (0, quidproquo_core_1.actionResult)((0, quidproquo_actionprocessor_node_1.base64UrlEncode)(signature));
29
+ }
30
+ catch (error) {
31
+ return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, (0, kmsSigningErrorMap_1.kmsSigningErrorMap)(quidproquo_core_1.askCryptoSign.errorType, keyName));
32
+ }
33
+ });
34
+ };
35
+ exports.getCryptoSignActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askCryptoSign, getProcessCryptoSign);
36
+ //# sourceMappingURL=getCryptoSignActionProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCryptoSignActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/crypto/getCryptoSignActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qFAAkE;AAClE,iEAA0D;AAC1D,qDAQyB;AAEzB,gEAA6D;AAC7D,6DAA0F;AAC1F,mCAAiD;AAEjD,MAAM,oBAAoB,GAAG,CAAC,SAAoB,EAAsC,EAAE;IACxF,OAAO,KAA6B,EAAE,4CAAxB,EAAE,OAAO,EAAE,OAAO,EAAE;QAChC,MAAM,QAAQ,GAAG,IAAA,8BAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAA,mCAAiB,EAAC,+BAAa,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAA,mDAA8B,EAAC,OAAO,CAAC,CAAC,CAAC;QAC9G,CAAC;QAED,MAAM,MAAM,GAAG,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAW,EAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/D,OAAO,IAAA,8BAAY,EAAC,IAAA,iDAAe,EAAC,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE,IAAA,uCAAkB,EAAC,+BAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACvG,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,uCAAqB,EAAC,+BAAa,EAAE,oBAAoB,CAAC,CAAC","sourcesContent":["import { base64UrlEncode } from 'quidproquo-actionprocessor-node';\nimport { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askCryptoSign,\n createActionProcessor,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { signWithKey } from '../../../logic/kms/signWithKey';\nimport { kmsSigningErrorMap, signingKeyNotConfiguredMessage } from './kmsSigningErrorMap';\nimport { resolveSigningKeyAlias } from './utils';\n\nconst getProcessCryptoSign = (qpqConfig: QPQConfig): ProcessorFor<typeof askCryptoSign> => {\n return async ({ keyName, message }) => {\n const keyAlias = resolveSigningKeyAlias(keyName, qpqConfig);\n if (!keyAlias) {\n return actionResultError(askCryptoSign.errorType.KeyNotConfigured, signingKeyNotConfiguredMessage(keyName));\n }\n\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const signature = await signWithKey(keyAlias, message, region);\n return actionResult(base64UrlEncode(signature));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, kmsSigningErrorMap(askCryptoSign.errorType, keyName));\n }\n };\n};\n\nexport const getCryptoSignActionProcessor = createActionProcessor(askCryptoSign, getProcessCryptoSign);\n"]}
@@ -0,0 +1 @@
1
+ export declare const getCryptoVerifyActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -0,0 +1,38 @@
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.getCryptoVerifyActionProcessor = void 0;
13
+ const quidproquo_actionprocessor_node_1 = require("quidproquo-actionprocessor-node");
14
+ const quidproquo_config_aws_1 = require("quidproquo-config-aws");
15
+ const quidproquo_core_1 = require("quidproquo-core");
16
+ const getCachedPublicKey_1 = require("../../../logic/kms/getCachedPublicKey");
17
+ const kmsSigningErrorMap_1 = require("./kmsSigningErrorMap");
18
+ const utils_1 = require("./utils");
19
+ // Verifies locally against the cached public key rather than calling kms:Verify,
20
+ // so the hot path (every authenticated request) costs no KMS round trip.
21
+ const getProcessCryptoVerify = (qpqConfig) => {
22
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ keyName, message, signature }) {
23
+ const keyAlias = (0, utils_1.resolveSigningKeyAlias)(keyName, qpqConfig);
24
+ if (!keyAlias) {
25
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askCryptoVerify.errorType.KeyNotConfigured, (0, kmsSigningErrorMap_1.signingKeyNotConfiguredMessage)(keyName));
26
+ }
27
+ const region = quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);
28
+ try {
29
+ const publicKeyPem = yield (0, getCachedPublicKey_1.getCachedPublicKey)(keyAlias, region);
30
+ return (0, quidproquo_core_1.actionResult)((0, quidproquo_actionprocessor_node_1.rs256Verify)(publicKeyPem, message, signature));
31
+ }
32
+ catch (error) {
33
+ return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, Object.assign({ QpqSigningMalformedSignature: (e) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askCryptoVerify.errorType.MalformedSignature, e.message) }, (0, kmsSigningErrorMap_1.kmsSigningErrorMap)(quidproquo_core_1.askCryptoVerify.errorType, keyName)));
34
+ }
35
+ });
36
+ };
37
+ exports.getCryptoVerifyActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askCryptoVerify, getProcessCryptoVerify);
38
+ //# sourceMappingURL=getCryptoVerifyActionProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCryptoVerifyActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/crypto/getCryptoVerifyActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qFAA8D;AAC9D,iEAA0D;AAC1D,qDAQyB;AAEzB,8EAA2E;AAC3E,6DAA0F;AAC1F,mCAAiD;AAEjD,iFAAiF;AACjF,yEAAyE;AACzE,MAAM,sBAAsB,GAAG,CAAC,SAAoB,EAAwC,EAAE;IAC5F,OAAO,KAAwC,EAAE,4CAAnC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAA,8BAAsB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAA,mCAAiB,EAAC,iCAAe,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAA,mDAA8B,EAAC,OAAO,CAAC,CAAC,CAAC;QAChH,CAAC;QAED,MAAM,MAAM,GAAG,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC;QAE7E,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAA,uCAAkB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChE,OAAO,IAAA,8BAAY,EAAC,IAAA,6CAAW,EAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,kBAC3C,4BAA4B,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,iCAAe,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,IAC5G,IAAA,uCAAkB,EAAC,iCAAe,CAAC,SAAS,EAAE,OAAO,CAAC,EACzD,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,8BAA8B,GAAG,IAAA,uCAAqB,EAAC,iCAAe,EAAE,sBAAsB,CAAC,CAAC","sourcesContent":["import { rs256Verify } from 'quidproquo-actionprocessor-node';\nimport { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askCryptoVerify,\n createActionProcessor,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { getCachedPublicKey } from '../../../logic/kms/getCachedPublicKey';\nimport { kmsSigningErrorMap, signingKeyNotConfiguredMessage } from './kmsSigningErrorMap';\nimport { resolveSigningKeyAlias } from './utils';\n\n// Verifies locally against the cached public key rather than calling kms:Verify,\n// so the hot path (every authenticated request) costs no KMS round trip.\nconst getProcessCryptoVerify = (qpqConfig: QPQConfig): ProcessorFor<typeof askCryptoVerify> => {\n return async ({ keyName, message, signature }) => {\n const keyAlias = resolveSigningKeyAlias(keyName, qpqConfig);\n if (!keyAlias) {\n return actionResultError(askCryptoVerify.errorType.KeyNotConfigured, signingKeyNotConfiguredMessage(keyName));\n }\n\n const region = qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig);\n\n try {\n const publicKeyPem = await getCachedPublicKey(keyAlias, region);\n return actionResult(rs256Verify(publicKeyPem, message, signature));\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n QpqSigningMalformedSignature: (e) => actionResultError(askCryptoVerify.errorType.MalformedSignature, e.message),\n ...kmsSigningErrorMap(askCryptoVerify.errorType, keyName),\n });\n }\n };\n};\n\nexport const getCryptoVerifyActionProcessor = createActionProcessor(askCryptoVerify, getProcessCryptoVerify);\n"]}
@@ -12,8 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.getCryptoActionProcessor = void 0;
13
13
  const getCryptoDecryptActionProcessor_1 = require("./getCryptoDecryptActionProcessor");
14
14
  const getCryptoEncryptActionProcessor_1 = require("./getCryptoEncryptActionProcessor");
15
+ const getCryptoGetPublicKeyActionProcessor_1 = require("./getCryptoGetPublicKeyActionProcessor");
16
+ const getCryptoSignActionProcessor_1 = require("./getCryptoSignActionProcessor");
17
+ const getCryptoVerifyActionProcessor_1 = require("./getCryptoVerifyActionProcessor");
15
18
  const getCryptoActionProcessor = (qpqConfig, dynamicModuleLoader) => __awaiter(void 0, void 0, void 0, function* () {
16
- return (Object.assign(Object.assign({}, (yield (0, getCryptoEncryptActionProcessor_1.getCryptoEncryptActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getCryptoDecryptActionProcessor_1.getCryptoDecryptActionProcessor)(qpqConfig, dynamicModuleLoader))));
19
+ return (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (yield (0, getCryptoEncryptActionProcessor_1.getCryptoEncryptActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getCryptoDecryptActionProcessor_1.getCryptoDecryptActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getCryptoSignActionProcessor_1.getCryptoSignActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getCryptoVerifyActionProcessor_1.getCryptoVerifyActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getCryptoGetPublicKeyActionProcessor_1.getCryptoGetPublicKeyActionProcessor)(qpqConfig, dynamicModuleLoader))));
17
20
  });
18
21
  exports.getCryptoActionProcessor = getCryptoActionProcessor;
19
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/crypto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uFAAoF;AACpF,uFAAoF;AAE7E,MAAM,wBAAwB,GAAgC,CACnE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,iCAC9B,CAAC,MAAM,IAAA,iEAA+B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACvE,CAAC,MAAM,IAAA,iEAA+B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC1E,CAAA;EAAA,CAAC;AANU,QAAA,wBAAwB,4BAMlC","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getCryptoDecryptActionProcessor } from './getCryptoDecryptActionProcessor';\nimport { getCryptoEncryptActionProcessor } from './getCryptoEncryptActionProcessor';\n\nexport const getCryptoActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getCryptoEncryptActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getCryptoDecryptActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/crypto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uFAAoF;AACpF,uFAAoF;AACpF,iGAA8F;AAC9F,iFAA8E;AAC9E,qFAAkF;AAE3E,MAAM,wBAAwB,GAAgC,CACnE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,2EAC9B,CAAC,MAAM,IAAA,iEAA+B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACvE,CAAC,MAAM,IAAA,iEAA+B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACvE,CAAC,MAAM,IAAA,2DAA4B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACpE,CAAC,MAAM,IAAA,+DAA8B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACtE,CAAC,MAAM,IAAA,2EAAoC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC/E,CAAA;EAAA,CAAC;AATU,QAAA,wBAAwB,4BASlC","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getCryptoDecryptActionProcessor } from './getCryptoDecryptActionProcessor';\nimport { getCryptoEncryptActionProcessor } from './getCryptoEncryptActionProcessor';\nimport { getCryptoGetPublicKeyActionProcessor } from './getCryptoGetPublicKeyActionProcessor';\nimport { getCryptoSignActionProcessor } from './getCryptoSignActionProcessor';\nimport { getCryptoVerifyActionProcessor } from './getCryptoVerifyActionProcessor';\n\nexport const getCryptoActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getCryptoEncryptActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getCryptoDecryptActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getCryptoSignActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getCryptoVerifyActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getCryptoGetPublicKeyActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
@@ -0,0 +1,13 @@
1
+ type SigningErrorTypes = {
2
+ KeyUnavailable: string;
3
+ Throttling: string;
4
+ };
5
+ export declare const kmsSigningErrorMap: (errorType: SigningErrorTypes, keyName: string) => {
6
+ NotFoundException: () => import("quidproquo-core").ActionProcessorResult<any>;
7
+ DisabledException: () => import("quidproquo-core").ActionProcessorResult<any>;
8
+ KMSInvalidStateException: () => import("quidproquo-core").ActionProcessorResult<any>;
9
+ AccessDeniedException: () => import("quidproquo-core").ActionProcessorResult<any>;
10
+ ThrottlingException: () => import("quidproquo-core").ActionProcessorResult<any>;
11
+ };
12
+ export declare const signingKeyNotConfiguredMessage: (keyName: string) => string;
13
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signingKeyNotConfiguredMessage = exports.kmsSigningErrorMap = void 0;
4
+ const quidproquo_core_1 = require("quidproquo-core");
5
+ // The KMS exceptions every signing-key processor maps the same way, keyed by
6
+ // error.name as actionResultErrorFromCaughtError expects.
7
+ const kmsSigningErrorMap = (errorType, keyName) => ({
8
+ NotFoundException: () => (0, quidproquo_core_1.actionResultError)(errorType.KeyUnavailable, `Signing key not found: [${keyName}]`),
9
+ DisabledException: () => (0, quidproquo_core_1.actionResultError)(errorType.KeyUnavailable, `Signing key is disabled: [${keyName}]`),
10
+ KMSInvalidStateException: () => (0, quidproquo_core_1.actionResultError)(errorType.KeyUnavailable, `Signing key is in an unusable state: [${keyName}]`),
11
+ AccessDeniedException: () => (0, quidproquo_core_1.actionResultError)(errorType.KeyUnavailable, `Access denied to signing key: [${keyName}]`),
12
+ ThrottlingException: () => (0, quidproquo_core_1.actionResultError)(errorType.Throttling, 'Throttling: Rate exceeded'),
13
+ });
14
+ exports.kmsSigningErrorMap = kmsSigningErrorMap;
15
+ const signingKeyNotConfiguredMessage = (keyName) => `Signing key not configured: [${keyName}] - declare it with defineSigningKey`;
16
+ exports.signingKeyNotConfiguredMessage = signingKeyNotConfiguredMessage;
17
+ //# sourceMappingURL=kmsSigningErrorMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kmsSigningErrorMap.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/crypto/kmsSigningErrorMap.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAOpD,6EAA6E;AAC7E,0DAA0D;AACnD,MAAM,kBAAkB,GAAG,CAAC,SAA4B,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;IACpF,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,OAAO,GAAG,CAAC;IAC3G,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,SAAS,CAAC,cAAc,EAAE,6BAA6B,OAAO,GAAG,CAAC;IAC7G,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,SAAS,CAAC,cAAc,EAAE,yCAAyC,OAAO,GAAG,CAAC;IAChI,qBAAqB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,SAAS,CAAC,cAAc,EAAE,kCAAkC,OAAO,GAAG,CAAC;IACtH,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,SAAS,CAAC,UAAU,EAAE,2BAA2B,CAAC;CAChG,CAAC,CAAC;AANU,QAAA,kBAAkB,sBAM5B;AAEI,MAAM,8BAA8B,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,gCAAgC,OAAO,sCAAsC,CAAC;AAApI,QAAA,8BAA8B,kCAAsG","sourcesContent":["import { actionResultError } from 'quidproquo-core';\n\ntype SigningErrorTypes = {\n KeyUnavailable: string;\n Throttling: string;\n};\n\n// The KMS exceptions every signing-key processor maps the same way, keyed by\n// error.name as actionResultErrorFromCaughtError expects.\nexport const kmsSigningErrorMap = (errorType: SigningErrorTypes, keyName: string) => ({\n NotFoundException: () => actionResultError(errorType.KeyUnavailable, `Signing key not found: [${keyName}]`),\n DisabledException: () => actionResultError(errorType.KeyUnavailable, `Signing key is disabled: [${keyName}]`),\n KMSInvalidStateException: () => actionResultError(errorType.KeyUnavailable, `Signing key is in an unusable state: [${keyName}]`),\n AccessDeniedException: () => actionResultError(errorType.KeyUnavailable, `Access denied to signing key: [${keyName}]`),\n ThrottlingException: () => actionResultError(errorType.Throttling, 'Throttling: Rate exceeded'),\n});\n\nexport const signingKeyNotConfiguredMessage = (keyName: string) => `Signing key not configured: [${keyName}] - declare it with defineSigningKey`;\n"]}
@@ -1,2 +1,3 @@
1
1
  export * from './createKmsDataKeyProvider';
2
2
  export * from './resolveCryptoKeyAlias';
3
+ export * from './resolveSigningKeyAlias';
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./createKmsDataKeyProvider"), exports);
18
18
  __exportStar(require("./resolveCryptoKeyAlias"), exports);
19
+ __exportStar(require("./resolveSigningKeyAlias"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/getActionProcessor/core/crypto/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,0DAAwC","sourcesContent":["export * from './createKmsDataKeyProvider';\nexport * from './resolveCryptoKeyAlias';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/getActionProcessor/core/crypto/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,0DAAwC;AACxC,2DAAyC","sourcesContent":["export * from './createKmsDataKeyProvider';\nexport * from './resolveCryptoKeyAlias';\nexport * from './resolveSigningKeyAlias';\n"]}
@@ -0,0 +1,2 @@
1
+ import { Nullable, QPQConfig } from 'quidproquo-core';
2
+ export declare const resolveSigningKeyAlias: (signingKeyName: string, qpqConfig: QPQConfig) => Nullable<string>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveSigningKeyAlias = void 0;
4
+ const quidproquo_core_1 = require("quidproquo-core");
5
+ const awsNamingUtils_1 = require("../../../../awsNamingUtils");
6
+ // The signing-key twin of resolveCryptoKeyAlias: the deterministic KMS alias the
7
+ // CDK construct derives for a defineSigningKey, or null when none matches so
8
+ // processors can fail with KeyNotConfigured instead of a generic error.
9
+ const resolveSigningKeyAlias = (signingKeyName, qpqConfig) => {
10
+ var _a, _b;
11
+ const signingKeyConfig = quidproquo_core_1.qpqCoreUtils.getAllSigningKeyConfigs(qpqConfig).find((k) => k.keyName === signingKeyName);
12
+ if (!signingKeyConfig) {
13
+ return null;
14
+ }
15
+ const resolvedName = (0, awsNamingUtils_1.getConfigRuntimeResourceNameFromConfigWithServiceOverride)(((_a = signingKeyConfig.owner) === null || _a === void 0 ? void 0 : _a.resourceNameOverride) || signingKeyName, qpqConfig, (_b = signingKeyConfig.owner) === null || _b === void 0 ? void 0 : _b.module);
16
+ return `alias/${resolvedName}`;
17
+ };
18
+ exports.resolveSigningKeyAlias = resolveSigningKeyAlias;
19
+ //# sourceMappingURL=resolveSigningKeyAlias.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSigningKeyAlias.js","sourceRoot":"","sources":["../../../../../../src/getActionProcessor/core/crypto/utils/resolveSigningKeyAlias.ts"],"names":[],"mappings":";;;AAAA,qDAAoE;AAEpE,+DAAuG;AAEvG,iFAAiF;AACjF,6EAA6E;AAC7E,wEAAwE;AACjE,MAAM,sBAAsB,GAAG,CAAC,cAAsB,EAAE,SAAoB,EAAoB,EAAE;;IACvG,MAAM,gBAAgB,GAAG,8BAAY,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC;IAEnH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,0EAAyD,EAC5E,CAAA,MAAA,gBAAgB,CAAC,KAAK,0CAAE,oBAAoB,KAAI,cAAc,EAC9D,SAAS,EACT,MAAA,gBAAgB,CAAC,KAAK,0CAAE,MAAM,CAC/B,CAAC;IAEF,OAAO,SAAS,YAAY,EAAE,CAAC;AACjC,CAAC,CAAC;AAdW,QAAA,sBAAsB,0BAcjC","sourcesContent":["import { Nullable, QPQConfig, qpqCoreUtils } from 'quidproquo-core';\n\nimport { getConfigRuntimeResourceNameFromConfigWithServiceOverride } from '../../../../awsNamingUtils';\n\n// The signing-key twin of resolveCryptoKeyAlias: the deterministic KMS alias the\n// CDK construct derives for a defineSigningKey, or null when none matches so\n// processors can fail with KeyNotConfigured instead of a generic error.\nexport const resolveSigningKeyAlias = (signingKeyName: string, qpqConfig: QPQConfig): Nullable<string> => {\n const signingKeyConfig = qpqCoreUtils.getAllSigningKeyConfigs(qpqConfig).find((k) => k.keyName === signingKeyName);\n\n if (!signingKeyConfig) {\n return null;\n }\n\n const resolvedName = getConfigRuntimeResourceNameFromConfigWithServiceOverride(\n signingKeyConfig.owner?.resourceNameOverride || signingKeyName,\n qpqConfig,\n signingKeyConfig.owner?.module,\n );\n\n return `alias/${resolvedName}`;\n};\n"]}
@@ -0,0 +1 @@
1
+ export declare const getFileCopyActionProcessor: import("quidproquo-core").ActionProcessorListResolver;
@@ -0,0 +1,37 @@
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.getFileCopyActionProcessor = void 0;
13
+ const quidproquo_config_aws_1 = require("quidproquo-config-aws");
14
+ const quidproquo_core_1 = require("quidproquo-core");
15
+ const s3Utils_1 = require("../../../logic/s3/s3Utils");
16
+ const utils_1 = require("./utils");
17
+ const getProcessFileCopy = (qpqConfig) => {
18
+ return (_a) => __awaiter(void 0, [_a], void 0, function* ({ sourceDrive, sourceFilepath, targetDrive, targetFilepath, scope }) {
19
+ try {
20
+ const sourceBucketName = (0, utils_1.resolveStorageDriveBucketName)(sourceDrive, qpqConfig);
21
+ const targetBucketName = (0, utils_1.resolveStorageDriveBucketName)(targetDrive, qpqConfig);
22
+ yield (0, s3Utils_1.copyFile)(sourceBucketName, (0, quidproquo_core_1.composeScopedFilePath)(scope, sourceFilepath), targetBucketName, (0, quidproquo_core_1.composeScopedFilePath)(scope, targetFilepath), quidproquo_config_aws_1.qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig));
23
+ return (0, quidproquo_core_1.actionResult)(void 0);
24
+ }
25
+ catch (error) {
26
+ return (0, quidproquo_core_1.actionResultErrorFromCaughtError)(error, {
27
+ AccessDenied: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileCopy.errorType.AccessDenied, 'Access denied copying file'),
28
+ NoSuchBucket: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileCopy.errorType.DriveNotFound, `Storage drive not found: ${sourceDrive} or ${targetDrive}`),
29
+ NoSuchKey: () => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileCopy.errorType.FileNotFound, `File not found: ${sourceFilepath}`),
30
+ StorageDriveNotFoundError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileCopy.errorType.DriveNotFound, error.message),
31
+ InvalidScopeError: (error) => (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.askFileCopy.errorType.InvalidScope, error.message),
32
+ });
33
+ }
34
+ });
35
+ };
36
+ exports.getFileCopyActionProcessor = (0, quidproquo_core_1.createActionProcessor)(quidproquo_core_1.askFileCopy, getProcessFileCopy);
37
+ //# sourceMappingURL=getFileCopyActionProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFileCopyActionProcessor.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/getFileCopyActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iEAA0D;AAC1D,qDAUyB;AAEzB,uDAAqD;AACrD,mCAAwD;AAExD,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAoC,EAAE;IACpF,OAAO,KAA4E,EAAE,4CAAvE,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE;QAC/E,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAA,qCAA6B,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAC/E,MAAM,gBAAgB,GAAG,IAAA,qCAA6B,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAE/E,MAAM,IAAA,kBAAQ,EACZ,gBAAgB,EAChB,IAAA,uCAAqB,EAAC,KAAK,EAAE,cAAc,CAAC,EAC5C,gBAAgB,EAChB,IAAA,uCAAqB,EAAC,KAAK,EAAE,cAAc,CAAC,EAC5C,yCAAiB,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAC9D,CAAC;YAEF,OAAO,IAAA,8BAAY,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,IAAA,kDAAgC,EAAC,KAAK,EAAE;gBAC7C,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,6BAAW,CAAC,SAAS,CAAC,YAAY,EAAE,4BAA4B,CAAC;gBACvG,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,6BAAW,CAAC,SAAS,CAAC,aAAa,EAAE,4BAA4B,WAAW,OAAO,WAAW,EAAE,CAAC;gBACvI,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,mCAAiB,EAAC,6BAAW,CAAC,SAAS,CAAC,YAAY,EAAE,mBAAmB,cAAc,EAAE,CAAC;gBAC3G,yBAAyB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,6BAAW,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC3G,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAiB,EAAC,6BAAW,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;aACnG,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,0BAA0B,GAAG,IAAA,uCAAqB,EAAC,6BAAW,EAAE,kBAAkB,CAAC,CAAC","sourcesContent":["import { qpqConfigAwsUtils } from 'quidproquo-config-aws';\nimport {\n actionResult,\n actionResultError,\n actionResultErrorFromCaughtError,\n askFileCopy,\n composeScopedFilePath,\n createActionProcessor,\n FileActionType,\n ProcessorFor,\n QPQConfig,\n} from 'quidproquo-core';\n\nimport { copyFile } from '../../../logic/s3/s3Utils';\nimport { resolveStorageDriveBucketName } from './utils';\n\nconst getProcessFileCopy = (qpqConfig: QPQConfig): ProcessorFor<typeof askFileCopy> => {\n return async ({ sourceDrive, sourceFilepath, targetDrive, targetFilepath, scope }) => {\n try {\n const sourceBucketName = resolveStorageDriveBucketName(sourceDrive, qpqConfig);\n const targetBucketName = resolveStorageDriveBucketName(targetDrive, qpqConfig);\n\n await copyFile(\n sourceBucketName,\n composeScopedFilePath(scope, sourceFilepath),\n targetBucketName,\n composeScopedFilePath(scope, targetFilepath),\n qpqConfigAwsUtils.getApplicationModuleDeployRegion(qpqConfig),\n );\n\n return actionResult(void 0);\n } catch (error: unknown) {\n return actionResultErrorFromCaughtError(error, {\n AccessDenied: () => actionResultError(askFileCopy.errorType.AccessDenied, 'Access denied copying file'),\n NoSuchBucket: () => actionResultError(askFileCopy.errorType.DriveNotFound, `Storage drive not found: ${sourceDrive} or ${targetDrive}`),\n NoSuchKey: () => actionResultError(askFileCopy.errorType.FileNotFound, `File not found: ${sourceFilepath}`),\n StorageDriveNotFoundError: (error) => actionResultError(askFileCopy.errorType.DriveNotFound, error.message),\n InvalidScopeError: (error) => actionResultError(askFileCopy.errorType.InvalidScope, error.message),\n });\n }\n };\n};\n\nexport const getFileCopyActionProcessor = createActionProcessor(askFileCopy, getProcessFileCopy);\n"]}
@@ -10,6 +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.getFileActionProcessor = void 0;
13
+ const getFileCopyActionProcessor_1 = require("./getFileCopyActionProcessor");
13
14
  const getFileDeleteActionProcessor_1 = require("./getFileDeleteActionProcessor");
14
15
  const getFileExistsActionProcessor_1 = require("./getFileExistsActionProcessor");
15
16
  const getFileGenerateTemporarySecureUrlActionProcessor_1 = require("./getFileGenerateTemporarySecureUrlActionProcessor");
@@ -24,7 +25,7 @@ const getFileWriteBinaryContentsActionProcessor_1 = require("./getFileWriteBinar
24
25
  const getFileWriteObjectJsonActionProcessor_1 = require("./getFileWriteObjectJsonActionProcessor");
25
26
  const getFileWriteTextContentsActionProcessor_1 = require("./getFileWriteTextContentsActionProcessor");
26
27
  const getFileActionProcessor = (qpqConfig, dynamicModuleLoader) => __awaiter(void 0, void 0, void 0, function* () {
27
- return (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (yield (0, getFileDeleteActionProcessor_1.getFileDeleteActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileExistsActionProcessor_1.getFileExistsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileGenerateTemporarySecureUrlActionProcessor_1.getFileGenerateTemporarySecureUrlActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileGenerateTemporaryUploadSecureUrlActionProcessor_1.getFileGenerateTemporaryUploadSecureUrlActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileIsColdStorageActionProcessor_1.getFileIsColdStorageActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileListDirectoryActionProcessor_1.getFileListDirectoryActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileReadTextContentsActionProcessor_1.getFileReadTextContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileReadObjectJsonActionProcessor_1.getFileReadObjectJsonActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileWriteTextContentsActionProcessor_1.getFileWriteTextContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileReadBinaryContentsActionProcessor_1.getFileReadBinaryContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileWriteObjectJsonActionProcessor_1.getFileWriteObjectJsonActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileWriteBinaryContentsActionProcessor_1.getFileWriteBinaryContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileStreamOpenActionProcessor_1.getFileStreamOpenActionProcessor)(qpqConfig, dynamicModuleLoader))));
28
+ return (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (yield (0, getFileCopyActionProcessor_1.getFileCopyActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileDeleteActionProcessor_1.getFileDeleteActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileExistsActionProcessor_1.getFileExistsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileGenerateTemporarySecureUrlActionProcessor_1.getFileGenerateTemporarySecureUrlActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileGenerateTemporaryUploadSecureUrlActionProcessor_1.getFileGenerateTemporaryUploadSecureUrlActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileIsColdStorageActionProcessor_1.getFileIsColdStorageActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileListDirectoryActionProcessor_1.getFileListDirectoryActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileReadTextContentsActionProcessor_1.getFileReadTextContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileReadObjectJsonActionProcessor_1.getFileReadObjectJsonActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileWriteTextContentsActionProcessor_1.getFileWriteTextContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileReadBinaryContentsActionProcessor_1.getFileReadBinaryContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileWriteObjectJsonActionProcessor_1.getFileWriteObjectJsonActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileWriteBinaryContentsActionProcessor_1.getFileWriteBinaryContentsActionProcessor)(qpqConfig, dynamicModuleLoader))), (yield (0, getFileStreamOpenActionProcessor_1.getFileStreamOpenActionProcessor)(qpqConfig, dynamicModuleLoader))));
28
29
  });
29
30
  exports.getFileActionProcessor = getFileActionProcessor;
30
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,iFAA8E;AAC9E,iFAA8E;AAC9E,yHAAsH;AACtH,qIAAkI;AAClI,+FAA4F;AAC5F,+FAA4F;AAC5F,yGAAsG;AACtG,iGAA8F;AAC9F,qGAAkG;AAClG,yFAAsF;AACtF,2GAAwG;AACxG,mGAAgG;AAChG,uGAAoG;AAE7F,MAAM,sBAAsB,GAAgC,CACjE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,2LAC9B,CAAC,MAAM,IAAA,2DAA4B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACpE,CAAC,MAAM,IAAA,2DAA4B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACpE,CAAC,MAAM,IAAA,mGAAgD,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACxF,CAAC,MAAM,IAAA,+GAAsD,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC9F,CAAC,MAAM,IAAA,yEAAmC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC3E,CAAC,MAAM,IAAA,yEAAmC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC3E,CAAC,MAAM,IAAA,+EAAsC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC9E,CAAC,MAAM,IAAA,2EAAoC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC5E,CAAC,MAAM,IAAA,iFAAuC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC/E,CAAC,MAAM,IAAA,mFAAwC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAChF,CAAC,MAAM,IAAA,6EAAqC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC7E,CAAC,MAAM,IAAA,qFAAyC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACjF,CAAC,MAAM,IAAA,mEAAgC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC3E,CAAA;EAAA,CAAC;AAjBU,QAAA,sBAAsB,0BAiBhC","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getFileDeleteActionProcessor } from './getFileDeleteActionProcessor';\nimport { getFileExistsActionProcessor } from './getFileExistsActionProcessor';\nimport { getFileGenerateTemporarySecureUrlActionProcessor } from './getFileGenerateTemporarySecureUrlActionProcessor';\nimport { getFileGenerateTemporaryUploadSecureUrlActionProcessor } from './getFileGenerateTemporaryUploadSecureUrlActionProcessor';\nimport { getFileIsColdStorageActionProcessor } from './getFileIsColdStorageActionProcessor';\nimport { getFileListDirectoryActionProcessor } from './getFileListDirectoryActionProcessor';\nimport { getFileReadBinaryContentsActionProcessor } from './getFileReadBinaryContentsActionProcessor';\nimport { getFileReadObjectJsonActionProcessor } from './getFileReadObjectJsonActionProcessor';\nimport { getFileReadTextContentsActionProcessor } from './getFileReadTextContentsActionProcessor';\nimport { getFileStreamOpenActionProcessor } from './getFileStreamOpenActionProcessor';\nimport { getFileWriteBinaryContentsActionProcessor } from './getFileWriteBinaryContentsActionProcessor';\nimport { getFileWriteObjectJsonActionProcessor } from './getFileWriteObjectJsonActionProcessor';\nimport { getFileWriteTextContentsActionProcessor } from './getFileWriteTextContentsActionProcessor';\n\nexport const getFileActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getFileDeleteActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileExistsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileGenerateTemporarySecureUrlActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileGenerateTemporaryUploadSecureUrlActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileIsColdStorageActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileListDirectoryActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadTextContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadObjectJsonActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteTextContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadBinaryContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteObjectJsonActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteBinaryContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileStreamOpenActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/getActionProcessor/core/file/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,6EAA0E;AAC1E,iFAA8E;AAC9E,iFAA8E;AAC9E,yHAAsH;AACtH,qIAAkI;AAClI,+FAA4F;AAC5F,+FAA4F;AAC5F,yGAAsG;AACtG,iGAA8F;AAC9F,qGAAkG;AAClG,yFAAsF;AACtF,2GAAwG;AACxG,mGAAgG;AAChG,uGAAoG;AAE7F,MAAM,sBAAsB,GAAgC,CACjE,SAAoB,EACpB,mBAAwC,EACV,EAAE;IAAC,OAAA,yMAC9B,CAAC,MAAM,IAAA,uDAA0B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAClE,CAAC,MAAM,IAAA,2DAA4B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACpE,CAAC,MAAM,IAAA,2DAA4B,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACpE,CAAC,MAAM,IAAA,mGAAgD,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACxF,CAAC,MAAM,IAAA,+GAAsD,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC9F,CAAC,MAAM,IAAA,yEAAmC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC3E,CAAC,MAAM,IAAA,yEAAmC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC3E,CAAC,MAAM,IAAA,+EAAsC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC9E,CAAC,MAAM,IAAA,2EAAoC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC5E,CAAC,MAAM,IAAA,iFAAuC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC/E,CAAC,MAAM,IAAA,mFAAwC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAChF,CAAC,MAAM,IAAA,6EAAqC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GAC7E,CAAC,MAAM,IAAA,qFAAyC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,GACjF,CAAC,MAAM,IAAA,mEAAgC,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,EAC3E,CAAA;EAAA,CAAC;AAlBU,QAAA,sBAAsB,0BAkBhC","sourcesContent":["import { ActionProcessorList, ActionProcessorListResolver, DynamicModuleLoader, QPQConfig } from 'quidproquo-core';\n\nimport { getFileCopyActionProcessor } from './getFileCopyActionProcessor';\nimport { getFileDeleteActionProcessor } from './getFileDeleteActionProcessor';\nimport { getFileExistsActionProcessor } from './getFileExistsActionProcessor';\nimport { getFileGenerateTemporarySecureUrlActionProcessor } from './getFileGenerateTemporarySecureUrlActionProcessor';\nimport { getFileGenerateTemporaryUploadSecureUrlActionProcessor } from './getFileGenerateTemporaryUploadSecureUrlActionProcessor';\nimport { getFileIsColdStorageActionProcessor } from './getFileIsColdStorageActionProcessor';\nimport { getFileListDirectoryActionProcessor } from './getFileListDirectoryActionProcessor';\nimport { getFileReadBinaryContentsActionProcessor } from './getFileReadBinaryContentsActionProcessor';\nimport { getFileReadObjectJsonActionProcessor } from './getFileReadObjectJsonActionProcessor';\nimport { getFileReadTextContentsActionProcessor } from './getFileReadTextContentsActionProcessor';\nimport { getFileStreamOpenActionProcessor } from './getFileStreamOpenActionProcessor';\nimport { getFileWriteBinaryContentsActionProcessor } from './getFileWriteBinaryContentsActionProcessor';\nimport { getFileWriteObjectJsonActionProcessor } from './getFileWriteObjectJsonActionProcessor';\nimport { getFileWriteTextContentsActionProcessor } from './getFileWriteTextContentsActionProcessor';\n\nexport const getFileActionProcessor: ActionProcessorListResolver = async (\n qpqConfig: QPQConfig,\n dynamicModuleLoader: DynamicModuleLoader,\n): Promise<ActionProcessorList> => ({\n ...(await getFileCopyActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileDeleteActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileExistsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileGenerateTemporarySecureUrlActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileGenerateTemporaryUploadSecureUrlActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileIsColdStorageActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileListDirectoryActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadTextContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadObjectJsonActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteTextContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileReadBinaryContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteObjectJsonActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileWriteBinaryContentsActionProcessor(qpqConfig, dynamicModuleLoader)),\n ...(await getFileStreamOpenActionProcessor(qpqConfig, dynamicModuleLoader)),\n});\n"]}
@@ -0,0 +1,8 @@
1
+ import { ActionProcessorList } from 'quidproquo-core';
2
+ import { Context } from 'aws-lambda';
3
+ /**
4
+ * Overrides the js "unlimited" GetRuntimeRemainingTime processor with the real lambda
5
+ * deadline. The context is per invocation, so this is built inside the handler and
6
+ * spread over the shared processor list on every invoke.
7
+ */
8
+ export declare const getLambdaRuntimeRemainingTimeActionProcessor: (context: Context) => ActionProcessorList;
@@ -0,0 +1,26 @@
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.getLambdaRuntimeRemainingTimeActionProcessor = void 0;
13
+ const quidproquo_core_1 = require("quidproquo-core");
14
+ /**
15
+ * Overrides the js "unlimited" GetRuntimeRemainingTime processor with the real lambda
16
+ * deadline. The context is per invocation, so this is built inside the handler and
17
+ * spread over the shared processor list on every invoke.
18
+ */
19
+ const getLambdaRuntimeRemainingTimeActionProcessor = (context) => {
20
+ const processGetRuntimeRemainingTime = () => __awaiter(void 0, void 0, void 0, function* () { return (0, quidproquo_core_1.actionResult)(context.getRemainingTimeInMillis()); });
21
+ return {
22
+ [quidproquo_core_1.SystemActionType.GetRuntimeRemainingTime]: processGetRuntimeRemainingTime,
23
+ };
24
+ };
25
+ exports.getLambdaRuntimeRemainingTimeActionProcessor = getLambdaRuntimeRemainingTimeActionProcessor;
26
+ //# sourceMappingURL=getLambdaRuntimeRemainingTimeActionProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLambdaRuntimeRemainingTimeActionProcessor.js","sourceRoot":"","sources":["../../../../src/lambdaHandlers/helpers/getLambdaRuntimeRemainingTimeActionProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAgI;AAIhI;;;;GAIG;AACI,MAAM,4CAA4C,GAAG,CAAC,OAAgB,EAAuB,EAAE;IACpG,MAAM,8BAA8B,GAAoD,GAAS,EAAE,kDACjG,OAAA,IAAA,8BAAY,EAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAA,GAAA,CAAC;IAEnD,OAAO;QACL,CAAC,kCAAgB,CAAC,uBAAuB,CAAC,EAAE,8BAA8B;KAC3E,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,4CAA4C,gDAOvD","sourcesContent":["import { ActionProcessorList, actionResult, askGetRuntimeRemainingTime, ProcessorFor, SystemActionType } from 'quidproquo-core';\n\nimport { Context } from 'aws-lambda';\n\n/**\n * Overrides the js \"unlimited\" GetRuntimeRemainingTime processor with the real lambda\n * deadline. The context is per invocation, so this is built inside the handler and\n * spread over the shared processor list on every invoke.\n */\nexport const getLambdaRuntimeRemainingTimeActionProcessor = (context: Context): ActionProcessorList => {\n const processGetRuntimeRemainingTime: ProcessorFor<typeof askGetRuntimeRemainingTime> = async () =>\n actionResult(context.getRemainingTimeInMillis());\n\n return {\n [SystemActionType.GetRuntimeRemainingTime]: processGetRuntimeRemainingTime,\n };\n};\n"]}