@wildo-ai/saas-backend-lib 1.1.2 → 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 (853) 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.map +1 -1
  20. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +27 -6
  21. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  22. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
  23. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  24. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +207 -21
  25. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  26. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
  27. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  28. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +174 -26
  29. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  30. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +47 -4
  31. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  32. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +96 -29
  33. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  34. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
  35. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
  36. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
  37. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
  38. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
  39. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  40. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
  41. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  42. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +9 -1
  44. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  45. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +49 -0
  46. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  47. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +171 -18
  48. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  49. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  50. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +23 -3
  51. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  52. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  53. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +20 -0
  54. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  55. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
  56. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  57. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  58. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  59. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
  60. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  61. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
  62. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  63. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
  64. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  65. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
  66. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +529 -41
  68. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  69. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
  70. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  71. package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
  72. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  73. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
  74. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
  75. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
  76. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
  77. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
  78. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
  79. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
  80. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
  81. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
  82. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
  83. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
  84. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
  85. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
  86. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
  87. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
  88. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
  89. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
  90. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  91. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
  92. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  93. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
  94. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  95. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
  96. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  97. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
  98. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
  99. package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
  100. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
  101. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
  102. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  103. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
  104. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  105. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  106. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +48 -7
  107. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  108. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +38 -1
  109. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  110. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +67 -2
  111. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  112. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
  113. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  114. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
  115. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  116. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
  117. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  118. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
  119. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  120. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  121. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
  122. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  123. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +18 -1
  124. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  125. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +106 -2
  126. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  127. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
  128. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
  129. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
  130. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
  131. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
  132. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  133. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +260 -26
  134. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  135. package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
  136. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  137. package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
  138. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  139. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
  140. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  141. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +225 -13
  142. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  143. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +340 -62
  144. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  145. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +244 -7
  146. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  147. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +386 -5
  148. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  149. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  150. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
  151. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  152. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +6 -2
  153. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -1
  154. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +31 -9
  155. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -1
  156. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
  157. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  158. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +57 -1
  159. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  160. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
  161. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
  162. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
  163. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
  164. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  165. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +31 -0
  166. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  167. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
  168. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  169. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
  170. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  171. package/dist/esm/config/models/app-config.backend.schemas.d.ts +142 -46
  172. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  173. package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
  174. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  175. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
  176. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  177. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
  178. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  179. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
  180. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  181. package/dist/esm/config/services/app-configuration-loader.backend.service.js +68 -76
  182. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  183. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  184. package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
  185. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  186. package/dist/esm/config/services/app-configuration.backend.utils.d.ts +33 -0
  187. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  188. package/dist/esm/config/services/app-configuration.backend.utils.js +39 -1
  189. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  190. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +25 -0
  191. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  192. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +41 -1
  193. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  194. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  195. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
  196. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  197. package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
  198. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  199. package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
  200. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  201. package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
  202. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  203. package/dist/esm/errors/services/error-handler.backend.service.js +129 -8
  204. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  205. package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
  206. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  207. package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
  208. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  209. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
  210. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  211. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
  212. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  213. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
  214. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  215. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
  216. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  217. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +59 -2
  218. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  219. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +52 -17
  220. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  221. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
  222. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  223. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  224. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +256 -0
  225. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
  226. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
  227. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
  228. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
  229. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
  230. package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
  231. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
  232. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
  233. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
  234. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
  235. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
  236. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
  237. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
  238. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
  239. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
  240. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
  241. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  242. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
  243. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  244. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
  245. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
  246. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
  247. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
  248. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
  249. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  250. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
  251. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  252. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  253. package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
  254. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  255. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  256. package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
  257. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  258. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +292 -7
  259. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  260. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +533 -45
  261. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  262. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  263. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
  264. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  265. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  266. package/dist/esm/files/controllers/file.controller.js +21 -13
  267. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  268. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  269. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +39 -15
  270. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  271. package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
  272. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  273. package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
  274. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  275. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
  276. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  277. package/dist/esm/files/services/file-text-extraction.backend.service.js +167 -8
  278. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  279. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +53 -2
  280. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -1
  281. package/dist/esm/files/services/file-upload-grant.backend.service.js +127 -3
  282. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -1
  283. package/dist/esm/files/services/files.backend.service.d.ts +68 -0
  284. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  285. package/dist/esm/files/services/files.backend.service.js +175 -5
  286. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  287. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
  288. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
  289. package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
  290. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
  291. package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
  292. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  293. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  294. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
  295. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  296. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
  297. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  298. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  299. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
  300. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  301. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  302. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
  303. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  304. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
  305. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
  306. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
  307. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
  308. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
  309. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  310. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
  311. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  312. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  313. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
  314. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  315. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
  316. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  317. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
  318. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  319. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
  320. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  321. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +196 -40
  322. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  323. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
  324. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  325. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
  326. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  327. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
  328. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  329. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
  330. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  331. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
  332. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  333. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  334. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
  335. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  336. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
  337. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  338. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
  339. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  340. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
  341. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  342. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
  343. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  344. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  345. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +88 -8
  346. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  347. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +333 -31
  348. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  349. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  350. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
  351. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  352. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
  353. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
  354. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
  355. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
  356. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  357. package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
  358. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  359. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +28 -1
  360. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  361. package/dist/esm/flows-actors/services/agents.backend.service.js +204 -18
  362. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  363. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -1
  364. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  365. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +79 -16
  366. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  367. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
  368. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  369. package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
  370. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  371. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  372. package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
  373. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  374. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  375. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
  376. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  377. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
  378. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
  379. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
  380. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
  381. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
  382. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  383. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
  384. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  385. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  386. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +8 -4
  387. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  388. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
  389. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  390. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
  391. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  392. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  393. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  394. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
  395. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  396. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
  397. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  398. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
  399. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
  400. package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
  401. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
  402. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
  403. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  404. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
  405. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  406. package/dist/esm/index.d.ts +11 -4
  407. package/dist/esm/index.d.ts.map +1 -1
  408. package/dist/esm/index.js +31 -4
  409. package/dist/esm/index.js.map +1 -1
  410. package/dist/esm/inject/models/container.d.ts.map +1 -1
  411. package/dist/esm/inject/models/container.js +78 -10
  412. package/dist/esm/inject/models/container.js.map +1 -1
  413. package/dist/esm/inject/models/service-types.d.ts +17 -3
  414. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  415. package/dist/esm/inject/models/service-types.js +19 -3
  416. package/dist/esm/inject/models/service-types.js.map +1 -1
  417. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  418. package/dist/esm/mcp/controllers/mcp.controller.js +20 -0
  419. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  420. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +56 -1
  421. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  422. package/dist/esm/mcp/services/mcp-server.backend.service.js +107 -11
  423. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  424. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  425. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +22 -0
  426. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  427. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  428. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
  429. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  430. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
  431. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
  432. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
  433. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
  434. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
  435. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  436. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
  437. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  438. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
  439. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  440. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  441. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
  442. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  443. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
  444. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  445. package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
  446. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  447. package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
  448. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  449. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
  450. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
  451. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
  452. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
  453. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
  454. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
  455. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
  456. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
  457. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
  458. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  459. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  460. package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
  461. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  462. package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
  463. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  464. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
  465. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
  466. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
  467. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
  468. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
  469. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
  470. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
  471. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
  472. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
  473. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
  474. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
  475. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
  476. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
  477. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  478. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
  479. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  480. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
  481. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
  482. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
  483. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
  484. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  485. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
  486. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  487. package/dist/esm/notifications/email/services/email.backend.service.d.ts +60 -4
  488. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  489. package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
  490. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  491. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
  492. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  493. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  494. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
  495. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  496. package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
  497. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  498. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +99 -13
  499. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  500. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +422 -66
  501. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  502. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
  503. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  504. package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
  505. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  506. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
  507. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  508. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
  509. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  510. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
  511. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  512. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +46 -1
  513. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  514. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  515. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +16 -6
  516. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  517. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  518. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +12 -12
  519. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  520. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
  521. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  522. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
  523. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  524. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
  525. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
  526. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  527. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  528. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
  529. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  530. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
  531. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
  532. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
  533. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
  534. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
  535. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
  536. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
  537. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
  538. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
  539. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
  540. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
  541. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
  542. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
  543. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
  544. package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
  545. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
  546. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
  547. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  548. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
  549. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  550. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
  551. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  552. package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
  553. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  554. package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
  555. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  556. package/dist/esm/queue/job-consumer.backend.service.js +1 -4
  557. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  558. package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
  559. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  560. package/dist/esm/queue/job-executor.backend.service.js +1 -4
  561. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  562. package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
  563. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  564. package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
  565. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  566. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
  567. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  568. package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
  569. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  570. package/dist/esm/queue/queue.backend.service.d.ts +3 -3
  571. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  572. package/dist/esm/queue/queue.backend.service.js +26 -4
  573. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  574. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
  575. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  576. package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
  577. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  578. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
  579. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  580. package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
  581. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  582. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
  583. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  584. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
  585. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  586. package/dist/esm/requests/service/websocket.service.d.ts +9 -0
  587. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  588. package/dist/esm/requests/service/websocket.service.js +32 -8
  589. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  590. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  591. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +14 -2
  592. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  593. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  594. package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
  595. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  596. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  597. package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
  598. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  599. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
  600. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  601. package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
  602. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  603. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
  604. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  605. package/dist/esm/resources/services/resources-registry.backend.service.js +90 -6
  606. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  607. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
  608. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  609. package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
  610. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  611. package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
  612. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  613. package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
  614. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  615. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
  616. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  617. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  618. package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
  619. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  620. package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
  621. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  622. package/dist/esm/runtime/services/start-application.backend.service.d.ts +19 -1
  623. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  624. package/dist/esm/runtime/services/start-application.backend.service.js +261 -77
  625. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  626. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
  627. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  628. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
  629. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  630. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
  631. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  632. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
  633. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  634. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  635. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -4
  636. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  637. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
  638. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  639. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
  640. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  641. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
  642. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  643. package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
  644. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  645. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
  646. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  647. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  648. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
  649. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  650. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
  651. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  652. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
  653. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  654. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
  655. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  656. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
  657. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  658. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
  659. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  660. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
  661. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  662. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
  663. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  664. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
  665. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  666. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +377 -53
  667. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  668. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  669. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +68 -1
  670. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  671. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
  672. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  673. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
  674. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  675. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  676. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
  677. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  678. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  679. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
  680. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  681. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
  682. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  683. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
  684. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  685. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +17 -1
  686. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  687. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +49 -17
  688. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  689. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
  690. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  691. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
  692. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  693. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
  694. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  695. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
  696. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  697. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  698. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
  699. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  700. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
  701. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
  702. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
  703. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
  704. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
  705. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  706. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
  707. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  708. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
  709. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  710. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
  711. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  712. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
  713. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  714. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
  715. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  716. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  717. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
  718. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  719. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  720. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
  721. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  722. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
  723. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  724. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
  725. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  726. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
  727. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  728. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
  729. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  730. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
  731. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
  732. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
  733. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
  734. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
  735. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  736. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
  737. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  738. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  739. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +77 -3
  740. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  741. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
  742. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  743. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
  744. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  745. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
  746. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
  747. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
  748. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
  749. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
  750. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  751. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +142 -5
  752. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  753. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +74 -8
  754. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  755. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +175 -19
  756. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  757. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
  758. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  759. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
  760. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  761. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
  762. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
  763. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
  764. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
  765. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
  766. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
  767. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
  768. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
  769. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
  770. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
  771. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
  772. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
  773. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
  774. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
  775. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
  776. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
  777. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
  778. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
  779. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
  780. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
  781. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
  782. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  783. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
  784. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
  785. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
  786. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
  787. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
  788. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
  789. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
  790. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
  791. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
  792. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
  793. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
  794. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
  795. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
  796. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
  797. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
  798. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
  799. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
  800. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
  801. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
  802. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  803. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
  804. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
  805. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
  806. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
  807. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
  808. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
  809. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
  810. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
  811. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
  812. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
  813. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
  814. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
  815. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
  816. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
  817. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +21 -3
  818. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  819. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +26 -16
  820. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  821. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
  822. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  823. package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
  824. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  825. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
  826. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  827. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
  828. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  829. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
  830. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  831. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
  832. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  833. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  834. package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
  835. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  836. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
  837. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  838. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
  839. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  840. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
  841. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  842. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
  843. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  844. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
  845. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
  846. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
  847. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
  848. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
  849. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
  850. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
  851. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
  852. package/dist/tsconfig.build.tsbuildinfo +1 -1
  853. package/package.json +11 -9
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Main service for sending SMS messages. Orchestrates:
5
5
  * - Provider resolution via ExternalProvidersRegistryBackendService
