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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (972) hide show
  1. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.d.ts.map +1 -1
  2. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js +19 -1
  3. package/dist/esm/applications/services/worker-remote-client-factory.backend.service.js.map +1 -1
  4. package/dist/esm/base-classes/models/manual-controllers.backend.definition.d.ts.map +1 -1
  5. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js +4 -0
  6. package/dist/esm/base-classes/models/manual-controllers.backend.definition.js.map +1 -1
  7. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts +35 -0
  8. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.d.ts.map +1 -0
  9. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js +111 -0
  10. package/dist/esm/base-classes/services/batches/child-lifecycle-teardown.batch.backend.service.js.map +1 -0
  11. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts +50 -0
  12. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.d.ts.map +1 -0
  13. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js +199 -0
  14. package/dist/esm/base-classes/services/batches/credential-expiry-sweep.batch.backend.service.js.map +1 -0
  15. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts +111 -0
  16. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.d.ts.map +1 -1
  17. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js +140 -0
  18. package/dist/esm/base-classes/services/batches/engine-custom-batch-manifests.js.map +1 -1
  19. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts +14 -3
  20. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.d.ts.map +1 -1
  21. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js +138 -24
  22. package/dist/esm/base-classes/services/controllers/controller-resource.backend.service.js.map +1 -1
  23. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts +3 -1
  24. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.d.ts.map +1 -1
  25. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js +8 -3
  26. package/dist/esm/base-classes/services/controllers/controllers-registry-handler.backend.service.js.map +1 -1
  27. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts +11 -0
  28. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.d.ts.map +1 -1
  29. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js +11 -2
  30. package/dist/esm/base-classes/services/repositories/field-clearing-partition.backend.js.map +1 -1
  31. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts +124 -13
  32. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.d.ts.map +1 -1
  33. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js +207 -21
  34. package/dist/esm/base-classes/services/repositories/http-api/http-api-provider-access.backend.js.map +1 -1
  35. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts +60 -8
  36. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.d.ts.map +1 -1
  37. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js +174 -26
  38. package/dist/esm/base-classes/services/repositories/http-api/http-api-read-client.backend.js.map +1 -1
  39. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts +48 -4
  40. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.d.ts.map +1 -1
  41. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js +102 -30
  42. package/dist/esm/base-classes/services/repositories/http-api/http-api-resource-repository.backend.service.js.map +1 -1
  43. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts +55 -0
  44. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.d.ts.map +1 -0
  45. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js +114 -0
  46. package/dist/esm/base-classes/services/repositories/http-api/http-api-rest-operation-reference.backend.js.map +1 -0
  47. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts +89 -14
  48. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.d.ts.map +1 -1
  49. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js +84 -11
  50. package/dist/esm/base-classes/services/repositories/http-api/http-api-transport.backend.js.map +1 -1
  51. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.d.ts.map +1 -1
  52. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js +16 -0
  53. package/dist/esm/base-classes/services/repositories/http-api/odata-query-compiler.backend.js.map +1 -1
  54. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts +20 -6
  55. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.d.ts.map +1 -1
  56. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js +96 -32
  57. package/dist/esm/base-classes/services/repositories/infrastructure-tier-contract.backend.js.map +1 -1
  58. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts +3 -1
  59. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.d.ts.map +1 -1
  60. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js +32 -7
  61. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-repository.backend.service.js.map +1 -1
  62. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts +8 -5
  63. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.d.ts.map +1 -1
  64. package/dist/esm/base-classes/services/repositories/introspection/introspection-resource-source.backend.port.js.map +1 -1
  65. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts +80 -0
  66. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.d.ts.map +1 -1
  67. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js +298 -23
  68. package/dist/esm/base-classes/services/repositories/postgresql-resource-repository.backend.service.js.map +1 -1
  69. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts +71 -1
  70. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.d.ts.map +1 -1
  71. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js +85 -5
  72. package/dist/esm/base-classes/services/repositories/repositories-registry-handler.backend.service.js.map +1 -1
  73. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts +21 -0
  74. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.d.ts.map +1 -1
  75. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js +146 -4
  76. package/dist/esm/base-classes/services/repositories/repository-resource.backend.service.js.map +1 -1
  77. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts +22 -0
  78. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.d.ts.map +1 -1
  79. package/dist/esm/base-classes/services/services/resource-operation-custom-implementation-base.backend.service.js.map +1 -1
  80. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts +3 -26
  81. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.d.ts.map +1 -1
  82. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js +3 -68
  83. package/dist/esm/base-classes/services/services/resource-operation-implementation-coverage.backend.utils.js.map +1 -1
  84. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.d.ts.map +1 -1
  85. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js +4 -1
  86. package/dist/esm/base-classes/services/services/resource-status-transition.custom-impl.backend.service.js.map +1 -1
  87. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts +11 -0
  88. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.d.ts.map +1 -1
  89. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js +39 -5
  90. package/dist/esm/base-classes/services/services/resource-status-transition.definitions.backend.js.map +1 -1
  91. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts +181 -2
  92. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.d.ts.map +1 -1
  93. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js +533 -43
  94. package/dist/esm/base-classes/services/services/services-registry-handler.backend.service.js.map +1 -1
  95. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts +36 -3
  96. package/dist/esm/base-classes/services/services/system-access.backend.service.d.ts.map +1 -1
  97. package/dist/esm/base-classes/services/services/system-access.backend.service.js +70 -8
  98. package/dist/esm/base-classes/services/services/system-access.backend.service.js.map +1 -1
  99. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts +28 -0
  100. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.d.ts.map +1 -0
  101. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js +90 -0
  102. package/dist/esm/billing/batches/billing-reconciliation.batch.backend.service.js.map +1 -0
  103. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts +44 -0
  104. package/dist/esm/billing/batches/usage-flush.batch.backend.service.d.ts.map +1 -0
  105. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js +99 -0
  106. package/dist/esm/billing/batches/usage-flush.batch.backend.service.js.map +1 -0
  107. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts +91 -0
  108. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.d.ts.map +1 -0
  109. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js +152 -0
  110. package/dist/esm/billing/models/billing-provider-event-settlement.backend.schemas.js.map +1 -0
  111. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts +186 -0
  112. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.d.ts.map +1 -0
  113. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js +474 -0
  114. package/dist/esm/billing/services/back-office/billing-reconciliation.backend.service.js.map +1 -0
  115. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts +100 -0
  116. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.d.ts.map +1 -1
  117. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js +209 -6
  118. package/dist/esm/billing/services/back-office/product-catalog-sync.backend.service.js.map +1 -1
  119. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts +200 -4
  120. package/dist/esm/billing/services/back-office/usage-metering.backend.service.d.ts.map +1 -1
  121. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js +593 -64
  122. package/dist/esm/billing/services/back-office/usage-metering.backend.service.js.map +1 -1
  123. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts +36 -0
  124. package/dist/esm/billing/services/billing-adapter-registry.backend.d.ts.map +1 -0
  125. package/dist/esm/billing/services/billing-adapter-registry.backend.js +83 -0
  126. package/dist/esm/billing/services/billing-adapter-registry.backend.js.map +1 -0
  127. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts +9 -0
  128. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.d.ts.map +1 -1
  129. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js +11 -1
  130. package/dist/esm/billing/services/billing-checkout-metadata.backend.utils.js.map +1 -1
  131. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.d.ts.map +1 -1
  132. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js +54 -13
  133. package/dist/esm/billing/services/custom-impl/billing-account.mutations.custom-impl.backend.service.js.map +1 -1
  134. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts +38 -1
  135. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.d.ts.map +1 -1
  136. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js +67 -2
  137. package/dist/esm/billing/services/custom-impl/billing-custom-impl-utils.backend.js.map +1 -1
  138. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts +30 -1
  139. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.d.ts.map +1 -1
  140. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js +43 -1
  141. package/dist/esm/billing/services/custom-impl/billing-custom-implementations.backend.js.map +1 -1
  142. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts +11 -3
  143. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.d.ts.map +1 -1
  144. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js +30 -16
  145. package/dist/esm/billing/services/custom-impl/promotion.custom-ops.custom-impl.backend.service.js.map +1 -1
  146. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.d.ts.map +1 -1
  147. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js +104 -25
  148. package/dist/esm/billing/services/custom-impl/subscription.mutations.custom-impl.backend.service.js.map +1 -1
  149. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts +18 -1
  150. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.d.ts.map +1 -1
  151. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js +106 -2
  152. package/dist/esm/billing/services/stripe-standard-billing-provider.backend.service.js.map +1 -1
  153. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts +52 -0
  154. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.d.ts.map +1 -0
  155. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js +74 -0
  156. package/dist/esm/billing/services/webhooks/__tests__/settlement-ledger.test-double.js.map +1 -0
  157. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts +104 -11
  158. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.d.ts.map +1 -1
  159. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js +260 -26
  160. package/dist/esm/billing/services/webhooks/billing-webhook-event-router.backend.service.js.map +1 -1
  161. package/dist/esm/billing/testing/mock-billing-provider.d.ts +30 -1
  162. package/dist/esm/billing/testing/mock-billing-provider.d.ts.map +1 -1
  163. package/dist/esm/billing/testing/mock-billing-provider.js +25 -0
  164. package/dist/esm/billing/testing/mock-billing-provider.js.map +1 -1
  165. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js +11 -4
  166. package/dist/esm/compliance/audit-trails/batches/audit-logs-archive.batch.backend.service.js.map +1 -1
  167. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts +263 -13
  168. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.d.ts.map +1 -1
  169. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js +376 -58
  170. package/dist/esm/compliance/audit-trails/services/audit-event-dispatcher.backend.service.js.map +1 -1
  171. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts +264 -7
  172. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.d.ts.map +1 -1
  173. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js +414 -5
  174. package/dist/esm/compliance/audit-trails/services/audit-logs.backend.service.js.map +1 -1
  175. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.d.ts.map +1 -1
  176. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js +7 -1
  177. package/dist/esm/compliance/audit-trails/services/composite-audit-log-sink.backend.js.map +1 -1
  178. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts +16 -0
  179. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.d.ts.map +1 -0
  180. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js +140 -0
  181. package/dist/esm/compliance/audit-trails/services/siem-export-config-cache-invalidation.custom-impl.backend.service.js.map +1 -0
  182. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts +42 -0
  183. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.d.ts.map +1 -1
  184. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js +65 -6
  185. package/dist/esm/compliance/audit-trails/services/siem-webhook-delivery.backend.service.js.map +1 -1
  186. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts +110 -0
  187. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.d.ts.map +1 -0
  188. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js +192 -0
  189. package/dist/esm/compliance/audit-trails/services/utils/leased-value-cache.backend.utils.js.map +1 -0
  190. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.d.ts.map +1 -1
  191. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js +45 -0
  192. package/dist/esm/compliance/audit-trails/services/utils/ocsf-activity-mapping.backend.utils.js.map +1 -1
  193. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts +5 -0
  194. package/dist/esm/config/bootstrap/application-runtime-profile.backend.d.ts.map +1 -1
  195. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js +6 -0
  196. package/dist/esm/config/bootstrap/application-runtime-profile.backend.js.map +1 -1
  197. package/dist/esm/config/custom/application-config-controller.backend.service.d.ts.map +1 -1
  198. package/dist/esm/config/custom/application-config-controller.backend.service.js +7 -1
  199. package/dist/esm/config/custom/application-config-controller.backend.service.js.map +1 -1
  200. package/dist/esm/config/models/app-config.backend.schemas.d.ts +146 -46
  201. package/dist/esm/config/models/app-config.backend.schemas.d.ts.map +1 -1
  202. package/dist/esm/config/models/app-config.backend.schemas.js +121 -12
  203. package/dist/esm/config/models/app-config.backend.schemas.js.map +1 -1
  204. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts +38 -15
  205. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.d.ts.map +1 -1
  206. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js +17 -2
  207. package/dist/esm/config/models/provider-runtime-artifact.backend.schemas.js.map +1 -1
  208. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts +0 -1
  209. package/dist/esm/config/services/app-configuration-loader.backend.service.d.ts.map +1 -1
  210. package/dist/esm/config/services/app-configuration-loader.backend.service.js +68 -76
  211. package/dist/esm/config/services/app-configuration-loader.backend.service.js.map +1 -1
  212. package/dist/esm/config/services/app-configuration.backend.service.d.ts.map +1 -1
  213. package/dist/esm/config/services/app-configuration.backend.service.js +23 -1
  214. package/dist/esm/config/services/app-configuration.backend.service.js.map +1 -1
  215. package/dist/esm/config/services/app-configuration.backend.utils.d.ts +43 -1
  216. package/dist/esm/config/services/app-configuration.backend.utils.d.ts.map +1 -1
  217. package/dist/esm/config/services/app-configuration.backend.utils.js +52 -3
  218. package/dist/esm/config/services/app-configuration.backend.utils.js.map +1 -1
  219. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts +25 -0
  220. package/dist/esm/config/services/application-startup-config-validator.backend.service.d.ts.map +1 -1
  221. package/dist/esm/config/services/application-startup-config-validator.backend.service.js +41 -1
  222. package/dist/esm/config/services/application-startup-config-validator.backend.service.js.map +1 -1
  223. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.d.ts +2 -2
  224. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js +2 -2
  225. package/dist/esm/data-seeding/services/shared/data-seed-scope-iteration.shared.utils.js.map +1 -1
  226. package/dist/esm/databases/models/filter.backend.schemas.js +2 -2
  227. package/dist/esm/databases/models/filter.backend.schemas.js.map +1 -1
  228. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.d.ts.map +1 -1
  229. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js +20 -1
  230. package/dist/esm/databases/services/aggregation/aggregation-authorization.backend.service.js.map +1 -1
  231. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.d.ts.map +1 -1
  232. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js +48 -0
  233. package/dist/esm/databases/services/postgresql-schema-plan-diff.backend.js.map +1 -1
  234. package/dist/esm/databases/services/redis.service.d.ts +27 -0
  235. package/dist/esm/databases/services/redis.service.d.ts.map +1 -1
  236. package/dist/esm/databases/services/redis.service.js +29 -0
  237. package/dist/esm/databases/services/redis.service.js.map +1 -1
  238. package/dist/esm/errors/services/error-builder.backend.service.d.ts +13 -1
  239. package/dist/esm/errors/services/error-builder.backend.service.d.ts.map +1 -1
  240. package/dist/esm/errors/services/error-builder.backend.service.js +13 -1
  241. package/dist/esm/errors/services/error-builder.backend.service.js.map +1 -1
  242. package/dist/esm/errors/services/error-handler.backend.service.d.ts +70 -7
  243. package/dist/esm/errors/services/error-handler.backend.service.d.ts.map +1 -1
  244. package/dist/esm/errors/services/error-handler.backend.service.js +134 -8
  245. package/dist/esm/errors/services/error-handler.backend.service.js.map +1 -1
  246. package/dist/esm/errors/services/rate-limit.backend.service.d.ts +66 -0
  247. package/dist/esm/errors/services/rate-limit.backend.service.d.ts.map +1 -1
  248. package/dist/esm/errors/services/rate-limit.backend.service.js +102 -25
  249. package/dist/esm/errors/services/rate-limit.backend.service.js.map +1 -1
  250. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts +5 -0
  251. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.d.ts.map +1 -1
  252. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js +25 -0
  253. package/dist/esm/errors/utils/error-log-level-classification.backend.utils.js.map +1 -1
  254. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts +33 -0
  255. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.d.ts.map +1 -1
  256. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js +40 -0
  257. package/dist/esm/errors/utils/rate-limit-environment-relaxation.backend.utils.js.map +1 -1
  258. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts +41 -0
  259. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.d.ts.map +1 -0
  260. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js +40 -0
  261. package/dist/esm/external-data/controllers/external-data-admin.backend.contracts.js.map +1 -0
  262. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts +64 -0
  263. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.d.ts.map +1 -0
  264. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js +193 -0
  265. package/dist/esm/external-data/controllers/external-data-admin.backend.controller.js.map +1 -0
  266. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts +72 -4
  267. package/dist/esm/external-data/external-data-pipeline-run.backend.service.d.ts.map +1 -1
  268. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js +60 -19
  269. package/dist/esm/external-data/external-data-pipeline-run.backend.service.js.map +1 -1
  270. package/dist/esm/external-data/external-data-transform.backend.d.ts.map +1 -1
  271. package/dist/esm/external-data/external-data-transform.backend.js +7 -1
  272. package/dist/esm/external-data/external-data-transform.backend.js.map +1 -1
  273. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts +2 -0
  274. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.d.ts.map +1 -1
  275. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js +13 -0
  276. package/dist/esm/external-data/models/external-data-pipeline-state.backend.schemas.js.map +1 -1
  277. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts +4 -2
  278. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.d.ts.map +1 -1
  279. package/dist/esm/external-providers/models/provider-selection-resolution-evidence.backend.definitions.js.map +1 -1
  280. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts +256 -0
  281. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.d.ts.map +1 -0
  282. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js +333 -0
  283. package/dist/esm/external-providers/operations/provider-operation-executor.backend.service.js.map +1 -0
  284. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts +56 -0
  285. package/dist/esm/external-providers/operations/provider-operation-request.backend.d.ts.map +1 -0
  286. package/dist/esm/external-providers/operations/provider-operation-request.backend.js +211 -0
  287. package/dist/esm/external-providers/operations/provider-operation-request.backend.js.map +1 -0
  288. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts +45 -0
  289. package/dist/esm/external-providers/operations/provider-request-signing.backend.d.ts.map +1 -0
  290. package/dist/esm/external-providers/operations/provider-request-signing.backend.js +216 -0
  291. package/dist/esm/external-providers/operations/provider-request-signing.backend.js.map +1 -0
  292. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts +56 -0
  293. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.d.ts.map +1 -0
  294. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js +78 -0
  295. package/dist/esm/external-providers/operations/provider-rest-call-client.backend.js.map +1 -0
  296. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts +1 -1
  297. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.d.ts.map +1 -1
  298. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js +2 -2
  299. package/dist/esm/external-providers/services/__tests__/mock-external-providers-registry.service.js.map +1 -1
  300. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts +89 -0
  301. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.d.ts.map +1 -0
  302. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js +164 -0
  303. package/dist/esm/external-providers/services/backend-provider-loader.backend.service.js.map +1 -0
  304. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts +26 -27
  305. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.d.ts.map +1 -1
  306. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js +50 -64
  307. package/dist/esm/external-providers/services/backend-provider-registry.backend.service.js.map +1 -1
  308. package/dist/esm/external-providers/services/document-extraction.backend.service.d.ts.map +1 -1
  309. package/dist/esm/external-providers/services/document-extraction.backend.service.js +3 -3
  310. package/dist/esm/external-providers/services/document-extraction.backend.service.js.map +1 -1
  311. package/dist/esm/external-providers/services/embeddings.backend.service.d.ts.map +1 -1
  312. package/dist/esm/external-providers/services/embeddings.backend.service.js +4 -4
  313. package/dist/esm/external-providers/services/embeddings.backend.service.js.map +1 -1
  314. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts +306 -7
  315. package/dist/esm/external-providers/services/external-providers-registry.backend.service.d.ts.map +1 -1
  316. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js +539 -45
  317. package/dist/esm/external-providers/services/external-providers-registry.backend.service.js.map +1 -1
  318. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.d.ts.map +1 -1
  319. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js +25 -2
  320. package/dist/esm/external-providers/services/frontend-bootstrap.backend.service.js.map +1 -1
  321. package/dist/esm/files/controllers/file.controller.d.ts +24 -1
  322. package/dist/esm/files/controllers/file.controller.d.ts.map +1 -1
  323. package/dist/esm/files/controllers/file.controller.js +83 -11
  324. package/dist/esm/files/controllers/file.controller.js.map +1 -1
  325. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts +17 -0
  326. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.d.ts.map +1 -0
  327. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js +1 -0
  328. package/dist/esm/files/handlers/file-upload-route-locals.backend.types.js.map +1 -0
  329. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts +5 -1
  330. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.d.ts.map +1 -1
  331. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js +76 -13
  332. package/dist/esm/files/handlers/resource-file-upload-handler.backend.service.js.map +1 -1
  333. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts +18 -0
  334. package/dist/esm/files/services/file-operation-handler.backend.service.d.ts.map +1 -1
  335. package/dist/esm/files/services/file-operation-handler.backend.service.js +36 -28
  336. package/dist/esm/files/services/file-operation-handler.backend.service.js.map +1 -1
  337. package/dist/esm/files/services/file-scanning.backend.service.d.ts +94 -9
  338. package/dist/esm/files/services/file-scanning.backend.service.d.ts.map +1 -1
  339. package/dist/esm/files/services/file-scanning.backend.service.js +197 -17
  340. package/dist/esm/files/services/file-scanning.backend.service.js.map +1 -1
  341. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts +60 -1
  342. package/dist/esm/files/services/file-text-extraction.backend.service.d.ts.map +1 -1
  343. package/dist/esm/files/services/file-text-extraction.backend.service.js +167 -8
  344. package/dist/esm/files/services/file-text-extraction.backend.service.js.map +1 -1
  345. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts +214 -0
  346. package/dist/esm/files/services/file-upload-grant.backend.service.d.ts.map +1 -0
  347. package/dist/esm/files/services/file-upload-grant.backend.service.js +566 -0
  348. package/dist/esm/files/services/file-upload-grant.backend.service.js.map +1 -0
  349. package/dist/esm/files/services/files.backend.service.d.ts +87 -0
  350. package/dist/esm/files/services/files.backend.service.d.ts.map +1 -1
  351. package/dist/esm/files/services/files.backend.service.js +252 -19
  352. package/dist/esm/files/services/files.backend.service.js.map +1 -1
  353. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts +109 -0
  354. package/dist/esm/files/storage/application-storage-key.backend.utils.d.ts.map +1 -0
  355. package/dist/esm/files/storage/application-storage-key.backend.utils.js +123 -0
  356. package/dist/esm/files/storage/application-storage-key.backend.utils.js.map +1 -0
  357. package/dist/esm/files/storage/file-storage-provider.types.d.ts +16 -10
  358. package/dist/esm/files/storage/file-storage-provider.types.d.ts.map +1 -1
  359. package/dist/esm/files/storage/file-storage-provider.types.js.map +1 -1
  360. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts +67 -8
  361. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.d.ts.map +1 -1
  362. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js +101 -28
  363. package/dist/esm/files/storage/local-directory-storage-provider.backend.service.js.map +1 -1
  364. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.d.ts.map +1 -1
  365. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js +8 -55
  366. package/dist/esm/files/storage/wildo-managed-storage-provider.backend.service.js.map +1 -1
  367. package/dist/esm/files/utils/file-field-schema-path.backend.utils.d.ts.map +1 -1
  368. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js +20 -0
  369. package/dist/esm/files/utils/file-field-schema-path.backend.utils.js.map +1 -1
  370. package/dist/esm/files/utils/file-uploader.utils.d.ts.map +1 -1
  371. package/dist/esm/files/utils/file-uploader.utils.js +12 -0
  372. package/dist/esm/files/utils/file-uploader.utils.js.map +1 -1
  373. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts +86 -0
  374. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.d.ts.map +1 -0
  375. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js +288 -0
  376. package/dist/esm/files/utils/office-document-text-extraction.backend.utils.js.map +1 -0
  377. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts +15 -0
  378. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.d.ts.map +1 -1
  379. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js +76 -5
  380. package/dist/esm/flows-actors/a2a/batches/a2a-abandoned-task-sweep.batch.backend.service.js.map +1 -1
  381. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.d.ts.map +1 -1
  382. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js +6 -1
  383. package/dist/esm/flows-actors/a2a/controllers/a2a.controller.js.map +1 -1
  384. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts +60 -0
  385. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.d.ts.map +1 -1
  386. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js +63 -0
  387. package/dist/esm/flows-actors/a2a/models/a2a.backend.schemas.js.map +1 -1
  388. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts +74 -0
  389. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.d.ts.map +1 -1
  390. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js +200 -44
  391. package/dist/esm/flows-actors/a2a/services/a2a-task-cancellation.backend.service.js.map +1 -1
  392. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts +7 -1
  393. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.d.ts.map +1 -1
  394. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js +53 -1
  395. package/dist/esm/flows-actors/a2a/services/a2a-task.backend.service.js.map +1 -1
  396. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts +18 -0
  397. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.d.ts.map +1 -1
  398. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js +18 -0
  399. package/dist/esm/flows-actors/a2a/services/a2a-token-budget.backend.service.js.map +1 -1
  400. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts +12 -7
  401. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.d.ts.map +1 -1
  402. package/dist/esm/flows-actors/a2a/services/a2a.backend.service.js.map +1 -1
  403. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts +0 -13
  404. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.d.ts.map +1 -1
  405. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js +14 -22
  406. package/dist/esm/flows-actors/models/agent-catalogs.backend.definitions.js.map +1 -1
  407. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts +8 -3
  408. package/dist/esm/flows-actors/models/core-facets.backend.definitions.d.ts.map +1 -1
  409. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js +25 -15
  410. package/dist/esm/flows-actors/models/core-facets.backend.definitions.js.map +1 -1
  411. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts +13 -1
  412. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.d.ts.map +1 -1
  413. package/dist/esm/flows-actors/models/flows-actors.backend.schemas.js.map +1 -1
  414. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts +88 -8
  415. package/dist/esm/flows-actors/models/function-tools.backend.definitions.d.ts.map +1 -1
  416. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js +333 -31
  417. package/dist/esm/flows-actors/models/function-tools.backend.definitions.js.map +1 -1
  418. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.d.ts.map +1 -1
  419. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js +4 -2
  420. package/dist/esm/flows-actors/models/market-generation.actors-system.backend.definitions.js.map +1 -1
  421. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts +113 -0
  422. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.d.ts.map +1 -0
  423. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js +62 -0
  424. package/dist/esm/flows-actors/models/mcp-client.backend.definitions.js.map +1 -0
  425. package/dist/esm/flows-actors/services/actors-system.backend.service.d.ts.map +1 -1
  426. package/dist/esm/flows-actors/services/actors-system.backend.service.js +0 -2
  427. package/dist/esm/flows-actors/services/actors-system.backend.service.js.map +1 -1
  428. package/dist/esm/flows-actors/services/agents.backend.service.d.ts +107 -1
  429. package/dist/esm/flows-actors/services/agents.backend.service.d.ts.map +1 -1
  430. package/dist/esm/flows-actors/services/agents.backend.service.js +519 -56
  431. package/dist/esm/flows-actors/services/agents.backend.service.js.map +1 -1
  432. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts +5 -1
  433. package/dist/esm/flows-actors/services/conversational-execution.backend.service.d.ts.map +1 -1
  434. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js +79 -16
  435. package/dist/esm/flows-actors/services/conversational-execution.backend.service.js.map +1 -1
  436. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts +34 -5
  437. package/dist/esm/flows-actors/services/flows-actors-registry.service.d.ts.map +1 -1
  438. package/dist/esm/flows-actors/services/flows-actors-registry.service.js +154 -20
  439. package/dist/esm/flows-actors/services/flows-actors-registry.service.js.map +1 -1
  440. package/dist/esm/flows-actors/services/flows.backend.services.d.ts.map +1 -1
  441. package/dist/esm/flows-actors/services/flows.backend.services.js +27 -23
  442. package/dist/esm/flows-actors/services/flows.backend.services.js.map +1 -1
  443. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.d.ts.map +1 -1
  444. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js +7 -1
  445. package/dist/esm/flows-actors/services/llm-observability-agent-call-trace-sink.backend.js.map +1 -1
  446. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts +90 -0
  447. package/dist/esm/flows-actors/services/mcp-client.backend.service.d.ts.map +1 -0
  448. package/dist/esm/flows-actors/services/mcp-client.backend.service.js +368 -0
  449. package/dist/esm/flows-actors/services/mcp-client.backend.service.js.map +1 -0
  450. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts +9 -5
  451. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.d.ts.map +1 -1
  452. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js +12 -17
  453. package/dist/esm/flows-actors/services/prompt-compiler.backend.service.js.map +1 -1
  454. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts +151 -41
  455. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.d.ts.map +1 -1
  456. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js +308 -143
  457. package/dist/esm/flows-actors/utils/acp-session-runner.backend.utils.js.map +1 -1
  458. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts +0 -207
  459. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.d.ts.map +1 -1
  460. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js +8 -243
  461. package/dist/esm/flows-actors/utils/meta-workflow-canonical-json.backend.utils.js.map +1 -1
  462. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.d.ts.map +1 -1
  463. package/dist/esm/flows-actors/utils/meta-workflow-structured-generation-plan.backend.utils.js.map +1 -1
  464. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts +9 -14
  465. package/dist/esm/guidance/services/milestone-evaluator.backend.service.d.ts.map +1 -1
  466. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js +18 -89
  467. package/dist/esm/guidance/services/milestone-evaluator.backend.service.js.map +1 -1
  468. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts +86 -0
  469. package/dist/esm/guidance/services/progression-state-store.backend.service.d.ts.map +1 -0
  470. package/dist/esm/guidance/services/progression-state-store.backend.service.js +155 -0
  471. package/dist/esm/guidance/services/progression-state-store.backend.service.js.map +1 -0
  472. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts +10 -0
  473. package/dist/esm/i18n/controllers/i18n-controller.backend.service.d.ts.map +1 -1
  474. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js +55 -5
  475. package/dist/esm/i18n/controllers/i18n-controller.backend.service.js.map +1 -1
  476. package/dist/esm/index.d.ts +15 -5
  477. package/dist/esm/index.d.ts.map +1 -1
  478. package/dist/esm/index.js +45 -5
  479. package/dist/esm/index.js.map +1 -1
  480. package/dist/esm/inject/models/container.d.ts.map +1 -1
  481. package/dist/esm/inject/models/container.js +82 -10
  482. package/dist/esm/inject/models/container.js.map +1 -1
  483. package/dist/esm/inject/models/service-types.d.ts +20 -3
  484. package/dist/esm/inject/models/service-types.d.ts.map +1 -1
  485. package/dist/esm/inject/models/service-types.js +21 -3
  486. package/dist/esm/inject/models/service-types.js.map +1 -1
  487. package/dist/esm/mcp/controllers/mcp.controller.d.ts.map +1 -1
  488. package/dist/esm/mcp/controllers/mcp.controller.js +32 -4
  489. package/dist/esm/mcp/controllers/mcp.controller.js.map +1 -1
  490. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts +34 -0
  491. package/dist/esm/mcp/models/mcp-tool.backend.schemas.d.ts.map +1 -1
  492. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js +42 -0
  493. package/dist/esm/mcp/models/mcp-tool.backend.schemas.js.map +1 -1
  494. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts +84 -1
  495. package/dist/esm/mcp/services/mcp-server.backend.service.d.ts.map +1 -1
  496. package/dist/esm/mcp/services/mcp-server.backend.service.js +235 -11
  497. package/dist/esm/mcp/services/mcp-server.backend.service.js.map +1 -1
  498. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts +64 -2
  499. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.d.ts.map +1 -1
  500. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js +152 -6
  501. package/dist/esm/mcp/services/mcp-tool-adapter.backend.service.js.map +1 -1
  502. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.d.ts.map +1 -1
  503. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js +49 -4
  504. package/dist/esm/monitoring/analytics/controllers/analytics.backend.controller.js.map +1 -1
  505. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts +66 -0
  506. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.d.ts.map +1 -0
  507. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js +199 -0
  508. package/dist/esm/monitoring/analytics/services/value-moment-definition-registry.backend.service.js.map +1 -0
  509. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts +149 -13
  510. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.d.ts.map +1 -1
  511. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js +411 -19
  512. package/dist/esm/monitoring/analytics/services/value-moment-engine.backend.service.js.map +1 -1
  513. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts +11 -2
  514. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.d.ts.map +1 -1
  515. package/dist/esm/monitoring/analytics/services/value-moment-handler-registry.backend.service.js.map +1 -1
  516. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts +28 -9
  517. package/dist/esm/monitoring/logger/models/logger.backend.schemas.d.ts.map +1 -1
  518. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js +30 -10
  519. package/dist/esm/monitoring/logger/models/logger.backend.schemas.js.map +1 -1
  520. package/dist/esm/monitoring/logger/services/logger.service.d.ts +12 -0
  521. package/dist/esm/monitoring/logger/services/logger.service.d.ts.map +1 -1
  522. package/dist/esm/monitoring/logger/services/logger.service.js +52 -11
  523. package/dist/esm/monitoring/logger/services/logger.service.js.map +1 -1
  524. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts +62 -0
  525. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.d.ts.map +1 -0
  526. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js +78 -0
  527. package/dist/esm/monitoring/logger/utils/log-severity-floor.backend.utils.js.map +1 -0
  528. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts +309 -0
  529. package/dist/esm/monitoring/observability/audit-observation-emission.backend.d.ts.map +1 -0
  530. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js +385 -0
  531. package/dist/esm/monitoring/observability/audit-observation-emission.backend.js.map +1 -0
  532. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts +1 -0
  533. package/dist/esm/monitoring/observability/models/observability.backend.schemas.d.ts.map +1 -1
  534. package/dist/esm/monitoring/observability/models/observability.backend.schemas.js.map +1 -1
  535. package/dist/esm/monitoring/observability/services/metrics.service.d.ts +21 -0
  536. package/dist/esm/monitoring/observability/services/metrics.service.d.ts.map +1 -1
  537. package/dist/esm/monitoring/observability/services/metrics.service.js +38 -0
  538. package/dist/esm/monitoring/observability/services/metrics.service.js.map +1 -1
  539. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts +0 -80
  540. package/dist/esm/notifications/email/models/email-context-provider.interface.d.ts.map +0 -1
  541. package/dist/esm/notifications/email/models/email-context-provider.interface.js +0 -25
  542. package/dist/esm/notifications/email/models/email-context-provider.interface.js.map +0 -1
  543. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts +0 -49
  544. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.d.ts.map +0 -1
  545. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js +0 -141
  546. package/dist/esm/notifications/email/services/email-context-provider-registry.backend.service.js.map +0 -1
  547. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts +0 -37
  548. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.d.ts.map +0 -1
  549. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js +0 -121
  550. package/dist/esm/notifications/email/services/email-template-compiler.backend.service.js.map +0 -1
  551. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts +66 -1
  552. package/dist/esm/notifications/email/services/email-template-registry.backend.service.d.ts.map +1 -1
  553. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js +105 -10
  554. package/dist/esm/notifications/email/services/email-template-registry.backend.service.js.map +1 -1
  555. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts +0 -58
  556. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.d.ts.map +0 -1
  557. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js +0 -223
  558. package/dist/esm/notifications/email/services/email-template-sandbox.backend.service.js.map +0 -1
  559. package/dist/esm/notifications/email/services/email-template-validator.backend.service.d.ts.map +1 -1
  560. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js +10 -1
  561. package/dist/esm/notifications/email/services/email-template-validator.backend.service.js.map +1 -1
  562. package/dist/esm/notifications/email/services/email.backend.service.d.ts +60 -4
  563. package/dist/esm/notifications/email/services/email.backend.service.d.ts.map +1 -1
  564. package/dist/esm/notifications/email/services/email.backend.service.js +145 -43
  565. package/dist/esm/notifications/email/services/email.backend.service.js.map +1 -1
  566. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts +0 -1
  567. package/dist/esm/notifications/email/utils/color-conversion.utils.d.ts.map +1 -1
  568. package/dist/esm/notifications/email/utils/color-conversion.utils.js.map +1 -1
  569. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts +142 -21
  570. package/dist/esm/notifications/services/notification-badge.backend.service.d.ts.map +1 -1
  571. package/dist/esm/notifications/services/notification-badge.backend.service.js +283 -58
  572. package/dist/esm/notifications/services/notification-badge.backend.service.js.map +1 -1
  573. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts +108 -13
  574. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.d.ts.map +1 -1
  575. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js +432 -101
  576. package/dist/esm/notifications/services/notifications-dispatcher.backend.service.js.map +1 -1
  577. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts +2 -2
  578. package/dist/esm/notifications/sms/services/sms.backend.service.d.ts.map +1 -1
  579. package/dist/esm/notifications/sms/services/sms.backend.service.js +5 -5
  580. package/dist/esm/notifications/sms/services/sms.backend.service.js.map +1 -1
  581. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts +117 -5
  582. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.d.ts.map +1 -1
  583. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js +164 -6
  584. package/dist/esm/notifications/webhooks/controllers/webhook-auto-controller.backend.service.js.map +1 -1
  585. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts +0 -6
  586. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.d.ts.map +1 -1
  587. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js +54 -7
  588. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.backend.service.js.map +1 -1
  589. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts +5 -5
  590. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.d.ts.map +1 -1
  591. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js +14 -13
  592. package/dist/esm/notifications/webhooks/outbound/batches/m2m-webhook-delivery.batch.utils.js.map +1 -1
  593. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts +2 -1
  594. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.d.ts.map +1 -1
  595. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js +18 -8
  596. package/dist/esm/notifications/webhooks/outbound/m2m-webhook-signed-request.backend.utils.js.map +1 -1
  597. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.d.ts.map +1 -1
  598. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js +20 -18
  599. package/dist/esm/notifications/webhooks/outbound/services/webhook-config-test-endpoint.custom-impl.backend.service.js.map +1 -1
  600. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts +16 -0
  601. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.d.ts.map +1 -1
  602. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js +18 -0
  603. package/dist/esm/notifications/webhooks/services/webhook-handler.backend.service.js.map +1 -1
  604. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.d.ts +2 -2
  605. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js +2 -2
  606. package/dist/esm/organizations/batches/organization-purge.batch.backend.service.js.map +1 -1
  607. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.d.ts.map +1 -1
  608. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js +63 -2
  609. package/dist/esm/organizations/services/organization-custom-implementation.backend.service.js.map +1 -1
  610. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.d.ts.map +1 -1
  611. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js +4 -1
  612. package/dist/esm/organizations/services/organization-unit-custom-implementation.backend.service.js.map +1 -1
  613. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts +66 -0
  614. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.d.ts.map +1 -0
  615. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js +257 -0
  616. package/dist/esm/queue/adapters/in-memory-queue-adapter.backend.service.js.map +1 -0
  617. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts +12 -0
  618. package/dist/esm/queue/adapters/queue-adapter.backend.binding.d.ts.map +1 -0
  619. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js +47 -0
  620. package/dist/esm/queue/adapters/queue-adapter.backend.binding.js.map +1 -0
  621. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts +87 -0
  622. package/dist/esm/queue/adapters/queue-adapter.backend.interface.d.ts.map +1 -0
  623. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js +1 -0
  624. package/dist/esm/queue/adapters/queue-adapter.backend.interface.js.map +1 -0
  625. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts +31 -0
  626. package/dist/esm/queue/adapters/queue-adapter.backend.options.d.ts.map +1 -0
  627. package/dist/esm/queue/adapters/queue-adapter.backend.options.js +13 -0
  628. package/dist/esm/queue/adapters/queue-adapter.backend.options.js.map +1 -0
  629. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts +19 -25
  630. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.d.ts.map +1 -1
  631. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js +33 -0
  632. package/dist/esm/queue/adapters/rabbitmq-adapter.backend.service.js.map +1 -1
  633. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts +2 -2
  634. package/dist/esm/queue/domain-queue-consumer.backend.service.d.ts.map +1 -1
  635. package/dist/esm/queue/domain-queue-consumer.backend.service.js +1 -4
  636. package/dist/esm/queue/domain-queue-consumer.backend.service.js.map +1 -1
  637. package/dist/esm/queue/job-consumer.backend.service.d.ts +2 -2
  638. package/dist/esm/queue/job-consumer.backend.service.d.ts.map +1 -1
  639. package/dist/esm/queue/job-consumer.backend.service.js +1 -4
  640. package/dist/esm/queue/job-consumer.backend.service.js.map +1 -1
  641. package/dist/esm/queue/job-executor.backend.service.d.ts +2 -2
  642. package/dist/esm/queue/job-executor.backend.service.d.ts.map +1 -1
  643. package/dist/esm/queue/job-executor.backend.service.js +1 -4
  644. package/dist/esm/queue/job-executor.backend.service.js.map +1 -1
  645. package/dist/esm/queue/queue-monitoring.backend.service.d.ts +8 -4
  646. package/dist/esm/queue/queue-monitoring.backend.service.d.ts.map +1 -1
  647. package/dist/esm/queue/queue-monitoring.backend.service.js +25 -17
  648. package/dist/esm/queue/queue-monitoring.backend.service.js.map +1 -1
  649. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts +16 -1
  650. package/dist/esm/queue/queue-worker-initializer.backend.service.d.ts.map +1 -1
  651. package/dist/esm/queue/queue-worker-initializer.backend.service.js +16 -1
  652. package/dist/esm/queue/queue-worker-initializer.backend.service.js.map +1 -1
  653. package/dist/esm/queue/queue.backend.service.d.ts +3 -3
  654. package/dist/esm/queue/queue.backend.service.d.ts.map +1 -1
  655. package/dist/esm/queue/queue.backend.service.js +26 -4
  656. package/dist/esm/queue/queue.backend.service.js.map +1 -1
  657. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts +2 -2
  658. package/dist/esm/queue/worker-shutdown-manager.backend.service.d.ts.map +1 -1
  659. package/dist/esm/queue/worker-shutdown-manager.backend.service.js +18 -3
  660. package/dist/esm/queue/worker-shutdown-manager.backend.service.js.map +1 -1
  661. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts +50 -25
  662. package/dist/esm/rag/utils/rag-chunking.backend.utils.d.ts.map +1 -1
  663. package/dist/esm/rag/utils/rag-chunking.backend.utils.js +147 -39
  664. package/dist/esm/rag/utils/rag-chunking.backend.utils.js.map +1 -1
  665. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts +12 -3
  666. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.d.ts.map +1 -1
  667. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js +12 -3
  668. package/dist/esm/rag/utils/rag-context-assembly.backend.utils.js.map +1 -1
  669. package/dist/esm/requests/service/websocket.service.d.ts +9 -0
  670. package/dist/esm/requests/service/websocket.service.d.ts.map +1 -1
  671. package/dist/esm/requests/service/websocket.service.js +88 -15
  672. package/dist/esm/requests/service/websocket.service.js.map +1 -1
  673. package/dist/esm/resources/models/custom-service-implementations.backend.definition.d.ts.map +1 -1
  674. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js +16 -2
  675. package/dist/esm/resources/models/custom-service-implementations.backend.definition.js.map +1 -1
  676. package/dist/esm/resources/models/resources-operations.backend.definitions.d.ts.map +1 -1
  677. package/dist/esm/resources/models/resources-operations.backend.definitions.js +2 -0
  678. package/dist/esm/resources/models/resources-operations.backend.definitions.js.map +1 -1
  679. package/dist/esm/resources/models/resources-relationships.backend.definitions.d.ts.map +1 -1
  680. package/dist/esm/resources/models/resources-relationships.backend.definitions.js +14 -0
  681. package/dist/esm/resources/models/resources-relationships.backend.definitions.js.map +1 -1
  682. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts +2 -1
  683. package/dist/esm/resources/models/resources-types.backend.schemas.d.ts.map +1 -1
  684. package/dist/esm/resources/models/resources-types.backend.schemas.js +8 -0
  685. package/dist/esm/resources/models/resources-types.backend.schemas.js.map +1 -1
  686. package/dist/esm/resources/services/resource-id.backend.service.js +3 -3
  687. package/dist/esm/resources/services/resource-id.backend.service.js.map +1 -1
  688. package/dist/esm/resources/services/resources-registry.backend.service.d.ts +60 -5
  689. package/dist/esm/resources/services/resources-registry.backend.service.d.ts.map +1 -1
  690. package/dist/esm/resources/services/resources-registry.backend.service.js +91 -7
  691. package/dist/esm/resources/services/resources-registry.backend.service.js.map +1 -1
  692. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts +36 -3
  693. package/dist/esm/runtime/controllers/health-controller.backend.service.d.ts.map +1 -1
  694. package/dist/esm/runtime/controllers/health-controller.backend.service.js +32 -10
  695. package/dist/esm/runtime/controllers/health-controller.backend.service.js.map +1 -1
  696. package/dist/esm/runtime/domain-module.backend.definitions.d.ts +24 -0
  697. package/dist/esm/runtime/domain-module.backend.definitions.d.ts.map +1 -1
  698. package/dist/esm/runtime/domain-module.backend.definitions.js +24 -0
  699. package/dist/esm/runtime/domain-module.backend.definitions.js.map +1 -1
  700. package/dist/esm/runtime/services/execution-context-creator.backend.service.d.ts.map +1 -1
  701. package/dist/esm/runtime/services/execution-context-creator.backend.service.js +13 -7
  702. package/dist/esm/runtime/services/execution-context-creator.backend.service.js.map +1 -1
  703. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts +51 -0
  704. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.d.ts.map +1 -1
  705. package/dist/esm/runtime/services/health-readiness-contributor.backend.interface.js.map +1 -1
  706. package/dist/esm/runtime/services/http-server.backend.service.d.ts +26 -0
  707. package/dist/esm/runtime/services/http-server.backend.service.d.ts.map +1 -1
  708. package/dist/esm/runtime/services/http-server.backend.service.js +181 -1
  709. package/dist/esm/runtime/services/http-server.backend.service.js.map +1 -1
  710. package/dist/esm/runtime/services/start-application.backend.service.d.ts +47 -1
  711. package/dist/esm/runtime/services/start-application.backend.service.d.ts.map +1 -1
  712. package/dist/esm/runtime/services/start-application.backend.service.js +343 -77
  713. package/dist/esm/runtime/services/start-application.backend.service.js.map +1 -1
  714. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts +15 -0
  715. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.d.ts.map +1 -1
  716. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js +28 -0
  717. package/dist/esm/security/api-keys/api-keys.custom-impl.backend.service.js.map +1 -1
  718. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts +5 -1
  719. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.d.ts.map +1 -1
  720. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js +24 -4
  721. package/dist/esm/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.js.map +1 -1
  722. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.d.ts.map +1 -1
  723. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js +29 -4
  724. package/dist/esm/security/authentications/controllers/authentication-controller.backend.service.js.map +1 -1
  725. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts +114 -0
  726. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.d.ts.map +1 -1
  727. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js +354 -3
  728. package/dist/esm/security/authentications/controllers/oauth-provider-controller.backend.service.js.map +1 -1
  729. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts +1 -0
  730. package/dist/esm/security/authentications/models/cimd.backend.schemas.d.ts.map +1 -1
  731. package/dist/esm/security/authentications/models/cimd.backend.schemas.js +22 -0
  732. package/dist/esm/security/authentications/models/cimd.backend.schemas.js.map +1 -1
  733. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts +3 -23
  734. package/dist/esm/security/authentications/models/jwt.backend.schemas.d.ts.map +1 -1
  735. package/dist/esm/security/authentications/models/jwt.backend.schemas.js +20 -45
  736. package/dist/esm/security/authentications/models/jwt.backend.schemas.js.map +1 -1
  737. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts +15 -0
  738. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.d.ts.map +1 -1
  739. package/dist/esm/security/authentications/models/oauth2-connection.backend.schemas.js.map +1 -1
  740. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts +0 -2
  741. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.d.ts.map +1 -1
  742. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js +23 -14
  743. package/dist/esm/security/authentications/services/admin-config/auth-organization-configuration.service.js.map +1 -1
  744. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts +0 -1
  745. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.d.ts.map +1 -1
  746. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js +15 -12
  747. package/dist/esm/security/authentications/services/admin-config/domain-to-org-lookup.backend.service.js.map +1 -1
  748. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts +113 -3
  749. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.d.ts.map +1 -1
  750. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js +207 -30
  751. package/dist/esm/security/authentications/services/admin-config/domain-verification.backend.service.js.map +1 -1
  752. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts +95 -2
  753. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.d.ts.map +1 -1
  754. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js +153 -9
  755. package/dist/esm/security/authentications/services/admin-config/enterprise-user-provisioning.backend.service.js.map +1 -1
  756. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts +190 -0
  757. package/dist/esm/security/authentications/services/anonymous-session.backend.service.d.ts.map +1 -1
  758. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js +377 -53
  759. package/dist/esm/security/authentications/services/anonymous-session.backend.service.js.map +1 -1
  760. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts +9 -1
  761. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.d.ts.map +1 -1
  762. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js +77 -2
  763. package/dist/esm/security/authentications/services/auth-methods/auth-method-management.backend.service.js.map +1 -1
  764. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.d.ts.map +1 -1
  765. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js +5 -3
  766. package/dist/esm/security/authentications/services/auth-methods/auth-mfa.backend.service.js.map +1 -1
  767. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts +41 -0
  768. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.d.ts.map +1 -1
  769. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js +202 -23
  770. package/dist/esm/security/authentications/services/auth-methods/auth-registration.backend.service.js.map +1 -1
  771. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.d.ts.map +1 -1
  772. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js +42 -1
  773. package/dist/esm/security/authentications/services/auth-methods/oauth2-authentication.backend.service.js.map +1 -1
  774. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.d.ts.map +1 -1
  775. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js +34 -4
  776. package/dist/esm/security/authentications/services/auth-methods/oauth2-connection-resolver.backend.service.js.map +1 -1
  777. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts +29 -5
  778. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.d.ts.map +1 -1
  779. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js +77 -5
  780. package/dist/esm/security/authentications/services/auth-methods/webauthn.backend.service.js.map +1 -1
  781. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts +41 -1
  782. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.d.ts.map +1 -1
  783. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js +87 -4
  784. package/dist/esm/security/authentications/services/auth-token-issuer.backend.service.js.map +1 -1
  785. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts +43 -1
  786. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.d.ts.map +1 -1
  787. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js +277 -97
  788. package/dist/esm/security/authentications/services/authentication-orchestrator.backend.service.js.map +1 -1
  789. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts +28 -5
  790. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.d.ts.map +1 -1
  791. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js +72 -12
  792. package/dist/esm/security/authentications/services/cimd-client-metadata.backend.service.js.map +1 -1
  793. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.d.ts.map +1 -1
  794. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js +3 -0
  795. package/dist/esm/security/authentications/services/custom-impls/auth-custom-implementations.backend.js.map +1 -1
  796. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts +28 -0
  797. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.d.ts.map +1 -0
  798. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js +283 -0
  799. package/dist/esm/security/authentications/services/custom-impls/sso-config-domain-verification.custom-impl.backend.service.js.map +1 -0
  800. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts +4 -3
  801. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.d.ts.map +1 -1
  802. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js +4 -3
  803. package/dist/esm/security/authentications/services/custom-impls/sso-config.custom-impl.backend.service.js.map +1 -1
  804. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts +35 -0
  805. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.d.ts.map +1 -1
  806. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js +111 -21
  807. package/dist/esm/security/authentications/services/oauth-provider-token.backend.service.js.map +1 -1
  808. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts +14 -1
  809. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.d.ts.map +1 -1
  810. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js +49 -8
  811. package/dist/esm/security/authentications/services/oidc-authorization-code.backend.service.js.map +1 -1
  812. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.d.ts.map +1 -1
  813. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js +4 -0
  814. package/dist/esm/security/authentications/services/utils/auth-policy-resolution.backend.utils.js.map +1 -1
  815. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.d.ts.map +1 -1
  816. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js +6 -0
  817. package/dist/esm/security/authentications/services/utils/auth-user-lookup.backend.service.js.map +1 -1
  818. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts +37 -1
  819. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.d.ts.map +1 -1
  820. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js +51 -0
  821. package/dist/esm/security/authentications/services/utils/external-turn-rate-limit.backend.utils.js.map +1 -1
  822. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts +41 -0
  823. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.d.ts.map +1 -1
  824. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js +45 -0
  825. package/dist/esm/security/authentications/utils/enterprise-sso-enforcement.backend.utils.js.map +1 -1
  826. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts +116 -0
  827. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.d.ts.map +1 -0
  828. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js +162 -0
  829. package/dist/esm/security/authorizations/cross-tenant-read-observation.backend.js.map +1 -0
  830. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.d.ts.map +1 -1
  831. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js +24 -1
  832. package/dist/esm/security/authorizations/initiator-organization-confinement.backend.js.map +1 -1
  833. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts +20 -20
  834. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.d.ts.map +1 -1
  835. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js +27 -28
  836. package/dist/esm/security/authorizations/organization-owner-floor.backend.utils.js.map +1 -1
  837. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.d.ts.map +1 -1
  838. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js +77 -3
  839. package/dist/esm/security/authorizations/platform-access-grant-custom-implementation.backend.service.js.map +1 -1
  840. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts +117 -0
  841. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.d.ts.map +1 -0
  842. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js +104 -0
  843. package/dist/esm/security/authorizations/privileged-access-review.backend.utils.js.map +1 -0
  844. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts +4 -0
  845. package/dist/esm/security/authorizations/role-ceiling.backend.utils.d.ts.map +1 -1
  846. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js +4 -0
  847. package/dist/esm/security/authorizations/role-ceiling.backend.utils.js.map +1 -1
  848. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts +93 -0
  849. package/dist/esm/security/authorizations/role-conferral.backend.utils.d.ts.map +1 -0
  850. package/dist/esm/security/authorizations/role-conferral.backend.utils.js +95 -0
  851. package/dist/esm/security/authorizations/role-conferral.backend.utils.js.map +1 -0
  852. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts +124 -1
  853. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.d.ts.map +1 -1
  854. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js +142 -5
  855. package/dist/esm/security/authorizations/scope-root-collection-confinement.backend.js.map +1 -1
  856. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts +175 -14
  857. package/dist/esm/security/authorizations/services/authorizations.backend.service.d.ts.map +1 -1
  858. package/dist/esm/security/authorizations/services/authorizations.backend.service.js +385 -49
  859. package/dist/esm/security/authorizations/services/authorizations.backend.service.js.map +1 -1
  860. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts +6 -14
  861. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.d.ts.map +1 -1
  862. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js +13 -22
  863. package/dist/esm/security/authorizations/super-admin-floor.backend.utils.js.map +1 -1
  864. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts +60 -0
  865. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.d.ts.map +1 -0
  866. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js +79 -0
  867. package/dist/esm/security/connected-accounts/connection-target-authorization.backend.js.map +1 -0
  868. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts +161 -0
  869. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.d.ts.map +1 -0
  870. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js +512 -0
  871. package/dist/esm/security/connected-accounts/controllers/provider-connection.controller.backend.service.js.map +1 -0
  872. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts +59 -0
  873. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.d.ts.map +1 -0
  874. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js +22 -0
  875. package/dist/esm/security/connected-accounts/organization-provider-credential-resolver.port.js.map +1 -0
  876. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts +44 -0
  877. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.d.ts.map +1 -0
  878. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js +20 -0
  879. package/dist/esm/security/connected-accounts/provider-oauth2-refresher.port.js.map +1 -0
  880. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts +191 -0
  881. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.d.ts.map +1 -0
  882. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js +385 -0
  883. package/dist/esm/security/connected-accounts/services/organization-provider-credential-store.backend.service.js.map +1 -0
  884. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts +41 -0
  885. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  886. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js +358 -0
  887. package/dist/esm/security/connected-accounts/services/organization-provider-credentials.custom-impl.backend.service.js.map +1 -0
  888. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts +160 -0
  889. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.d.ts.map +1 -0
  890. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js +266 -0
  891. package/dist/esm/security/connected-accounts/services/provider-oauth2-exchange.backend.js.map +1 -0
  892. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts +111 -0
  893. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.d.ts.map +1 -0
  894. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js +107 -0
  895. package/dist/esm/security/connected-accounts/services/provider-oauth2-pending-authorization.backend.service.js.map +1 -0
  896. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts +54 -0
  897. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.d.ts.map +1 -0
  898. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js +153 -0
  899. package/dist/esm/security/connected-accounts/services/provider-oauth2-refresher.backend.service.js.map +1 -0
  900. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts +195 -0
  901. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.d.ts.map +1 -0
  902. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js +387 -0
  903. package/dist/esm/security/connected-accounts/services/user-provider-credential-store.backend.service.js.map +1 -0
  904. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts +45 -0
  905. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.d.ts.map +1 -0
  906. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js +291 -0
  907. package/dist/esm/security/connected-accounts/services/user-provider-credentials.custom-impl.backend.service.js.map +1 -0
  908. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts +62 -0
  909. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.d.ts.map +1 -0
  910. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js +29 -0
  911. package/dist/esm/security/connected-accounts/user-provider-credential-resolver.port.js.map +1 -0
  912. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts +127 -0
  913. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.d.ts.map +1 -0
  914. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js +277 -0
  915. package/dist/esm/security/connected-accounts/utils/provider-credential-envelope.backend.utils.js.map +1 -0
  916. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts +66 -0
  917. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.d.ts.map +1 -0
  918. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js +75 -0
  919. package/dist/esm/security/connected-accounts/utils/stored-credential-value.backend.utils.js.map +1 -0
  920. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts +18 -1
  921. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.d.ts.map +1 -1
  922. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js +110 -74
  923. package/dist/esm/security/consumable-tokens/batches/consumable-tokens-cleanup.batch.backend.service.js.map +1 -1
  924. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts +22 -0
  925. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.d.ts.map +1 -0
  926. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js +22 -0
  927. package/dist/esm/security/consumable-tokens/consumable-token-models.exports.js.map +1 -0
  928. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts +17 -3
  929. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.d.ts.map +1 -1
  930. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js +12 -0
  931. package/dist/esm/security/consumable-tokens/models/consumable-tokens.backend.resources-config.schemas.js.map +1 -1
  932. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts +41 -3
  933. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.d.ts.map +1 -1
  934. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js +83 -20
  935. package/dist/esm/security/consumable-tokens/services/consumable-token.backend.service.js.map +1 -1
  936. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts +9 -4
  937. package/dist/esm/security/credential-rotation-grace.backend.utils.d.ts.map +1 -1
  938. package/dist/esm/security/credential-rotation-grace.backend.utils.js +9 -4
  939. package/dist/esm/security/credential-rotation-grace.backend.utils.js.map +1 -1
  940. package/dist/esm/security/jwt/services/jwt.backend.service.d.ts.map +1 -1
  941. package/dist/esm/security/jwt/services/jwt.backend.service.js +1 -18
  942. package/dist/esm/security/jwt/services/jwt.backend.service.js.map +1 -1
  943. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts +26 -0
  944. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.d.ts.map +1 -1
  945. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js +43 -0
  946. package/dist/esm/security/oauth-clients/oauth-client-generation.backend.utils.js.map +1 -1
  947. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts +8 -1
  948. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.d.ts.map +1 -1
  949. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js +49 -0
  950. package/dist/esm/security/oauth-clients/oauth-clients.custom-impl.backend.service.js.map +1 -1
  951. package/dist/esm/security/scim/controllers/scim.backend.controller.d.ts.map +1 -1
  952. package/dist/esm/security/scim/controllers/scim.backend.controller.js +17 -5
  953. package/dist/esm/security/scim/controllers/scim.backend.controller.js.map +1 -1
  954. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts +67 -29
  955. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.d.ts.map +1 -1
  956. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js +47 -25
  957. package/dist/esm/security/scim/models/scim-protocol.backend.schemas.js.map +1 -1
  958. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts +10 -2
  959. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.d.ts.map +1 -1
  960. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js +10 -2
  961. package/dist/esm/security/ssrf/outbound-target-guard.backend.utils.js.map +1 -1
  962. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts +143 -0
  963. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.d.ts.map +1 -0
  964. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js +258 -0
  965. package/dist/esm/security/ssrf/pinned-outbound-fetch.backend.utils.js.map +1 -0
  966. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts +39 -0
  967. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.d.ts.map +1 -0
  968. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js +159 -0
  969. package/dist/esm/users/services/user-read-retained.custom-impl.backend.service.js.map +1 -0
  970. package/dist/tsconfig.build.tsbuildinfo +1 -1
  971. package/package.json +17 -9
  972. package/dist/esm/.builder.pid +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"app-configuration.backend.service.js","sourceRoot":"","sources":["../../../../../src/config/services/app-configuration.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Application Configuration Service\n *\n * Service for managing application-level configuration\n */\n\nimport { injectable, inject } from 'inversify';\nimport {\n APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS,\n AppConfiguration,\n type AppConfiguration_PreOverrideSeed,\n AppConfiguration_Schema\n} from '~wildo-backend-lib/config/models/app-config.backend.schemas';\nimport { AppConfigurationSecrets } from '~wildo-backend-lib/config/models/app-config-secrets.backend.schemas';\nimport { AppConfigurationLoaderService } from './app-configuration-loader.backend.service';\nimport {\n type AppConfiguration_BackendAuthored,\n applyBackendAuthoredConfig,\n inspectAppConfigurationBoundaryMutations,\n} from '~wildo-backend-lib/config/models/app-config.backend-authored.definitions';\nimport {\n type ProviderRuntimeArtifact,\n type ProviderRuntimeArtifactEvidenceMetadata,\n ProviderRuntimeArtifactSchema,\n} from '~wildo-backend-lib/config/models/provider-runtime-artifact.backend.schemas';\n\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport {\n ErrorCustomMessageReference,\n ErrorType,\n MAIN_API_BASE_PATH,\n ResourceServerKind,\n RESOURCE_SERVER_MOUNT_ROUTE,\n MANUAL_CONTROLLER_ROUTES_URLS,\n resolveBrandAsset,\n RuntimeEnvironment,\n WildoError_Backend,\n type BrandAssetQuery,\n type FrontendProvidersBlock,\n type PersistenceAdapterType,\n type UserTypeAuthPolicy,\n} from '@wildo-ai/saas-models';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\n\n\n/**\n * Application Configuration Service\n *\n * Manages complete application configuration. After T5, the loading chain is:\n * 1. Env vars → database addresses, platform URLs\n * 2. Minimal pre-override skeleton → only the structural placeholders the\n * backend must provide before backendConfig is merged\n * 3. Apps-manager fetch → reduced managed metadata + JWT public keys + appSlug\n * 4. App-authored backendConfig → merged onto the runtime/bootstrap seed\n *\n * This service uses the loader service for steps 1-3, then provides\n * cached, type-safe access to all configuration sections.\n */\n@injectable()\nexport class AppConfigurationService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private _config: AppConfiguration | null = null;\n private _preOverrideConfig: AppConfiguration_PreOverrideSeed | null = null;\n private _frontendProviderBootstraps: Record<string, FrontendProvidersBlock> = {};\n private _providerRuntimeArtifactEvidenceMetadata: ProviderRuntimeArtifactEvidenceMetadata | null = null;\n private _secrets: AppConfigurationSecrets | null = null;\n private _applicationId: string | null = null;\n private _applicationEnv: RuntimeEnvironment | null = null;\n private _serviceName: string | null = null;\n private _appSlug: string | null = null;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigLoaderService) private loaderService: AppConfigurationLoaderService\n ) {\n this.logDebug = this.logger.debugByType('AppConfigurationService');\n this.logger.setDebugTypeLogging('AppConfigurationService', false);\n }\n\n /**\n * Initialize the configuration service\n */\n public async initialize(): Promise<void> {\n if (!this._config || !this._secrets) {\n this.logDebug('Initializing application configuration...');\n this._frontendProviderBootstraps = {};\n this._providerRuntimeArtifactEvidenceMetadata = null;\n const { appConfig, appSecrets, applicationId, applicationEnvConfig, serviceName, appSlug } = await this.loaderService.initialize();\n this._preOverrideConfig = appConfig;\n this._secrets = appSecrets;\n this._applicationId = applicationId;\n this._applicationEnv = applicationEnvConfig.APPLICATION_ENV;\n this._serviceName = serviceName;\n this._appSlug = appSlug;\n\n this.logDebug('Application configuration initialized successfully', { appSlug });\n }\n }\n\n /**\n * Hydrate the service from an already-resolved full configuration object.\n *\n * Platform startup paths use this when configuration was assembled by another\n * runtime-specific service. Callers must make the ownership decision explicit:\n * either provide a `boundaryBaseConfig` to run the Phase 4 mutation checks, or\n * set `skipBoundaryInspection` when hydrating a platform-owned config that does\n * not go through the tenant backendConfig authoring seam.\n */\n public hydrateResolvedConfiguration(options: {\n config: AppConfiguration;\n secrets: AppConfigurationSecrets;\n applicationId: string;\n applicationEnv: RuntimeEnvironment;\n serviceName: string;\n appSlug: string;\n emitWarnings?: boolean;\n boundaryBaseConfig?: AppConfiguration | AppConfiguration_PreOverrideSeed;\n skipBoundaryInspection?: boolean;\n }): void {\n const resolvedAppSlug = options.appSlug.trim();\n if (!resolvedAppSlug) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message: 'Resolved application configuration requires a non-empty appSlug',\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n\n if (options.boundaryBaseConfig && options.skipBoundaryInspection) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n 'hydrateResolvedConfiguration cannot accept both boundaryBaseConfig and skipBoundaryInspection. ' +\n 'Choose one ownership mode explicitly.',\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n\n if (!options.boundaryBaseConfig && !options.skipBoundaryInspection) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n 'hydrateResolvedConfiguration requires either boundaryBaseConfig for Phase 4 ownership checks ' +\n 'or skipBoundaryInspection for platform-owned hydrated configs.',\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n\n if (options.boundaryBaseConfig) {\n const boundaryInspection = inspectAppConfigurationBoundaryMutations(\n options.boundaryBaseConfig,\n options.config,\n );\n if (boundaryInspection.errors.length > 0) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `Hydrated resolved config attempted to cross platform/runtime-managed boundaries: ${boundaryInspection.errors.join(' ')}`,\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n if ((options.emitWarnings ?? true) && boundaryInspection.warnings.length > 0) {\n this.logger.warn(\n `[Config] hydrated resolved config touched migration-seam runtime fields. ${boundaryInspection.warnings.join(' ')}`,\n );\n }\n }\n\n this._secrets = options.secrets;\n this._applicationId = options.applicationId;\n this._applicationEnv = options.applicationEnv;\n this._serviceName = options.serviceName;\n this._appSlug = resolvedAppSlug;\n this._preOverrideConfig = null;\n\n this.applyResolvedConfig(options.config, {\n reason: 'hydrated',\n emitWarnings: options.emitWarnings ?? true,\n });\n }\n\n /**\n * W3.1: Get auth policy for a specific user type.\n * Returns the complete per-user-type auth policy, or null if the user type doesn't exist in config.\n */\n public getUserTypeAuthPolicy(userType: string): UserTypeAuthPolicy | null {\n const appConfig = this._config;\n if (!appConfig?.userTypes) return null;\n const typeDef = appConfig.userTypes[userType];\n return typeDef?.auth ?? null;\n }\n\n /**\n * Resolve a specific frontend-service user-management entry.\n * Used when runtime flows must enforce surface-level auth/register policy\n * for a known frontend service + user-type combination.\n */\n public getFrontendServiceUserManagementEntry(frontendServiceName: string, userType: string): { register: boolean; auth: boolean; isDefault?: boolean } | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n return appConfig.frontendServices[frontendServiceName]?.usersManagement?.[userType] ?? null;\n }\n\n /**\n * Check whether a frontend service identity is declared in app-owned config.\n * This is the authoritative allow-list used for runtime/public frontend identity.\n */\n public hasFrontendService(frontendServiceName: string): boolean {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return false;\n return !!appConfig.frontendServices[frontendServiceName];\n }\n\n /**\n * Resolve user type from the active frontend service identity.\n * Reads `frontendServices[frontendServiceName].usersManagement` and returns\n * the default entry, or the first entry when no explicit default exists.\n */\n public resolveUserTypeFromFrontendServiceName(frontendServiceName: string): string | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n const frontendServiceConfig = appConfig.frontendServices[frontendServiceName];\n if (!frontendServiceConfig?.usersManagement) return null;\n const entries = Object.entries(frontendServiceConfig.usersManagement);\n const defaultEntry = entries.find(([, v]) => v.isDefault);\n const firstEntry = entries[0];\n return (defaultEntry ?? firstEntry)?.[0] ?? null;\n }\n\n /**\n * Reverse lookup: given a user type, find the frontend service where that user type\n * has `isDefault: true` in usersManagement. Falls back to any app type that\n * references the user type (with `auth: true`) if no isDefault match exists.\n *\n * This is the mirror of `resolveUserTypeFromFrontendServiceName()`:\n * frontendServiceName → userType (forward)\n * userType → frontendServiceName (reverse)\n */\n public resolveFrontendServiceNameFromUserType(userType: string): string | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n\n let fallback: string | null = null;\n for (const [frontendServiceName, frontendServiceConfig] of Object.entries(appConfig.frontendServices)) {\n const entry = frontendServiceConfig.usersManagement[userType];\n if (!entry) continue;\n if (entry.isDefault) return frontendServiceName;\n if (entry.auth && !fallback) fallback = frontendServiceName;\n }\n return fallback;\n }\n\n /**\n * Find the default frontend service — the first frontend service that has any\n * user type entry with `isDefault: true`. Used as a last-resort fallback\n * when no specific user type context is available (e.g., SAML errors\n * before user identification).\n */\n public resolveDefaultFrontendServiceName(): string | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n\n for (const [frontendServiceName, frontendServiceConfig] of Object.entries(appConfig.frontendServices)) {\n const hasDefault = Object.values(frontendServiceConfig.usersManagement).some(v => v.isDefault);\n if (hasDefault) return frontendServiceName;\n }\n const firstFrontendServiceName = Object.keys(appConfig.frontendServices)[0];\n return firstFrontendServiceName ?? null;\n }\n\n private validateEntityIdentityConfig(config: AppConfiguration): void {\n const { userTypes, frontendServices, organizationTypes } = config;\n const userTypeKeys = new Set(Object.keys(userTypes));\n\n for (const [frontendServiceName, frontendServiceConfig] of Object.entries(frontendServices)) {\n for (const userType of Object.keys(frontendServiceConfig.usersManagement)) {\n if (!userTypeKeys.has(userType)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n context: {\n message: `frontendServices.${frontendServiceName}.usersManagement references unknown userType \"${userType}\". ` +\n `userTypes must define: ${[...userTypeKeys].join(', ')}`,\n },\n });\n }\n }\n }\n\n if (organizationTypes) {\n const orgTypeKeys = new Set(Object.keys(organizationTypes));\n for (const [, orgConfig] of Object.entries(organizationTypes)) {\n for (const userType of orgConfig.userTypes) {\n if (!userTypeKeys.has(userType)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n context: {\n message: `organizationTypes references unknown userType \"${userType}\". ` +\n `userTypes must define: ${[...userTypeKeys].join(', ')}`,\n },\n });\n }\n }\n }\n for (const [, userTypeDef] of Object.entries(userTypes)) {\n const orgTypes = userTypeDef.requiresOrgMembership?.orgTypes;\n if (orgTypes) {\n for (const ot of orgTypes) {\n if (!orgTypeKeys.has(ot)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n context: {\n message: `requiresOrgMembership.orgTypes references unknown org type \"${ot}\". ` +\n `organizationTypes must define: ${[...orgTypeKeys].join(', ')}`,\n },\n });\n }\n }\n }\n }\n }\n }\n\n private emitDeferredFieldWarnings(config: AppConfiguration): void {\n if (config.auth?.crossOrgSSOAccess === false) {\n this.logger.info(\n `[Config] crossOrgSSOAccess is disabled — users with enterprise SSO links from one organization will be blocked from SSO into other organizations.`\n );\n }\n\n for (const [userTypeKey, userTypeDef] of Object.entries(config.userTypes)) {\n const auth = userTypeDef.auth;\n if (auth?.anonymousSessionsEnabled === true) {\n this.logger.info(\n `[Config] Anonymous sessions enabled for userType \"${userTypeKey}\" — isAnonymizable resources will support ANONYMOUS scope.`\n );\n }\n if (auth?.oneOffSessionAllowed === true) {\n this.logger.info(\n `[Config] One-off sessions enabled for userType \"${userTypeKey}\" — consumable token links can create scoped sessions.`\n );\n }\n if (userTypeDef.uniqueIdentifier && userTypeDef.uniqueIdentifier !== 'email') {\n this.logger.warn(\n `[Config] uniqueIdentifier only supports \"email\" — value \"${userTypeDef.uniqueIdentifier}\" will be treated as \"email\" for userType \"${userTypeKey}\".`\n );\n }\n\n if (auth?.stepUpAuth?.enabled) {\n const stepUpMethods = auth.stepUpAuth.methods ?? [];\n const enabledMethods = auth.authMethodsEnabled ?? {};\n const hasUsableMethod = stepUpMethods.some((method) => {\n const methodValue = enabledMethods[method];\n if (methodValue === undefined) return false;\n if (typeof methodValue === 'boolean') return methodValue;\n return methodValue.enabled;\n });\n if (!hasUsableMethod) {\n this.logger.warn(\n `[Config] stepUpAuth is enabled for userType \"${userTypeKey}\" but none of its methods [${stepUpMethods.join(', ')}] are enabled in authMethodsEnabled — step-up will always fail.`\n );\n }\n }\n }\n }\n\n private getPreOverridePlaceholderPaths(config: AppConfiguration): string[] {\n const placeholderPaths: string[] = [];\n\n if (config.appIdentity.appName === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.appName) {\n placeholderPaths.push('appIdentity.appName');\n }\n if (config.appIdentity.version === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.version) {\n placeholderPaths.push('appIdentity.version');\n }\n if (config.auth.passkeyConfig.rpName === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.passkeyRpName) {\n placeholderPaths.push('auth.passkeyConfig.rpName');\n }\n if (config.auth.passkeyConfig.rpId === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.passkeyRpId) {\n placeholderPaths.push('auth.passkeyConfig.rpId');\n }\n if (config.email.from === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.emailFrom) {\n placeholderPaths.push('email.from');\n }\n\n return placeholderPaths;\n }\n\n private createNotInitializedError(getterName?: string): WildoError_Backend {\n return this.errorBuilder.buildError(\n ErrorType.CONFIGURATION, undefined,{\n customMessageReference: ErrorCustomMessageReference.APP_CONFIGURATION_NOT_INITIALIZED,\n context: {\n serviceName: this._serviceName,\n applicationId: this._applicationId,\n applicationEnv: this._applicationEnv,\n message: `Application configuration not initialized : use ${getterName ?? 'getter'} before using the service`\n }\n }\n\n );\n }\n\n /**\n * Indicates whether the application configuration has been initialized.\n * Returns true only once the final resolved config is available through\n * `config`. A loader-only pre-override seed is not considered initialized for\n * downstream consumers because it still contains unresolved placeholders.\n */\n public isInitialized(): boolean {\n return this._config !== null && this._secrets !== null;\n }\n\n /**\n * PLATFORM-MODE construction-time default persistence adapter (Phase 5.2/5.3 + review R2).\n *\n * The one store for the answer \"what adapter does a resource without a declaration resolve\n * to?\" in platform mode, where this service is deliberately unhydrated while repositories are\n * constructed. It lives HERE — not on the repositories registry that historically owned it —\n * because THREE independent resolvers need it and only this service is injected into all of\n * them without a dependency cycle: the repositories-registry resolver (repository\n * construction, the boot door, the schema gate), the services-tier transaction router, and the\n * resource-id/unit-of-work resolver. When the value lived on the registry alone, the other two\n * read hydrated config and agreed with the constructed repositories only at a distance,\n * through the apps-manager env-truth overlay — nothing pinned the agreement.\n *\n * WRITE only through `RepositoriesRegistryHandlerBackendService.setPlatformModeDefaultPersistenceAdapter`,\n * which owns the conflict guard (a conflicting re-set refuses; a same-value re-set is a legal\n * retried startup phase). This adopt method is the dumb store half on purpose: keeping the\n * guard at the single sanctioned writer keeps it — and its pins — in one place.\n */\n private _platformModeDefaultPersistenceAdapter: PersistenceAdapterType | undefined = undefined;\n\n public get platformModeDefaultPersistenceAdapter(): PersistenceAdapterType | undefined {\n return this._platformModeDefaultPersistenceAdapter;\n }\n\n public adoptPlatformModeDefaultPersistenceAdapter(adapter: PersistenceAdapterType): void {\n this._platformModeDefaultPersistenceAdapter = adapter;\n }\n\n public get config(): AppConfiguration {\n\n if (!this._config)\n throw this.createNotInitializedError('config');\n\n return this._config!;\n }\n\n /**\n * Resolve a servable brand-logo URL for a `(composition[, theme, purpose])`\n * query against the resolved config's `brandAssets` (the CLI-generated,\n * backend-authored runtime projection).\n *\n * This is the single seam every backend logo consumer (auth-response\n * organization branding, email primary-scope context, ...) should call so\n * the composition/theme/purpose resolution stays consistent instead of each\n * consumer reading a free-form URL. Returns `undefined` when no matching\n * brand asset was generated.\n *\n * Safe before initialization: returns `undefined` rather than throwing so a\n * consumer building context on a not-yet-resolved config degrades gracefully.\n */\n public resolveBrandLogoUrl(query: BrandAssetQuery): string | undefined {\n if (!this._config) {\n return undefined;\n }\n const resolved = resolveBrandAsset(this._config.brandAssets ?? [], query);\n return resolved?.url;\n }\n\n /**\n * Resolve the application's public base URL (`scheme://host[:port]`) used to\n * absolutize app-relative asset/link paths for OUT-OF-APP consumers — most\n * notably email, where a client cannot fetch a same-origin path like\n * `/brand/<ref>.png`.\n *\n * Source of truth: the DEFAULT frontend service's configured\n * `runtime.endPoints[<service>].publicUrl` (the app's primary frontend URL),\n * trailing slash stripped. This mirrors how notification dashboard/token\n * links resolve their base (`AuthControllerUtils.lookupFrontendPublicUrl`),\n * kept local here so the config layer does not depend on the auth module.\n *\n * Returns `undefined` pre-initialization, when no default frontend service is\n * resolvable, or when that service has no `publicUrl` configured.\n */\n public resolveAppPublicBaseUrl(): string | undefined {\n if (!this._config) {\n return undefined;\n }\n const frontendServiceName = this.resolveDefaultFrontendServiceName();\n if (!frontendServiceName) {\n return undefined;\n }\n const publicUrl = this._config.runtime?.endPoints?.[frontendServiceName]?.publicUrl;\n if (!publicUrl) {\n return undefined;\n }\n return publicUrl.replace(/\\/+$/, '');\n }\n\n /**\n * Canonical audience (RFC 8707 resource indicator) of THIS app's generic API resource\n * server — the `aud` an exchanged machine (client-credentials) access token must carry\n * to be accepted at the resource-operation choke point (external-access D7).\n *\n * SINGLE SOURCE OF TRUTH: both the request-auth choke point (validation) and the\n * client-credentials token endpoint (minting) resolve the audience through THIS method,\n * so mint and validation cannot drift. Derivation = app public base URL + API mount path.\n * Returns `undefined` (→ fail-closed at the call site) when the public base is unresolvable.\n *\n * MCP and A2A resource servers carry their OWN canonical audiences (their endpoint URIs),\n * validated inside their own transports — not here.\n */\n public resolveApiResourceAudience(): string | undefined {\n const base = this.resolveAppPublicBaseUrl();\n return base ? `${base}${MAIN_API_BASE_PATH}` : undefined;\n }\n\n /**\n * Canonical audience (RFC 8707 resource indicator) of one of this app's OAuth resource\n * servers ({@link ResourceServerKind} — `API` / `A2A` / `MCP`). This is the SINGLE SOURCE\n * OF TRUTH for both MINTING (`aud`) and VALIDATION (each server checks `aud === self`), so an\n * audience-bound token and the surface that consumes it cannot drift.\n *\n * Derivation: the API audience ({@link resolveApiResourceAudience}) is the base; A2A/MCP append\n * their mount path ({@link RESOURCE_SERVER_MOUNT_ROUTE}). The transports DELEGATE their verify-side\n * audience to THIS method — `A2ABackendService.resolveAgentAudience()` and the MCP controller's\n * `mcpResourceUri()` both return `resolveResourceServerAudience(A2A|MCP)` — so mint and verify read\n * one function, not three parallel `${apiAudience}${route}` expressions. That is what makes \"cannot\n * drift\" a real guarantee rather than a coincidence. Returns `undefined` (→ fail-closed at the call\n * site) when the app public base URL is unresolvable.\n *\n * NB (documented follow-up): first-party USER login tokens still carry the legacy `'AUTH_TOKEN'`\n * sentinel audience rather than `resolveResourceServerAudience(API)`. That does NOT weaken the\n * A2A/MCP audience-binding here — a delegated token is `aud`-bound to A2A/MCP and is therefore\n * rejected by the main API (which accepts only `'AUTH_TOKEN'` user tokens or the API-audience\n * machine tokens).\n *\n * @param instanceRef - optional NAMED instance (multi-MCP / multi-A2A): appends `/<ref>` so each\n * server/agent instance carries its OWN audience. Omit for the DEFAULT (unnamed) surface, which\n * every app always has; `API` ignores it (a single, instance-less resource server).\n */\n public resolveResourceServerAudience(kind: ResourceServerKind, instanceRef?: string): string | undefined {\n const apiAudience = this.resolveApiResourceAudience();\n if (!apiAudience) return undefined;\n // The API is a single, instance-less resource server — a ref never applies to it.\n if (kind === ResourceServerKind.API) return apiAudience;\n const base = `${apiAudience}${MANUAL_CONTROLLER_ROUTES_URLS[RESOURCE_SERVER_MOUNT_ROUTE[kind]]}`;\n // Multi-instance (multi-MCP / multi-A2A) audience contract: a NAMED server/agent instance appends\n // its ref as a path segment (`…/mcp/<ref>`, `…/a2a/<ref>`), so each instance carries a DISTINCT\n // RFC 8707 audience that its transport validates in isolation — the token-replay boundary between\n // instances. Live since R-2: `ResourceServerInstancesRegistryBackendService` declares the instances,\n // the MCP/A2A controllers resolve `:instanceRef` and pass it here, and\n // `listResourceServerAudiences` enumerates this function over every declared instance so the token\n // endpoint's mintable set and the servable set cannot drift.\n return instanceRef ? `${base}/${encodeURIComponent(instanceRef)}` : base;\n }\n\n /**\n * Absolute-URL variant of {@link resolveBrandLogoUrl} for out-of-app\n * consumers (email logos). Behaviour:\n *\n * - resolves the brand-logo URL via {@link resolveBrandLogoUrl}; if none, `undefined`.\n * - if that URL is already absolute (has a `scheme://` prefix or is\n * protocol-relative `//host/...`), it is returned unchanged.\n * - if it is app-relative (e.g. a generated brand-asset path\n * `/brand/<ref>.png`), the {@link resolveAppPublicBaseUrl} is prepended so\n * an email client can fetch it.\n * - if no public base URL is configured, the raw (still-relative) URL is\n * returned rather than dropping it — a relative hint degrades better than\n * nothing.\n *\n * Prefer this over `resolveBrandLogoUrl` anywhere the URL leaves the app\n * origin (email); same-origin surfaces (e.g. the auth login response) can\n * keep the relative form.\n */\n public resolveBrandLogoAbsoluteUrl(query: BrandAssetQuery): string | undefined {\n const url = this.resolveBrandLogoUrl(query);\n if (!url) {\n return undefined;\n }\n // Already absolute: any `scheme://…` or protocol-relative `//host/…`.\n if (/^[a-z][a-z0-9+.-]*:\\/\\//i.test(url) || url.startsWith('//')) {\n return url;\n }\n const base = this.resolveAppPublicBaseUrl();\n if (!base) {\n return url;\n }\n return url.startsWith('/') ? `${base}${url}` : `${base}/${url}`;\n }\n\n\n public get secrets(): AppConfigurationSecrets {\n if (!this._secrets)\n throw this.createNotInitializedError('secrets');\n\n return this._secrets!;\n }\n\n public get applicationId(): string {\n if (!this._applicationId)\n throw this.createNotInitializedError('applicationId');\n\n return this._applicationId!;\n }\n\n public get applicationEnv(): RuntimeEnvironment {\n if (!this._applicationEnv)\n throw this.createNotInitializedError('applicationEnv');\n\n return this._applicationEnv!;\n }\n\n public get serviceName(): string {\n if (!this._serviceName)\n throw this.createNotInitializedError('serviceName');\n\n return this._serviceName!;\n }\n\n /**\n * Application slug — the human-readable application label (e.g.,\n * 'wildo-ai-application'), carried as a secondary JWT claim alongside the\n * canonical `applicationId` and used for human-facing allow-lists.\n *\n * It is NOT the infrastructure identity: queue names, cron job IDs, and every\n * `wildo.queue.{appId}.*` topology key are derived from `applicationId` (the\n * Mongo `_id`), never from the slug — a slug is a mutable label and keying\n * infra on it orphans resources on rename. Not for display purposes.\n */\n public get appSlug(): string {\n if (this._appSlug === null) {\n throw this.createNotInitializedError('appSlug');\n }\n\n if (!this._appSlug) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n serviceName: this._serviceName,\n applicationId: this._applicationId,\n applicationEnv: this._applicationEnv,\n message: 'Application configuration is missing a resolved appSlug',\n },\n });\n }\n\n return this._appSlug;\n }\n\n /**\n * Apply declarative app-authored backend config after the runtime/bootstrap\n * seed has been loaded.\n */\n public applyBackendConfig(backendConfig: AppConfiguration_BackendAuthored): void {\n const baseConfig = this._config ?? this._preOverrideConfig;\n if (!baseConfig) {\n throw this.createNotInitializedError('applyBackendConfig');\n }\n\n const resolvedConfig = applyBackendAuthoredConfig(baseConfig, backendConfig);\n const boundaryInspection = inspectAppConfigurationBoundaryMutations(baseConfig, resolvedConfig);\n if (boundaryInspection.errors.length > 0) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `backendConfig attempted to mutate platform/runtime-managed fields: ${boundaryInspection.errors.join(' ')}`,\n sections: Object.keys(backendConfig),\n },\n });\n }\n if (boundaryInspection.warnings.length > 0) {\n this.logger.warn(\n `[Config] backendConfig touched migration-seam runtime fields. ${boundaryInspection.warnings.join(' ')}`,\n );\n }\n\n this.applyResolvedConfig(resolvedConfig as AppConfiguration, {\n reason: 'backend-config',\n emitWarnings: true,\n });\n this.logDebug('Applied backend config', {\n reason: 'backend-config',\n sections: Object.keys(backendConfig),\n });\n }\n\n /**\n * Merge generated, environment-independent backend provider topology.\n *\n * Provider secrets and per-env URLs stay in the regular env/secrets layers;\n * this only binds the backend process to the precomputed provider scope that\n * was generated into the application package before build/start.\n */\n public applyProviderRuntime(providerRuntime: ProviderRuntimeArtifact): void {\n const baseConfig = this._preOverrideConfig;\n if (!baseConfig) {\n throw this.createNotInitializedError('applyProviderRuntime');\n }\n if (this._config) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message: 'applyProviderRuntime must run before backendConfig resolves the final application config',\n },\n });\n }\n\n const artifact = ProviderRuntimeArtifactSchema.parse(providerRuntime);\n this._frontendProviderBootstraps = artifact.frontendProviderBootstraps ?? {};\n this._providerRuntimeArtifactEvidenceMetadata = Object.freeze({\n sourceDigest: artifact.sourceDigest,\n providerGraphDigest: artifact.providerGraphDigest ?? null,\n lockfileSectionDigest: artifact.lockfileSectionDigest ?? null,\n });\n this._preOverrideConfig = {\n ...baseConfig,\n providers: {\n scopes: {\n backend: artifact.scope,\n },\n },\n };\n\n this.logDebug('Applied generated provider runtime module', {\n artifactKind: artifact.artifactKind,\n sourceDigest: artifact.sourceDigest,\n });\n }\n\n public getFrontendProviderBootstrap(frontendServiceName: string): FrontendProvidersBlock | undefined {\n return this._frontendProviderBootstraps[frontendServiceName];\n }\n\n /** Exact sanitized identity of the generated provider-runtime artifact applied before backend authored configuration. */\n public getProviderRuntimeArtifactEvidenceMetadata(): ProviderRuntimeArtifactEvidenceMetadata | null {\n return this._providerRuntimeArtifactEvidenceMetadata;\n }\n\n /**\n * Fail startup if a non-platform app still carries the explicit pre-override\n * placeholders after its backendConfig should have been applied.\n */\n public assertNoPreOverridePlaceholders(): void {\n if (!this._config) {\n throw this.createNotInitializedError('assertNoPreOverridePlaceholders');\n }\n\n const placeholderPaths = this.getPreOverridePlaceholderPaths(this._config);\n if (placeholderPaths.length === 0) {\n return;\n }\n\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `Application configuration still contains pre-override placeholder values at: ${placeholderPaths.join(', ')}. ` +\n `Define those fields in backendConfig instead of relying on backend loader placeholders.`,\n },\n });\n }\n\n private applyResolvedConfig(\n config: AppConfiguration,\n options: {\n reason: 'initial-load' | 'backend-config' | 'hydrated';\n emitWarnings: boolean;\n },\n ): void {\n const validatedConfig = AppConfiguration_Schema.parse(config);\n this._config = validatedConfig;\n this._preOverrideConfig = null;\n\n if (this._appSlug !== null) {\n this.logger.reinitialize(validatedConfig, this._appSlug);\n }\n\n this.validateEntityIdentityConfig(validatedConfig);\n if (options.emitWarnings) {\n this.emitDeferredFieldWarnings(validatedConfig);\n }\n\n this.logDebug('Resolved application configuration', {\n reason: options.reason,\n appSlug: this._appSlug,\n });\n }\n\n /**\n * Get JWT configuration with secrets\n */\n public get jwtConfig(): {\n config: AppConfiguration['jwt'],\n secrets: AppConfigurationSecrets['security']['jwt']\n } {\n return {\n config: this.config.jwt,\n secrets: this.secrets.security.jwt\n };\n }\n\n /** W7.3a: Whether anonymous sessions are enabled for any user type. */\n public get anonymousSessionsEnabled(): boolean {\n const userTypes = this._config?.userTypes;\n if (!userTypes) return false;\n return Object.values(userTypes).some(ut => ut.auth?.anonymousSessionsEnabled === true);\n }\n\n}\n"]}
