@wildo-ai/saas-backend-lib 1.1.1 → 1.1.3

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 (972) hide show
  1. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
  2. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
  3. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
  4. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
  5. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
  6. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
  7. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
  8. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
  9. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
  10. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
  11. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
  12. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
  13. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +199 -0
  14. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
  15. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
  16. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
  17. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
  18. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
  19. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +14 -3
  20. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
  21. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +138 -24
  22. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  23. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +3 -1
  24. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
  25. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +8 -3
  26. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
  27. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts +11 -0
  28. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
  29. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js +11 -2
  30. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js.map +1 -1
  31. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
  32. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  33. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +207 -21
  34. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  35. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
  36. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  37. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +174 -26
  38. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  39. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +48 -4
  40. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  41. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +102 -30
  42. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
  44. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
  45. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
  46. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
  47. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
  48. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  49. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
  50. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  51. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
  52. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js +16 -0
  53. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js.map +1 -1
  54. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts +20 -6
  55. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  56. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +96 -32
  57. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  58. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts +3 -1
  59. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
  60. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js +32 -7
  61. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js.map +1 -1
  62. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts +8 -5
  63. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
  64. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.js.map +1 -1
  65. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +80 -0
  66. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +298 -23
  68. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  69. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +71 -1
  70. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  71. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +85 -5
  72. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  73. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +21 -0
  74. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  75. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +146 -4
  76. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  77. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
  78. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  79. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  80. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts +3 -26
  81. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
  82. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js +3 -68
  83. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js.map +1 -1
  84. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  85. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
  86. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  87. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
  88. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  89. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
  90. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  91. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
  92. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  93. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +533 -43
  94. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  95. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
  96. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  97. package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
  98. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  99. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
  100. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
  101. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
  102. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
  103. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
  104. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
  105. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
  106. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
  107. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
  108. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
  109. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
  110. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
  111. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
  112. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
  113. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
  114. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
  115. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
  116. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  117. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
  118. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  119. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
  120. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  121. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
  122. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  123. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
  124. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
  125. package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
  126. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
  127. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
  128. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  129. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
  130. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  131. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  132. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +54 -13
  133. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  134. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +38 -1
  135. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  136. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +67 -2
  137. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  138. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
  139. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  140. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
  141. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  142. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
  143. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  144. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
  145. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  146. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  147. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
  148. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  149. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +18 -1
  150. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  151. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +106 -2
  152. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  153. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
  154. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
  155. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
  156. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
  157. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
  158. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  159. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +260 -26
  160. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  161. package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
  162. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  163. package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
  164. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  165. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
  166. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  167. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +263 -13
  168. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  169. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +376 -58
  170. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  171. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +264 -7
  172. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  173. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +414 -5
  174. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  175. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  176. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
  177. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  178. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +16 -0
  179. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -0
  180. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +140 -0
  181. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -0
  182. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
  183. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  184. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +65 -6
  185. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  186. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
  187. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
  188. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
  189. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
  190. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  191. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +45 -0
  192. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  193. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
  194. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  195. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
  196. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  197. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
  198. package/dist/esm/config/custom/application-config-controller.backend.service.js +7 -1
  199. package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -1
  200. package/dist/esm/config/models/app-config.backend.schemas.d.ts +146 -46
  201. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  202. package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
  203. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  204. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
  205. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  206. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
  207. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  208. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
  209. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  210. package/dist/esm/config/services/app-configuration-loader.backend.service.js +68 -76
  211. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  212. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  213. package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
  214. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  215. package/dist/esm/config/services/app-configuration.backend.utils.d.ts +43 -1
  216. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  217. package/dist/esm/config/services/app-configuration.backend.utils.js +52 -3
  218. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  219. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +25 -0
  220. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  221. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +41 -1
  222. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  223. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts +2 -2
  224. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js +2 -2
  225. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js.map +1 -1
  226. package/dist/esm/databases/models/filter.backend.schemas.js +2 -2
  227. package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -1
  228. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
  229. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +20 -1
  230. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -1
  231. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  232. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
  233. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  234. package/dist/esm/databases/services/redis.service.d.ts +27 -0
  235. package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
  236. package/dist/esm/databases/services/redis.service.js +29 -0
  237. package/dist/esm/databases/services/redis.service.js.map +1 -1
  238. package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
  239. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  240. package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
  241. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  242. package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
  243. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  244. package/dist/esm/errors/services/error-handler.backend.service.js +134 -8
  245. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  246. package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
  247. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  248. package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
  249. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  250. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
  251. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  252. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
  253. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  254. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
  255. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  256. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
  257. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  258. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts +41 -0
  259. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -0
  260. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js +40 -0
  261. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js.map +1 -0
  262. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts +64 -0
  263. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -0
  264. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js +193 -0
  265. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js.map +1 -0
  266. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +72 -4
  267. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  268. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +60 -19
  269. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  270. package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
  271. package/dist/esm/external-data/external-data-transform.backend.js +7 -1
  272. package/dist/esm/external-data/external-data-transform.backend.js.map +1 -1
  273. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts +2 -0
  274. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
  275. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js +13 -0
  276. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js.map +1 -1
  277. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
  278. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  279. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  280. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +256 -0
  281. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
  282. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
  283. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
  284. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
  285. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
  286. package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
  287. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
  288. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
  289. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
  290. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
  291. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
  292. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
  293. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
  294. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
  295. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
  296. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
  297. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  298. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
  299. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  300. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
  301. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
  302. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
  303. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
  304. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
  305. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  306. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
  307. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  308. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  309. package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
  310. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  311. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  312. package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
  313. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  314. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +306 -7
  315. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  316. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +539 -45
  317. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  318. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  319. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
  320. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  321. package/dist/esm/files/controllers/file.controller.d.ts +24 -1
  322. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  323. package/dist/esm/files/controllers/file.controller.js +83 -11
  324. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  325. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts +17 -0
  326. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -0
  327. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js +1 -0
  328. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -0
  329. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +5 -1
  330. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  331. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +76 -13
  332. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  333. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +18 -0
  334. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
  335. package/dist/esm/files/services/file-operation-handler.backend.service.js +36 -28
  336. package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
  337. package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
  338. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  339. package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
  340. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  341. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
  342. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  343. package/dist/esm/files/services/file-text-extraction.backend.service.js +167 -8
  344. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  345. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +214 -0
  346. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -0
  347. package/dist/esm/files/services/file-upload-grant.backend.service.js +566 -0
  348. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -0
  349. package/dist/esm/files/services/files.backend.service.d.ts +87 -0
  350. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  351. package/dist/esm/files/services/files.backend.service.js +252 -19
  352. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  353. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
  354. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
  355. package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
  356. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
  357. package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
  358. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  359. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  360. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
  361. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  362. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
  363. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  364. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  365. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
  366. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  367. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  368. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
  369. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  370. package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
  371. package/dist/esm/files/utils/file-uploader.utils.js +12 -0
  372. package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
  373. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
  374. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
  375. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
  376. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
  377. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
  378. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  379. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
  380. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  381. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  382. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
  383. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  384. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
  385. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  386. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
  387. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  388. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
  389. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  390. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +200 -44
  391. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  392. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
  393. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  394. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
  395. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  396. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
  397. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  398. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
  399. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  400. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
  401. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  402. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  403. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
  404. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  405. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
  406. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  407. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
  408. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  409. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
  410. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  411. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
  412. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  413. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  414. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +88 -8
  415. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  416. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +333 -31
  417. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  418. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  419. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
  420. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  421. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
  422. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
  423. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
  424. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
  425. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  426. package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
  427. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  428. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +107 -1
  429. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  430. package/dist/esm/flows-actors/services/agents.backend.service.js +519 -56
  431. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  432. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -1
  433. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  434. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +79 -16
  435. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  436. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
  437. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  438. package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
  439. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  440. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  441. package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
  442. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  443. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  444. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
  445. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  446. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
  447. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
  448. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
  449. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
  450. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
  451. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  452. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
  453. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  454. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts +151 -41
  455. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  456. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +308 -143
  457. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  458. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
  459. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  460. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
  461. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  462. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  463. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  464. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
  465. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  466. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
  467. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  468. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
  469. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
  470. package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
  471. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
  472. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
  473. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  474. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
  475. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  476. package/dist/esm/index.d.ts +15 -5
  477. package/dist/esm/index.d.ts.map +1 -1
  478. package/dist/esm/index.js +45 -5
  479. package/dist/esm/index.js.map +1 -1
  480. package/dist/esm/inject/models/container.d.ts.map +1 -1
  481. package/dist/esm/inject/models/container.js +82 -10
  482. package/dist/esm/inject/models/container.js.map +1 -1
  483. package/dist/esm/inject/models/service-types.d.ts +20 -3
  484. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  485. package/dist/esm/inject/models/service-types.js +21 -3
  486. package/dist/esm/inject/models/service-types.js.map +1 -1
  487. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  488. package/dist/esm/mcp/controllers/mcp.controller.js +32 -4
  489. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  490. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts +34 -0
  491. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
  492. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js +42 -0
  493. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
  494. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +84 -1
  495. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  496. package/dist/esm/mcp/services/mcp-server.backend.service.js +235 -11
  497. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  498. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts +64 -2
  499. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  500. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +152 -6
  501. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  502. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  503. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
  504. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  505. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
  506. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
  507. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
  508. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
  509. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
  510. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  511. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
  512. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  513. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
  514. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  515. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  516. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
  517. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  518. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
  519. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  520. package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
  521. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  522. package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
  523. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  524. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
  525. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
  526. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
  527. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
  528. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
  529. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
  530. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
  531. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
  532. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
  533. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  534. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  535. package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
  536. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  537. package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
  538. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  539. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
  540. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
  541. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
  542. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
  543. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
  544. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
  545. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
  546. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
  547. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
  548. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
  549. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
  550. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
  551. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
  552. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  553. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
  554. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  555. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
  556. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
  557. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
  558. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
  559. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  560. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
  561. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  562. package/dist/esm/notifications/email/services/email.backend.service.d.ts +60 -4
  563. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  564. package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
  565. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  566. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
  567. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  568. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  569. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
  570. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  571. package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
  572. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  573. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +108 -13
  574. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  575. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +432 -101
  576. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  577. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
  578. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  579. package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
  580. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  581. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
  582. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  583. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
  584. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  585. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
  586. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  587. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +54 -7
  588. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  589. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts +5 -5
  590. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
  591. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js +14 -13
  592. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js.map +1 -1
  593. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts +2 -1
  594. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  595. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +18 -8
  596. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  597. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  598. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +20 -18
  599. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  600. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
  601. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  602. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
  603. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  604. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
  605. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
  606. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  607. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  608. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
  609. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  610. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
  611. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js +4 -1
  612. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js.map +1 -1
  613. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
  614. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
  615. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
  616. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
  617. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
  618. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
  619. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
  620. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
  621. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
  622. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
  623. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
  624. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
  625. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
  626. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
  627. package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
  628. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
  629. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
  630. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  631. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
  632. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  633. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
  634. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  635. package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
  636. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  637. package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
  638. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  639. package/dist/esm/queue/job-consumer.backend.service.js +1 -4
  640. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  641. package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
  642. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  643. package/dist/esm/queue/job-executor.backend.service.js +1 -4
  644. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  645. package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
  646. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  647. package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
  648. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  649. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
  650. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  651. package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
  652. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  653. package/dist/esm/queue/queue.backend.service.d.ts +3 -3
  654. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  655. package/dist/esm/queue/queue.backend.service.js +26 -4
  656. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  657. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
  658. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  659. package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
  660. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  661. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
  662. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  663. package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
  664. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  665. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
  666. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  667. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
  668. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  669. package/dist/esm/requests/service/websocket.service.d.ts +9 -0
  670. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  671. package/dist/esm/requests/service/websocket.service.js +88 -15
  672. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  673. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  674. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
  675. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  676. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  677. package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
  678. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  679. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  680. package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
  681. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  682. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
  683. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  684. package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
  685. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  686. package/dist/esm/resources/services/resource-id.backend.service.js +3 -3
  687. package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -1
  688. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
  689. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  690. package/dist/esm/resources/services/resources-registry.backend.service.js +91 -7
  691. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  692. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
  693. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  694. package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
  695. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  696. package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
  697. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  698. package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
  699. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  700. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
  701. package/dist/esm/runtime/services/execution-context-creator.backend.service.js +13 -7
  702. package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
  703. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
  704. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  705. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  706. package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
  707. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  708. package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
  709. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  710. package/dist/esm/runtime/services/start-application.backend.service.d.ts +47 -1
  711. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  712. package/dist/esm/runtime/services/start-application.backend.service.js +343 -77
  713. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  714. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
  715. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  716. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
  717. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  718. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
  719. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  720. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
  721. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  722. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  723. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -4
  724. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  725. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
  726. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  727. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
  728. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  729. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
  730. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  731. package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
  732. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  733. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +3 -23
  734. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
  735. package/dist/esm/security/authentications/models/jwt.backend.schemas.js +20 -45
  736. package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -1
  737. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
  738. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  739. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  740. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
  741. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  742. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
  743. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  744. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
  745. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  746. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
  747. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  748. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
  749. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  750. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
  751. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  752. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
  753. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  754. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
  755. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  756. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
  757. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  758. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +377 -53
  759. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  760. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +9 -1
  761. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  762. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +77 -2
  763. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  764. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
  765. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +5 -3
  766. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -1
  767. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
  768. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  769. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
  770. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  771. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  772. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
  773. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  774. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  775. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
  776. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  777. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
  778. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  779. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
  780. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  781. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +41 -1
  782. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  783. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +87 -4
  784. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  785. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
  786. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  787. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
  788. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  789. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
  790. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  791. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
  792. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  793. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  794. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
  795. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  796. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
  797. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
  798. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
  799. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
  800. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
  801. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  802. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
  803. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  804. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
  805. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  806. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
  807. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  808. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
  809. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  810. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
  811. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  812. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  813. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
  814. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  815. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  816. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
  817. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  818. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
  819. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  820. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
  821. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  822. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
  823. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  824. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
  825. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  826. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
  827. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
  828. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
  829. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
  830. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
  831. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js +24 -1
  832. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js.map +1 -1
  833. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
  834. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  835. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
  836. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  837. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  838. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +77 -3
  839. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  840. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts +117 -0
  841. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -0
  842. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js +104 -0
  843. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js.map +1 -0
  844. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
  845. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  846. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
  847. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  848. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
  849. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
  850. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
  851. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
  852. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
  853. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  854. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +142 -5
  855. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  856. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +175 -14
  857. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  858. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +385 -49
  859. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  860. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
  861. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  862. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
  863. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  864. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
  865. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
  866. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
  867. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
  868. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
  869. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
  870. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
  871. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
  872. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
  873. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
  874. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
  875. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
  876. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
  877. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
  878. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
  879. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
  880. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
  881. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
  882. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
  883. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
  884. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
  885. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  886. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
  887. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
  888. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
  889. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
  890. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
  891. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
  892. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
  893. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
  894. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
  895. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
  896. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
  897. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
  898. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
  899. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
  900. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
  901. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
  902. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
  903. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
  904. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
  905. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  906. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
  907. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
  908. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
  909. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
  910. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
  911. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
  912. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
  913. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
  914. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
  915. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
  916. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
  917. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
  918. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
  919. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
  920. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +18 -1
  921. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
  922. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +110 -74
  923. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -1
  924. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts +22 -0
  925. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -0
  926. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js +22 -0
  927. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js.map +1 -0
  928. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +17 -3
  929. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
  930. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +12 -0
  931. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -1
  932. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +41 -3
  933. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  934. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +83 -20
  935. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  936. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
  937. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  938. package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
  939. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  940. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
  941. package/dist/esm/security/jwt/services/jwt.backend.service.js +1 -18
  942. package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -1
  943. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
  944. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  945. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
  946. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  947. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
  948. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  949. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
  950. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  951. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  952. package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
  953. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  954. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
  955. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  956. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
  957. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  958. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
  959. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  960. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
  961. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  962. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
  963. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
  964. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
  965. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
  966. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
  967. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
  968. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
  969. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
  970. package/dist/tsconfig.build.tsbuildinfo +1 -1
  971. package/package.json +17 -9
  972. package/dist/esm/.builder.pid +0 -9
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-template-sandbox.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-sandbox.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Email Template Sandbox Backend Service\n *\n * Provides a secure execution environment for running compiled email templates.\n * Uses Node.js VM with restricted globals and a controlled require function.\n */\n\nimport { injectable, inject } from 'inversify';\nimport * as vm from 'vm';\nimport { ErrorType, ErrorCustomMessageReference } from '@wildo-ai/saas-models';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TYPES\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface SandboxExecutionResult {\n success: boolean;\n result?: unknown;\n error?: string;\n durationMs: number;\n}\n\nexport interface SandboxOptions {\n /** Timeout in milliseconds (default: 5000) */\n timeout?: number;\n /** Additional context to pass to the template */\n additionalContext?: Record<string, unknown>;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CONSTANTS\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_TIMEOUT_MS = 5000;\n\n/**\n * Allowed modules that can be required in the sandbox\n */\nconst ALLOWED_MODULES = new Set([\n 'react',\n 'react-dom',\n '@react-email/components',\n '@react-email/render',\n '@wildo-ai/email-components',\n]);\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SERVICE\n// ─────────────────────────────────────────────────────────────────────────────\n\n@injectable()\nexport class EmailTemplateSandboxBackendService {\n private emailComponentsModule: unknown | null = null;\n\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private readonly errorBuilder: ErrorBuilderBackendService,\n ) {\n this.logDebug = this.logger.debugByType('EmailTemplateSandboxBackendService');\n this.logger.setDebugTypeLogging('EmailTemplateSandboxBackendService', false);\n }\n\n /**\n * Execute a compiled module in the sandbox\n *\n * @param compiledCode - The compiled JavaScript code\n * @param context - The context to pass to the template\n * @param options - Execution options\n * @returns Execution result with the rendered output or error\n */\n async execute(\n compiledCode: string,\n context: Record<string, unknown>,\n options: SandboxOptions = {}\n ): Promise<SandboxExecutionResult> {\n const startTime = Date.now();\n const timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;\n\n this.logDebug('Executing email template in sandbox', { timeout });\n\n try {\n // Create sandbox require function\n const sandboxRequire = this.createSandboxRequire();\n\n // Create sandbox globals\n const sandbox: vm.Context = {\n module: { exports: {} },\n exports: {},\n require: sandboxRequire,\n console: this.createSafeConsole(),\n // Pass context values\n __context: context,\n __brand: context.__brand || {},\n // Provide Buffer for any serialization needs\n Buffer: {\n from: Buffer.from.bind(Buffer),\n isBuffer: Buffer.isBuffer.bind(Buffer),\n },\n };\n\n // Add additional context if provided\n if (options.additionalContext) {\n Object.assign(sandbox, options.additionalContext);\n }\n\n // Create VM context\n vm.createContext(sandbox);\n\n // Wrap the code to capture the default export\n const wrappedCode = `\n (function(module, exports, require, __context, __brand) {\n ${compiledCode}\n return module.exports.default || module.exports;\n })(module, exports, require, __context, __brand);\n `;\n\n // Execute with timeout\n const script = new vm.Script(wrappedCode, {\n filename: 'email-template.js',\n });\n\n const result = script.runInContext(sandbox, {\n timeout,\n displayErrors: true,\n });\n\n const durationMs = Date.now() - startTime;\n this.logDebug('Sandbox execution completed', { durationMs });\n\n return {\n success: true,\n result,\n durationMs,\n };\n } catch (err) {\n const error = err as Error;\n const durationMs = Date.now() - startTime;\n\n this.logger.error('Sandbox execution failed', {\n error: error.message,\n durationMs,\n isTimeout: error.message.includes('Script execution timed out'),\n });\n\n return {\n success: false,\n error: error.message,\n durationMs,\n };\n }\n }\n\n /**\n * Create a safe require function that only allows specific modules\n */\n private createSandboxRequire(): (moduleName: string) => unknown {\n return (moduleName: string): unknown => {\n // Handle @wildo-ai/email-components specially - load our internal module\n if (moduleName === '@wildo-ai/email-components') {\n return this.getEmailComponentsModule();\n }\n\n // Check if module is in allowlist\n if (!ALLOWED_MODULES.has(moduleName)) {\n throw this.errorBuilder.buildError(ErrorType.VALIDATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.SERVICE_RESOURCE_VALIDATION_FAILED,\n context: { moduleName }, // diagnostic (log-only)\n });\n }\n\n // For allowed modules, use the real require\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n return require(moduleName);\n };\n }\n\n /**\n * Get the email components module (lazy loaded)\n * Uses multiple resolution strategies for robustness across different build outputs\n */\n private getEmailComponentsModule(): unknown {\n if (!this.emailComponentsModule) {\n // Load our internal email components with multiple resolution strategies\n const resolutionStrategies = [\n // Strategy 1: Relative path from current file\n () => require('../components/email-components'),\n // Strategy 2: Absolute path using __dirname\n () => require(require('path').resolve(__dirname, '../components/email-components')),\n // Strategy 3: Try dist/esm path\n () => require(require('path').resolve(__dirname, '../../dist/esm/notifications/email/components/email-components')),\n // Strategy 4: Try dist/cjs path\n () => require(require('path').resolve(__dirname, '../../dist/cjs/notifications/email/components/email-components')),\n ];\n\n for (const strategy of resolutionStrategies) {\n try {\n this.emailComponentsModule = strategy();\n this.logDebug('Email components module loaded successfully');\n return this.emailComponentsModule;\n } catch {\n // Try next strategy\n }\n }\n\n this.logger.error('Failed to load email components module with any strategy');\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: { message: 'Email components module not available' },\n });\n }\n return this.emailComponentsModule;\n }\n\n /**\n * Create a safe console that logs through our logger\n */\n private createSafeConsole(): Partial<Console> {\n return {\n log: (...args: unknown[]) => {\n this.logger.debug('Template console.log', { args });\n },\n warn: (...args: unknown[]) => {\n this.logger.warn('Template console.warn', { args });\n },\n error: (...args: unknown[]) => {\n this.logger.error('Template console.error', { args });\n },\n info: (...args: unknown[]) => {\n this.logger.info('Template console.info', { args });\n },\n debug: (...args: unknown[]) => {\n this.logger.debug('Template console.debug', { args });\n },\n };\n }\n\n /**\n * Check if a module is allowed in the sandbox\n */\n isModuleAllowed(moduleName: string): boolean {\n return ALLOWED_MODULES.has(moduleName);\n }\n\n /**\n * Get list of allowed modules (for LLM context)\n */\n getAllowedModules(): string[] {\n return Array.from(ALLOWED_MODULES);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"email-template-validator.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-validator.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAMlG,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,EAYlD,CAAC;AA0CF,qBACa,oCAAoC;IAIV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAH5D,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAG3B,MAAM,EAAE,aAAa;IAM3E;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyC/D;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;OAEG;YACW,WAAW;IAwCzB;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;CAG9B"}
1
+ {"version":3,"file":"email-template-validator.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-validator.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAMlG,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,EAqBlD,CAAC;AA0CF,qBACa,oCAAoC;IAIV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAH5D,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;gBAG3B,MAAM,EAAE,aAAa;IAM3E;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyC/D;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;OAEG;YACW,WAAW;IAwCzB;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;CAG9B"}
@@ -32,7 +32,16 @@ export const EMAIL_TEMPLATE_ALLOWED_IMPORTS = [
32
32
  // React Email core
33
33
  '@react-email/components',
34
34
  '@react-email/render',
35
- // Our predefined email components
35
+ // Our predefined email components. Exported from the package root
36
+ // (`saas-backend-lib/src/index.ts`) so an application's authored template can import it —
37
+ // and it is why `InversifyContainer` is aliased there, to avoid the clash with React Email's
38
+ // own `Container` re-exported from this module.
39
+ //
40
+ // NOTE (#475, 2026-09-08): the email-template SANDBOX used to be the thing that resolved this
41
+ // specifier at runtime, and it was deleted as unreachable. Permitting the import here is
42
+ // therefore no longer backed by a loader inside the engine; an application template importing
43
+ // it resolves through its own bundler against the package root export. Keep the entry — the
44
+ // export is public API — but do not read it as evidence that the engine loads the module.
36
45
  '@wildo-ai/email-components',
37
46
  // App-owned runtime helpers used by the filesystem email template pattern
38
47
  '@wildo-ai/saas-backend-lib',
@@ -1 +1 @@
1
- {"version":3,"file":"email-template-validator.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-validator.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Email Template Validator Backend Service\n *\n * Validates TSX email templates for security and correctness.\n * Checks for:\n * - Import allowlist compliance\n * - Forbidden patterns (Node.js APIs, dangerous code)\n * - Syntax validation via ESBuild\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TYPES\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface TsxValidationResult {\n valid: boolean;\n errors: string[];\n warnings: string[];\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CONSTANTS\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Allowed import paths for generated email templates\n * Templates can only import from these modules\n */\nexport const EMAIL_TEMPLATE_ALLOWED_IMPORTS: string[] = [\n // React Email core\n '@react-email/components',\n '@react-email/render',\n // Our predefined email components\n '@wildo-ai/email-components',\n // App-owned runtime helpers used by the filesystem email template pattern\n '@wildo-ai/saas-backend-lib',\n '~backend-api/engine/email/components',\n './labels',\n // React (limited)\n 'react',\n];\n\n/**\n * Forbidden patterns that indicate potentially dangerous code\n */\nconst FORBIDDEN_PATTERNS: Array<{ pattern: RegExp; message: string }> = [\n // Node.js APIs\n { pattern: /require\\s*\\(/g, message: 'Dynamic require() is not allowed' },\n { pattern: /import\\s*\\(/g, message: 'Dynamic import() is not allowed' },\n { pattern: /process\\./g, message: 'Access to process is not allowed' },\n { pattern: /global\\./g, message: 'Access to global is not allowed' },\n { pattern: /globalThis\\./g, message: 'Access to globalThis is not allowed' },\n { pattern: /__dirname/g, message: '__dirname is not allowed' },\n { pattern: /__filename/g, message: '__filename is not allowed' },\n\n // File system\n { pattern: /\\bfs\\b/g, message: 'File system access is not allowed' },\n { pattern: /\\bpath\\b\\.(?!join|resolve)/g, message: 'Path module access is restricted' },\n\n // Network\n { pattern: /\\bhttp\\b/g, message: 'HTTP module is not allowed' },\n { pattern: /\\bhttps\\b/g, message: 'HTTPS module is not allowed' },\n { pattern: /\\bnet\\b/g, message: 'Net module is not allowed' },\n { pattern: /\\bfetch\\s*\\(/g, message: 'fetch() is not allowed in templates' },\n { pattern: /\\bXMLHttpRequest\\b/g, message: 'XMLHttpRequest is not allowed' },\n\n // Code execution\n { pattern: /\\beval\\s*\\(/g, message: 'eval() is not allowed' },\n { pattern: /\\bFunction\\s*\\(/g, message: 'Function() constructor is not allowed' },\n { pattern: /\\bsetTimeout\\s*\\(/g, message: 'setTimeout() is not allowed in templates' },\n { pattern: /\\bsetInterval\\s*\\(/g, message: 'setInterval() is not allowed in templates' },\n\n // Child processes\n { pattern: /child_process/g, message: 'child_process is not allowed' },\n { pattern: /\\bexec\\s*\\(/g, message: 'exec() is not allowed' },\n { pattern: /\\bspawn\\s*\\(/g, message: 'spawn() is not allowed' },\n];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SERVICE\n// ─────────────────────────────────────────────────────────────────────────────\n\n@injectable()\nexport class EmailTemplateValidatorBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n ) {\n this.logDebug = this.logger.debugByType('EmailTemplateValidatorBackendService');\n this.logger.setDebugTypeLogging('EmailTemplateValidatorBackendService', false);\n }\n\n /**\n * Validate a TSX template source\n *\n * @param tsxSource - The TSX template source code\n * @returns Validation result with errors and warnings\n */\n async validate(tsxSource: string): Promise<TsxValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n this.logDebug('Validating email template TSX source');\n\n // 1. Check for forbidden patterns\n const forbiddenErrors = this.checkForbiddenPatterns(tsxSource);\n errors.push(...forbiddenErrors);\n\n // 2. Validate imports\n const importErrors = this.validateImports(tsxSource);\n errors.push(...importErrors);\n\n // 3. Validate the filesystem email-template contract shape.\n const contractErrors = this.validateTemplateContract(tsxSource);\n errors.push(...contractErrors);\n\n // 4. Syntax check via ESBuild (basic parse)\n try {\n const syntaxResult = await this.checkSyntax(tsxSource);\n if (!syntaxResult.valid) {\n errors.push(...syntaxResult.errors);\n }\n warnings.push(...syntaxResult.warnings);\n } catch (err) {\n const error = err as Error;\n errors.push(`Syntax error: ${error.message}`);\n }\n\n const valid = errors.length === 0;\n\n if (!valid) {\n this.logger.warn('Email template validation failed', { errorCount: errors.length, errors });\n } else {\n this.logDebug('Email template validation passed', { warningCount: warnings.length });\n }\n\n return { valid, errors, warnings };\n }\n\n /**\n * Check for forbidden patterns in the source code\n */\n private checkForbiddenPatterns(tsxSource: string): string[] {\n const errors: string[] = [];\n\n for (const { pattern, message } of FORBIDDEN_PATTERNS) {\n // Reset regex state\n pattern.lastIndex = 0;\n if (pattern.test(tsxSource)) {\n errors.push(message);\n }\n }\n\n return errors;\n }\n\n /**\n * Validate that all imports are in the allowlist\n */\n private validateImports(tsxSource: string): string[] {\n const errors: string[] = [];\n\n // Match import statements\n const importRegex = /import\\s+(?:[\\w*{}\\s,]+\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\n let match;\n\n while ((match = importRegex.exec(tsxSource)) !== null) {\n const importPath = match[1];\n\n // Check if import is allowed\n const isAllowed = EMAIL_TEMPLATE_ALLOWED_IMPORTS.some((allowed) => {\n if (allowed === './labels') {\n return /^\\.\\/labels\\.[^/'\"]+$/.test(importPath);\n }\n\n return importPath === allowed || importPath.startsWith(allowed + '/');\n });\n\n if (!isAllowed) {\n errors.push(`Import from '${importPath}' is not allowed. Allowed imports: ${EMAIL_TEMPLATE_ALLOWED_IMPORTS.join(', ')}`);\n }\n }\n\n return errors;\n }\n\n /**\n * Validate that the source looks like a default-exported EmailTemplateDefinition\n * object with the required `subject` and `body` members.\n */\n private validateTemplateContract(tsxSource: string): string[] {\n const errors: string[] = [];\n\n if (!/EmailTemplateDefinition(?:<[^>]+>)?/.test(tsxSource)) {\n errors.push('Generated template must reference EmailTemplateDefinition');\n }\n\n if (!/\\bsubject\\s*[:(]/.test(tsxSource)) {\n errors.push('Generated template must expose a subject member');\n }\n\n if (!/\\bbody\\s*[:(]/.test(tsxSource)) {\n errors.push('Generated template must expose a body member');\n }\n\n if (!/export\\s+default\\s+/.test(tsxSource)) {\n errors.push('Generated template must default-export the template definition');\n }\n\n return errors;\n }\n\n /**\n * Check syntax using ESBuild's parser\n */\n private async checkSyntax(tsxSource: string): Promise<{ valid: boolean; errors: string[]; warnings: string[] }> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n try {\n // Lazy import esbuild\n const esbuild = await import('esbuild');\n\n // Transform with TSX loader - this will catch syntax errors\n const result = await esbuild.transform(tsxSource, {\n loader: 'tsx',\n target: 'es2020',\n jsx: 'automatic',\n minify: false,\n });\n\n // Check for warnings from ESBuild\n if (result.warnings && result.warnings.length > 0) {\n for (const warning of result.warnings) {\n warnings.push(`Line ${warning.location?.line || '?'}: ${warning.text}`);\n }\n }\n\n return { valid: true, errors, warnings };\n } catch (err) {\n const error = err as Error & { errors?: Array<{ text: string; location?: { line: number } }> };\n\n // ESBuild error format\n if (error.errors && Array.isArray(error.errors)) {\n for (const e of error.errors) {\n errors.push(`Line ${e.location?.line || '?'}: ${e.text}`);\n }\n } else {\n errors.push(error.message);\n }\n\n return { valid: false, errors, warnings };\n }\n }\n\n /**\n * Get the list of allowed imports (for LLM context)\n */\n getAllowedImports(): string[] {\n return [...EMAIL_TEMPLATE_ALLOWED_IMPORTS];\n }\n}\n"]}
1
+ {"version":3,"file":"email-template-validator.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email-template-validator.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Email Template Validator Backend Service\n *\n * Validates TSX email templates for security and correctness.\n * Checks for:\n * - Import allowlist compliance\n * - Forbidden patterns (Node.js APIs, dangerous code)\n * - Syntax validation via ESBuild\n */\n\nimport { injectable, inject } from 'inversify';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TYPES\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface TsxValidationResult {\n valid: boolean;\n errors: string[];\n warnings: string[];\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// CONSTANTS\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Allowed import paths for generated email templates\n * Templates can only import from these modules\n */\nexport const EMAIL_TEMPLATE_ALLOWED_IMPORTS: string[] = [\n // React Email core\n '@react-email/components',\n '@react-email/render',\n // Our predefined email components. Exported from the package root\n // (`saas-backend-lib/src/index.ts`) so an application's authored template can import it —\n // and it is why `InversifyContainer` is aliased there, to avoid the clash with React Email's\n // own `Container` re-exported from this module.\n //\n // NOTE (#475, 2026-09-08): the email-template SANDBOX used to be the thing that resolved this\n // specifier at runtime, and it was deleted as unreachable. Permitting the import here is\n // therefore no longer backed by a loader inside the engine; an application template importing\n // it resolves through its own bundler against the package root export. Keep the entry — the\n // export is public API — but do not read it as evidence that the engine loads the module.\n '@wildo-ai/email-components',\n // App-owned runtime helpers used by the filesystem email template pattern\n '@wildo-ai/saas-backend-lib',\n '~backend-api/engine/email/components',\n './labels',\n // React (limited)\n 'react',\n];\n\n/**\n * Forbidden patterns that indicate potentially dangerous code\n */\nconst FORBIDDEN_PATTERNS: Array<{ pattern: RegExp; message: string }> = [\n // Node.js APIs\n { pattern: /require\\s*\\(/g, message: 'Dynamic require() is not allowed' },\n { pattern: /import\\s*\\(/g, message: 'Dynamic import() is not allowed' },\n { pattern: /process\\./g, message: 'Access to process is not allowed' },\n { pattern: /global\\./g, message: 'Access to global is not allowed' },\n { pattern: /globalThis\\./g, message: 'Access to globalThis is not allowed' },\n { pattern: /__dirname/g, message: '__dirname is not allowed' },\n { pattern: /__filename/g, message: '__filename is not allowed' },\n\n // File system\n { pattern: /\\bfs\\b/g, message: 'File system access is not allowed' },\n { pattern: /\\bpath\\b\\.(?!join|resolve)/g, message: 'Path module access is restricted' },\n\n // Network\n { pattern: /\\bhttp\\b/g, message: 'HTTP module is not allowed' },\n { pattern: /\\bhttps\\b/g, message: 'HTTPS module is not allowed' },\n { pattern: /\\bnet\\b/g, message: 'Net module is not allowed' },\n { pattern: /\\bfetch\\s*\\(/g, message: 'fetch() is not allowed in templates' },\n { pattern: /\\bXMLHttpRequest\\b/g, message: 'XMLHttpRequest is not allowed' },\n\n // Code execution\n { pattern: /\\beval\\s*\\(/g, message: 'eval() is not allowed' },\n { pattern: /\\bFunction\\s*\\(/g, message: 'Function() constructor is not allowed' },\n { pattern: /\\bsetTimeout\\s*\\(/g, message: 'setTimeout() is not allowed in templates' },\n { pattern: /\\bsetInterval\\s*\\(/g, message: 'setInterval() is not allowed in templates' },\n\n // Child processes\n { pattern: /child_process/g, message: 'child_process is not allowed' },\n { pattern: /\\bexec\\s*\\(/g, message: 'exec() is not allowed' },\n { pattern: /\\bspawn\\s*\\(/g, message: 'spawn() is not allowed' },\n];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SERVICE\n// ─────────────────────────────────────────────────────────────────────────────\n\n@injectable()\nexport class EmailTemplateValidatorBackendService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private readonly logger: LoggerService,\n ) {\n this.logDebug = this.logger.debugByType('EmailTemplateValidatorBackendService');\n this.logger.setDebugTypeLogging('EmailTemplateValidatorBackendService', false);\n }\n\n /**\n * Validate a TSX template source\n *\n * @param tsxSource - The TSX template source code\n * @returns Validation result with errors and warnings\n */\n async validate(tsxSource: string): Promise<TsxValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n this.logDebug('Validating email template TSX source');\n\n // 1. Check for forbidden patterns\n const forbiddenErrors = this.checkForbiddenPatterns(tsxSource);\n errors.push(...forbiddenErrors);\n\n // 2. Validate imports\n const importErrors = this.validateImports(tsxSource);\n errors.push(...importErrors);\n\n // 3. Validate the filesystem email-template contract shape.\n const contractErrors = this.validateTemplateContract(tsxSource);\n errors.push(...contractErrors);\n\n // 4. Syntax check via ESBuild (basic parse)\n try {\n const syntaxResult = await this.checkSyntax(tsxSource);\n if (!syntaxResult.valid) {\n errors.push(...syntaxResult.errors);\n }\n warnings.push(...syntaxResult.warnings);\n } catch (err) {\n const error = err as Error;\n errors.push(`Syntax error: ${error.message}`);\n }\n\n const valid = errors.length === 0;\n\n if (!valid) {\n this.logger.warn('Email template validation failed', { errorCount: errors.length, errors });\n } else {\n this.logDebug('Email template validation passed', { warningCount: warnings.length });\n }\n\n return { valid, errors, warnings };\n }\n\n /**\n * Check for forbidden patterns in the source code\n */\n private checkForbiddenPatterns(tsxSource: string): string[] {\n const errors: string[] = [];\n\n for (const { pattern, message } of FORBIDDEN_PATTERNS) {\n // Reset regex state\n pattern.lastIndex = 0;\n if (pattern.test(tsxSource)) {\n errors.push(message);\n }\n }\n\n return errors;\n }\n\n /**\n * Validate that all imports are in the allowlist\n */\n private validateImports(tsxSource: string): string[] {\n const errors: string[] = [];\n\n // Match import statements\n const importRegex = /import\\s+(?:[\\w*{}\\s,]+\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\n let match;\n\n while ((match = importRegex.exec(tsxSource)) !== null) {\n const importPath = match[1];\n\n // Check if import is allowed\n const isAllowed = EMAIL_TEMPLATE_ALLOWED_IMPORTS.some((allowed) => {\n if (allowed === './labels') {\n return /^\\.\\/labels\\.[^/'\"]+$/.test(importPath);\n }\n\n return importPath === allowed || importPath.startsWith(allowed + '/');\n });\n\n if (!isAllowed) {\n errors.push(`Import from '${importPath}' is not allowed. Allowed imports: ${EMAIL_TEMPLATE_ALLOWED_IMPORTS.join(', ')}`);\n }\n }\n\n return errors;\n }\n\n /**\n * Validate that the source looks like a default-exported EmailTemplateDefinition\n * object with the required `subject` and `body` members.\n */\n private validateTemplateContract(tsxSource: string): string[] {\n const errors: string[] = [];\n\n if (!/EmailTemplateDefinition(?:<[^>]+>)?/.test(tsxSource)) {\n errors.push('Generated template must reference EmailTemplateDefinition');\n }\n\n if (!/\\bsubject\\s*[:(]/.test(tsxSource)) {\n errors.push('Generated template must expose a subject member');\n }\n\n if (!/\\bbody\\s*[:(]/.test(tsxSource)) {\n errors.push('Generated template must expose a body member');\n }\n\n if (!/export\\s+default\\s+/.test(tsxSource)) {\n errors.push('Generated template must default-export the template definition');\n }\n\n return errors;\n }\n\n /**\n * Check syntax using ESBuild's parser\n */\n private async checkSyntax(tsxSource: string): Promise<{ valid: boolean; errors: string[]; warnings: string[] }> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n try {\n // Lazy import esbuild\n const esbuild = await import('esbuild');\n\n // Transform with TSX loader - this will catch syntax errors\n const result = await esbuild.transform(tsxSource, {\n loader: 'tsx',\n target: 'es2020',\n jsx: 'automatic',\n minify: false,\n });\n\n // Check for warnings from ESBuild\n if (result.warnings && result.warnings.length > 0) {\n for (const warning of result.warnings) {\n warnings.push(`Line ${warning.location?.line || '?'}: ${warning.text}`);\n }\n }\n\n return { valid: true, errors, warnings };\n } catch (err) {\n const error = err as Error & { errors?: Array<{ text: string; location?: { line: number } }> };\n\n // ESBuild error format\n if (error.errors && Array.isArray(error.errors)) {\n for (const e of error.errors) {\n errors.push(`Line ${e.location?.line || '?'}: ${e.text}`);\n }\n } else {\n errors.push(error.message);\n }\n\n return { valid: false, errors, warnings };\n }\n }\n\n /**\n * Get the list of allowed imports (for LLM context)\n */\n getAllowedImports(): string[] {\n return [...EMAIL_TEMPLATE_ALLOWED_IMPORTS];\n }\n}\n"]}
@@ -6,15 +6,46 @@
6
6
  * - Context building