6
- * - Request transformation via SMSFeature
6
+ * - The provider's own `SMS_PROVIDER` runtime contract, read from the registry, which supplies the
7
+ * endpoint and the request/response projection
7
8
  * - Raw HTTP execution (Basic Auth for Twilio)
8
- * - Response parsing via SMSFeature
9
9
  *
10
10
  * Mirrors the pattern of EmailBackendService for consistency.
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sms.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/sms/services/sms.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAEnH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AACpH,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4FAA4F,CAAC;AAY1J,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6CD,qBACa,iBAAiB;IAIS,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;IACd,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IANzG,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,EACR,YAAY,EAAE,0BAA0B,EAC3C,aAAa,EAAE,uBAAuB,EACtB,yBAAyB,EAAE,uCAAuC;IAKlJ;;;;;;OAMG;IACU,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA6ClF;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0F1B;;;OAGG;YACW,sBAAsB;CAqDrC"}
1
+ {"version":3,"file":"sms.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/sms/services/sms.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AAEnH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sEAAsE,CAAC;AACpH,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4FAA4F,CAAC;AAa1J,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6CD,qBACa,iBAAiB;IAIS,OAAO,CAAC,QAAQ,CAAC,MAAM;IACV,OAAO,CAAC,QAAQ,CAAC,YAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;IACd,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IANzG,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,EACR,YAAY,EAAE,0BAA0B,EAC3C,aAAa,EAAE,uBAAuB,EACtB,yBAAyB,EAAE,uCAAuC;IAKlJ;;;;;;OAMG;IACU,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA6ClF;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0F1B;;;OAGG;YACW,sBAAsB;CAqDrC"}
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Main service for sending SMS messages. Orchestrates:
5
5
  * - Provider resolution via ExternalProvidersRegistryBackendService
6
- * - Request transformation via SMSFeature
6
+ * - The provider's own `SMS_PROVIDER` runtime contract, read from the registry, which supplies the
7
+ * endpoint and the request/response projection
7
8
  * - Raw HTTP execution (Basic Auth for Twilio)
8
- * - Response parsing via SMSFeature
9
9
  *
10
10
  * Mirrors the pattern of EmailBackendService for consistency.
11
11
  */
@@ -25,7 +25,7 @@ import { injectable, inject } from 'inversify';
25
25
  import { SAAS_SERVICE_TYPES } from '../../../inject/models/service-types.js';
26
26
  import { describeCaughtError, projectCaughtErrorLogFields } from '../../../errors/utils/error-log-level-classification.backend.utils.js';
27
27
  import { EngineCapability, ErrorType, WildoHeaderKeys } from '@wildo-ai/saas-models';