1
+ {"version":3,"file":"app-configuration.backend.service.js","sourceRoot":"","sources":["../../../../../src/config/services/app-configuration.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Application Configuration Service\n *\n * Service for managing application-level configuration\n */\n\nimport { injectable, inject } from 'inversify';\nimport {\n APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS,\n AppConfiguration,\n type AppConfiguration_PreOverrideSeed,\n AppConfiguration_Schema\n} from '~wildo-backend-lib/config/models/app-config.backend.schemas';\nimport { AppConfigurationSecrets } from '~wildo-backend-lib/config/models/app-config-secrets.backend.schemas';\nimport { AppConfigurationLoaderService } from './app-configuration-loader.backend.service';\nimport {\n type AppConfiguration_BackendAuthored,\n applyBackendAuthoredConfig,\n inspectAppConfigurationBoundaryMutations,\n} from '~wildo-backend-lib/config/models/app-config.backend-authored.definitions';\nimport {\n type ProviderRuntimeArtifact,\n type ProviderRuntimeArtifactEvidenceMetadata,\n ProviderRuntimeArtifactSchema,\n} from '~wildo-backend-lib/config/models/provider-runtime-artifact.backend.schemas';\n\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport { LoggerService } from '~wildo-backend-lib/monitoring/logger/services/logger.service';\nimport {\n ErrorCustomMessageReference,\n ErrorType,\n MAIN_API_BASE_PATH,\n ResourceServerKind,\n RESOURCE_SERVER_MOUNT_ROUTE,\n MANUAL_CONTROLLER_ROUTES_URLS,\n resolveBrandAsset,\n RuntimeEnvironment,\n WildoError_Backend,\n type BrandAssetQuery,\n type FrontendProvidersBlock,\n type PersistenceAdapterType,\n type UserTypeAuthPolicy,\n} from '@wildo-ai/saas-models';\nimport { ErrorBuilderBackendService } from '~wildo-backend-lib/errors/services/error-builder.backend.service';\n\n\n/**\n * Application Configuration Service\n *\n * Manages complete application configuration. After T5, the loading chain is:\n * 1. Env vars → database addresses, platform URLs\n * 2. Minimal pre-override skeleton → only the structural placeholders the\n * backend must provide before backendConfig is merged\n * 3. Apps-manager fetch → reduced managed metadata + JWT public keys + appSlug\n * 4. App-authored backendConfig → merged onto the runtime/bootstrap seed\n *\n * This service uses the loader service for steps 1-3, then provides\n * cached, type-safe access to all configuration sections.\n */\n@injectable()\nexport class AppConfigurationService {\n protected logDebug: (message: string, context?: Record<string, unknown>) => void;\n private _config: AppConfiguration | null = null;\n private _preOverrideConfig: AppConfiguration_PreOverrideSeed | null = null;\n private _frontendProviderBootstraps: Record<string, FrontendProvidersBlock> = {};\n private _providerRuntimeArtifactEvidenceMetadata: ProviderRuntimeArtifactEvidenceMetadata | null = null;\n private _secrets: AppConfigurationSecrets | null = null;\n private _applicationId: string | null = null;\n private _applicationEnv: RuntimeEnvironment | null = null;\n private _serviceName: string | null = null;\n private _appSlug: string | null = null;\n\n constructor(\n @inject(SAAS_SERVICE_TYPES.Logger) private logger: LoggerService,\n @inject(SAAS_SERVICE_TYPES.ErrorBuilderService) private errorBuilder: ErrorBuilderBackendService,\n @inject(SAAS_SERVICE_TYPES.AppConfigLoaderService) private loaderService: AppConfigurationLoaderService\n ) {\n this.logDebug = this.logger.debugByType('AppConfigurationService');\n this.logger.setDebugTypeLogging('AppConfigurationService', false);\n }\n\n /**\n * Initialize the configuration service\n */\n public async initialize(): Promise<void> {\n if (!this._config || !this._secrets) {\n this.logDebug('Initializing application configuration...');\n this._frontendProviderBootstraps = {};\n this._providerRuntimeArtifactEvidenceMetadata = null;\n const { appConfig, appSecrets, applicationId, applicationEnvConfig, serviceName, appSlug } = await this.loaderService.initialize();\n this._preOverrideConfig = appConfig;\n this._secrets = appSecrets;\n this._applicationId = applicationId;\n this._applicationEnv = applicationEnvConfig.APPLICATION_ENV;\n this._serviceName = serviceName;\n this._appSlug = appSlug;\n\n this.logDebug('Application configuration initialized successfully', { appSlug });\n }\n }\n\n /**\n * Hydrate the service from an already-resolved full configuration object.\n *\n * Platform startup paths use this when configuration was assembled by another\n * runtime-specific service. Callers must make the ownership decision explicit:\n * either provide a `boundaryBaseConfig` to run the Phase 4 mutation checks, or\n * set `skipBoundaryInspection` when hydrating a platform-owned config that does\n * not go through the tenant backendConfig authoring seam.\n */\n public hydrateResolvedConfiguration(options: {\n config: AppConfiguration;\n secrets: AppConfigurationSecrets;\n applicationId: string;\n applicationEnv: RuntimeEnvironment;\n serviceName: string;\n appSlug: string;\n emitWarnings?: boolean;\n boundaryBaseConfig?: AppConfiguration | AppConfiguration_PreOverrideSeed;\n skipBoundaryInspection?: boolean;\n }): void {\n const resolvedAppSlug = options.appSlug.trim();\n if (!resolvedAppSlug) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message: 'Resolved application configuration requires a non-empty appSlug',\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n\n if (options.boundaryBaseConfig && options.skipBoundaryInspection) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n 'hydrateResolvedConfiguration cannot accept both boundaryBaseConfig and skipBoundaryInspection. ' +\n 'Choose one ownership mode explicitly.',\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n\n if (!options.boundaryBaseConfig && !options.skipBoundaryInspection) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n 'hydrateResolvedConfiguration requires either boundaryBaseConfig for Phase 4 ownership checks ' +\n 'or skipBoundaryInspection for platform-owned hydrated configs.',\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n\n if (options.boundaryBaseConfig) {\n const boundaryInspection = inspectAppConfigurationBoundaryMutations(\n options.boundaryBaseConfig,\n options.config,\n );\n if (boundaryInspection.errors.length > 0) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `Hydrated resolved config attempted to cross platform/runtime-managed boundaries: ${boundaryInspection.errors.join(' ')}`,\n serviceName: options.serviceName,\n applicationId: options.applicationId,\n },\n });\n }\n if ((options.emitWarnings ?? true) && boundaryInspection.warnings.length > 0) {\n this.logger.warn(\n `[Config] hydrated resolved config touched migration-seam runtime fields. ${boundaryInspection.warnings.join(' ')}`,\n );\n }\n }\n\n this._secrets = options.secrets;\n this._applicationId = options.applicationId;\n this._applicationEnv = options.applicationEnv;\n this._serviceName = options.serviceName;\n this._appSlug = resolvedAppSlug;\n this._preOverrideConfig = null;\n\n this.applyResolvedConfig(options.config, {\n reason: 'hydrated',\n emitWarnings: options.emitWarnings ?? true,\n });\n }\n\n /**\n * W3.1: Get auth policy for a specific user type.\n * Returns the complete per-user-type auth policy, or null if the user type doesn't exist in config.\n */\n public getUserTypeAuthPolicy(userType: string): UserTypeAuthPolicy | null {\n const appConfig = this._config;\n if (!appConfig?.userTypes) return null;\n const typeDef = appConfig.userTypes[userType];\n return typeDef?.auth ?? null;\n }\n\n /**\n * Resolve a specific frontend-service user-management entry.\n * Used when runtime flows must enforce surface-level auth/register policy\n * for a known frontend service + user-type combination.\n */\n public getFrontendServiceUserManagementEntry(frontendServiceName: string, userType: string): { register: boolean; auth: boolean; isDefault?: boolean } | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n return appConfig.frontendServices[frontendServiceName]?.usersManagement?.[userType] ?? null;\n }\n\n /**\n * Check whether a frontend service identity is declared in app-owned config.\n * This is the authoritative allow-list used for runtime/public frontend identity.\n */\n public hasFrontendService(frontendServiceName: string): boolean {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return false;\n return !!appConfig.frontendServices[frontendServiceName];\n }\n\n /**\n * Resolve user type from the active frontend service identity.\n * Reads `frontendServices[frontendServiceName].usersManagement` and returns\n * the default entry, or the first entry when no explicit default exists.\n */\n public resolveUserTypeFromFrontendServiceName(frontendServiceName: string): string | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n const frontendServiceConfig = appConfig.frontendServices[frontendServiceName];\n if (!frontendServiceConfig?.usersManagement) return null;\n const entries = Object.entries(frontendServiceConfig.usersManagement);\n const defaultEntry = entries.find(([, v]) => v.isDefault);\n const firstEntry = entries[0];\n return (defaultEntry ?? firstEntry)?.[0] ?? null;\n }\n\n /**\n * Reverse lookup: given a user type, find the frontend service where that user type\n * has `isDefault: true` in usersManagement. Falls back to any app type that\n * references the user type (with `auth: true`) if no isDefault match exists.\n *\n * This is the mirror of `resolveUserTypeFromFrontendServiceName()`:\n * frontendServiceName → userType (forward)\n * userType → frontendServiceName (reverse)\n */\n public resolveFrontendServiceNameFromUserType(userType: string): string | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n\n let fallback: string | null = null;\n for (const [frontendServiceName, frontendServiceConfig] of Object.entries(appConfig.frontendServices)) {\n const entry = frontendServiceConfig.usersManagement[userType];\n if (!entry) continue;\n if (entry.isDefault) return frontendServiceName;\n if (entry.auth && !fallback) fallback = frontendServiceName;\n }\n return fallback;\n }\n\n /**\n * Find the default frontend service — the first frontend service that has any\n * user type entry with `isDefault: true`. Used as a last-resort fallback\n * when no specific user type context is available (e.g., SAML errors\n * before user identification).\n */\n public resolveDefaultFrontendServiceName(): string | null {\n const appConfig = this._config;\n if (!appConfig?.frontendServices) return null;\n\n for (const [frontendServiceName, frontendServiceConfig] of Object.entries(appConfig.frontendServices)) {\n const hasDefault = Object.values(frontendServiceConfig.usersManagement).some(v => v.isDefault);\n if (hasDefault) return frontendServiceName;\n }\n const firstFrontendServiceName = Object.keys(appConfig.frontendServices)[0];\n return firstFrontendServiceName ?? null;\n }\n\n private validateEntityIdentityConfig(config: AppConfiguration): void {\n const { userTypes, frontendServices, organizationTypes } = config;\n const userTypeKeys = new Set(Object.keys(userTypes));\n\n for (const [frontendServiceName, frontendServiceConfig] of Object.entries(frontendServices)) {\n for (const userType of Object.keys(frontendServiceConfig.usersManagement)) {\n if (!userTypeKeys.has(userType)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n context: {\n message: `frontendServices.${frontendServiceName}.usersManagement references unknown userType \"${userType}\". ` +\n `userTypes must define: ${[...userTypeKeys].join(', ')}`,\n },\n });\n }\n }\n }\n\n if (organizationTypes) {\n const orgTypeKeys = new Set(Object.keys(organizationTypes));\n for (const [, orgConfig] of Object.entries(organizationTypes)) {\n for (const userType of orgConfig.userTypes) {\n if (!userTypeKeys.has(userType)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n context: {\n message: `organizationTypes references unknown userType \"${userType}\". ` +\n `userTypes must define: ${[...userTypeKeys].join(', ')}`,\n },\n });\n }\n }\n }\n for (const [, userTypeDef] of Object.entries(userTypes)) {\n const orgTypes = userTypeDef.requiresOrgMembership?.orgTypes;\n if (orgTypes) {\n for (const ot of orgTypes) {\n if (!orgTypeKeys.has(ot)) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n context: {\n message: `requiresOrgMembership.orgTypes references unknown org type \"${ot}\". ` +\n `organizationTypes must define: ${[...orgTypeKeys].join(', ')}`,\n },\n });\n }\n }\n }\n }\n }\n }\n\n private emitDeferredFieldWarnings(config: AppConfiguration): void {\n if (config.auth?.crossOrgSSOAccess === false) {\n this.logger.info(\n `[Config] crossOrgSSOAccess is disabled — users with enterprise SSO links from one organization will be blocked from SSO into other organizations.`\n );\n }\n\n for (const [userTypeKey, userTypeDef] of Object.entries(config.userTypes)) {\n const auth = userTypeDef.auth;\n if (auth?.anonymousSessionsEnabled === true) {\n this.logger.info(\n `[Config] Anonymous sessions enabled for userType \"${userTypeKey}\" — isAnonymizable resources will support ANONYMOUS scope.`\n );\n }\n if (auth?.oneOffSessionAllowed === true) {\n this.logger.info(\n `[Config] One-off sessions enabled for userType \"${userTypeKey}\" — consumable token links can create scoped sessions.`\n );\n }\n if (userTypeDef.uniqueIdentifier && userTypeDef.uniqueIdentifier !== 'email') {\n this.logger.warn(\n `[Config] uniqueIdentifier only supports \"email\" — value \"${userTypeDef.uniqueIdentifier}\" will be treated as \"email\" for userType \"${userTypeKey}\".`\n );\n }\n\n if (auth?.stepUpAuth?.enabled) {\n const stepUpMethods = auth.stepUpAuth.methods ?? [];\n const enabledMethods = auth.authMethodsEnabled ?? {};\n const hasUsableMethod = stepUpMethods.some((method) => {\n const methodValue = enabledMethods[method];\n if (methodValue === undefined) return false;\n if (typeof methodValue === 'boolean') return methodValue;\n return methodValue.enabled;\n });\n if (!hasUsableMethod) {\n this.logger.warn(\n `[Config] stepUpAuth is enabled for userType \"${userTypeKey}\" but none of its methods [${stepUpMethods.join(', ')}] are enabled in authMethodsEnabled — step-up will always fail.`\n );\n }\n }\n }\n }\n\n private getPreOverridePlaceholderPaths(config: AppConfiguration): string[] {\n const placeholderPaths: string[] = [];\n\n if (config.appIdentity.appName === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.appName) {\n placeholderPaths.push('appIdentity.appName');\n }\n if (config.appIdentity.version === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.version) {\n placeholderPaths.push('appIdentity.version');\n }\n if (config.auth.passkeyConfig.rpName === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.passkeyRpName) {\n placeholderPaths.push('auth.passkeyConfig.rpName');\n }\n if (config.auth.passkeyConfig.rpId === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.passkeyRpId) {\n placeholderPaths.push('auth.passkeyConfig.rpId');\n }\n if (config.email.from === APP_CONFIGURATION_PRE_OVERRIDE_PLACEHOLDERS.emailFrom) {\n placeholderPaths.push('email.from');\n }\n\n return placeholderPaths;\n }\n\n private createNotInitializedError(getterName?: string): WildoError_Backend {\n return this.errorBuilder.buildError(\n ErrorType.CONFIGURATION, undefined,{\n customMessageReference: ErrorCustomMessageReference.APP_CONFIGURATION_NOT_INITIALIZED,\n context: {\n serviceName: this._serviceName,\n applicationId: this._applicationId,\n applicationEnv: this._applicationEnv,\n message: `Application configuration not initialized : use ${getterName ?? 'getter'} before using the service`\n }\n }\n\n );\n }\n\n /**\n * Indicates whether the application configuration has been initialized.\n * Returns true only once the final resolved config is available through\n * `config`. A loader-only pre-override seed is not considered initialized for\n * downstream consumers because it still contains unresolved placeholders.\n */\n public isInitialized(): boolean {\n return this._config !== null && this._secrets !== null;\n }\n\n /**\n * PLATFORM-MODE construction-time default persistence adapter (Phase 5.2/5.3 + review R2).\n *\n * The one store for the answer \"what adapter does a resource without a declaration resolve\n * to?\" in platform mode, where this service is deliberately unhydrated while repositories are\n * constructed. It lives HERE — not on the repositories registry that historically owned it —\n * because THREE independent resolvers need it and only this service is injected into all of\n * them without a dependency cycle: the repositories-registry resolver (repository\n * construction, the boot door, the schema gate), the services-tier transaction router, and the\n * resource-id/unit-of-work resolver. When the value lived on the registry alone, the other two\n * read hydrated config and agreed with the constructed repositories only at a distance,\n * through the apps-manager env-truth overlay — nothing pinned the agreement.\n *\n * WRITE only through `RepositoriesRegistryHandlerBackendService.setPlatformModeDefaultPersistenceAdapter`,\n * which owns the conflict guard (a conflicting re-set refuses; a same-value re-set is a legal\n * retried startup phase). This adopt method is the dumb store half on purpose: keeping the\n * guard at the single sanctioned writer keeps it — and its pins — in one place.\n */\n private _platformModeDefaultPersistenceAdapter: PersistenceAdapterType | undefined = undefined;\n\n public get platformModeDefaultPersistenceAdapter(): PersistenceAdapterType | undefined {\n return this._platformModeDefaultPersistenceAdapter;\n }\n\n public adoptPlatformModeDefaultPersistenceAdapter(adapter: PersistenceAdapterType): void {\n this._platformModeDefaultPersistenceAdapter = adapter;\n }\n\n public get config(): AppConfiguration {\n\n if (!this._config)\n throw this.createNotInitializedError('config');\n\n return this._config!;\n }\n\n /**\n * Resolve a servable brand-logo URL for a `(composition[, theme, purpose])`\n * query against the resolved config's `brandAssets` (the CLI-generated,\n * backend-authored runtime projection).\n *\n * This is the single seam every backend logo consumer (auth-response\n * organization branding, email primary-scope context, ...) should call so\n * the composition/theme/purpose resolution stays consistent instead of each\n * consumer reading a free-form URL. Returns `undefined` when no matching\n * brand asset was generated.\n *\n * Safe before initialization: returns `undefined` rather than throwing so a\n * consumer building context on a not-yet-resolved config degrades gracefully.\n */\n public resolveBrandLogoUrl(query: BrandAssetQuery): string | undefined {\n if (!this._config) {\n return undefined;\n }\n const resolved = resolveBrandAsset(this._config.brandAssets ?? [], query);\n return resolved?.url;\n }\n\n /**\n * Resolve the application's public base URL (`scheme://host[:port]`) used to\n * absolutize app-relative asset/link paths for OUT-OF-APP consumers — most\n * notably email, where a client cannot fetch a same-origin path like\n * `/brand/<ref>.png`.\n *\n * Source of truth: the DEFAULT frontend service's configured\n * `runtime.endPoints[<service>].publicUrl` (the app's primary frontend URL),\n * trailing slash stripped. This mirrors how notification dashboard/token\n * links resolve their base (`AuthControllerUtils.lookupFrontendPublicUrl`),\n * kept local here so the config layer does not depend on the auth module.\n *\n * Returns `undefined` pre-initialization, when no default frontend service is\n * resolvable, or when that service has no `publicUrl` configured.\n */\n public resolveAppPublicBaseUrl(): string | undefined {\n if (!this._config) {\n return undefined;\n }\n const frontendServiceName = this.resolveDefaultFrontendServiceName();\n if (!frontendServiceName) {\n return undefined;\n }\n const publicUrl = this._config.runtime?.endPoints?.[frontendServiceName]?.publicUrl;\n if (!publicUrl) {\n return undefined;\n }\n return publicUrl.replace(/\\/+$/, '');\n }\n\n /**\n * Canonical audience (RFC 8707 resource indicator) of THIS app's generic API resource\n * server — the `aud` an exchanged machine (client-credentials) access token must carry\n * to be accepted at the resource-operation choke point (external-access D7).\n *\n * SINGLE SOURCE OF TRUTH: both the request-auth choke point (validation) and the\n * client-credentials token endpoint (minting) resolve the audience through THIS method,\n * so mint and validation cannot drift. Derivation = app public base URL + API mount path.\n * Returns `undefined` (→ fail-closed at the call site) when the public base is unresolvable.\n *\n * MCP and A2A resource servers carry their OWN canonical audiences (their endpoint URIs),\n * validated inside their own transports — not here.\n */\n public resolveApiResourceAudience(): string | undefined {\n const base = this.resolveAppPublicBaseUrl();\n return base ? `${base}${MAIN_API_BASE_PATH}` : undefined;\n }\n\n /**\n * Canonical audience (RFC 8707 resource indicator) of one of this app's OAuth resource\n * servers ({@link ResourceServerKind} — `API` / `A2A` / `MCP`). This is the SINGLE SOURCE\n * OF TRUTH for both MINTING (`aud`) and VALIDATION (each server checks `aud === self`), so an\n * audience-bound token and the surface that consumes it cannot drift.\n *\n * Derivation: the API audience ({@link resolveApiResourceAudience}) is the base; A2A/MCP append\n * their mount path ({@link RESOURCE_SERVER_MOUNT_ROUTE}). The transports DELEGATE their verify-side\n * audience to THIS method — `A2ABackendService.resolveAgentAudience()` and the MCP controller's\n * `mcpResourceUri()` both return `resolveResourceServerAudience(A2A|MCP)` — so mint and verify read\n * one function, not three parallel `${apiAudience}${route}` expressions. That is what makes \"cannot\n * drift\" a real guarantee rather than a coincidence. Returns `undefined` (→ fail-closed at the call\n * site) when the app public base URL is unresolvable.\n *\n * NB (documented follow-up): first-party USER login tokens still carry the legacy `'AUTH_TOKEN'`\n * sentinel audience rather than `resolveResourceServerAudience(API)`. That does NOT weaken the\n * A2A/MCP audience-binding here — a delegated token is `aud`-bound to A2A/MCP and is therefore\n * rejected by the main API (which accepts only `'AUTH_TOKEN'` user tokens or the API-audience\n * machine tokens).\n *\n * @param instanceRef - optional NAMED instance (multi-MCP / multi-A2A): appends `/<ref>` so each\n * server/agent instance carries its OWN audience. Omit for the DEFAULT (unnamed) surface, which\n * every app always has; `API` ignores it (a single, instance-less resource server).\n */\n public resolveResourceServerAudience(kind: ResourceServerKind, instanceRef?: string): string | undefined {\n const apiAudience = this.resolveApiResourceAudience();\n if (!apiAudience) return undefined;\n // The API is a single, instance-less resource server — a ref never applies to it.\n if (kind === ResourceServerKind.API) return apiAudience;\n const base = `${apiAudience}${MANUAL_CONTROLLER_ROUTES_URLS[RESOURCE_SERVER_MOUNT_ROUTE[kind]]}`;\n // Multi-instance (multi-MCP / multi-A2A) audience contract: a NAMED server/agent instance appends\n // its ref as a path segment (`…/mcp/<ref>`, `…/a2a/<ref>`), so each instance carries a DISTINCT\n // RFC 8707 audience that its transport validates in isolation — the token-replay boundary between\n // instances. Live since R-2: `ResourceServerInstancesRegistryBackendService` declares the instances,\n // the MCP/A2A controllers resolve `:instanceRef` and pass it here, and\n // `listResourceServerAudiences` enumerates this function over every declared instance so the token\n // endpoint's mintable set and the servable set cannot drift.\n return instanceRef ? `${base}/${encodeURIComponent(instanceRef)}` : base;\n }\n\n /**\n * Absolute-URL variant of {@link resolveBrandLogoUrl} for out-of-app\n * consumers (email logos). Behaviour:\n *\n * - resolves the brand-logo URL via {@link resolveBrandLogoUrl}; if none, `undefined`.\n * - if that URL is already absolute (has a `scheme://` prefix or is\n * protocol-relative `//host/...`), it is returned unchanged.\n * - if it is app-relative (e.g. a generated brand-asset path\n * `/brand/<ref>.png`), the {@link resolveAppPublicBaseUrl} is prepended so\n * an email client can fetch it.\n * - if no public base URL is configured, the raw (still-relative) URL is\n * returned rather than dropping it — a relative hint degrades better than\n * nothing.\n *\n * Prefer this over `resolveBrandLogoUrl` anywhere the URL leaves the app\n * origin (email); same-origin surfaces (e.g. the auth login response) can\n * keep the relative form.\n */\n public resolveBrandLogoAbsoluteUrl(query: BrandAssetQuery): string | undefined {\n const url = this.resolveBrandLogoUrl(query);\n if (!url) {\n return undefined;\n }\n // Already absolute: any `scheme://…` or protocol-relative `//host/…`.\n if (/^[a-z][a-z0-9+.-]*:\\/\\//i.test(url) || url.startsWith('//')) {\n return url;\n }\n const base = this.resolveAppPublicBaseUrl();\n if (!base) {\n return url;\n }\n return url.startsWith('/') ? `${base}${url}` : `${base}/${url}`;\n }\n\n\n public get secrets(): AppConfigurationSecrets {\n if (!this._secrets)\n throw this.createNotInitializedError('secrets');\n\n return this._secrets!;\n }\n\n public get applicationId(): string {\n if (!this._applicationId)\n throw this.createNotInitializedError('applicationId');\n\n return this._applicationId!;\n }\n\n public get applicationEnv(): RuntimeEnvironment {\n if (!this._applicationEnv)\n throw this.createNotInitializedError('applicationEnv');\n\n return this._applicationEnv!;\n }\n\n public get serviceName(): string {\n if (!this._serviceName)\n throw this.createNotInitializedError('serviceName');\n\n return this._serviceName!;\n }\n\n /**\n * Application slug — the human-readable application label (e.g.,\n * 'wildo-ai-application'), carried as a secondary JWT claim alongside the\n * canonical `applicationId` and used for human-facing allow-lists.\n *\n * It is NOT the infrastructure identity: queue names, cron job IDs, and every\n * `wildo.queue.{appId}.*` topology key are derived from `applicationId` (the\n * Mongo `_id`), never from the slug — a slug is a mutable label and keying\n * infra on it orphans resources on rename. Not for display purposes.\n */\n public get appSlug(): string {\n if (this._appSlug === null) {\n throw this.createNotInitializedError('appSlug');\n }\n\n if (!this._appSlug) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n serviceName: this._serviceName,\n applicationId: this._applicationId,\n applicationEnv: this._applicationEnv,\n message: 'Application configuration is missing a resolved appSlug',\n },\n });\n }\n\n return this._appSlug;\n }\n\n /**\n * Apply declarative app-authored backend config after the runtime/bootstrap\n * seed has been loaded.\n */\n public applyBackendConfig(backendConfig: AppConfiguration_BackendAuthored): void {\n const baseConfig = this._config ?? this._preOverrideConfig;\n if (!baseConfig) {\n throw this.createNotInitializedError('applyBackendConfig');\n }\n\n const resolvedConfig = applyBackendAuthoredConfig(baseConfig, backendConfig);\n const boundaryInspection = inspectAppConfigurationBoundaryMutations(baseConfig, resolvedConfig);\n if (boundaryInspection.errors.length > 0) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `backendConfig attempted to mutate platform/runtime-managed fields: ${boundaryInspection.errors.join(' ')}`,\n sections: Object.keys(backendConfig),\n },\n });\n }\n if (boundaryInspection.warnings.length > 0) {\n this.logger.warn(\n `[Config] backendConfig touched migration-seam runtime fields. ${boundaryInspection.warnings.join(' ')}`,\n );\n }\n\n this.applyResolvedConfig(resolvedConfig as AppConfiguration, {\n reason: 'backend-config',\n emitWarnings: true,\n });\n this.logDebug('Applied backend config', {\n reason: 'backend-config',\n sections: Object.keys(backendConfig),\n });\n }\n\n /**\n * Merge generated, environment-independent backend provider topology.\n *\n * Provider secrets and per-env URLs stay in the regular env/secrets layers;\n * this only binds the backend process to the precomputed provider scope that\n * was generated into the application package before build/start.\n */\n public applyProviderRuntime(providerRuntime: ProviderRuntimeArtifact): void {\n const baseConfig = this._preOverrideConfig;\n if (!baseConfig) {\n throw this.createNotInitializedError('applyProviderRuntime');\n }\n if (this._config) {\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message: 'applyProviderRuntime must run before backendConfig resolves the final application config',\n },\n });\n }\n\n const parsed = ProviderRuntimeArtifactSchema.safeParse(providerRuntime);\n if (!parsed.success) {\n // The artifact is GENERATED from the authored config by `wildo config sync`, so a parse\n // failure here is almost always a stale artifact meeting a newer contract (#328 added the\n // provider identity to every frontend entry). A raw Zod issue list reads as a logic defect\n // in the backend; the remedy is regeneration, so name it (staleness-presents-as-a-logic-defect).\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n 'The generated provider runtime artifact does not satisfy the current contract — it was most likely '\n + 'generated before the contract changed. Regenerate it with `wildo config sync` and restart. '\n + `Issues: ${parsed.error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`).join('; ')}`,\n issues: parsed.error.issues,\n },\n });\n }\n const artifact = parsed.data;\n this._frontendProviderBootstraps = artifact.frontendProviderBootstraps ?? {};\n this._providerRuntimeArtifactEvidenceMetadata = Object.freeze({\n sourceDigest: artifact.sourceDigest,\n providerGraphDigest: artifact.providerGraphDigest ?? null,\n lockfileSectionDigest: artifact.lockfileSectionDigest ?? null,\n });\n this._preOverrideConfig = {\n ...baseConfig,\n providers: {\n scopes: {\n backend: artifact.scope,\n },\n // Carried forward rather than defaulted, because this assignment REPLACES the whole providers\n // block. The artifact supplies the backend's resolved scope and knows nothing about the\n // application's connection policy, so rebuilding the block from it alone would silently drop\n // a declared `providers.connections` — and the symptom would be a provider becoming\n // connectable at scopes the application had deliberately switched off.\n connections: baseConfig.providers?.connections ?? {},\n },\n };\n\n this.logDebug('Applied generated provider runtime module', {\n artifactKind: artifact.artifactKind,\n sourceDigest: artifact.sourceDigest,\n });\n }\n\n public getFrontendProviderBootstrap(frontendServiceName: string): FrontendProvidersBlock | undefined {\n return this._frontendProviderBootstraps[frontendServiceName];\n }\n\n /** Exact sanitized identity of the generated provider-runtime artifact applied before backend authored configuration. */\n public getProviderRuntimeArtifactEvidenceMetadata(): ProviderRuntimeArtifactEvidenceMetadata | null {\n return this._providerRuntimeArtifactEvidenceMetadata;\n }\n\n /**\n * Fail startup if a non-platform app still carries the explicit pre-override\n * placeholders after its backendConfig should have been applied.\n */\n public assertNoPreOverridePlaceholders(): void {\n if (!this._config) {\n throw this.createNotInitializedError('assertNoPreOverridePlaceholders');\n }\n\n const placeholderPaths = this.getPreOverridePlaceholderPaths(this._config);\n if (placeholderPaths.length === 0) {\n return;\n }\n\n throw this.errorBuilder.buildError(ErrorType.CONFIGURATION, undefined, {\n customMessageReference: ErrorCustomMessageReference.CONFIGURATION,\n context: {\n message:\n `Application configuration still contains pre-override placeholder values at: ${placeholderPaths.join(', ')}. ` +\n `Define those fields in backendConfig instead of relying on backend loader placeholders.`,\n },\n });\n }\n\n private applyResolvedConfig(\n config: AppConfiguration,\n options: {\n reason: 'initial-load' | 'backend-config' | 'hydrated';\n emitWarnings: boolean;\n },\n ): void {\n const validatedConfig = AppConfiguration_Schema.parse(config);\n this._config = validatedConfig;\n this._preOverrideConfig = null;\n\n if (this._appSlug !== null) {\n this.logger.reinitialize(validatedConfig, this._appSlug);\n }\n\n this.validateEntityIdentityConfig(validatedConfig);\n if (options.emitWarnings) {\n this.emitDeferredFieldWarnings(validatedConfig);\n }\n\n this.logDebug('Resolved application configuration', {\n reason: options.reason,\n appSlug: this._appSlug,\n });\n }\n\n /**\n * Get JWT configuration with secrets\n */\n public get jwtConfig(): {\n config: AppConfiguration['jwt'],\n secrets: AppConfigurationSecrets['security']['jwt']\n } {\n return {\n config: this.config.jwt,\n secrets: this.secrets.security.jwt\n };\n }\n\n /** W7.3a: Whether anonymous sessions are enabled for any user type. */\n public get anonymousSessionsEnabled(): boolean {\n const userTypes = this._config?.userTypes;\n if (!userTypes) return false;\n return Object.values(userTypes).some(ut => ut.auth?.anonymousSessionsEnabled === true);\n }\n\n}\n"]}
@@ -12,6 +12,12 @@ export interface AppPrimaryLanguageConfigShape {
12
12
  languages?: {
13
13
  defaultLanguage?: string | AvailableLanguage;
14
14
  fallbackLanguage?: string | AvailableLanguage;
15
+ /**
16
+ * The locale set a user or organization may SELECT. Optional here so every existing caller
17
+ * of the primary/fallback helpers keeps type-checking against the narrower shape it already
18
+ * passes; `getConfiguredEnabledLanguages` treats its absence as "only the primary".
19
+ */
20
+ enabledLanguages?: readonly (string | AvailableLanguage)[];
15
21
  };
16
22
  };