7
7
  * - React Email rendering (subject fn + body fn → HTML/text)
8
8
  * - Provider resolution and HTTP execution
9
+ *
10
+ * ## A sent email leaves LOG LINES and nothing else — by decision (#412, 2026-09-08)
11
+ *
12
+ * There is no persisted record of a sent email anywhere in the framework: no core resource, no
13
+ * delivery log, no per-tenant history. **"Did this customer receive it?" is answered with the email
14
+ * provider's own tooling, never with Wildo.** Say that to anyone who asks for it here, rather than
15
+ * treating the absence as a gap to be filled.
16
+ *
17
+ * It reads as an oversight because the sibling subsystem does the opposite: outbound M2M webhooks
18
+ * carry a persisted per-tenant delivery log (`ORGANIZATION_M2M_WEBHOOK_DELIVERY_LOG` and its
19
+ * application twin). The asymmetry is deliberate and the reason is not the table — it is that a
20
+ * persisted email record is a new per-user personal-data store carrying retention policy, privacy
21
+ * classification, subject-export and erasure obligations FOR MESSAGE CONTENT. A metadata-only
22
+ * variant (recipient, template, timestamp, provider id; no body) was on the table and declined too,
23
+ * because it carries the same set of obligations over a smaller payload.
24
+ *
25
+ * Reopening this is legitimate, and it starts with the obligations rather than with the schema.
9
26
  */