28
- import { ExternalProvider_ExchangeProtocol_Kind, } from '@wildo-ai/external-connectors-models';
28
+ import { ExternalProvider_ExchangeProtocol_Kind, ProviderProtocolRuntimeKind, } from '@wildo-ai/external-connectors-models';
29
29
  function parseSMSCredentials(secretValue) {
30
30
  try {
31
31
  const parsed = JSON.parse(secretValue);
@@ -142,7 +142,7 @@ let SMSBackendService = class SMSBackendService {
142
142
  });
143
143
  }
144
144
  const smsContract = this.externalProvidersRegistry.getProviderRuntimeContract(providerId, ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER);
145
- if (smsContract?.kind !== 'sms') {
145
+ if (smsContract?.kind !== ProviderProtocolRuntimeKind.SMS) {
146
146
  throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {
147
147
  context: {
148
148
  message: `No SMS_PROVIDER runtime contract found for provider: ${providerId}`,
@@ -151,7 +151,7 @@ let SMSBackendService = class SMSBackendService {
151
151
  },
152
152
  });
153
153
  }
154
- // The framework currently ships a single `kind: 'sms'` runtime
154
+ // The framework currently ships a single `kind: ProviderProtocolRuntimeKind.SMS` runtime
155
155
  // contract (Twilio). The execute-request path below assumes the
156
156
  // Twilio REST API shape (`/Accounts/{AccountSid}/Messages.json`,
157
157
  // Basic Auth, form-encoded body). When a second SMS adapter
@@ -1 +1 @@
1
- {"version":3,"file":"sms.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/sms/services/sms.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SMS Backend Service\n *\n * Main service for sending SMS messages. Orchestrates:\n * - Provider resolution via ExternalProvidersRegistryBackendService\n * - Request transformation via SMSFeature\n * - Raw HTTP execution (Basic Auth for Twilio)\n * - Response parsing via SMSFeature\n *\n * Mirrors the pattern of EmailBackendService for consistency.\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';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport type { ExternalProvidersRegistryBackendService } from '~wildo-backend-lib/external-providers/services/external-providers-registry.backend.service';\nimport { EngineCapability, ErrorType, WildoHeaderKeys } from '@wildo-ai/saas-models';\nimport {\n ExternalProvider_ExchangeProtocol_Kind,\n type StandardSMS_SendRequest,\n type StandardSMS_SendResponse,\n} from '@wildo-ai/external-connectors-models';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TYPES\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface SMSSendResult {\n success: boolean;\n messageId?: string;\n providerId?: string;\n error?: string;\n}\n\ninterface SMSProviderConfig {\n providerId: string;\n accountSid: string;\n authToken: string;\n endpoint: string;\n fromNumber?: string;\n}\n\nfunction parseSMSCredentials(secretValue: string): { accountSid: string; authToken: string } | null {\n try {\n const parsed = JSON.parse(secretValue) as {\n accountSid?: unknown;\n authToken?: unknown;\n };\n if (\n typeof parsed.accountSid === 'string'\n && parsed.accountSid.length > 0\n && typeof parsed.authToken === 'string'\n && parsed.authToken.length > 0\n ) {\n return {\n accountSid: parsed.accountSid,\n authToken: parsed.authToken,\n };\n }\n } catch {\n // Fallback below handles non-JSON encodings.\n }\n\n const [accountSid, authToken] = secretValue.includes('|')\n ? secretValue.split('|', 2)\n : secretValue.split(':', 2);\n if (accountSid && authToken) {\n return { accountSid, authToken };\n }\n\n return null;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SERVICE\n// ─────────────────────────────────────────────────────────────────────────────\n\n@injectable()\nexport class SMSBackendService {\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 @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly configService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService) private readonly externalProvidersRegistry: ExternalProvidersRegistryBackendService,\n ) {\n this.logDebug = this.logger.debugByType('SMSBackendService');\n }\n\n /**\n * Send an SMS message.\n *\n * @param to - Recipient phone number in E.164 format\n * @param body - Message body\n * @param from - Optional sender phone number (uses provider default if not set)\n */\n public async send(to: string, body: string, from?: string): Promise<SMSSendResult> {\n const startTime = Date.now();\n\n try {\n // 1. Resolve SMS provider\n const providerConfig = this.resolveSMSProvider();\n\n // 2. Build standard request\n const request: StandardSMS_SendRequest = {\n to,\n body,\n from: from ?? providerConfig.fromNumber,\n };\n\n // 3. Execute via provider\n const response = await this.executeProviderRequest(providerConfig, request);\n\n const durationMs = Date.now() - startTime;\n this.logDebug('SMS sent successfully', {\n to,\n providerId: providerConfig.providerId,\n messageId: response.messageId,\n durationMs,\n });\n\n return {\n success: true,\n messageId: response.messageId,\n providerId: providerConfig.providerId,\n };\n } catch (error) {\n const durationMs = Date.now() - startTime;\n this.logger.error('Failed to send SMS', {\n to,\n ...projectCaughtErrorLogFields(error),\n durationMs,\n });\n\n return {\n success: false,\n error: describeCaughtError(error),\n };\n }\n }\n\n /**\n * Resolve the SMS provider for the SMS capability.\n * Mirrors EmailBackendService.resolveEmailProvider() pattern.\n */\n private resolveSMSProvider(): SMSProviderConfig {\n const providerId = this.externalProvidersRegistry.getPrimaryProviderForEngineCapability(EngineCapability.SMS);\n\n if (!providerId) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n { context: { message: 'No SMS provider configured for capability: SMS', capability: EngineCapability.SMS } }\n );\n }\n\n if (!this.externalProvidersRegistry.isProviderEnabled(providerId, ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER)) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n { context: { message: `SMS provider is disabled by external provider configuration: ${providerId}`, providerId } },\n );\n }\n\n const secretRef = this.externalProvidersRegistry.getConfiguredProviderSecretRef(\n providerId,\n ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n );\n const encodedCredentials = secretRef\n ? this.externalProvidersRegistry.getProviderSecret(\n providerId,\n ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n secretRef,\n )\n : undefined;\n const parsedCredentials = encodedCredentials\n ? parseSMSCredentials(encodedCredentials)\n : null;\n\n if (!parsedCredentials) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n context: {\n message: `No env-provided credentials configured for SMS provider: ${providerId}`,\n providerId,\n capability: EngineCapability.SMS,\n secretRef,\n },\n }\n );\n }\n\n const smsContract = this.externalProvidersRegistry.getProviderRuntimeContract(\n providerId,\n ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n );\n if (smsContract?.kind !== 'sms') {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n context: {\n message: `No SMS_PROVIDER runtime contract found for provider: ${providerId}`,\n providerId,\n capability: EngineCapability.SMS,\n },\n }\n );\n }\n // The framework currently ships a single `kind: 'sms'` runtime\n // contract (Twilio). The execute-request path below assumes the\n // Twilio REST API shape (`/Accounts/{AccountSid}/Messages.json`,\n // Basic Auth, form-encoded body). When a second SMS adapter\n // arrives, factor the provider-specific request shape into the\n // contract via `sdkFactory` / `buildSendPayload` (mirror of the\n // email surface) — do NOT reintroduce a `provider === '<ref>'`\n // literal at this consumer site.\n const appConfig = this.configService.config as Record<string, unknown>;\n // Get optional from number from provider config\n const providersConfig = appConfig?.providerConfigurations as Record<string, Record<string, {\n fromNumber?: string;\n }> | undefined> | undefined;\n const providerConf = providersConfig?.[providerId]?.[ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER];\n\n return {\n providerId,\n accountSid: parsedCredentials.accountSid,\n authToken: parsedCredentials.authToken,\n endpoint: smsContract.baseUrl,\n fromNumber: providerConf?.fromNumber,\n };\n }\n\n /**\n * Execute the SMS send request via provider.\n * Uses raw fetch() with Basic Auth for Twilio's REST API (form-encoded).\n */\n private async executeProviderRequest(\n providerConfig: SMSProviderConfig,\n request: StandardSMS_SendRequest\n ): Promise<StandardSMS_SendResponse> {\n // Build the URL (Twilio uses /Accounts/{AccountSid}/Messages.json)\n const url = `${providerConfig.endpoint}/Accounts/${providerConfig.accountSid}/Messages.json`;\n\n // Build Basic Auth header\n const basicAuth = Buffer.from(`${providerConfig.accountSid}:${providerConfig.authToken}`).toString('base64');\n\n // Build form-encoded body from transformer output\n const formBody = new URLSearchParams({\n To: request.to,\n Body: request.body,\n ...(request.from ? { From: request.from } : {}),\n }).toString();\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n [WildoHeaderKeys.CONTENT_TYPE]: 'application/x-www-form-urlencoded',\n [WildoHeaderKeys.AUTHORIZATION]: `Basic ${basicAuth}`,\n },\n body: formBody,\n });\n\n if (!response.ok) {\n const errorBody = await response.text();\n throw this.errorBuilder.buildError(\n ErrorType.EXTERNAL_SERVICE,\n undefined,\n {\n context: {\n message: `SMS provider returned error: ${response.status}`,\n providerId: providerConfig.providerId,\n statusCode: response.status,\n errorBody,\n }\n }\n );\n }\n\n const responseData = await response.json() as Record<string, unknown>;\n const hasProviderError = responseData.error_code !== undefined && responseData.error_code !== null;\n\n return {\n success: !hasProviderError,\n messageId: String(responseData.sid ?? responseData.messageId ?? `${providerConfig.providerId}-${Date.now()}`),\n status: hasProviderError\n ? 'failed'\n : typeof responseData.status === 'string' ? responseData.status as StandardSMS_SendResponse['status'] : undefined,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"sms.backend.service.js","sourceRoot":"","sources":["../../../../../../src/notifications/sms/services/sms.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * SMS Backend Service\n *\n * Main service for sending SMS messages. Orchestrates:\n * - Provider resolution via ExternalProvidersRegistryBackendService\n * - The provider's own `SMS_PROVIDER` runtime contract, read from the registry, which supplies the\n * endpoint and the request/response projection\n * - Raw HTTP execution (Basic Auth for Twilio)\n *\n * Mirrors the pattern of EmailBackendService for consistency.\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';\nimport type { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\nimport { describeCaughtError, projectCaughtErrorLogFields } from '~wildo-backend-lib/errors/utils/error-log-level-classification.backend.utils';\nimport type { AppConfigurationService } from '~wildo-backend-lib/config/services/app-configuration.backend.service';\nimport type { ExternalProvidersRegistryBackendService } from '~wildo-backend-lib/external-providers/services/external-providers-registry.backend.service';\nimport { EngineCapability, ErrorType, WildoHeaderKeys } from '@wildo-ai/saas-models';\nimport {\n ExternalProvider_ExchangeProtocol_Kind,\n type StandardSMS_SendRequest,\n type StandardSMS_SendResponse,\n ProviderProtocolRuntimeKind,\n} from '@wildo-ai/external-connectors-models';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// TYPES\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface SMSSendResult {\n success: boolean;\n messageId?: string;\n providerId?: string;\n error?: string;\n}\n\ninterface SMSProviderConfig {\n providerId: string;\n accountSid: string;\n authToken: string;\n endpoint: string;\n fromNumber?: string;\n}\n\nfunction parseSMSCredentials(secretValue: string): { accountSid: string; authToken: string } | null {\n try {\n const parsed = JSON.parse(secretValue) as {\n accountSid?: unknown;\n authToken?: unknown;\n };\n if (\n typeof parsed.accountSid === 'string'\n && parsed.accountSid.length > 0\n && typeof parsed.authToken === 'string'\n && parsed.authToken.length > 0\n ) {\n return {\n accountSid: parsed.accountSid,\n authToken: parsed.authToken,\n };\n }\n } catch {\n // Fallback below handles non-JSON encodings.\n }\n\n const [accountSid, authToken] = secretValue.includes('|')\n ? secretValue.split('|', 2)\n : secretValue.split(':', 2);\n if (accountSid && authToken) {\n return { accountSid, authToken };\n }\n\n return null;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// SERVICE\n// ─────────────────────────────────────────────────────────────────────────────\n\n@injectable()\nexport class SMSBackendService {\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 @inject(SAAS_SERVICE_TYPES.AppConfigService) private readonly configService: AppConfigurationService,\n @inject(SAAS_SERVICE_TYPES.ExternalProvidersRegistryService) private readonly externalProvidersRegistry: ExternalProvidersRegistryBackendService,\n ) {\n this.logDebug = this.logger.debugByType('SMSBackendService');\n }\n\n /**\n * Send an SMS message.\n *\n * @param to - Recipient phone number in E.164 format\n * @param body - Message body\n * @param from - Optional sender phone number (uses provider default if not set)\n */\n public async send(to: string, body: string, from?: string): Promise<SMSSendResult> {\n const startTime = Date.now();\n\n try {\n // 1. Resolve SMS provider\n const providerConfig = this.resolveSMSProvider();\n\n // 2. Build standard request\n const request: StandardSMS_SendRequest = {\n to,\n body,\n from: from ?? providerConfig.fromNumber,\n };\n\n // 3. Execute via provider\n const response = await this.executeProviderRequest(providerConfig, request);\n\n const durationMs = Date.now() - startTime;\n this.logDebug('SMS sent successfully', {\n to,\n providerId: providerConfig.providerId,\n messageId: response.messageId,\n durationMs,\n });\n\n return {\n success: true,\n messageId: response.messageId,\n providerId: providerConfig.providerId,\n };\n } catch (error) {\n const durationMs = Date.now() - startTime;\n this.logger.error('Failed to send SMS', {\n to,\n ...projectCaughtErrorLogFields(error),\n durationMs,\n });\n\n return {\n success: false,\n error: describeCaughtError(error),\n };\n }\n }\n\n /**\n * Resolve the SMS provider for the SMS capability.\n * Mirrors EmailBackendService.resolveEmailProvider() pattern.\n */\n private resolveSMSProvider(): SMSProviderConfig {\n const providerId = this.externalProvidersRegistry.getPrimaryProviderForEngineCapability(EngineCapability.SMS);\n\n if (!providerId) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n { context: { message: 'No SMS provider configured for capability: SMS', capability: EngineCapability.SMS } }\n );\n }\n\n if (!this.externalProvidersRegistry.isProviderEnabled(providerId, ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER)) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n { context: { message: `SMS provider is disabled by external provider configuration: ${providerId}`, providerId } },\n );\n }\n\n const secretRef = this.externalProvidersRegistry.getConfiguredProviderSecretRef(\n providerId,\n ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n );\n const encodedCredentials = secretRef\n ? this.externalProvidersRegistry.getProviderSecret(\n providerId,\n ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n secretRef,\n )\n : undefined;\n const parsedCredentials = encodedCredentials\n ? parseSMSCredentials(encodedCredentials)\n : null;\n\n if (!parsedCredentials) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n context: {\n message: `No env-provided credentials configured for SMS provider: ${providerId}`,\n providerId,\n capability: EngineCapability.SMS,\n secretRef,\n },\n }\n );\n }\n\n const smsContract = this.externalProvidersRegistry.getProviderRuntimeContract(\n providerId,\n ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER,\n );\n if (smsContract?.kind !== ProviderProtocolRuntimeKind.SMS) {\n throw this.errorBuilder.buildError(\n ErrorType.CONFIGURATION,\n undefined,\n {\n context: {\n message: `No SMS_PROVIDER runtime contract found for provider: ${providerId}`,\n providerId,\n capability: EngineCapability.SMS,\n },\n }\n );\n }\n // The framework currently ships a single `kind: ProviderProtocolRuntimeKind.SMS` runtime\n // contract (Twilio). The execute-request path below assumes the\n // Twilio REST API shape (`/Accounts/{AccountSid}/Messages.json`,\n // Basic Auth, form-encoded body). When a second SMS adapter\n // arrives, factor the provider-specific request shape into the\n // contract via `sdkFactory` / `buildSendPayload` (mirror of the\n // email surface) — do NOT reintroduce a `provider === '<ref>'`\n // literal at this consumer site.\n const appConfig = this.configService.config as Record<string, unknown>;\n // Get optional from number from provider config\n const providersConfig = appConfig?.providerConfigurations as Record<string, Record<string, {\n fromNumber?: string;\n }> | undefined> | undefined;\n const providerConf = providersConfig?.[providerId]?.[ExternalProvider_ExchangeProtocol_Kind.SMS_PROVIDER];\n\n return {\n providerId,\n accountSid: parsedCredentials.accountSid,\n authToken: parsedCredentials.authToken,\n endpoint: smsContract.baseUrl,\n fromNumber: providerConf?.fromNumber,\n };\n }\n\n /**\n * Execute the SMS send request via provider.\n * Uses raw fetch() with Basic Auth for Twilio's REST API (form-encoded).\n */\n private async executeProviderRequest(\n providerConfig: SMSProviderConfig,\n request: StandardSMS_SendRequest\n ): Promise<StandardSMS_SendResponse> {\n // Build the URL (Twilio uses /Accounts/{AccountSid}/Messages.json)\n const url = `${providerConfig.endpoint}/Accounts/${providerConfig.accountSid}/Messages.json`;\n\n // Build Basic Auth header\n const basicAuth = Buffer.from(`${providerConfig.accountSid}:${providerConfig.authToken}`).toString('base64');\n\n // Build form-encoded body from transformer output\n const formBody = new URLSearchParams({\n To: request.to,\n Body: request.body,\n ...(request.from ? { From: request.from } : {}),\n }).toString();\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n [WildoHeaderKeys.CONTENT_TYPE]: 'application/x-www-form-urlencoded',\n [WildoHeaderKeys.AUTHORIZATION]: `Basic ${basicAuth}`,\n },\n body: formBody,\n });\n\n if (!response.ok) {\n const errorBody = await response.text();\n throw this.errorBuilder.buildError(\n ErrorType.EXTERNAL_SERVICE,\n undefined,\n {\n context: {\n message: `SMS provider returned error: ${response.status}`,\n providerId: providerConfig.providerId,\n statusCode: response.status,\n errorBody,\n }\n }\n );\n }\n\n const responseData = await response.json() as Record<string, unknown>;\n const hasProviderError = responseData.error_code !== undefined && responseData.error_code !== null;\n\n return {\n success: !hasProviderError,\n messageId: String(responseData.sid ?? responseData.messageId ?? `${providerConfig.providerId}-${Date.now()}`),\n status: hasProviderError\n ? 'failed'\n : typeof responseData.status === 'string' ? responseData.status as StandardSMS_SendResponse['status'] : undefined,\n };\n }\n}\n"]}
@@ -6,9 +6,11 @@
6
6
  * then iterates each provider's endpoints, and registers:
7
7
  * POST /webhooks/{providerRef}/{endpointKey}
8
8
  *
9
- * e.g., POST /webhooks/stripe/billing
10
- * POST /webhooks/google/calendar
11
- * POST /webhooks/google/drive
9
+ * One provider declares the protocol today, and it declares one endpoint:
10
+ * POST /webhooks/stripe/billing
11
+ *
12
+ * A second provider registers here the moment it declares `WEBHOOK_ORIGINATOR` with its own
13
+ * `endpoints`; no edit to this controller is needed.
12
14
  *
13
15
  * This replaces manual per-provider webhook controllers (like BillingWebhookControllerBackendService).
14
16
  *
@@ -22,6 +24,36 @@ import type { BackendProviderRegistryBackendService } from '../../../external-pr
22
24
  import type { ExternalProvidersRegistryBackendService } from '../../../external-providers/services/external-providers-registry.backend.service';
23
25
  import { AbstractControllerBackendService } from '../../../base-classes/services/controllers/abstract-controller.backend.service';
24
26
  import type { WebhookHandlerBackendService } from '../../../notifications/webhooks/services/webhook-handler.backend.service';
27
+ /**
28
+ * Why a declared webhook endpoint did NOT get an Express route.
29
+ *
30
+ * A closed vocabulary rather than a free string: each member names a DIFFERENT
31
+ * missing registration, with a different remedy, and an operator reading the
32
+ * startup log has to be able to tell them apart. The two are independent — an
33
+ * endpoint can be missing either, or both.
34
+ */
35
+ export declare enum WebhookRouteWithholdingReason {
36
+ /**
37
+ * No {@link WebhookCapabilityHandler} is registered for the endpoint's
38
+ * `capability`. The route would reach `handleWebhookRequest`, complete
39
+ * signature verification and idempotency claiming, then fail at dispatch.
40
+ */
41
+ NO_CAPABILITY_HANDLER = "NO_CAPABILITY_HANDLER",
42
+ /**
43
+ * No `WebhookCapabilityAdapter` is registered for `providerRef:endpointKey`
44
+ * on {@link WebhookHandlerBackendService}. The route would fail at the very
45
+ * top of `processWebhook`, before signature verification.
46
+ */
47
+ NO_ENDPOINT_ADAPTER = "NO_ENDPOINT_ADAPTER"
48
+ }
49
+ /** One declared endpoint whose route was deliberately not mounted, and why. */
50
+ export interface WebhookRouteWithholding {
51
+ providerRef: string;
52
+ endpointKey: string;
53
+ capability: string;
54
+ routePath: string;
55
+ reasons: WebhookRouteWithholdingReason[];
56
+ }
25
57
  export declare class WebhookAutoControllerBackendService extends AbstractControllerBackendService {
26
58
  private readonly backendProviderRegistry;
27
59
  private readonly externalProvidersRegistry;
@@ -34,7 +66,21 @@ export declare class WebhookAutoControllerBackendService extends AbstractControl
34
66
  * setupRoutes() reads from this cache (sync) to register routes.
35
67
  */
36
68
  private loadedEndpoints;
37
- /** Routes recorded only after Express accepted their registration. */
69
+ /** Route paths recorded only after Express accepted their registration. */
70
+ private registeredRoutePaths;
71
+ /**
72
+ * Declared endpoints whose route was WITHHELD because the capability could
73
+ * not be dispatched. Kept so the decision is inspectable after startup rather
74
+ * than only visible in a log line that has already scrolled past.
75
+ */
76
+ private withheldRoutes;
77
+ /**
78
+ * Set once {@link registerWebhookRoutes} has run. The mount decision is taken
79
+ * ONCE, from the registration state at that instant, so anything registered
80
+ * afterwards cannot change which routes exist — see
81
+ * {@link registerCapabilityHandler}, which refuses to let that be silent.
82
+ */
83
+ private routesRegistered;
38
84
  constructor(logger: LoggerService, errorBuilder: ErrorBuilderBackendService, errorHandler: ErrorHandlerService, backendProviderRegistry: BackendProviderRegistryBackendService, externalProvidersRegistry: ExternalProvidersRegistryBackendService);
39
85
  /**
40
86
  * Initialize with required dependencies, pre-load endpoint configs, AND
@@ -69,6 +115,16 @@ export declare class WebhookAutoControllerBackendService extends AbstractControl
69
115
  /**
70
116
  * Register a capability handler for dispatching processed events.
71
117
  * Called at startup by capability modules (e.g., billing module).
118
+ *
119
+ * MUST be called before {@link initialize}. `start-application` satisfies this
120
+ * ordering today — step 4.5 initializes capability modules (which register
121
+ * here) and step 4.6 initializes this controller — and the guard below exists
122
+ * so a future step inserted the other way round is LOUD instead of silent.
123
+ *
124
+ * The failure it catches is genuinely confusing without it: a late-registered
125
+ * handler works perfectly at request time (the map is read per request), but
126
+ * the route it would serve was already withheld at mount time, so the endpoint
127
+ * answers 404 while a handler for it demonstrably exists.
72
128
  */
73
129
  registerCapabilityHandler(handler: WebhookCapabilityHandler): void;
74
130
  /**
@@ -76,6 +132,13 @@ export declare class WebhookAutoControllerBackendService extends AbstractControl
76
132
  * registered. Provider configuration, signature material, endpoint payloads,
77
133
  * and handler metadata are intentionally absent.
78
134
  */
135
+ getRegisteredWebhookRoutePaths(): ReadonlyArray<string>;
136
+ /**
137
+ * Return the declared endpoints whose route was deliberately NOT mounted,
138
+ * with the reason. Carries no provider configuration or signature material —
139
+ * only the route identity and which registration was missing.
140
+ */
141
+ getWithheldWebhookRoutes(): ReadonlyArray<WebhookRouteWithholding>;
79
142
  /**
80
143
  * Required by `AbstractControllerBackendService`, which invokes this hook
81
144
  * synchronously from its constructor (`super(...)`). This controller
@@ -87,13 +150,62 @@ export declare class WebhookAutoControllerBackendService extends AbstractControl
87
150
  */
88
151
  protected setupRoutes(): void;
89
152
  /**
90
- * Register one Express route per pre-loaded provider webhook endpoint.
153
+ * Register one Express route per pre-loaded provider webhook endpoint —
154
+ * EXCEPT those whose capability cannot actually be dispatched.
155
+ *
91
156
  * Invoked from `initialize()` after `webhookHandler` and `loadedEndpoints`
92
157
  * have been populated. Idempotent-safe against an empty cache; guards on the
93
158
  * handler so a mis-sequenced call fails visibly rather than registering dead
94
159
  * routes.
160
+ *
161
+ * ── Why an undispatchable endpoint is WITHHELD rather than mounted ────────
162
+ *
163
+ * A declared endpoint needs two registrations that this controller does not
164
+ * own and cannot create: a `WebhookCapabilityAdapter` (verify + parse, on
165
+ * `WebhookHandlerBackendService`) and a `WebhookCapabilityHandler` (dispatch,
166
+ * here). Both are supplied by the capability module — for `billing`, inside
167
+ * `start-application.initializeBillingServices`, which is deliberately
168
+ * NON-FATAL: if it throws part-way, or if `billing.enabled` is false while the
169
+ * provider is still enabled for `WEBHOOK_ORIGINATOR`, the application boots
170
+ * with the provider's endpoint declared and neither registration present.
171
+ *
172
+ * Mounting a route in that state produces a 500 on every inbound delivery
173
+ * (`No webhook adapter registered for ...`, or `No capability handler for ...`
174
+ * below), and a 500 is precisely the answer that tells a vendor to RETRY — an
175
+ * instruction that can never be satisfied, because no retry supplies a missing
176
+ * startup registration. The endpoint therefore absorbs the vendor's full retry
177
+ * schedule and eventually gets disabled on the vendor's side, while the only
178
+ * local signal is a repeating error log.
179
+ *
180
+ * Not mounting says the true thing instead: this endpoint does not exist. The
181
+ * vendor gets a 404 rather than a retry instruction, and the operator gets one
182
+ * loud, remedy-naming error at startup — the moment the misconfiguration was
183
+ * actually introduced.
184
+ *
185
+ * REJECTED — refusing at BOOT (throwing from here). It is the shape the rest of
186
+ * the registry uses, and it is wrong at this site for three reasons. (1) It
187
+ * would not even be loud: `start-application.initializeWebhookAutoController`
188
+ * wraps `initialize()` in a non-fatal catch that downgrades a throw to a warn,
189
+ * so the net effect would be a quieter log AND the loss of every OTHER
190
+ * provider's working route. (2) It inverts a decision the engine already took
191
+ * explicitly — billing initialization failure is documented as survivable
192
+ * ("the app can still run without billing"); a failed optional subsystem must
193
+ * not become a refusal to start. (3) `billing.enabled: false` beside a
194
+ * registered Stripe provider is a COHERENT configuration, and refusing to boot
195
+ * over it would be a false alarm. The check is per-endpoint, so a capability
196
+ * that is wired keeps its route regardless of a sibling that is not.
95
197
  */
96
198
  private registerWebhookRoutes;
199
+ /**
200
+ * Decide whether a declared endpoint can actually be served, and if not, say
201
+ * which registration is missing.
202
+ *
203
+ * Returns `null` when the route is dispatchable. Both prerequisites are
204
+ * evaluated (rather than short-circuiting on the first) so an operator gets
205
+ * the WHOLE remedy in one log line instead of fixing one registration and
206
+ * meeting the next on the following restart.
207
+ */
208
+ private assessRouteDispatchability;
97
209
  private handleWebhookRequest;
98
210
  }
99
211
  //# sourceMappingURL=webhook-auto-controller.backend.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-auto-controller.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/webhooks/controllers/webhook-auto-controller.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sCAAsC,CAAC;AAI9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAC5G,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,0FAA0F,CAAC;AACtJ,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4FAA4F,CAAC;AAC1J,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAC5I,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oFAAoF,CAAC;AAEvI,qBACa,mCAAoC,SAAQ,gCAAgC;IAoB1B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACtC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAnBzG,uEAAuE;IACvE,OAAO,CAAC,kBAAkB,CAA+C;IAEzE,OAAO,CAAC,cAAc,CAA6C;IAEnE;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAsC;IAE7D,sEAAsE;gBAGjC,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EACxC,YAAY,EAAE,mBAAmB,EACL,uBAAuB,EAAE,qCAAqC,EAC5D,yBAAyB,EAAE,uCAAuC;IASlJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,UAAU,CACrB,cAAc,EAAE,4BAA4B,GAC3C,OAAO,CAAC,IAAI,CAAC;IAuDhB;;;OAGG;IACH,yBAAyB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAKlE;;;;OAIG;IAMH;;;;;;;;OAQG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;YA0Cf,oBAAoB;CA8EnC"}
1
+ {"version":3,"file":"webhook-auto-controller.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/notifications/webhooks/controllers/webhook-auto-controller.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sCAAsC,CAAC;AAI9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8DAA8D,CAAC;AAClG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAC5G,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,0FAA0F,CAAC;AACtJ,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4FAA4F,CAAC;AAC1J,OAAO,EAAE,gCAAgC,EAAE,MAAM,0FAA0F,CAAC;AAC5I,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oFAAoF,CAAC;AAEvI;;;;;;;GAOG;AACH,oBAAY,6BAA6B;IACvC;;;;OAIG;IACH,qBAAqB,0BAA0B;IAC/C;;;;OAIG;IACH,mBAAmB,wBAAwB;CAC5C;AAED,+EAA+E;AAC/E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,6BAA6B,EAAE,CAAC;CAC1C;AAED,qBACa,mCAAoC,SAAQ,gCAAgC;IAoC1B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACtC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAnCzG,uEAAuE;IACvE,OAAO,CAAC,kBAAkB,CAA+C;IAEzE,OAAO,CAAC,cAAc,CAA6C;IAEnE;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAsC;IAE7D,2EAA2E;IAC3E,OAAO,CAAC,oBAAoB,CAAgB;IAE5C;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAiC;IAEvD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAS;gBAGI,MAAM,EAAE,aAAa,EACR,YAAY,EAAE,0BAA0B,EACxC,YAAY,EAAE,mBAAmB,EACL,uBAAuB,EAAE,qCAAqC,EAC5D,yBAAyB,EAAE,uCAAuC;IASlJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,UAAU,CACrB,cAAc,EAAE,4BAA4B,GAC3C,OAAO,CAAC,IAAI,CAAC;IAuDhB;;;;;;;;;;;;;OAaG;IACH,yBAAyB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAoBlE;;;;OAIG;IACI,8BAA8B,IAAI,aAAa,CAAC,MAAM,CAAC;IAI9D;;;;OAIG;IACI,wBAAwB,IAAI,aAAa,CAAC,uBAAuB,CAAC;IAQzE;;;;;;;;OAQG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,OAAO,CAAC,qBAAqB;IA8D7B;;;;;;;;OAQG;IACH,OAAO,CAAC,0BAA0B;YAwBpB,oBAAoB;CAqFnC"}
@@ -6,9 +6,11 @@
6
6
  * then iterates each provider's endpoints, and registers:
7
7
  * POST /webhooks/{providerRef}/{endpointKey}
8
8
  *
9
- * e.g., POST /webhooks/stripe/billing
10
- * POST /webhooks/google/calendar
11
- * POST /webhooks/google/drive
9
+ * One provider declares the protocol today, and it declares one endpoint:
10
+ * POST /webhooks/stripe/billing
11
+ *
12
+ * A second provider registers here the moment it declares `WEBHOOK_ORIGINATOR` with its own
13
+ * `endpoints`; no edit to this controller is needed.
12
14
  *
13
15
  * This replaces manual per-provider webhook controllers (like BillingWebhookControllerBackendService).
14
16
  *
@@ -31,6 +33,29 @@ import express from 'express';
31
33
  import { ExternalProvider_ExchangeProtocol_Kind, } from '@wildo-ai/external-connectors-models';
32
34
  import { SAAS_SERVICE_TYPES } from '../../../inject/models/service-types.js';
33
35
  import { AbstractControllerBackendService } from '../../../base-classes/services/controllers/abstract-controller.backend.service.js';
36
+ /**
37
+ * Why a declared webhook endpoint did NOT get an Express route.
38
+ *
39
+ * A closed vocabulary rather than a free string: each member names a DIFFERENT
40
+ * missing registration, with a different remedy, and an operator reading the
41
+ * startup log has to be able to tell them apart. The two are independent — an
42
+ * endpoint can be missing either, or both.
43
+ */
44
+ export var WebhookRouteWithholdingReason;
45
+ (function (WebhookRouteWithholdingReason) {
46
+ /**
47
+ * No {@link WebhookCapabilityHandler} is registered for the endpoint's
48
+ * `capability`. The route would reach `handleWebhookRequest`, complete
49
+ * signature verification and idempotency claiming, then fail at dispatch.
50
+ */
51
+ WebhookRouteWithholdingReason["NO_CAPABILITY_HANDLER"] = "NO_CAPABILITY_HANDLER";
52
+ /**
53
+ * No `WebhookCapabilityAdapter` is registered for `providerRef:endpointKey`
54
+ * on {@link WebhookHandlerBackendService}. The route would fail at the very
55
+ * top of `processWebhook`, before signature verification.
56
+ */
57
+ WebhookRouteWithholdingReason["NO_ENDPOINT_ADAPTER"] = "NO_ENDPOINT_ADAPTER";
58
+ })(WebhookRouteWithholdingReason || (WebhookRouteWithholdingReason = {}));
34
59
  let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendService extends AbstractControllerBackendService {
35
60
  backendProviderRegistry;
36
61
  externalProvidersRegistry;
@@ -43,7 +68,21 @@ let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendServ
43
68
  * setupRoutes() reads from this cache (sync) to register routes.
44
69
  */
45
70
  loadedEndpoints = new Map();
46
- /** Routes recorded only after Express accepted their registration. */
71
+ /** Route paths recorded only after Express accepted their registration. */
72
+ registeredRoutePaths = [];
73
+ /**
74
+ * Declared endpoints whose route was WITHHELD because the capability could
75
+ * not be dispatched. Kept so the decision is inspectable after startup rather
76
+ * than only visible in a log line that has already scrolled past.
77
+ */
78
+ withheldRoutes = [];
79
+ /**
80
+ * Set once {@link registerWebhookRoutes} has run. The mount decision is taken
81
+ * ONCE, from the registration state at that instant, so anything registered
82
+ * afterwards cannot change which routes exist — see
83
+ * {@link registerCapabilityHandler}, which refuses to let that be silent.
84
+ */
85
+ routesRegistered = false;
47
86
  constructor(logger, errorBuilder, errorHandler, backendProviderRegistry, externalProvidersRegistry) {
48
87
  super(logger, errorBuilder, errorHandler, 'WebhookAutoController');
49
88
  this.backendProviderRegistry = backendProviderRegistry;
@@ -126,9 +165,29 @@ let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendServ
126
165
  /**
127
166
  * Register a capability handler for dispatching processed events.
128
167
  * Called at startup by capability modules (e.g., billing module).
168
+ *
169
+ * MUST be called before {@link initialize}. `start-application` satisfies this
170
+ * ordering today — step 4.5 initializes capability modules (which register
171
+ * here) and step 4.6 initializes this controller — and the guard below exists
172
+ * so a future step inserted the other way round is LOUD instead of silent.
173
+ *
174
+ * The failure it catches is genuinely confusing without it: a late-registered
175
+ * handler works perfectly at request time (the map is read per request), but
176
+ * the route it would serve was already withheld at mount time, so the endpoint
177
+ * answers 404 while a handler for it demonstrably exists.
129
178
  */
130
179
  registerCapabilityHandler(handler) {
131
180
  this.capabilityHandlers.set(handler.capability, handler);
181
+ if (this.routesRegistered) {
182
+ this.logger.error(`WebhookAutoController: capability handler for '${handler.capability}' was registered AFTER webhook routes were mounted. `
183
+ + 'Route mounting is decided once, from the registrations present at that moment, so this handler cannot bring back any route '
184
+ + 'that was withheld for a missing handler — those endpoints will keep answering 404. '
185
+ + 'Register capability handlers before WebhookAutoControllerBackendService.initialize() runs.', {
186
+ capability: handler.capability,
187
+ withheldRoutes: this.withheldRoutes.map((withholding) => withholding.routePath),
188
+ });
189
+ return;
190
+ }
132
191
  this.logDebug(`Registered webhook capability handler for ${handler.capability}`);
133
192
  }
134
193
  /**
@@ -136,6 +195,17 @@ let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendServ
136
195
  * registered. Provider configuration, signature material, endpoint payloads,
137
196
  * and handler metadata are intentionally absent.
138
197
  */
198
+ getRegisteredWebhookRoutePaths() {
199
+ return [...this.registeredRoutePaths];
200
+ }
201
+ /**
202
+ * Return the declared endpoints whose route was deliberately NOT mounted,
203
+ * with the reason. Carries no provider configuration or signature material —
204
+ * only the route identity and which registration was missing.
205
+ */
206
+ getWithheldWebhookRoutes() {
207
+ return this.withheldRoutes.map((withholding) => ({ ...withholding, reasons: [...withholding.reasons] }));
208
+ }
139
209
  // ════════════════════════════════════════════════════════════
140
210
  // Routes
141
211
  // ════════════════════════════════════════════════════════════
@@ -152,13 +222,53 @@ let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendServ
152
222
  // No-op by design — see JSDoc above and `registerWebhookRoutes()`.
153
223
  }
154
224
  /**
155
- * Register one Express route per pre-loaded provider webhook endpoint.
225
+ * Register one Express route per pre-loaded provider webhook endpoint —
226
+ * EXCEPT those whose capability cannot actually be dispatched.
227
+ *
156
228
  * Invoked from `initialize()` after `webhookHandler` and `loadedEndpoints`
157
229
  * have been populated. Idempotent-safe against an empty cache; guards on the
158
230
  * handler so a mis-sequenced call fails visibly rather than registering dead
159
231
  * routes.
232
+ *
233
+ * ── Why an undispatchable endpoint is WITHHELD rather than mounted ────────
234
+ *
235
+ * A declared endpoint needs two registrations that this controller does not
236
+ * own and cannot create: a `WebhookCapabilityAdapter` (verify + parse, on
237
+ * `WebhookHandlerBackendService`) and a `WebhookCapabilityHandler` (dispatch,
238
+ * here). Both are supplied by the capability module — for `billing`, inside
239
+ * `start-application.initializeBillingServices`, which is deliberately
240
+ * NON-FATAL: if it throws part-way, or if `billing.enabled` is false while the
241
+ * provider is still enabled for `WEBHOOK_ORIGINATOR`, the application boots
242
+ * with the provider's endpoint declared and neither registration present.
243
+ *
244
+ * Mounting a route in that state produces a 500 on every inbound delivery
245
+ * (`No webhook adapter registered for ...`, or `No capability handler for ...`
246
+ * below), and a 500 is precisely the answer that tells a vendor to RETRY — an
247
+ * instruction that can never be satisfied, because no retry supplies a missing
248
+ * startup registration. The endpoint therefore absorbs the vendor's full retry
249
+ * schedule and eventually gets disabled on the vendor's side, while the only
250
+ * local signal is a repeating error log.
251
+ *
252
+ * Not mounting says the true thing instead: this endpoint does not exist. The
253
+ * vendor gets a 404 rather than a retry instruction, and the operator gets one
254
+ * loud, remedy-naming error at startup — the moment the misconfiguration was
255
+ * actually introduced.
256
+ *
257
+ * REJECTED — refusing at BOOT (throwing from here). It is the shape the rest of
258
+ * the registry uses, and it is wrong at this site for three reasons. (1) It
259
+ * would not even be loud: `start-application.initializeWebhookAutoController`
260
+ * wraps `initialize()` in a non-fatal catch that downgrades a throw to a warn,
261
+ * so the net effect would be a quieter log AND the loss of every OTHER
262
+ * provider's working route. (2) It inverts a decision the engine already took
263
+ * explicitly — billing initialization failure is documented as survivable
264
+ * ("the app can still run without billing"); a failed optional subsystem must
265
+ * not become a refusal to start. (3) `billing.enabled: false` beside a
266
+ * registered Stripe provider is a COHERENT configuration, and refusing to boot
267
+ * over it would be a false alarm. The check is per-endpoint, so a capability
268
+ * that is wired keeps its route regardless of a sibling that is not.
160
269
  */
161
270
  registerWebhookRoutes() {
271
+ this.routesRegistered = true;
162
272
  if (!this.webhookHandler) {
163
273
  this.logger.warn('WebhookAutoController: initialize() ran without a webhook handler — no routes registered');
164
274
  return;
@@ -170,6 +280,24 @@ let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendServ
170
280
  for (const [providerRef, endpoints] of this.loadedEndpoints) {
171
281
  for (const endpoint of endpoints) {
172
282
  const routePath = `/webhooks/${providerRef}/${endpoint.key}`;
283
+ const withholding = this.assessRouteDispatchability(providerRef, endpoint, routePath);
284
+ if (withholding) {
285
+ this.withheldRoutes.push(withholding);
286
+ this.logger.error(`WebhookAutoController: NOT registering POST ${routePath} — the endpoint is declared but cannot be dispatched `
287
+ + `(${withholding.reasons.join(', ')}). A route mounted in this state can only ever answer 500, which instructs the `
288
+ + 'vendor to retry an inbound event that no retry can make processable. Withholding the route so the vendor gets a '
289
+ + '404 instead. Remedy: register the capability module that owns '
290
+ + `'${endpoint.capability}' before WebhookAutoControllerBackendService.initialize() runs (for billing, check whether `
291
+ + 'billing initialization was skipped or failed non-fatally earlier in startup), or disable the WEBHOOK_ORIGINATOR '
292
+ + `protocol for provider '${providerRef}'.`, {
293
+ providerRef,
294
+ endpointKey: endpoint.key,
295
+ capability: endpoint.capability,
296
+ routePath,
297
+ reasons: withholding.reasons,
298
+ });
299
+ continue;
300
+ }
173
301
  this.router.post(routePath,
174
302
  // Defense-in-depth for a future streaming mount. If this controller is
175
303
  // ever assigned the RAW_REQUEST_STREAM mount phase, this express.raw()
@@ -183,10 +311,33 @@ let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendServ
183
311
  express.raw({ type: 'application/json' }), this.asyncHandler(async (req, res, _next) => {
184
312
  await this.handleWebhookRequest(providerRef, endpoint, req, res);
185
313
  }));
314
+ this.registeredRoutePaths.push(routePath);
186
315
  this.logger.info(`Webhook endpoint registered: POST ${routePath}`);
187
316
  }
188
317
  }
189
318
  }
319
+ /**
320
+ * Decide whether a declared endpoint can actually be served, and if not, say
321
+ * which registration is missing.
322
+ *
323
+ * Returns `null` when the route is dispatchable. Both prerequisites are
324
+ * evaluated (rather than short-circuiting on the first) so an operator gets
325
+ * the WHOLE remedy in one log line instead of fixing one registration and
326
+ * meeting the next on the following restart.
327
+ */
328
+ assessRouteDispatchability(providerRef, endpoint, routePath) {
329
+ const reasons = [];
330
+ if (!this.capabilityHandlers.has(endpoint.capability)) {
331
+ reasons.push(WebhookRouteWithholdingReason.NO_CAPABILITY_HANDLER);
332
+ }
333
+ if (!this.webhookHandler?.hasAdapter(providerRef, endpoint.key)) {
334
+ reasons.push(WebhookRouteWithholdingReason.NO_ENDPOINT_ADAPTER);
335
+ }
336
+ if (reasons.length === 0) {
337
+ return null;
338
+ }
339
+ return { providerRef, endpointKey: endpoint.key, capability: endpoint.capability, routePath, reasons };
340
+ }
190
341
  // ════════════════════════════════════════════════════════════
191
342
  // Handler
192
343
  // ════════════════════════════════════════════════════════════
@@ -228,7 +379,14 @@ let WebhookAutoControllerBackendService = class WebhookAutoControllerBackendServ
228
379
  res.status(200).json({ received: true });
229
380
  return;
230
381
  }
231
- // Dispatch to capability handler
382
+ // Dispatch to capability handler.
383
+ //
384
+ // Defence in depth only: `registerWebhookRoutes` refuses to MOUNT a route
385
+ // whose capability has no handler, so this branch is unreachable while that
386
+ // gate holds — reaching it means the handler map was mutated after mounting
387
+ // (which `registerCapabilityHandler` refuses to do silently). The throw is
388
+ // kept rather than removed because the alternative — dispatching to
389
+ // `undefined` — would 500 anyway, with no explanation.
232
390
  const handler = this.capabilityHandlers.get(endpoint.capability);
233
391
  if (handler) {
234
392
  await handler.handleEvent(result.executionContext, result.parsedEvent);