17
23
  }
@@ -36,12 +42,48 @@ export declare function getConfiguredPrimaryLanguage(config: AppPrimaryLanguageC
36
42
  * primary locale so backend runtime consumers never invent a separate default.
37
43
  */
38
44
  export declare function getConfiguredFallbackLanguage(config: AppPrimaryLanguageConfigShape | null | undefined): AvailableLanguage;
45
+ /**
46
+ * Resolve the full set of locales this application ENABLES — the locales a user or an organization
47
+ * may select, which is a strictly wider question than "the locale this SaaS authors natively".
48
+ *
49
+ * This is the named backend source for that set, and it exists because there was none: before it,
50
+ * `appPreferences.languages.enabledLanguages` was read by the frontend (`I18nContext`) and by the
51
+ * dev companion (which keeps its own private copy for the same reason), and by NOTHING in
52
+ * `saas-backend-lib`. Every backend consumer therefore answered locale questions with the PRIMARY
53
+ * locale, because that was the only helper on offer — which is exactly how the email-template
54
+ * startup check came to prove coverage for one locale in an application that enables two.
55
+ *
56
+ * Three deliberate properties:
57
+ *
58
+ * - **The primary is always a member, and always first.** An application that declares
59
+ * `defaultLanguage: fr` and omits it from `enabledLanguages` has still enabled French — the
60
+ * primary is enabled by definition, not by enumeration. Putting it first makes the returned array
61
+ * usable as a report order without a second sort.
62
+ * - **Unknown values are DROPPED rather than thrown on**, unlike the primary/fallback helpers. Those
63
+ * two resolve a single scalar the runtime must have, so an invalid value there is unusable and
64
+ * failing fast is the only honest answer. This one resolves a SET whose other members are still
65
+ * perfectly usable; refusing the whole set over one bad member would turn a typo in a secondary
66
+ * language into a boot failure. The Zod config schema already rejects an out-of-vocabulary value
67
+ * at parse time, so this filter is a defence for hand-built and partially-typed config objects.
68
+ * - **Duplicates collapse**, so a config that lists the primary explicitly reads identically to one
69
+ * that does not.
70
+ */
71
+ export declare function getConfiguredEnabledLanguages(config: AppPrimaryLanguageConfigShape | null | undefined): AvailableLanguage[];
39
72
  export declare class ApplicationUtils {
40
73
  /**
41
74
  * Transforms backend application configuration to a frontend-safe shared payload.
42
75
  * Filters out private/backend-only runtime endpoints and preserves only app-owned
43
76
  * frontend service entries keyed by frontend service identity.
44
77
  */
45
- static toAppConfiguration_Shared(config: AppConfiguration): AppConfiguration_Shared;
78
+ static toAppConfiguration_Shared(config: AppConfiguration,
79
+ /**
80
+ * The application's own id, which the AUTHORED configuration does not carry — it is runtime
81
+ * identity, resolved at startup, not something an application declares about itself. Passed in
82
+ * rather than read here so this projection stays a pure function of its input.
83
+ *
84
+ * Optional so every existing caller and fixture keeps working; an absent id simply leaves the
85
+ * field off, which is the pre-existing behaviour.
86
+ */
87
+ applicationId?: string): AppConfiguration_Shared;
46
88
  }
47
89
  //# sourceMappingURL=app-configuration.backend.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-configuration.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/config/services/app-configuration.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAC/F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAIzE,MAAM,WAAW,6BAA6B;IAC5C,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE;YACV,eAAe,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;YAC7C,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;SAC/C,CAAC;KACH,CAAC;CACH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,6BAA6B,GAAG,IAAI,GAAG,SAAS,GACvD,iBAAiB,CAOnB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,6BAA6B,GAAG,IAAI,GAAG,SAAS,GACvD,iBAAiB,CAOnB;AAkBD,qBAAa,gBAAgB;IAC3B;;;;OAIG;IACH,MAAM,CAAC,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,uBAAuB;CA8EpF"}
1
+ {"version":3,"file":"app-configuration.backend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/config/services/app-configuration.backend.utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAC/F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAIzE,MAAM,WAAW,6BAA6B;IAC5C,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE;YACV,eAAe,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;YAC7C,gBAAgB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;YAC9C;;;;eAIG;YACH,gBAAgB,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,iBAAiB,CAAC,EAAE,CAAC;SAC5D,CAAC;KACH,CAAC;CACH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,6BAA6B,GAAG,IAAI,GAAG,SAAS,GACvD,iBAAiB,CAOnB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,6BAA6B,GAAG,IAAI,GAAG,SAAS,GACvD,iBAAiB,CAOnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,6BAA6B,GAAG,IAAI,GAAG,SAAS,GACvD,iBAAiB,EAAE,CAQrB;AAkBD,qBAAa,gBAAgB;IAC3B;;;;OAIG;IACH,MAAM,CAAC,yBAAyB,CAC9B,MAAM,EAAE,gBAAgB;IACxB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,GACrB,uBAAuB;CAmF3B"}
@@ -43,6 +43,41 @@ export function getConfiguredFallbackLanguage(config) {
43
43
  const found = Object.values(AvailableLanguage).find((value) => value === configured);
44
44
  return found ?? getConfiguredPrimaryLanguage(config);
45
45
  }
46
+ /**
47
+ * Resolve the full set of locales this application ENABLES — the locales a user or an organization
48
+ * may select, which is a strictly wider question than "the locale this SaaS authors natively".
49
+ *
50
+ * This is the named backend source for that set, and it exists because there was none: before it,
51
+ * `appPreferences.languages.enabledLanguages` was read by the frontend (`I18nContext`) and by the
52
+ * dev companion (which keeps its own private copy for the same reason), and by NOTHING in
53
+ * `saas-backend-lib`. Every backend consumer therefore answered locale questions with the PRIMARY
54
+ * locale, because that was the only helper on offer — which is exactly how the email-template
55
+ * startup check came to prove coverage for one locale in an application that enables two.
56
+ *
57
+ * Three deliberate properties:
58
+ *
59
+ * - **The primary is always a member, and always first.** An application that declares
60
+ * `defaultLanguage: fr` and omits it from `enabledLanguages` has still enabled French — the
61
+ * primary is enabled by definition, not by enumeration. Putting it first makes the returned array
62
+ * usable as a report order without a second sort.
63
+ * - **Unknown values are DROPPED rather than thrown on**, unlike the primary/fallback helpers. Those
64
+ * two resolve a single scalar the runtime must have, so an invalid value there is unusable and
65
+ * failing fast is the only honest answer. This one resolves a SET whose other members are still
66
+ * perfectly usable; refusing the whole set over one bad member would turn a typo in a secondary
67
+ * language into a boot failure. The Zod config schema already rejects an out-of-vocabulary value
68
+ * at parse time, so this filter is a defence for hand-built and partially-typed config objects.
69
+ * - **Duplicates collapse**, so a config that lists the primary explicitly reads identically to one
70
+ * that does not.
71
+ */
72
+ export function getConfiguredEnabledLanguages(config) {
73
+ const primary = getConfiguredPrimaryLanguage(config);
74
+ const declared = config?.appPreferences?.languages?.enabledLanguages;
75
+ const knownLanguages = new Set(Object.values(AvailableLanguage));
76
+ const enabled = Array.isArray(declared)
77
+ ? declared.filter((language) => knownLanguages.has(language))
78
+ : [];
79
+ return [...new Set([primary, ...enabled])];
80
+ }
46
81
  function buildPublicSocialOAuth2Providers(auth) {
47
82
  return Object.fromEntries(Object.entries(auth?.socialOAuth2Providers ?? {})
48
83
  .filter(([, providerConfig]) => isEnabledSocialOAuth2LoginProvider(providerConfig))
@@ -59,7 +94,16 @@ export class ApplicationUtils {
59
94
  * Filters out private/backend-only runtime endpoints and preserves only app-owned
60
95
  * frontend service entries keyed by frontend service identity.
61
96
  */
62
- static toAppConfiguration_Shared(config) {
97
+ static toAppConfiguration_Shared(config,
98
+ /**
99
+ * The application's own id, which the AUTHORED configuration does not carry — it is runtime
100
+ * identity, resolved at startup, not something an application declares about itself. Passed in
101
+ * rather than read here so this projection stays a pure function of its input.
102
+ *
103
+ * Optional so every existing caller and fixture keeps working; an absent id simply leaves the
104
+ * field off, which is the pre-existing behaviour.
105
+ */
106
+ applicationId) {
63
107
  const { appIdentity, brandAssets, appPreferences, runtime, auth, userTypes, frontendServices, organizationTypes, compliance, billing, analytics, lifecycle, } = config;
64
108
  const runtime_endPoints = runtime.endPoints;
65
109
  // Keep only shared endpoints by excluding platform-private keys.
@@ -79,7 +123,10 @@ export class ApplicationUtils {
79
123
  const apiJwtPublicKey = config.jwt.publicKey[JwtPrivateKeys.APPLICATION_AUTH_TOKEN];
80
124
  // Strip backend-only auth fields before sending to frontend.
81
125
  // Same pattern as runtime (stripping appCustomRoot, internalUrl, platform-only endpoints).
82
- const { socialOAuth2Providers: _privateSocialOAuth2Providers, passwordHashing, passkeyOperational, otpOperational, magicLinkOperational, totpOperational, ...sharedAuth } = auth;
126
+ const { socialOAuth2Providers: _privateSocialOAuth2Providers, passwordHashing, passkeyOperational, otpOperational, magicLinkOperational, totpOperational,
127
+ // A consent lifetime is an operator policy the browser has no use for (#465).
128
+ consentGrantLifetimeDays, ...sharedAuth } = auth;
129
+ void consentGrantLifetimeDays;
83
130
  // W6.9: Strip backend-only fields from per-user-type auth policies before frontend projection
84
131
  const strippedUserTypes = Object.fromEntries(Object.entries(userTypes ?? {}).map(([typeName, typeDef]) => {
85
132
  if (!typeDef?.auth)
@@ -88,7 +135,9 @@ export class ApplicationUtils {
88
135
  return [typeName, { ...typeDef, auth: frontendAuth }];
89
136
  }));
90
137
  return {
91
- appIdentity,
138
+ // The id is MERGED here rather than declared upstream: `appIdentity` is authored by the
139
+ // application, and this is runtime identity the client needs to name its own scope room.
140
+ appIdentity: applicationId ? { ...appIdentity, applicationId } : appIdentity,
92
141
  brandAssets,
93
142
  appPreferences,
94
143
  runtime: {
@@ -1 +1 @@
1
- {"version":3,"file":"app-configuration.backend.utils.js","sourceRoot":"","sources":["../../../../../src/config/services/app-configuration.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Frontend Configuration Transformers Service\n *\n * Backend service to transform complete backend application configuration\n * into frontend-safe subsets for API endpoints.\n */\n\nimport { JwtPrivateKeys } from '~wildo-backend-lib/security/authentications/models/jwt.backend.schemas';\nimport { AppConfiguration } from '~wildo-backend-lib/config/models/app-config.backend.schemas';\nimport type { AppConfiguration_Shared } from '@wildo-ai/saas-models';\nimport { AvailableLanguage } from '@wildo-ai/saas-models/public-runtime';\nimport { PlatformApplicationType } from '~wildo-backend-lib/applications/models/applications.backend.schemas';\nimport { isEnabledSocialOAuth2LoginProvider } from '~wildo-backend-lib/security/authentications/utils/social-oauth2-purpose.backend.utils';\n\nexport interface AppPrimaryLanguageConfigShape {\n appPreferences?: {\n languages?: {\n defaultLanguage?: string | AvailableLanguage;\n fallbackLanguage?: string | AvailableLanguage;\n };\n };\n}\n\n/**\n * Resolve the SaaS application's authoring / primary locale from the\n * canonical app-config path.\n *\n * This is the single source of truth for generation-time label ownership:\n * app-label labellize, app-label translate, and email-label generation all\n * derive their primary locale from\n * `appPreferences.languages.defaultLanguage`.\n *\n * Runtime consumers may still serve ORG / user-selected locales from the\n * enabled-languages set, but when a pipeline needs \"the locale this SaaS owns\n * natively\", this helper is the contract.\n */\nexport function getConfiguredPrimaryLanguage(\n config: AppPrimaryLanguageConfigShape | null | undefined,\n): AvailableLanguage {\n const configured = config?.appPreferences?.languages?.defaultLanguage;\n if (configured !== undefined && !Object.values(AvailableLanguage).includes(configured as AvailableLanguage)) {\n throw new Error(`Invalid app primary language \"${String(configured)}\". Configure appPreferences.languages.defaultLanguage with a valid AvailableLanguage.`);\n }\n const found = Object.values(AvailableLanguage).find((value) => value === configured);\n return found ?? AvailableLanguage.EN;\n}\n\n/**\n * Resolve the runtime fallback locale from app config.\n *\n * If the configured fallback is absent or invalid, fall back to the configured\n * primary locale so backend runtime consumers never invent a separate default.\n */\nexport function getConfiguredFallbackLanguage(\n config: AppPrimaryLanguageConfigShape | null | undefined,\n): AvailableLanguage {\n const configured = config?.appPreferences?.languages?.fallbackLanguage;\n if (configured !== undefined && !Object.values(AvailableLanguage).includes(configured as AvailableLanguage)) {\n throw new Error(`Invalid app fallback language \"${String(configured)}\". Configure appPreferences.languages.fallbackLanguage with a valid AvailableLanguage.`);\n }\n const found = Object.values(AvailableLanguage).find((value) => value === configured);\n return found ?? getConfiguredPrimaryLanguage(config);\n}\n\nfunction buildPublicSocialOAuth2Providers(\n auth: AppConfiguration['auth'] | null | undefined,\n): Record<string, { displayName?: string }> {\n return Object.fromEntries(\n Object.entries(auth?.socialOAuth2Providers ?? {})\n .filter(([, providerConfig]) => isEnabledSocialOAuth2LoginProvider(providerConfig))\n .map(([providerRef, providerConfig]) => [\n providerRef,\n {\n displayName: providerConfig?.displayName,\n },\n ]),\n );\n}\n\n\nexport class ApplicationUtils {\n /**\n * Transforms backend application configuration to a frontend-safe shared payload.\n * Filters out private/backend-only runtime endpoints and preserves only app-owned\n * frontend service entries keyed by frontend service identity.\n */\n static toAppConfiguration_Shared(config: AppConfiguration): AppConfiguration_Shared {\n const {\n appIdentity,\n brandAssets,\n appPreferences,\n runtime,\n auth,\n userTypes,\n frontendServices,\n organizationTypes,\n compliance,\n billing,\n analytics,\n lifecycle,\n } = config;\n\n const runtime_endPoints = runtime.endPoints;\n\n // Keep only shared endpoints by excluding platform-private keys.\n // Config-defined frontend service endpoints pass through automatically.\n const platformTypes = new Set<string>(Object.values(PlatformApplicationType));\n const runtime_endPoints_frontend = Object.keys(runtime_endPoints).reduce((acc, key) => {\n if (!platformTypes.has(key)) {\n acc[key] = runtime_endPoints[key];\n }\n return acc;\n }, {} as typeof runtime_endPoints);\n\n // For frontend, expose only publicUrl; explicitly drop internalUrl\n const runtime_endPoints_frontend_publicOnly = Object.fromEntries(\n Object.entries(runtime_endPoints_frontend).map(([appKey, urls]) => [\n appKey,\n { publicUrl: urls?.publicUrl },\n ])\n ) as typeof runtime_endPoints_frontend;\n\n const apiJwtPublicKey = config.jwt.publicKey[JwtPrivateKeys.APPLICATION_AUTH_TOKEN];\n\n // Strip backend-only auth fields before sending to frontend.\n // Same pattern as runtime (stripping appCustomRoot, internalUrl, platform-only endpoints).\n const {\n socialOAuth2Providers: _privateSocialOAuth2Providers,\n passwordHashing,\n passkeyOperational, otpOperational, magicLinkOperational, totpOperational,\n ...sharedAuth\n } = auth;\n\n // W6.9: Strip backend-only fields from per-user-type auth policies before frontend projection\n const strippedUserTypes = Object.fromEntries(\n Object.entries(userTypes ?? {}).map(([typeName, typeDef]) => {\n if (!typeDef?.auth) return [typeName, typeDef];\n const { lockoutPolicy: _lp, maxConcurrentSessions: _mcs, ...frontendAuth } = typeDef.auth as any;\n return [typeName, { ...typeDef, auth: frontendAuth }];\n }),\n );\n\n return {\n appIdentity,\n brandAssets,\n appPreferences,\n runtime: {\n endPoints: runtime_endPoints_frontend_publicOnly\n },\n auth: {\n ...sharedAuth,\n socialOAuth2Providers: buildPublicSocialOAuth2Providers(auth),\n },\n userTypes: strippedUserTypes,\n frontendServices,\n organizationTypes,\n compliance,\n billing,\n analytics,\n lifecycle,\n apiJwtPublicKey,\n };\n }\n\n}\n"]}
1
+ {"version":3,"file":"app-configuration.backend.utils.js","sourceRoot":"","sources":["../../../../../src/config/services/app-configuration.backend.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Frontend Configuration Transformers Service\n *\n * Backend service to transform complete backend application configuration\n * into frontend-safe subsets for API endpoints.\n */\n\nimport { JwtPrivateKeys } from '~wildo-backend-lib/security/authentications/models/jwt.backend.schemas';\nimport { AppConfiguration } from '~wildo-backend-lib/config/models/app-config.backend.schemas';\nimport type { AppConfiguration_Shared } from '@wildo-ai/saas-models';\nimport { AvailableLanguage } from '@wildo-ai/saas-models/public-runtime';\nimport { PlatformApplicationType } from '~wildo-backend-lib/applications/models/applications.backend.schemas';\nimport { isEnabledSocialOAuth2LoginProvider } from '~wildo-backend-lib/security/authentications/utils/social-oauth2-purpose.backend.utils';\n\nexport interface AppPrimaryLanguageConfigShape {\n appPreferences?: {\n languages?: {\n defaultLanguage?: string | AvailableLanguage;\n fallbackLanguage?: string | AvailableLanguage;\n /**\n * The locale set a user or organization may SELECT. Optional here so every existing caller\n * of the primary/fallback helpers keeps type-checking against the narrower shape it already\n * passes; `getConfiguredEnabledLanguages` treats its absence as \"only the primary\".\n */\n enabledLanguages?: readonly (string | AvailableLanguage)[];\n };\n };\n}\n\n/**\n * Resolve the SaaS application's authoring / primary locale from the\n * canonical app-config path.\n *\n * This is the single source of truth for generation-time label ownership:\n * app-label labellize, app-label translate, and email-label generation all\n * derive their primary locale from\n * `appPreferences.languages.defaultLanguage`.\n *\n * Runtime consumers may still serve ORG / user-selected locales from the\n * enabled-languages set, but when a pipeline needs \"the locale this SaaS owns\n * natively\", this helper is the contract.\n */\nexport function getConfiguredPrimaryLanguage(\n config: AppPrimaryLanguageConfigShape | null | undefined,\n): AvailableLanguage {\n const configured = config?.appPreferences?.languages?.defaultLanguage;\n if (configured !== undefined && !Object.values(AvailableLanguage).includes(configured as AvailableLanguage)) {\n throw new Error(`Invalid app primary language \"${String(configured)}\". Configure appPreferences.languages.defaultLanguage with a valid AvailableLanguage.`);\n }\n const found = Object.values(AvailableLanguage).find((value) => value === configured);\n return found ?? AvailableLanguage.EN;\n}\n\n/**\n * Resolve the runtime fallback locale from app config.\n *\n * If the configured fallback is absent or invalid, fall back to the configured\n * primary locale so backend runtime consumers never invent a separate default.\n */\nexport function getConfiguredFallbackLanguage(\n config: AppPrimaryLanguageConfigShape | null | undefined,\n): AvailableLanguage {\n const configured = config?.appPreferences?.languages?.fallbackLanguage;\n if (configured !== undefined && !Object.values(AvailableLanguage).includes(configured as AvailableLanguage)) {\n throw new Error(`Invalid app fallback language \"${String(configured)}\". Configure appPreferences.languages.fallbackLanguage with a valid AvailableLanguage.`);\n }\n const found = Object.values(AvailableLanguage).find((value) => value === configured);\n return found ?? getConfiguredPrimaryLanguage(config);\n}\n\n/**\n * Resolve the full set of locales this application ENABLES — the locales a user or an organization\n * may select, which is a strictly wider question than \"the locale this SaaS authors natively\".\n *\n * This is the named backend source for that set, and it exists because there was none: before it,\n * `appPreferences.languages.enabledLanguages` was read by the frontend (`I18nContext`) and by the\n * dev companion (which keeps its own private copy for the same reason), and by NOTHING in\n * `saas-backend-lib`. Every backend consumer therefore answered locale questions with the PRIMARY\n * locale, because that was the only helper on offer — which is exactly how the email-template\n * startup check came to prove coverage for one locale in an application that enables two.\n *\n * Three deliberate properties:\n *\n * - **The primary is always a member, and always first.** An application that declares\n * `defaultLanguage: fr` and omits it from `enabledLanguages` has still enabled French — the\n * primary is enabled by definition, not by enumeration. Putting it first makes the returned array\n * usable as a report order without a second sort.\n * - **Unknown values are DROPPED rather than thrown on**, unlike the primary/fallback helpers. Those\n * two resolve a single scalar the runtime must have, so an invalid value there is unusable and\n * failing fast is the only honest answer. This one resolves a SET whose other members are still\n * perfectly usable; refusing the whole set over one bad member would turn a typo in a secondary\n * language into a boot failure. The Zod config schema already rejects an out-of-vocabulary value\n * at parse time, so this filter is a defence for hand-built and partially-typed config objects.\n * - **Duplicates collapse**, so a config that lists the primary explicitly reads identically to one\n * that does not.\n */\nexport function getConfiguredEnabledLanguages(\n config: AppPrimaryLanguageConfigShape | null | undefined,\n): AvailableLanguage[] {\n const primary = getConfiguredPrimaryLanguage(config);\n const declared = config?.appPreferences?.languages?.enabledLanguages;\n const knownLanguages = new Set<string>(Object.values(AvailableLanguage));\n const enabled = Array.isArray(declared)\n ? declared.filter((language): language is AvailableLanguage => knownLanguages.has(language as string))\n : [];\n return [...new Set<AvailableLanguage>([primary, ...enabled])];\n}\n\nfunction buildPublicSocialOAuth2Providers(\n auth: AppConfiguration['auth'] | null | undefined,\n): Record<string, { displayName?: string }> {\n return Object.fromEntries(\n Object.entries(auth?.socialOAuth2Providers ?? {})\n .filter(([, providerConfig]) => isEnabledSocialOAuth2LoginProvider(providerConfig))\n .map(([providerRef, providerConfig]) => [\n providerRef,\n {\n displayName: providerConfig?.displayName,\n },\n ]),\n );\n}\n\n\nexport class ApplicationUtils {\n /**\n * Transforms backend application configuration to a frontend-safe shared payload.\n * Filters out private/backend-only runtime endpoints and preserves only app-owned\n * frontend service entries keyed by frontend service identity.\n */\n static toAppConfiguration_Shared(\n config: AppConfiguration,\n /**\n * The application's own id, which the AUTHORED configuration does not carry — it is runtime\n * identity, resolved at startup, not something an application declares about itself. Passed in\n * rather than read here so this projection stays a pure function of its input.\n *\n * Optional so every existing caller and fixture keeps working; an absent id simply leaves the\n * field off, which is the pre-existing behaviour.\n */\n applicationId?: string,\n ): AppConfiguration_Shared {\n const {\n appIdentity,\n brandAssets,\n appPreferences,\n runtime,\n auth,\n userTypes,\n frontendServices,\n organizationTypes,\n compliance,\n billing,\n analytics,\n lifecycle,\n } = config;\n\n const runtime_endPoints = runtime.endPoints;\n\n // Keep only shared endpoints by excluding platform-private keys.\n // Config-defined frontend service endpoints pass through automatically.\n const platformTypes = new Set<string>(Object.values(PlatformApplicationType));\n const runtime_endPoints_frontend = Object.keys(runtime_endPoints).reduce((acc, key) => {\n if (!platformTypes.has(key)) {\n acc[key] = runtime_endPoints[key];\n }\n return acc;\n }, {} as typeof runtime_endPoints);\n\n // For frontend, expose only publicUrl; explicitly drop internalUrl\n const runtime_endPoints_frontend_publicOnly = Object.fromEntries(\n Object.entries(runtime_endPoints_frontend).map(([appKey, urls]) => [\n appKey,\n { publicUrl: urls?.publicUrl },\n ])\n ) as typeof runtime_endPoints_frontend;\n\n const apiJwtPublicKey = config.jwt.publicKey[JwtPrivateKeys.APPLICATION_AUTH_TOKEN];\n\n // Strip backend-only auth fields before sending to frontend.\n // Same pattern as runtime (stripping appCustomRoot, internalUrl, platform-only endpoints).\n const {\n socialOAuth2Providers: _privateSocialOAuth2Providers,\n passwordHashing,\n passkeyOperational, otpOperational, magicLinkOperational, totpOperational,\n // A consent lifetime is an operator policy the browser has no use for (#465).\n consentGrantLifetimeDays,\n ...sharedAuth\n } = auth;\n void consentGrantLifetimeDays;\n\n // W6.9: Strip backend-only fields from per-user-type auth policies before frontend projection\n const strippedUserTypes = Object.fromEntries(\n Object.entries(userTypes ?? {}).map(([typeName, typeDef]) => {\n if (!typeDef?.auth) return [typeName, typeDef];\n const { lockoutPolicy: _lp, maxConcurrentSessions: _mcs, ...frontendAuth } = typeDef.auth as any;\n return [typeName, { ...typeDef, auth: frontendAuth }];\n }),\n );\n\n return {\n // The id is MERGED here rather than declared upstream: `appIdentity` is authored by the\n // application, and this is runtime identity the client needs to name its own scope room.\n appIdentity: applicationId ? { ...appIdentity, applicationId } : appIdentity,\n brandAssets,\n appPreferences,\n runtime: {\n endPoints: runtime_endPoints_frontend_publicOnly\n },\n auth: {\n ...sharedAuth,\n socialOAuth2Providers: buildPublicSocialOAuth2Providers(auth),\n },\n userTypes: strippedUserTypes,\n frontendServices,\n organizationTypes,\n compliance,\n billing,\n analytics,\n lifecycle,\n apiJwtPublicKey,\n };\n }\n\n}\n"]}
@@ -353,6 +353,31 @@ export declare class ApplicationStartupConfigValidatorService {
353
353
  private warnOnDuplicateClaimedDomains;
354
354
  private warnOnBroadAutoLinkSocialOAuth2;
355
355
  private collectStorageIssues;
356
+ /**
357
+ * Refuse to boot an application whose file fields DECLARE a required scan with nothing to scan them.
358
+ *
359
+ * Keyed on the per-field `scanPolicy: 'required'` declaration only, and that is complete rather than a
360
+ * gap — the reasoning is worth recording because the obvious second branch is dead code.
361
+ *
362
+ * `FileScanningBackendService.isGlobalScanningEnabled()` (the application-wide default for a field that
363
+ * declares no policy) is DERIVED from the scanner topology: it is
364
+ * `clamavScanner.isConfigured() || yaraScanner.isEnabled()`. So "scanning is globally on and no scanner
365
+ * is reachable" is not a state this configuration can be in, and a branch reporting it would be
366
+ * `false && …` at every boot of every application — a check that can never fire, which reports a clean
367
+ * configuration and a broken checker identically. It was considered on 2026-09-09, when the dead global
368
+ * switch was repaired, and deliberately not added; it becomes necessary the day that switch is turned
369
+ * back into a separately-declared boolean, which is one of the three reasons it was not.
370
+ *
371
+ * The remaining route into "a scan was requested with no scanner" is therefore exactly the per-field
372
+ * declaration this collector already walks — plus any field this walk MISSES, which the `catch
373
+ * { continue; }` below makes possible and which is why `executeScan` also refuses at runtime rather
374
+ * than trusting that boot has already answered.
375
+ *
376
+ * ClamAV specifically, not "any scanner": YARA is a pattern layer documented as running on top of
377
+ * signature AV, not a replacement for it, so a `required` field is not satisfied by YARA alone. That is
378
+ * a posture, not an oversight — relaxing it would let an application satisfy `scanPolicy: 'required'`
379
+ * with no signature scanning at all.
380
+ */
356
381
  private collectScanningIssues;
357
382
  private collectYaraIssues;
358
383
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"application-startup-config-validator.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/config/services/application-startup-config-validator.backend.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application-startup-config-validator.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/config/services/application-startup-config-validator.backend.service.ts"],"names":[],"mappings":"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"}
@@ -945,6 +945,31 @@ let ApplicationStartupConfigValidatorService = class ApplicationStartupConfigVal
945
945
  return issues;
946
946
  }
947
947
  // ─── Scanning (ClamAV) ──────────────────────────────────────────────────
948
+ /**
949
+ * Refuse to boot an application whose file fields DECLARE a required scan with nothing to scan them.
950
+ *
951
+ * Keyed on the per-field `scanPolicy: 'required'` declaration only, and that is complete rather than a
952
+ * gap — the reasoning is worth recording because the obvious second branch is dead code.
953
+ *
954
+ * `FileScanningBackendService.isGlobalScanningEnabled()` (the application-wide default for a field that
955
+ * declares no policy) is DERIVED from the scanner topology: it is
956
+ * `clamavScanner.isConfigured() || yaraScanner.isEnabled()`. So "scanning is globally on and no scanner
957
+ * is reachable" is not a state this configuration can be in, and a branch reporting it would be
958
+ * `false && …` at every boot of every application — a check that can never fire, which reports a clean
959
+ * configuration and a broken checker identically. It was considered on 2026-09-09, when the dead global
960
+ * switch was repaired, and deliberately not added; it becomes necessary the day that switch is turned
961
+ * back into a separately-declared boolean, which is one of the three reasons it was not.
962
+ *
963
+ * The remaining route into "a scan was requested with no scanner" is therefore exactly the per-field
964
+ * declaration this collector already walks — plus any field this walk MISSES, which the `catch
965
+ * { continue; }` below makes possible and which is why `executeScan` also refuses at runtime rather
966
+ * than trusting that boot has already answered.
967
+ *
968
+ * ClamAV specifically, not "any scanner": YARA is a pattern layer documented as running on top of
969
+ * signature AV, not a replacement for it, so a `required` field is not satisfied by YARA alone. That is
970
+ * a posture, not an oversight — relaxing it would let an application satisfy `scanPolicy: 'required'`
971
+ * with no signature scanning at all.
972
+ */
948
973
  collectScanningIssues() {
949
974
  const issues = [];
950
975
  const allResourceTypes = this.resourcesRegistry.getResourceTypes();
@@ -1030,7 +1055,22 @@ let ApplicationStartupConfigValidatorService = class ApplicationStartupConfigVal
1030
1055
  const userTypeEntries = Object.entries(config.userTypes ?? {});
1031
1056
  const selfRegistrationUserTypes = userTypeEntries
1032
1057
  .filter(([, definition]) => isRegistrationAcquisitionAllowed(definition.auth.registration.mode, RegistrationAcquisitionChannel.PUBLIC_SELF_SERVICE)
1033
- && definition.auth.registration.allowedMethods.includes(AuthMethod.PASSWORD))
1058
+ /*
1059
+ * Any method whose signup runs through `createSelfRegistrationPersistenceRequest`, not
1060
+ * PASSWORD alone (#463).
1061
+ *
1062
+ * MAGIC_LINK and PASSKEY gained public registration and use the SAME persistence path — they
1063
+ * differ only in holding no credential and minting a link afterwards. Left as `PASSWORD`
1064
+ * alone, an application enabling ONLY password-less signup would not have this boundary
1065
+ * declared, and its first registration would fail at the transaction rather than at
1066
+ * configuration time.
1067
+ *
1068
+ * EXTERNAL_OAUTH2 is deliberately NOT here: social JIT creation has its own boundary
1069
+ * request, collected below.
1070
+ */
1071
+ && definition.auth.registration.allowedMethods.some((method) => method === AuthMethod.PASSWORD
1072
+ || method === AuthMethod.MAGIC_LINK
1073
+ || method === AuthMethod.PASSKEY))
1034
1074
  .map(([userType]) => userType);
1035
1075
  if (selfRegistrationUserTypes.length > 0) {
1036
1076
  const eligibleUserTypes = new Set(selfRegistrationUserTypes);