10
27
  import type { LoggerService } from '../../../monitoring/logger/services/logger.service';
11
28
  import type { ErrorBuilderBackendService } from '../../../errors/services/error-builder.backend.service';
12
29
  import type { AppConfigurationService } from '../../../config/services/app-configuration.backend.service';
13
30
  import type { ExternalProvidersRegistryBackendService } from '../../../external-providers/services/external-providers-registry.backend.service';
14
- import type { EmailContextProviderRegistryBackendService } from './email-context-provider-registry.backend.service';
31
+ import type { FilesBackendService } from '../../../files/services/files.backend.service';
15
32
  import type { EmailTemplateRegistryBackendService } from './email-template-registry.backend.service';
16
33
  import { EmailTemplateContext, EmailTemplateType } from '@wildo-ai/saas-models';
17
34
  import { AvailableLanguage } from '@wildo-ai/presets-components-models';
35
+ /**
36
+ * Total size ceiling for the attachments of ONE email, applied after the bytes are resolved (#429).
37
+ *
38
+ * 10 MB, deliberately below every provider ceiling this framework talks to — SendGrid 30 MB,
39
+ * Mailgun 25 MB, SES 40 MB on the raw message — so an over-size send is refused HERE, naming the
40
+ * files and the measured total, instead of at a vendor whose rejection an application cannot act
41
+ * on. Base64 also inflates the wire payload by roughly a third, so a limit set AT a provider's
42
+ * number would still fail there.
43
+ *
44
+ * A constant rather than a config key, until an application needs a different number: a configurable
45
+ * limit that nothing reads is the exact defect this issue closed, and adding the reader is the
46
+ * cheaper half of that change.
47
+ */
48
+ export declare const OUTBOUND_ATTACHMENT_TOTAL_BYTES_LIMIT: number;
18
49
  export interface EmailSendRequest {
19
50
  /**
20
51
  * Stable identity of one logical provider submission. A caller that can
@@ -78,11 +109,11 @@ export declare class EmailBackendService {
78
109
  private readonly logger;
79
110
  private readonly errorBuilder;
80
111
  private readonly templateRegistry;
81
- private readonly contextProviderRegistry;
82
112
  private readonly configService;
83
113
  private readonly externalProvidersRegistry;
114
+ private readonly filesService;
84
115
  protected logDebug: (message: string, context?: Record<string, unknown>) => void;
85
- constructor(logger: LoggerService, errorBuilder: ErrorBuilderBackendService, templateRegistry: EmailTemplateRegistryBackendService, contextProviderRegistry: EmailContextProviderRegistryBackendService, configService: AppConfigurationService, externalProvidersRegistry: ExternalProvidersRegistryBackendService);
116
+ constructor(logger: LoggerService, errorBuilder: ErrorBuilderBackendService, templateRegistry: EmailTemplateRegistryBackendService, configService: AppConfigurationService, externalProvidersRegistry: ExternalProvidersRegistryBackendService, filesService: FilesBackendService | undefined);
86
117
  /**
87
118
  * Send an email using a file-based template definition.
88
119
  */
@@ -95,6 +126,32 @@ export declare class EmailBackendService {
95
126
  private getFallbackLocale;
96
127
  private getDesignTokens;
97
128
  private resolveEmailProvider;
129
+ /**
130
+ * Resolve `attachmentFileIds` to the vendor-neutral `attachments` array several provider adapters
131
+ * already map (#429).
132
+ *
133
+ * Until this existed the field was declared and read by nothing, so a caller supplying an
134
+ * attachment got a successful send and an attachment-less email. Every refusal below therefore
135
+ * THROWS: a silent drop is the defect, and error handling that drops quietly is the same defect.
136
+ *
137
+ * ## The size cap is the framework's, not a provider's
138
+ *
139
+ * {@link OUTBOUND_ATTACHMENT_TOTAL_BYTES_LIMIT} is deliberately below every provider limit this
140
+ * framework talks to, so the refusal happens HERE — with the file ids and the measured total in
141
+ * the error — rather than at a vendor that answers with a rejected submission and a message the
142
+ * application cannot act on. It is a named constant rather than a config key on purpose: an
143
+ * authored limit nothing read is precisely the class of defect this issue came from, and a
144
+ * config surface can be added the day an application needs a different number.
145
+ *
146
+ * ## What is NOT checked here, and why
147
+ *
148
+ * The file TYPE. A file reaching this point has already passed upload-time validation and, where
149
+ * the field opts into scanning, the scanner — and the status gate inside
150
+ * `readFilesForOutboundAttachment` admits only what the download route would serve, which
151
+ * excludes INFECTED. Re-deciding admissible types at send time would be a second policy that can
152
+ * disagree with the first.
153
+ */
154
+ private resolveAttachments;
98
155
  private buildEmailRequest;
99
156
  private executeProviderRequest;
100
157
  private bestEffortParseResponseBody;
@@ -125,6 +182,5 @@ export declare class EmailBackendService {
125
182
  * `providerId === '<literal>'` branches.
126
183
  */
127
184
  private serializeProviderEmailPayload;
128
- private createProviderUtils;
129
185
  }
130
186
  //# sourceMappingURL=email.backend.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email.backend.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/email/services/email.backend.service.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,23 @@
6
6
  * - Context building
7
7
  * - React Email rendering (subject fn + body fn → HTML/text)
8
8
  * - Provider resolution and HTTP execution
9
+ *
10
+ * ## A sent email leaves LOG LINES and nothing else — by decision (#412, 2026-09-08)
11
+ *
12
+ * There is no persisted record of a sent email anywhere in the framework: no core resource, no
13
+ * delivery log, no per-tenant history. **"Did this customer receive it?" is answered with the email
14
+ * provider's own tooling, never with Wildo.** Say that to anyone who asks for it here, rather than
15
+ * treating the absence as a gap to be filled.
16
+ *
17
+ * It reads as an oversight because the sibling subsystem does the opposite: outbound M2M webhooks
18
+ * carry a persisted per-tenant delivery log (`ORGANIZATION_M2M_WEBHOOK_DELIVERY_LOG` and its
19
+ * application twin). The asymmetry is deliberate and the reason is not the table — it is that a
20
+ * persisted email record is a new per-user personal-data store carrying retention policy, privacy
21
+ * classification, subject-export and erasure obligations FOR MESSAGE CONTENT. A metadata-only
22
+ * variant (recipient, template, timestamp, provider id; no body) was on the table and declined too,
23
+ * because it carries the same set of obligations over a smaller payload.
24
+ *
25
+ * Reopening this is legitimate, and it starts with the obligations rather than with the schema.
9
26
  */
10
27
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
11
28
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -19,7 +36,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
19
36
  var __param = (this && this.__param) || function (paramIndex, decorator) {
20
37
  return function (target, key) { decorator(target, key, paramIndex); }
21
38
  };
22
- import { injectable, inject } from 'inversify';
39
+ import { injectable, inject, optional } from 'inversify';
23
40
  import { render } from '@react-email/render';
24
41
  import { randomUUID } from 'node:crypto';
25
42
  import { SAAS_SERVICE_TYPES } from '../../../inject/models/service-types.js';
@@ -27,7 +44,7 @@ import { describeCaughtError } from '../../../errors/utils/error-log-level-class
27
44
  import { getConfiguredFallbackLanguage, getConfiguredPrimaryLanguage, } from '../../../config/services/app-configuration.backend.utils.js';
28
45
  import { buildEmailBrandTokensFromConfig } from '../../../notifications/email/utils/color-conversion.utils.js';
29
46
  import { EmailTemplateType_ToEngineCapability, ErrorCustomMessageReference, ErrorType, isWildoBackendError, WildoHeaderKeys, } from '@wildo-ai/saas-models';
30
- import { EmailProviderPayloadEncoding, EmailProviderSubmissionClassification, ExternalProvider_ExchangeProtocol_Kind, StandardEmail_SendRequestSchema, StandardEmail_SendResponseSchema, } from '@wildo-ai/external-connectors-models';
47
+ import { EmailProviderPayloadEncoding, EmailProviderSubmissionClassification, ExternalProvider_ExchangeProtocol_Kind, StandardEmail_SendRequestSchema, StandardEmail_SendResponseSchema, ProviderProtocolRuntimeKind, } from '@wildo-ai/external-connectors-models';
31
48
  import { EMAIL_PROVIDER_TRANSPORT_TIMEOUT_MS, } from '../../../notifications/email/models/email-transport.backend.definitions.js';
32
49
  // ─────────────────────────────────────────────────────────────────────────────
33
50
  // UTILITIES
@@ -36,6 +53,23 @@ function validateEmailAddresses(emails) {
36
53
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
37
54
  return emails.filter(email => !emailRegex.test(email.trim()));
38
55
  }
56
+ // ─────────────────────────────────────────────────────────────────────────────
57
+ // TYPES
58
+ // ─────────────────────────────────────────────────────────────────────────────
59
+ /**
60
+ * Total size ceiling for the attachments of ONE email, applied after the bytes are resolved (#429).
61
+ *
62
+ * 10 MB, deliberately below every provider ceiling this framework talks to — SendGrid 30 MB,
63
+ * Mailgun 25 MB, SES 40 MB on the raw message — so an over-size send is refused HERE, naming the
64
+ * files and the measured total, instead of at a vendor whose rejection an application cannot act
65
+ * on. Base64 also inflates the wire payload by roughly a third, so a limit set AT a provider's
66
+ * number would still fail there.
67
+ *
68
+ * A constant rather than a config key, until an application needs a different number: a configurable
69
+ * limit that nothing reads is the exact defect this issue closed, and adding the reader is the
70
+ * cheaper half of that change.
71
+ */
72
+ export const OUTBOUND_ATTACHMENT_TOTAL_BYTES_LIMIT = 10 * 1024 * 1024;
39
73
  export var EmailSubmissionOutcome;
40
74
  (function (EmailSubmissionOutcome) {
41
75
  EmailSubmissionOutcome["NOT_SUBMITTED"] = "not_submitted";
@@ -50,17 +84,17 @@ let EmailBackendService = class EmailBackendService {
50
84
  logger;
51
85
  errorBuilder;
52
86
  templateRegistry;
53
- contextProviderRegistry;
54
87
  configService;
55
88
  externalProvidersRegistry;
89
+ filesService;
56
90
  logDebug;
57
- constructor(logger, errorBuilder, templateRegistry, contextProviderRegistry, configService, externalProvidersRegistry) {
91
+ constructor(logger, errorBuilder, templateRegistry, configService, externalProvidersRegistry, filesService) {
58
92
  this.logger = logger;
59
93
  this.errorBuilder = errorBuilder;
60
94
  this.templateRegistry = templateRegistry;
61
- this.contextProviderRegistry = contextProviderRegistry;
62
95
  this.configService = configService;
63
96
  this.externalProvidersRegistry = externalProvidersRegistry;
97
+ this.filesService = filesService;
64
98
  this.logDebug = this.logger.debugByType('EmailBackendService');
65
99
  this.logger.setDebugTypeLogging('EmailBackendService', false);
66
100
  }
@@ -101,20 +135,13 @@ let EmailBackendService = class EmailBackendService {
101
135
  const resolved = this.templateRegistry.resolve(request.templateRef, request.locale, defaultLocale, this.getFallbackLocale());
102
136
  // 2. Get design tokens
103
137
  const brandTokens = this.getDesignTokens();
104
- // 3. Build additional context from providers
105
- const additionalContext = await this.contextProviderRegistry.buildAdditionalContext({
106
- templateRef: request.templateRef,
107
- locale: request.locale,
108
- baseContext: request.context,
109
- }, this.createProviderUtils());
110
- // 4. Build full context
138
+ // 3. Build full context
111
139
  const fullContext = {
112
140
  currentObject: request.context.currentObject,
113
141
  objectContext: request.context.objectContext,
114
142
  userContext: request.context.userContext,
115
143
  additionalContext: {
116
144
  ...(request.context.additionalContext || {}),
117
- ...additionalContext,
118
145
  },
119
146
  };
120
147
  // 5. Render subject and body from definition functions
@@ -127,8 +154,12 @@ let EmailBackendService = class EmailBackendService {
127
154
  const emailType = resolved.definition.type ?? request.type;
128
155
  const engineCapability = EmailTemplateType_ToEngineCapability[emailType];
129
156
  const providerConfig = this.resolveEmailProvider(engineCapability);
157
+ // 6b. Resolve caller-supplied attachments to bytes (#429). Before the request is built,
158
+ // because a file that cannot be served must refuse the send rather than produce an email
159
+ // that silently lacks what the caller attached.
160
+ const attachments = await this.resolveAttachments(request);
130
161
  // 7. Build email request
131
- const emailRequest = this.buildEmailRequest(request, submissionId, { subject, bodyHtml, bodyText }, providerConfig, recipients);
162
+ const emailRequest = this.buildEmailRequest(request, submissionId, { subject, bodyHtml, bodyText }, providerConfig, recipients, attachments);
132
163
  const providerRequest = providerConfig.delivery === 'network'
133
164
  ? providerConfig.buildSendRequest({
134
165
  request: emailRequest,
@@ -252,7 +283,7 @@ let EmailBackendService = class EmailBackendService {
252
283
  throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, { context: { message: `Email provider is disabled by external provider configuration: ${providerId}`, providerId, capability } });
253
284
  }
254
285
  const emailContract = this.externalProvidersRegistry.getProviderConfiguration(providerId, ExternalProvider_ExchangeProtocol_Kind.EMAIL_PROVIDER)?.runtimeContract;
255
- if (emailContract?.kind !== 'email') {
286
+ if (emailContract?.kind !== ProviderProtocolRuntimeKind.EMAIL) {
256
287
  throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, { context: { message: `No EMAIL_PROVIDER runtime contract found for provider: ${providerId}`, providerId, capability } });
257
288
  }
258
289
  const appConfig = this.configService.config;
@@ -305,7 +336,70 @@ let EmailBackendService = class EmailBackendService {
305
336
  parseSendResponse: emailContract.parseSendResponse,
306
337
  };
307
338
  }
308
- buildEmailRequest(request, submissionId, rendered, providerConfig, recipients) {
339
+ /**
340
+ * Resolve `attachmentFileIds` to the vendor-neutral `attachments` array several provider adapters
341
+ * already map (#429).
342
+ *
343
+ * Until this existed the field was declared and read by nothing, so a caller supplying an
344
+ * attachment got a successful send and an attachment-less email. Every refusal below therefore
345
+ * THROWS: a silent drop is the defect, and error handling that drops quietly is the same defect.
346
+ *
347
+ * ## The size cap is the framework's, not a provider's
348
+ *
349
+ * {@link OUTBOUND_ATTACHMENT_TOTAL_BYTES_LIMIT} is deliberately below every provider limit this
350
+ * framework talks to, so the refusal happens HERE — with the file ids and the measured total in
351
+ * the error — rather than at a vendor that answers with a rejected submission and a message the
352
+ * application cannot act on. It is a named constant rather than a config key on purpose: an
353
+ * authored limit nothing read is precisely the class of defect this issue came from, and a
354
+ * config surface can be added the day an application needs a different number.
355
+ *
356
+ * ## What is NOT checked here, and why
357
+ *
358
+ * The file TYPE. A file reaching this point has already passed upload-time validation and, where
359
+ * the field opts into scanning, the scanner — and the status gate inside
360
+ * `readFilesForOutboundAttachment` admits only what the download route would serve, which
361
+ * excludes INFECTED. Re-deciding admissible types at send time would be a second policy that can
362
+ * disagree with the first.
363
+ */
364
+ async resolveAttachments(request) {
365
+ const fileIds = request.attachmentFileIds ?? [];
366
+ if (fileIds.length === 0) {
367
+ return [];
368
+ }
369
+ if (!this.filesService) {
370
+ throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
371
+ customMessageReference: ErrorCustomMessageReference.CONFIGURATION,
372
+ context: {
373
+ message: 'Email attachments were requested but the files service is not bound',
374
+ attachmentCount: fileIds.length,
375
+ },
376
+ });
377
+ }
378
+ const resolved = await this.filesService.readFilesForOutboundAttachment(fileIds, {
379
+ applicationId: this.configService.applicationId ?? undefined,
380
+ // The tenancy confinement. An organization-scoped send reaches only that organization's
381
+ // files; a send without one reaches only application-scoped files.
382
+ ...(request.organizationId ? { organizationId: request.organizationId } : {}),
383
+ });
384
+ const totalBytes = resolved.reduce((total, file) => total + file.bytes.byteLength, 0);
385
+ if (totalBytes > OUTBOUND_ATTACHMENT_TOTAL_BYTES_LIMIT) {
386
+ throw this.errorBuilder.buildError(ErrorType.VALIDATION, undefined, {
387
+ customMessageReference: ErrorCustomMessageReference.VALIDATION,
388
+ context: {
389
+ message: 'Email attachments exceed the outbound total-size limit',
390
+ totalBytes,
391
+ limitBytes: OUTBOUND_ATTACHMENT_TOTAL_BYTES_LIMIT,
392
+ fileIds: resolved.map((file) => file.fileId),
393
+ },
394
+ });
395
+ }
396
+ return resolved.map((file) => ({
397
+ filename: file.filename,
398
+ content: file.bytes.toString('base64'),
399
+ contentType: file.mimeType,
400
+ }));
401
+ }
402
+ buildEmailRequest(request, submissionId, rendered, providerConfig, recipients, attachments) {
309
403
  const toAddresses = recipients.map(email => ({ email }));
310
404
  // From-address precedence: per-send override → per-provider config
311
405
  // (`providerConfigurations.<provider>.EMAIL_PROVIDER.fromAddress`) → the
@@ -330,6 +424,9 @@ let EmailBackendService = class EmailBackendService {
330
424
  subject: rendered.subject,
331
425
  html: rendered.bodyHtml,
332
426
  text: rendered.bodyText,
427
+ // Omitted rather than sent empty: the field is optional on the vendor-neutral contract and
428
+ // several adapters branch on its presence.
429
+ ...(attachments.length > 0 ? { attachments } : {}),
333
430
  });
334
431
  }
335
432
  async executeProviderRequest(providerConfig, request, providerRequest, onTransportStart) {
@@ -349,6 +446,34 @@ let EmailBackendService = class EmailBackendService {
349
446
  bcc: request.bcc?.map(recipient => recipient.email),
350
447
  subject: request.subject,
351
448
  textPreview: request.text?.slice(0, 2000),
449
+ /*
450
+ * DERIVED FACTS ABOUT THE HTML, never the HTML itself (#522).
451
+ *
452
+ * This provider is how a developer sees a local send, and it surfaced a TEXT preview only —
453
+ * so anything that exists only in the HTML was invisible here. A brand logo is an `<img>`,
454
+ * which is a fair part of why ninety-five templates rendered none without anyone noticing.
455
+ *
456
+ * The body is not logged. That is the same rule the attachment line below already follows —
457
+ * names, never the bytes — and a full HTML email in a log line would be both unreadable and
458
+ * a place for personal data to accumulate. `imageCount` is the smallest fact that tells the
459
+ * two cases apart, which is all the dev loop needs: 0 where a logo did not resolve, 1 where
460
+ * it did.
461
+ *
462
+ * Writing the rendered HTML to a FILE a developer can open is the better surface and is a
463
+ * real decision — where it lives, who removes it, and which environments produce it — so it
464
+ * is recorded rather than invented inside a provider branch.
465
+ */
466
+ htmlBytes: request.html === undefined ? undefined : Buffer.byteLength(request.html, 'utf8'),
467
+ imageCount: request.html === undefined ? undefined : (request.html.match(/<img\b/gi) ?? []).length,
468
+ // Names only, never the bytes (#429). The log-delivery provider is how a developer sees a
469
+ // local send, so an attachment that resolved has to be visible here — otherwise the dev
470
+ // loop looks identical whether the resolution worked or silently produced nothing, which
471
+ // is the failure this whole path exists to remove.
472
+ attachments: request.attachments?.map((attachment) => ({
473
+ filename: attachment.filename,
474
+ contentType: attachment.contentType,
475
+ bytes: Buffer.from(attachment.content, 'base64').byteLength,
476
+ })),
352
477
  });
353
478
  return {
354
479
  outcome: EmailSubmissionOutcome.PROVIDER_ACCEPTED,
@@ -644,39 +769,16 @@ let EmailBackendService = class EmailBackendService {
644
769
  ? { ...payload, key: providerConfig.apiKey }
645
770
  : payload);
646
771
  }
647
- // Per-provider payload building lives in the provider module's
648
- // `runtimeContract.buildSendRequest` (one of the six EMAIL_PROVIDER
649
- // backend modules). The email service no longer branches on provider id.
650
- createProviderUtils() {
651
- return {
652
- getRepository: (resourceType) => {
653
- throw new Error(`getRepository('${resourceType}') is not available in the email context provider. Inject repository data via additionalContext instead.`);
654
- },
655
- logger: {
656
- debug: (message, meta) => this.logger.debug(message, meta),
657
- info: (message, meta) => this.logger.info(message, meta),
658
- warn: (message, meta) => this.logger.warn(message, meta),
659
- error: (message, meta) => this.logger.error(message, meta),
660
- },
661
- errorBuilder: {
662
- buildError: (type, message, details) => {
663
- const err = new Error(message);
664
- err.type = type;
665
- err.details = details;
666
- return err;
667
- },
668
- },
669
- };
670
- }
671
772
  };
672
773
  EmailBackendService = __decorate([
673
774
  injectable(),
674
775
  __param(0, inject(SAAS_SERVICE_TYPES.Logger)),
675
776
  __param(1, inject(SAAS_SERVICE_TYPES.ErrorBuilderService)),
676
777
  __param(2, inject(SAAS_SERVICE_TYPES.EmailTemplateRegistry)),
677
- __param(3, inject(SAAS_SERVICE_TYPES.EmailContextProviderRegistry)),
678
- __param(4, inject(SAAS_SERVICE_TYPES.AppConfigService)),
679
- __param(5, inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService)),
778
+ __param(3, inject(SAAS_SERVICE_TYPES.AppConfigService)),
779
+ __param(4, inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService)),
780
+ __param(5, inject(SAAS_SERVICE_TYPES.FilesBackendService)),
781
+ __param(5, optional()),
680
782
  __metadata("design:paramtypes", [Function, Function, Function, Function, Function, Function])
681
783
  ], EmailBackendService);
682
784
  export { EmailBackendService };