@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
@@ -65,6 +65,21 @@ export declare function createApiKeyExtendExpiryFactories(): ResourceCustomServi
65
65
  export declare function createApiKeyDeactivateFactories(): ResourceCustomServiceImplementationFactory[];
66
66
  /** REACTIVATE impls — INACTIVE → ACTIVE, forced. An EXPIRED key is NOT revivable (409). */
67
67
  export declare function createApiKeyReactivateFactories(): ResourceCustomServiceImplementationFactory[];
68
+ /**
69
+ * EXPIRE impls — ACTIVE → EXPIRED, forced, dispatched by the credential-expiry sweep (#413).
70
+ *
71
+ * Registered separately from every other api-key op rather than through
72
+ * `apiKeyFactoriesForOperation`, and the difference is the whole point: that helper hardcodes
73
+ * `variantType: API_CALL` and fans out over each resource's HTTP variants (including the org
74
+ * resource's cross-tenant `admin` one). EXPIRE is INTERNAL_CALL with a single default variant on
75
+ * both resources — no route, no operator affordance — so it needs its own registration or the
76
+ * lookup key would never match and the guard below would be silently unreachable.
77
+ *
78
+ * The ACTIVE-only precondition is the reason this verb exists at all: a sweep writing `status`
79
+ * directly would relabel an INACTIVE key as EXPIRED and erase the fact that an administrator
80
+ * retired it.
81
+ */
82
+ export declare function createApiKeyExpireFactories(): ResourceCustomServiceImplementationFactory[];
68
83
  /** USAGE_STATS impls — interim zeroed payload. */
69
84
  export declare function createApiKeyUsageStatsFactories(): ResourceCustomServiceImplementationFactory[];
70
85
  //# sourceMappingURL=api-keys.custom-impl.backend.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-keys.custom-impl.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/security/api-keys/api-keys.custom-impl.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EACL,WAAW,EASZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,yCAAyC,EACzC,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AAMpH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AA6DnH,wFAAwF;AACxF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AA4D7G,uDAAuD;AACvD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,kBAAkB,CAyB5H;AA0LD,8DAA8D;AAC9D,wBAAgB,2BAA2B,IAAI,0CAA0C,EAAE,CAK1F;AAED,2CAA2C;AAC3C,wBAAgB,2BAA2B,IAAI,0CAA0C,EAAE,CAK1F;AAED,6CAA6C;AAC7C,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F;AAED,+FAA+F;AAC/F,wBAAgB,iCAAiC,IAAI,0CAA0C,EAAE,CAKhG;AAED,oDAAoD;AACpD,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F;AAED,2FAA2F;AAC3F,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F;AAED,kDAAkD;AAClD,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F"}
1
+ {"version":3,"file":"api-keys.custom-impl.backend.service.d.ts","sourceRoot":"","sources":["../../../../../src/security/api-keys/api-keys.custom-impl.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EACL,WAAW,EASZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,yCAAyC,EACzC,KAAK,0CAA0C,EAChD,MAAM,4GAA4G,CAAC;AAMpH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AA8DnH,wFAAwF;AACxF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AA4D7G,uDAAuD;AACvD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,kBAAkB,CAyB5H;AA0LD,8DAA8D;AAC9D,wBAAgB,2BAA2B,IAAI,0CAA0C,EAAE,CAK1F;AAED,2CAA2C;AAC3C,wBAAgB,2BAA2B,IAAI,0CAA0C,EAAE,CAK1F;AAED,6CAA6C;AAC7C,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F;AAED,+FAA+F;AAC/F,wBAAgB,iCAAiC,IAAI,0CAA0C,EAAE,CAKhG;AAED,oDAAoD;AACpD,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F;AAED,2FAA2F;AAC3F,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,IAAI,0CAA0C,EAAE,CAc1F;AAED,kDAAkD;AAClD,wBAAgB,+BAA+B,IAAI,0CAA0C,EAAE,CAK9F"}
@@ -352,6 +352,34 @@ export function createApiKeyDeactivateFactories() {
352
352
  export function createApiKeyReactivateFactories() {
353
353
  return apiKeyFactoriesForOperation((target) => target.ops.REACTIVATE, () => buildApiKeyStatusTransitionHandlers(ApiKeyStatus.INACTIVE, ApiKeyStatus.ACTIVE));
354
354
  }
355
+ /**
356
+ * EXPIRE impls — ACTIVE → EXPIRED, forced, dispatched by the credential-expiry sweep (#413).
357
+ *
358
+ * Registered separately from every other api-key op rather than through
359
+ * `apiKeyFactoriesForOperation`, and the difference is the whole point: that helper hardcodes
360
+ * `variantType: API_CALL` and fans out over each resource's HTTP variants (including the org
361
+ * resource's cross-tenant `admin` one). EXPIRE is INTERNAL_CALL with a single default variant on
362
+ * both resources — no route, no operator affordance — so it needs its own registration or the
363
+ * lookup key would never match and the guard below would be silently unreachable.
364
+ *
365
+ * The ACTIVE-only precondition is the reason this verb exists at all: a sweep writing `status`
366
+ * directly would relabel an INACTIVE key as EXPIRED and erase the fact that an administrator
367
+ * retired it.
368
+ */
369
+ export function createApiKeyExpireFactories() {
370
+ return API_KEY_TARGETS.map((target) => {
371
+ const factory = (_resourcesRegistryService, _container) => createResourceCustomServiceImplementation({
372
+ operationPath: {
373
+ resourceIdentifier: target.resourceType,
374
+ operationIdentifier: target.ops.EXPIRE,
375
+ variantType: ResourceOperationVariantType.INTERNAL_CALL,
376
+ isOperationDefault: true,
377
+ },
378
+ handlers: buildApiKeyStatusTransitionHandlers(ApiKeyStatus.ACTIVE, ApiKeyStatus.EXPIRED),
379
+ });
380
+ return factory;
381
+ });
382
+ }
355
383
  /** USAGE_STATS impls — interim zeroed payload. */
356
384
  export function createApiKeyUsageStatsFactories() {
357
385
  return apiKeyFactoriesForOperation((target) => target.ops.USAGE_STATS, () => buildApiKeyUsageStatsHandlers());
@@ -1 +1 @@
1
- {"version":3,"file":"api-keys.custom-impl.backend.service.js","sourceRoot":"","sources":["../../../../../src/security/api-keys/api-keys.custom-impl.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * API Keys Custom Implementations\n *\n * Implements the server-side behaviour for the organization + application API-key\n * resources (`organizationApiKeys`, `applicationApiKeys`) that the schema alone\n * cannot express:\n *\n * CREATE → mint fresh key material (the client must never supply it).\n * ROTATE → reissue the secret; retain the prior secret in a grace window that\n * stops authenticating at the caller-chosen `oldKeyInvalidationDate`.\n * REGENERATE → reissue the secret; keep the prior secret valid open-endedly (until\n * the next rotation) for a zero-downtime overlap.\n * EXTEND_EXPIRY → push out an existing key's `expiresAt` (409 if the key has no expiry\n * to extend). No new secret is minted — it is a plain field update.\n * USAGE_STATS → return per-key usage metrics (see the zeroed-stats note below).\n *\n * WHY MINTING NEEDS AN IMPL: the schema requires `keyPrefix` + `hashedKey`, but both\n * are `.excludeFromCreate().excludeFromUpdate()` (the client must never supply them)\n * and `plainKey` is an ephemeral response-only field. Nothing generated them, so a\n * bare create/update persisted a row missing the required fields. These impls are the\n * single server-side choke point that mints key material.\n *\n * PATTERN (CREATE / ROTATE / REGENERATE — all \"mint a secret\" ops):\n * prefixCoreOperations → mint material; inject the persisted `keyPrefix` +\n * `hashedKey` (and, for rotate/regenerate, the previous-key\n * grace-window fields) into the payload. Those fields are\n * `.excludeFrom{Create,Update}()`, so returning them from the\n * prefix is what carries them into the core write — the\n * orchestration diffs the prefix-added keys and forwards them\n * to the repository's `preserveServerInjectedFields` allowlist\n * so the final strict parse re-attaches (rather than strips)\n * them. Stash the one-time `plainKey` for the postfix.\n * postfixCoreOperations → attach the one-time `plainKey` (+ rotate's `oldKeyId` /\n * `oldKeyInvalidationDate`) to the response so the operation's\n * ephemeral `plainKey` field surfaces it.\n * The core write still runs, so notifications / websocket events fire normally — which\n * is why this is prefix+postfix rather than `replaceCoreOperations`.\n *\n * VARIANT COVERAGE: a custom impl is matched to a running op by its FULL operation-path\n * identity — `isOperationDefault` (the `isDefault` sentinel) vs `variantKey` produce\n * DISTINCT keys (`createOperationPathKey`). So a single default registration only\n * intercepts the default variant; the cross-tenant app-super-admin `admin` variant\n * (org keys only) needs its own registration or it runs the bare core op and fails.\n * `API_KEY_TARGETS` enumerates every (resource × variant) each op exposes. Minting is\n * org-agnostic — the target `organizationId` rides in the payload / pre-fetched record,\n * never from these handlers — so the admin variant reuses the identical handlers and\n * (per the user security decision) also receives the tenant's one-time `plainKey`.\n */\n\nimport {\n ApiKeyScope,\n ApiKeyStatus,\n AppApiKeys_Operations,\n CoreResourceOperation,\n CoreResourceType,\n ErrorCustomMessageReference,\n ErrorType,\n OrgApiKeys_Operations,\n ResourceOperationVariantType,\n} from '@wildo-ai/saas-models';\nimport type { ApiKeyBase } from '@wildo-ai/saas-models';\nimport {\n createResourceCustomServiceImplementation,\n type ResourceCustomServiceImplementationFactory,\n} from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation.factory.backend';\nimport type { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { generateApiKeyMaterial } from './api-key-generation.backend.utils';\nimport type { Container } from 'inversify';\nimport { assertRequestedRolesWithinCallerCeiling, createRoleHierarchyResolver } from '~wildo-backend-lib/security/authorizations/role-ceiling.backend.utils';\nimport type { RoleHierarchyResolver } from '~wildo-backend-lib/security/authorizations/role-ceiling.backend.utils';\n\n/**\n * Bridge for the one-time plaintext key between the CREATE prefix (which mints it) and\n * the postfix (which returns it), keyed by the per-operation `ExecutionContext` INSTANCE.\n * The orchestration threads the SAME `executionContext` through both handlers\n * (`services-registry-handler.backend.service.ts` prefix + postfix calls), so it is a\n * stable, per-invocation correlation key.\n *\n * A `WeakMap` keyed by the EC is deliberately chosen over a `Map` keyed by `hashedKey` /\n * `_id`: (1) NO LEAK — the entry is reclaimed by GC when the request's EC becomes\n * unreachable, so a core-write failure between prefix and postfix cannot strand the\n * plaintext in memory; (2) NO RACE — concurrent operations run on DISTINCT EC instances,\n * so two simultaneous mints/reissues never collide on a shared key. `plainKey` is never\n * persisted; the postfix also deletes the entry for promptness.\n */\nconst PLAINTEXT_KEY_BY_EC = new WeakMap<ExecutionContext<any>, string>();\n\n/**\n * Bridge for ROTATE / REGENERATE, keyed by the same per-operation `ExecutionContext`\n * instance (see {@link PLAINTEXT_KEY_BY_EC}). Carries the one-time `plainKey` AND the\n * applied `previousKeyInvalidationDate`, so the postfix builds ROTATE's\n * `oldKeyInvalidationDate` from the value the prefix actually applied — independent of\n * whether the update result round-trips that field.\n */\nconst REISSUE_BRIDGE_BY_EC = new WeakMap<ExecutionContext<any>, { plainKey: string; previousKeyInvalidationDate: Date | null }>();\n\n/** ROTATE keeps a bounded grace window; REGENERATE keeps an open-ended overlap. */\nenum ApiKeyReissueKind {\n ROTATE = 'rotate',\n REGENERATE = 'regenerate',\n}\n\n/**\n * The pre-fetched key fields the reissue prefix reads. `hashedKey`/`keyPrefix` are\n * declared on the concrete org/app schemas rather than `ApiKeyBase`, but are present on\n * every persisted key of either scope, so a structural view covers both.\n */\ntype ReissuableApiKey = Pick<ApiKeyBase, 'status'> & { hashedKey: string; keyPrefix: string };\n\n/**\n * Structural view of a per-resource custom-operation enum — the members that have a\n * backend impl in this file. Both `OrgApiKeys_Operations` and `AppApiKeys_Operations`\n * satisfy it (identical string values).\n */\ntype ApiKeyCustomOps = {\n ROTATE: string;\n REGENERATE: string;\n EXTEND_EXPIRY: string;\n USAGE_STATS: string;\n DEACTIVATE: string;\n REACTIVATE: string;\n};\n\ntype ApiKeyTarget = {\n resourceType: CoreResourceType;\n scope: ApiKeyScope;\n ops: ApiKeyCustomOps;\n variants: ReadonlyArray<{ isOperationDefault: boolean; variantKey?: string }>;\n};\n\n/** The handler-object shape accepted by `createResourceCustomServiceImplementation`. */\nexport type ApiKeyImplHandlers = Parameters<typeof createResourceCustomServiceImplementation>[0]['handlers'];\n\n/**\n * The API-key resources, their scope (drives the `sk_org_` / `sk_app_` prefix), the\n * per-resource custom-op enum, and every op VARIANT each resource exposes.\n *\n * - ORG keys expose an org-admin DEFAULT + a cross-tenant app-super-admin `admin`\n * variant → both registered.\n * - APP keys are single-variant (APP_ADMIN-scoped) → default only.\n */\nconst API_KEY_TARGETS: ReadonlyArray<ApiKeyTarget> = [\n {\n resourceType: CoreResourceType.ORG_API_KEYS,\n scope: ApiKeyScope.ORGANIZATION,\n ops: OrgApiKeys_Operations,\n variants: [\n { isOperationDefault: true },\n { isOperationDefault: false, variantKey: 'admin' },\n ],\n },\n {\n resourceType: CoreResourceType.APPLICATION_API_KEYS,\n scope: ApiKeyScope.APPLICATION,\n ops: AppApiKeys_Operations,\n variants: [\n { isOperationDefault: true },\n ],\n },\n];\n\n/**\n * Register one custom-impl factory per (target × variant) for a single operation.\n * Every api-key op is API_CALL and needs a distinct registration per variant identity\n * (see the module header) — this centralizes that fan-out.\n */\nfunction apiKeyFactoriesForOperation(\n operationIdentifierFor: (target: ApiKeyTarget) => string | CoreResourceOperation,\n handlersFor: (target: ApiKeyTarget, container: Container) => ApiKeyImplHandlers,\n): ResourceCustomServiceImplementationFactory[] {\n return API_KEY_TARGETS.flatMap((target) =>\n target.variants.map(({ isOperationDefault, variantKey }) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: target.resourceType,\n // API_CALL: the lookup key is built from the RUNNING operation's variantType\n // (`extractOperationPath` passes it through unchanged), and api-key ops are\n // dispatched as direct HTTP API_CALLs. Must match exactly.\n operationIdentifier: operationIdentifierFor(target),\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault,\n variantKey,\n },\n handlers: handlersFor(target, container),\n });\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n }),\n );\n}\n\n/** CREATE — mint material; surface `plainKey` once. */\nexport function buildApiKeyMintHandlers(scope: ApiKeyScope, roleHierarchyResolver: RoleHierarchyResolver): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // Role-ceiling gate — a principal cannot mint an api-key carrying roles it does not itself hold\n // (self-service privilege-escalation prevention; APPLICATION-scoped super-admin + system writes\n // bypass). The ceiling is hierarchy-aware, so an ORG_ADMIN may mint a key carrying the roles its\n // own role confers (ORG_MANAGER/ORG_MEMBER/…) but never ORG_OWNER above it.\n // assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE — least-privilege on machine-credential minting.\n assertRequestedRolesWithinCallerCeiling(executionContext, (input as { roles?: string[] }).roles, utils.errorBuilder, roleHierarchyResolver);\n const { plainKey, keyPrefix, hashedKey } = generateApiKeyMaterial(scope);\n // Bridge the one-time secret to the postfix, keyed by the per-op EC instance; never persisted.\n PLAINTEXT_KEY_BY_EC.set(executionContext, plainKey);\n // keyPrefix + hashedKey are `.excludeFromCreate()`; returning them injects them\n // into the create payload (preserveServerInjectedFields re-attaches them past the\n // strict parse) so the row persists with the required fields.\n return { ...(input as Record<string, unknown>), keyPrefix, hashedKey };\n },\n postfixCoreOperations: async (_id, createdKey, executionContext, _operationPath, _utils) => {\n if (!createdKey || typeof createdKey !== 'object') return createdKey;\n const plainKey = PLAINTEXT_KEY_BY_EC.get(executionContext);\n PLAINTEXT_KEY_BY_EC.delete(executionContext);\n if (!plainKey) return createdKey;\n return { ...(createdKey as Record<string, unknown>), plainKey };\n },\n };\n}\n\n/**\n * ROTATE / REGENERATE — reissue the secret on the SAME record, moving the prior secret\n * into the grace-window slot. The bearer-token auth path keeps honoring the prior\n * secret until `previousKeyInvalidationDate` (ROTATE: the caller-chosen instant,\n * defaulting to now = immediate cutover; REGENERATE: `null` = open-ended overlap).\n */\nfunction buildApiKeyReissueHandlers(scope: ApiKeyScope, kind: ApiKeyReissueKind): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // `currentObject` is the pre-fetched DB record for this UPDATE-borrow op — it\n // includes the backend-only `hashedKey`/`keyPrefix` we move into the previous slot.\n const current = utils.currentObject as ReissuableApiKey | undefined;\n\n // Only an ACTIVE key can be reissued (spec: 409 for a revoked/expired key —\n // otherwise rotation would silently re-arm a deactivated credential).\n if (current && current.status !== ApiKeyStatus.ACTIVE) {\n throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFLICT,\n context: { message: `API key cannot be reissued in status '${current.status}'`, apiKeyStatus: current.status },\n });\n }\n\n const { plainKey, keyPrefix, hashedKey } = generateApiKeyMaterial(scope);\n const previousKeyInvalidationDate = kind === ApiKeyReissueKind.ROTATE\n ? ((input as { oldKeyInvalidationDate?: Date }).oldKeyInvalidationDate ?? new Date())\n : null;\n REISSUE_BRIDGE_BY_EC.set(executionContext, { plainKey, previousKeyInvalidationDate });\n\n return {\n ...(input as Record<string, unknown>),\n hashedKey,\n keyPrefix,\n // Move the outgoing secret into the grace-window slot (server-managed,\n // excludeFrom{Create,Update} → carried by preserveServerInjectedFields).\n previousHashedKey: current?.hashedKey,\n previousKeyPrefix: current?.keyPrefix,\n previousKeyInvalidationDate,\n };\n },\n postfixCoreOperations: async (_id, updated, executionContext, _operationPath, _utils) => {\n if (!updated || typeof updated !== 'object') return updated;\n const record = updated as Record<string, unknown>;\n const bridged = REISSUE_BRIDGE_BY_EC.get(executionContext);\n REISSUE_BRIDGE_BY_EC.delete(executionContext);\n\n const withPlainKey = bridged?.plainKey ? { ...record, plainKey: bridged.plainKey } : { ...record };\n if (kind === ApiKeyReissueKind.ROTATE) {\n // ROTATE's response DTO additionally carries the rotated record's id + when the\n // prior secret is invalidated. Same record, so `oldKeyId` is its own `_id`.\n return { ...withPlainKey, oldKeyId: _id, oldKeyInvalidationDate: bridged?.previousKeyInvalidationDate };\n }\n // REGENERATE's response DTO is resource + plainKey only.\n return withPlainKey;\n },\n };\n}\n\n/**\n * EXTEND_EXPIRY — push out an EXISTING key's expiration date. Unlike rotate/regenerate\n * this mints NO material: it borrows UPDATE and simply maps the request-only\n * `newExpiresAt` onto the schema field `expiresAt`.\n *\n * WHY A PREFIX (not replace): `expiresAt` is a normal, updatable field (NOT\n * `.excludeFromUpdate()`), so returning it from the prefix lets the core UPDATE's own\n * strict parse persist it directly — no `preserveServerInjectedFields` allowlisting is\n * needed (contrast rotate/regenerate, whose `hashedKey`/`previous*` writes ARE\n * excludeFromUpdate). The op declares no `customResponseDto`, so its response is the\n * updated resource object = the core UPDATE's default (`mainSchema`) — no postfix.\n *\n * The leftover request-only `newExpiresAt` key rides along in the returned payload and is\n * dropped by the core UPDATE's strict parse (it is not a schema field), exactly as\n * ROTATE's `oldKeyInvalidationDate` is.\n */\nfunction buildApiKeyExtendExpiryHandlers(): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // `currentObject` is the pre-fetched DB record for this UPDATE-borrow op.\n const current = utils.currentObject as Pick<ApiKeyBase, 'expiresAt'> | undefined;\n\n // 409 guard: a key with no expiry has no window to extend. The frontend\n // `enabledCondition` (`expiresAt != null`) merely HIDES the action — it is a display\n // affordance, and the cross-tenant app-super-admin `admin` variant omits it\n // entirely — so this backend guard is the real enforcement (the paired resource\n // spec declares CONFLICT_409 \"no expiry to extend\" for both scopes). Without it,\n // extending a never-expiring key would silently ARM an expiry it never had.\n // spec-cite: N/A — \"spec\" here is Wildo's OWN paired resource specification, and the quoted text is\n // its declared conflict message. No external standard is invoked.\n if (current && (current.expiresAt === null || current.expiresAt === undefined)) {\n throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFLICT,\n context: { message: 'API key has no expiry to extend' },\n });\n }\n\n const { newExpiresAt } = input as { newExpiresAt?: Date };\n return { ...(input as Record<string, unknown>), expiresAt: newExpiresAt };\n },\n };\n}\n\n/**\n * DEACTIVATE / REACTIVATE — FORCE one API-key status transition.\n *\n * WHY THIS EXISTS AT ALL: both verbs used to have no implementation and no `requestDto`, so\n * they borrowed UPDATE and inherited the resource's ENTIRE update contract\n * (`{name, description, roles, status, expiresAt}`). `PUT .../deactivate` could therefore\n * carry `status: active` — the verb doing the exact opposite of its name — and could rewrite\n * `roles` on a machine credential, on a resource that deliberately exposes NO core UPDATE and\n * whose only role-ceiling gate lives in the CREATE handler. The paired configs now narrow the\n * request contract to `z.object({})`; this handler supplies the transition the verb names.\n *\n * WHY A PREFIX (not replace): `status` is a normal updatable field, so returning it lets the\n * core UPDATE persist it directly and keeps the operation's response the updated resource —\n * the same shape EXTEND_EXPIRY uses. Note the dispatcher MERGES a prefix's return onto the\n * caller payload rather than substituting it, so the narrowed DTO is what actually bounds the\n * write; this return only adds the forced field.\n *\n * WHY A BACKEND PRECONDITION: the resource `enabledCondition` is a DISPLAY affordance and the\n * cross-tenant app-super-admin `admin` variants omit it entirely, so this 409 is the real\n * enforcement. Without it, \"reactivate\" would silently re-arm an EXPIRED key — reviving a\n * credential whose expiry was the thing retiring it.\n *\n * assurance-control: WILDO.IDENTITY.CREDENTIAL_LIFECYCLE — credential state transitions are explicit and\n * validated, never inferred from a caller-supplied field.\n */\nfunction buildApiKeyStatusTransitionHandlers(\n requiredCurrentStatus: ApiKeyStatus,\n nextStatus: ApiKeyStatus,\n): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, _input, executionContext, _operationPath, utils) => {\n // `currentObject` is the pre-fetched DB record for this UPDATE-borrow op.\n const current = utils.currentObject as Pick<ApiKeyBase, 'status'> | undefined;\n\n if (current && current.status !== requiredCurrentStatus) {\n throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFLICT,\n context: {\n message: `API key cannot move to '${nextStatus}' from status '${current.status}'`,\n apiKeyStatus: current.status,\n },\n });\n }\n\n return { status: nextStatus };\n },\n };\n}\n\n/**\n * USAGE_STATS — INTERIM zeroed payload. There is NO per-key usage data source yet: the\n * bearer-token auth path does not record request/error/rate-limit counts (or even\n * `lastUsedAt`) for api-keys. Until a usage-tracking subsystem exists, return a\n * well-formed ALL-ZERO payload so the operation's response DTO validates instead of\n * 500ing. This deliberately reports zeros (reads as \"no usage recorded\"), NOT fabricated\n * metrics — replace with real aggregation when tracking lands. See the plan\n * `.claude/plans/api-key-rotation-grace-window.md`.\n */\nfunction buildApiKeyUsageStatsHandlers(): ApiKeyImplHandlers {\n return {\n replaceCoreOperations: async (_id, _input, executionContext, _operationPath, utils) => {\n const key = utils.currentObject as ApiKeyBase | undefined;\n const keyId = key?._id ?? _id;\n if (!keyId) {\n throw utils.errorBuilder.buildError(ErrorType.NOT_FOUND, executionContext, {\n customMessageReference: ErrorCustomMessageReference.NOT_FOUND,\n context: { message: 'API key not found for usage statistics' },\n });\n }\n return {\n keyId,\n totalRequests: 0,\n requestsLastHour: 0,\n requestsLastDay: 0,\n requestsLastWeek: 0,\n lastUsedAt: undefined,\n mostUsedEndpoint: undefined,\n errorRate: 0,\n rateLimitHits: 0,\n };\n },\n };\n}\n\n/** CREATE impls — org default + org `admin` + app default. */\nexport function createApiKeyCreateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n () => CoreResourceOperation.CREATE,\n (target, container) => buildApiKeyMintHandlers(target.scope, createRoleHierarchyResolver(container)),\n );\n}\n\n/** ROTATE impls — bounded grace window. */\nexport function createApiKeyRotateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.ROTATE,\n (target) => buildApiKeyReissueHandlers(target.scope, ApiKeyReissueKind.ROTATE),\n );\n}\n\n/** REGENERATE impls — open-ended overlap. */\nexport function createApiKeyRegenerateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.REGENERATE,\n (target) => buildApiKeyReissueHandlers(target.scope, ApiKeyReissueKind.REGENERATE),\n );\n}\n\n/** EXTEND_EXPIRY impls — map `newExpiresAt` → the persisted `expiresAt` on an existing key. */\nexport function createApiKeyExtendExpiryFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.EXTEND_EXPIRY,\n () => buildApiKeyExtendExpiryHandlers(),\n );\n}\n\n/** DEACTIVATE impls — ACTIVE → INACTIVE, forced. */\nexport function createApiKeyDeactivateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.DEACTIVATE,\n () => buildApiKeyStatusTransitionHandlers(ApiKeyStatus.ACTIVE, ApiKeyStatus.INACTIVE),\n );\n}\n\n/** REACTIVATE impls — INACTIVE → ACTIVE, forced. An EXPIRED key is NOT revivable (409). */\nexport function createApiKeyReactivateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.REACTIVATE,\n () => buildApiKeyStatusTransitionHandlers(ApiKeyStatus.INACTIVE, ApiKeyStatus.ACTIVE),\n );\n}\n\n/** USAGE_STATS impls — interim zeroed payload. */\nexport function createApiKeyUsageStatsFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.USAGE_STATS,\n () => buildApiKeyUsageStatsHandlers(),\n );\n}\n"]}
1
+ {"version":3,"file":"api-keys.custom-impl.backend.service.js","sourceRoot":"","sources":["../../../../../src/security/api-keys/api-keys.custom-impl.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * API Keys Custom Implementations\n *\n * Implements the server-side behaviour for the organization + application API-key\n * resources (`organizationApiKeys`, `applicationApiKeys`) that the schema alone\n * cannot express:\n *\n * CREATE → mint fresh key material (the client must never supply it).\n * ROTATE → reissue the secret; retain the prior secret in a grace window that\n * stops authenticating at the caller-chosen `oldKeyInvalidationDate`.\n * REGENERATE → reissue the secret; keep the prior secret valid open-endedly (until\n * the next rotation) for a zero-downtime overlap.\n * EXTEND_EXPIRY → push out an existing key's `expiresAt` (409 if the key has no expiry\n * to extend). No new secret is minted — it is a plain field update.\n * USAGE_STATS → return per-key usage metrics (see the zeroed-stats note below).\n *\n * WHY MINTING NEEDS AN IMPL: the schema requires `keyPrefix` + `hashedKey`, but both\n * are `.excludeFromCreate().excludeFromUpdate()` (the client must never supply them)\n * and `plainKey` is an ephemeral response-only field. Nothing generated them, so a\n * bare create/update persisted a row missing the required fields. These impls are the\n * single server-side choke point that mints key material.\n *\n * PATTERN (CREATE / ROTATE / REGENERATE — all \"mint a secret\" ops):\n * prefixCoreOperations → mint material; inject the persisted `keyPrefix` +\n * `hashedKey` (and, for rotate/regenerate, the previous-key\n * grace-window fields) into the payload. Those fields are\n * `.excludeFrom{Create,Update}()`, so returning them from the\n * prefix is what carries them into the core write — the\n * orchestration diffs the prefix-added keys and forwards them\n * to the repository's `preserveServerInjectedFields` allowlist\n * so the final strict parse re-attaches (rather than strips)\n * them. Stash the one-time `plainKey` for the postfix.\n * postfixCoreOperations → attach the one-time `plainKey` (+ rotate's `oldKeyId` /\n * `oldKeyInvalidationDate`) to the response so the operation's\n * ephemeral `plainKey` field surfaces it.\n * The core write still runs, so notifications / websocket events fire normally — which\n * is why this is prefix+postfix rather than `replaceCoreOperations`.\n *\n * VARIANT COVERAGE: a custom impl is matched to a running op by its FULL operation-path\n * identity — `isOperationDefault` (the `isDefault` sentinel) vs `variantKey` produce\n * DISTINCT keys (`createOperationPathKey`). So a single default registration only\n * intercepts the default variant; the cross-tenant app-super-admin `admin` variant\n * (org keys only) needs its own registration or it runs the bare core op and fails.\n * `API_KEY_TARGETS` enumerates every (resource × variant) each op exposes. Minting is\n * org-agnostic — the target `organizationId` rides in the payload / pre-fetched record,\n * never from these handlers — so the admin variant reuses the identical handlers and\n * (per the user security decision) also receives the tenant's one-time `plainKey`.\n */\n\nimport {\n ApiKeyScope,\n ApiKeyStatus,\n AppApiKeys_Operations,\n CoreResourceOperation,\n CoreResourceType,\n ErrorCustomMessageReference,\n ErrorType,\n OrgApiKeys_Operations,\n ResourceOperationVariantType,\n} from '@wildo-ai/saas-models';\nimport type { ApiKeyBase } from '@wildo-ai/saas-models';\nimport {\n createResourceCustomServiceImplementation,\n type ResourceCustomServiceImplementationFactory,\n} from '~wildo-backend-lib/base-classes/services/services/resource-operation-custom-implementation.factory.backend';\nimport type { ResourcesRegistryBackendService } from '~wildo-backend-lib/resources/services/resources-registry.backend.service';\nimport type { ExecutionContext } from '~wildo-backend-lib/runtime/models/execution-context.backend.schemas';\nimport { generateApiKeyMaterial } from './api-key-generation.backend.utils';\nimport type { Container } from 'inversify';\nimport { assertRequestedRolesWithinCallerCeiling, createRoleHierarchyResolver } from '~wildo-backend-lib/security/authorizations/role-ceiling.backend.utils';\nimport type { RoleHierarchyResolver } from '~wildo-backend-lib/security/authorizations/role-ceiling.backend.utils';\n\n/**\n * Bridge for the one-time plaintext key between the CREATE prefix (which mints it) and\n * the postfix (which returns it), keyed by the per-operation `ExecutionContext` INSTANCE.\n * The orchestration threads the SAME `executionContext` through both handlers\n * (`services-registry-handler.backend.service.ts` prefix + postfix calls), so it is a\n * stable, per-invocation correlation key.\n *\n * A `WeakMap` keyed by the EC is deliberately chosen over a `Map` keyed by `hashedKey` /\n * `_id`: (1) NO LEAK — the entry is reclaimed by GC when the request's EC becomes\n * unreachable, so a core-write failure between prefix and postfix cannot strand the\n * plaintext in memory; (2) NO RACE — concurrent operations run on DISTINCT EC instances,\n * so two simultaneous mints/reissues never collide on a shared key. `plainKey` is never\n * persisted; the postfix also deletes the entry for promptness.\n */\nconst PLAINTEXT_KEY_BY_EC = new WeakMap<ExecutionContext<any>, string>();\n\n/**\n * Bridge for ROTATE / REGENERATE, keyed by the same per-operation `ExecutionContext`\n * instance (see {@link PLAINTEXT_KEY_BY_EC}). Carries the one-time `plainKey` AND the\n * applied `previousKeyInvalidationDate`, so the postfix builds ROTATE's\n * `oldKeyInvalidationDate` from the value the prefix actually applied — independent of\n * whether the update result round-trips that field.\n */\nconst REISSUE_BRIDGE_BY_EC = new WeakMap<ExecutionContext<any>, { plainKey: string; previousKeyInvalidationDate: Date | null }>();\n\n/** ROTATE keeps a bounded grace window; REGENERATE keeps an open-ended overlap. */\nenum ApiKeyReissueKind {\n ROTATE = 'rotate',\n REGENERATE = 'regenerate',\n}\n\n/**\n * The pre-fetched key fields the reissue prefix reads. `hashedKey`/`keyPrefix` are\n * declared on the concrete org/app schemas rather than `ApiKeyBase`, but are present on\n * every persisted key of either scope, so a structural view covers both.\n */\ntype ReissuableApiKey = Pick<ApiKeyBase, 'status'> & { hashedKey: string; keyPrefix: string };\n\n/**\n * Structural view of a per-resource custom-operation enum — the members that have a\n * backend impl in this file. Both `OrgApiKeys_Operations` and `AppApiKeys_Operations`\n * satisfy it (identical string values).\n */\ntype ApiKeyCustomOps = {\n ROTATE: string;\n REGENERATE: string;\n EXTEND_EXPIRY: string;\n USAGE_STATS: string;\n DEACTIVATE: string;\n REACTIVATE: string;\n EXPIRE: string;\n};\n\ntype ApiKeyTarget = {\n resourceType: CoreResourceType;\n scope: ApiKeyScope;\n ops: ApiKeyCustomOps;\n variants: ReadonlyArray<{ isOperationDefault: boolean; variantKey?: string }>;\n};\n\n/** The handler-object shape accepted by `createResourceCustomServiceImplementation`. */\nexport type ApiKeyImplHandlers = Parameters<typeof createResourceCustomServiceImplementation>[0]['handlers'];\n\n/**\n * The API-key resources, their scope (drives the `sk_org_` / `sk_app_` prefix), the\n * per-resource custom-op enum, and every op VARIANT each resource exposes.\n *\n * - ORG keys expose an org-admin DEFAULT + a cross-tenant app-super-admin `admin`\n * variant → both registered.\n * - APP keys are single-variant (APP_ADMIN-scoped) → default only.\n */\nconst API_KEY_TARGETS: ReadonlyArray<ApiKeyTarget> = [\n {\n resourceType: CoreResourceType.ORG_API_KEYS,\n scope: ApiKeyScope.ORGANIZATION,\n ops: OrgApiKeys_Operations,\n variants: [\n { isOperationDefault: true },\n { isOperationDefault: false, variantKey: 'admin' },\n ],\n },\n {\n resourceType: CoreResourceType.APPLICATION_API_KEYS,\n scope: ApiKeyScope.APPLICATION,\n ops: AppApiKeys_Operations,\n variants: [\n { isOperationDefault: true },\n ],\n },\n];\n\n/**\n * Register one custom-impl factory per (target × variant) for a single operation.\n * Every api-key op is API_CALL and needs a distinct registration per variant identity\n * (see the module header) — this centralizes that fan-out.\n */\nfunction apiKeyFactoriesForOperation(\n operationIdentifierFor: (target: ApiKeyTarget) => string | CoreResourceOperation,\n handlersFor: (target: ApiKeyTarget, container: Container) => ApiKeyImplHandlers,\n): ResourceCustomServiceImplementationFactory[] {\n return API_KEY_TARGETS.flatMap((target) =>\n target.variants.map(({ isOperationDefault, variantKey }) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService, container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: target.resourceType,\n // API_CALL: the lookup key is built from the RUNNING operation's variantType\n // (`extractOperationPath` passes it through unchanged), and api-key ops are\n // dispatched as direct HTTP API_CALLs. Must match exactly.\n operationIdentifier: operationIdentifierFor(target),\n variantType: ResourceOperationVariantType.API_CALL,\n isOperationDefault,\n variantKey,\n },\n handlers: handlersFor(target, container),\n });\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n }),\n );\n}\n\n/** CREATE — mint material; surface `plainKey` once. */\nexport function buildApiKeyMintHandlers(scope: ApiKeyScope, roleHierarchyResolver: RoleHierarchyResolver): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // Role-ceiling gate — a principal cannot mint an api-key carrying roles it does not itself hold\n // (self-service privilege-escalation prevention; APPLICATION-scoped super-admin + system writes\n // bypass). The ceiling is hierarchy-aware, so an ORG_ADMIN may mint a key carrying the roles its\n // own role confers (ORG_MANAGER/ORG_MEMBER/…) but never ORG_OWNER above it.\n // assurance-control: WILDO.ACCESS.LEAST_PRIVILEGE — least-privilege on machine-credential minting.\n assertRequestedRolesWithinCallerCeiling(executionContext, (input as { roles?: string[] }).roles, utils.errorBuilder, roleHierarchyResolver);\n const { plainKey, keyPrefix, hashedKey } = generateApiKeyMaterial(scope);\n // Bridge the one-time secret to the postfix, keyed by the per-op EC instance; never persisted.\n PLAINTEXT_KEY_BY_EC.set(executionContext, plainKey);\n // keyPrefix + hashedKey are `.excludeFromCreate()`; returning them injects them\n // into the create payload (preserveServerInjectedFields re-attaches them past the\n // strict parse) so the row persists with the required fields.\n return { ...(input as Record<string, unknown>), keyPrefix, hashedKey };\n },\n postfixCoreOperations: async (_id, createdKey, executionContext, _operationPath, _utils) => {\n if (!createdKey || typeof createdKey !== 'object') return createdKey;\n const plainKey = PLAINTEXT_KEY_BY_EC.get(executionContext);\n PLAINTEXT_KEY_BY_EC.delete(executionContext);\n if (!plainKey) return createdKey;\n return { ...(createdKey as Record<string, unknown>), plainKey };\n },\n };\n}\n\n/**\n * ROTATE / REGENERATE — reissue the secret on the SAME record, moving the prior secret\n * into the grace-window slot. The bearer-token auth path keeps honoring the prior\n * secret until `previousKeyInvalidationDate` (ROTATE: the caller-chosen instant,\n * defaulting to now = immediate cutover; REGENERATE: `null` = open-ended overlap).\n */\nfunction buildApiKeyReissueHandlers(scope: ApiKeyScope, kind: ApiKeyReissueKind): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // `currentObject` is the pre-fetched DB record for this UPDATE-borrow op — it\n // includes the backend-only `hashedKey`/`keyPrefix` we move into the previous slot.\n const current = utils.currentObject as ReissuableApiKey | undefined;\n\n // Only an ACTIVE key can be reissued (spec: 409 for a revoked/expired key —\n // otherwise rotation would silently re-arm a deactivated credential).\n if (current && current.status !== ApiKeyStatus.ACTIVE) {\n throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFLICT,\n context: { message: `API key cannot be reissued in status '${current.status}'`, apiKeyStatus: current.status },\n });\n }\n\n const { plainKey, keyPrefix, hashedKey } = generateApiKeyMaterial(scope);\n const previousKeyInvalidationDate = kind === ApiKeyReissueKind.ROTATE\n ? ((input as { oldKeyInvalidationDate?: Date }).oldKeyInvalidationDate ?? new Date())\n : null;\n REISSUE_BRIDGE_BY_EC.set(executionContext, { plainKey, previousKeyInvalidationDate });\n\n return {\n ...(input as Record<string, unknown>),\n hashedKey,\n keyPrefix,\n // Move the outgoing secret into the grace-window slot (server-managed,\n // excludeFrom{Create,Update} → carried by preserveServerInjectedFields).\n previousHashedKey: current?.hashedKey,\n previousKeyPrefix: current?.keyPrefix,\n previousKeyInvalidationDate,\n };\n },\n postfixCoreOperations: async (_id, updated, executionContext, _operationPath, _utils) => {\n if (!updated || typeof updated !== 'object') return updated;\n const record = updated as Record<string, unknown>;\n const bridged = REISSUE_BRIDGE_BY_EC.get(executionContext);\n REISSUE_BRIDGE_BY_EC.delete(executionContext);\n\n const withPlainKey = bridged?.plainKey ? { ...record, plainKey: bridged.plainKey } : { ...record };\n if (kind === ApiKeyReissueKind.ROTATE) {\n // ROTATE's response DTO additionally carries the rotated record's id + when the\n // prior secret is invalidated. Same record, so `oldKeyId` is its own `_id`.\n return { ...withPlainKey, oldKeyId: _id, oldKeyInvalidationDate: bridged?.previousKeyInvalidationDate };\n }\n // REGENERATE's response DTO is resource + plainKey only.\n return withPlainKey;\n },\n };\n}\n\n/**\n * EXTEND_EXPIRY — push out an EXISTING key's expiration date. Unlike rotate/regenerate\n * this mints NO material: it borrows UPDATE and simply maps the request-only\n * `newExpiresAt` onto the schema field `expiresAt`.\n *\n * WHY A PREFIX (not replace): `expiresAt` is a normal, updatable field (NOT\n * `.excludeFromUpdate()`), so returning it from the prefix lets the core UPDATE's own\n * strict parse persist it directly — no `preserveServerInjectedFields` allowlisting is\n * needed (contrast rotate/regenerate, whose `hashedKey`/`previous*` writes ARE\n * excludeFromUpdate). The op declares no `customResponseDto`, so its response is the\n * updated resource object = the core UPDATE's default (`mainSchema`) — no postfix.\n *\n * The leftover request-only `newExpiresAt` key rides along in the returned payload and is\n * dropped by the core UPDATE's strict parse (it is not a schema field), exactly as\n * ROTATE's `oldKeyInvalidationDate` is.\n */\nfunction buildApiKeyExtendExpiryHandlers(): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, input, executionContext, _operationPath, utils) => {\n // `currentObject` is the pre-fetched DB record for this UPDATE-borrow op.\n const current = utils.currentObject as Pick<ApiKeyBase, 'expiresAt'> | undefined;\n\n // 409 guard: a key with no expiry has no window to extend. The frontend\n // `enabledCondition` (`expiresAt != null`) merely HIDES the action — it is a display\n // affordance, and the cross-tenant app-super-admin `admin` variant omits it\n // entirely — so this backend guard is the real enforcement (the paired resource\n // spec declares CONFLICT_409 \"no expiry to extend\" for both scopes). Without it,\n // extending a never-expiring key would silently ARM an expiry it never had.\n // spec-cite: N/A — \"spec\" here is Wildo's OWN paired resource specification, and the quoted text is\n // its declared conflict message. No external standard is invoked.\n if (current && (current.expiresAt === null || current.expiresAt === undefined)) {\n throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFLICT,\n context: { message: 'API key has no expiry to extend' },\n });\n }\n\n const { newExpiresAt } = input as { newExpiresAt?: Date };\n return { ...(input as Record<string, unknown>), expiresAt: newExpiresAt };\n },\n };\n}\n\n/**\n * DEACTIVATE / REACTIVATE — FORCE one API-key status transition.\n *\n * WHY THIS EXISTS AT ALL: both verbs used to have no implementation and no `requestDto`, so\n * they borrowed UPDATE and inherited the resource's ENTIRE update contract\n * (`{name, description, roles, status, expiresAt}`). `PUT .../deactivate` could therefore\n * carry `status: active` — the verb doing the exact opposite of its name — and could rewrite\n * `roles` on a machine credential, on a resource that deliberately exposes NO core UPDATE and\n * whose only role-ceiling gate lives in the CREATE handler. The paired configs now narrow the\n * request contract to `z.object({})`; this handler supplies the transition the verb names.\n *\n * WHY A PREFIX (not replace): `status` is a normal updatable field, so returning it lets the\n * core UPDATE persist it directly and keeps the operation's response the updated resource —\n * the same shape EXTEND_EXPIRY uses. Note the dispatcher MERGES a prefix's return onto the\n * caller payload rather than substituting it, so the narrowed DTO is what actually bounds the\n * write; this return only adds the forced field.\n *\n * WHY A BACKEND PRECONDITION: the resource `enabledCondition` is a DISPLAY affordance and the\n * cross-tenant app-super-admin `admin` variants omit it entirely, so this 409 is the real\n * enforcement. Without it, \"reactivate\" would silently re-arm an EXPIRED key — reviving a\n * credential whose expiry was the thing retiring it.\n *\n * assurance-control: WILDO.IDENTITY.CREDENTIAL_LIFECYCLE — credential state transitions are explicit and\n * validated, never inferred from a caller-supplied field.\n */\nfunction buildApiKeyStatusTransitionHandlers(\n requiredCurrentStatus: ApiKeyStatus,\n nextStatus: ApiKeyStatus,\n): ApiKeyImplHandlers {\n return {\n prefixCoreOperations: async (_id, _input, executionContext, _operationPath, utils) => {\n // `currentObject` is the pre-fetched DB record for this UPDATE-borrow op.\n const current = utils.currentObject as Pick<ApiKeyBase, 'status'> | undefined;\n\n if (current && current.status !== requiredCurrentStatus) {\n throw utils.errorBuilder.buildError(ErrorType.CONFLICT, executionContext, {\n customMessageReference: ErrorCustomMessageReference.CONFLICT,\n context: {\n message: `API key cannot move to '${nextStatus}' from status '${current.status}'`,\n apiKeyStatus: current.status,\n },\n });\n }\n\n return { status: nextStatus };\n },\n };\n}\n\n/**\n * USAGE_STATS — INTERIM zeroed payload. There is NO per-key usage data source yet: the\n * bearer-token auth path does not record request/error/rate-limit counts (or even\n * `lastUsedAt`) for api-keys. Until a usage-tracking subsystem exists, return a\n * well-formed ALL-ZERO payload so the operation's response DTO validates instead of\n * 500ing. This deliberately reports zeros (reads as \"no usage recorded\"), NOT fabricated\n * metrics — replace with real aggregation when tracking lands. See the plan\n * `.claude/plans/api-key-rotation-grace-window.md`.\n */\nfunction buildApiKeyUsageStatsHandlers(): ApiKeyImplHandlers {\n return {\n replaceCoreOperations: async (_id, _input, executionContext, _operationPath, utils) => {\n const key = utils.currentObject as ApiKeyBase | undefined;\n const keyId = key?._id ?? _id;\n if (!keyId) {\n throw utils.errorBuilder.buildError(ErrorType.NOT_FOUND, executionContext, {\n customMessageReference: ErrorCustomMessageReference.NOT_FOUND,\n context: { message: 'API key not found for usage statistics' },\n });\n }\n return {\n keyId,\n totalRequests: 0,\n requestsLastHour: 0,\n requestsLastDay: 0,\n requestsLastWeek: 0,\n lastUsedAt: undefined,\n mostUsedEndpoint: undefined,\n errorRate: 0,\n rateLimitHits: 0,\n };\n },\n };\n}\n\n/** CREATE impls — org default + org `admin` + app default. */\nexport function createApiKeyCreateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n () => CoreResourceOperation.CREATE,\n (target, container) => buildApiKeyMintHandlers(target.scope, createRoleHierarchyResolver(container)),\n );\n}\n\n/** ROTATE impls — bounded grace window. */\nexport function createApiKeyRotateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.ROTATE,\n (target) => buildApiKeyReissueHandlers(target.scope, ApiKeyReissueKind.ROTATE),\n );\n}\n\n/** REGENERATE impls — open-ended overlap. */\nexport function createApiKeyRegenerateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.REGENERATE,\n (target) => buildApiKeyReissueHandlers(target.scope, ApiKeyReissueKind.REGENERATE),\n );\n}\n\n/** EXTEND_EXPIRY impls — map `newExpiresAt` → the persisted `expiresAt` on an existing key. */\nexport function createApiKeyExtendExpiryFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.EXTEND_EXPIRY,\n () => buildApiKeyExtendExpiryHandlers(),\n );\n}\n\n/** DEACTIVATE impls — ACTIVE → INACTIVE, forced. */\nexport function createApiKeyDeactivateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.DEACTIVATE,\n () => buildApiKeyStatusTransitionHandlers(ApiKeyStatus.ACTIVE, ApiKeyStatus.INACTIVE),\n );\n}\n\n/** REACTIVATE impls — INACTIVE → ACTIVE, forced. An EXPIRED key is NOT revivable (409). */\nexport function createApiKeyReactivateFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.REACTIVATE,\n () => buildApiKeyStatusTransitionHandlers(ApiKeyStatus.INACTIVE, ApiKeyStatus.ACTIVE),\n );\n}\n\n/**\n * EXPIRE impls — ACTIVE → EXPIRED, forced, dispatched by the credential-expiry sweep (#413).\n *\n * Registered separately from every other api-key op rather than through\n * `apiKeyFactoriesForOperation`, and the difference is the whole point: that helper hardcodes\n * `variantType: API_CALL` and fans out over each resource's HTTP variants (including the org\n * resource's cross-tenant `admin` one). EXPIRE is INTERNAL_CALL with a single default variant on\n * both resources — no route, no operator affordance — so it needs its own registration or the\n * lookup key would never match and the guard below would be silently unreachable.\n *\n * The ACTIVE-only precondition is the reason this verb exists at all: a sweep writing `status`\n * directly would relabel an INACTIVE key as EXPIRED and erase the fact that an administrator\n * retired it.\n */\nexport function createApiKeyExpireFactories(): ResourceCustomServiceImplementationFactory[] {\n return API_KEY_TARGETS.map((target) => {\n const factory = (_resourcesRegistryService: ResourcesRegistryBackendService, _container: Container) =>\n createResourceCustomServiceImplementation({\n operationPath: {\n resourceIdentifier: target.resourceType,\n operationIdentifier: target.ops.EXPIRE,\n variantType: ResourceOperationVariantType.INTERNAL_CALL,\n isOperationDefault: true,\n },\n handlers: buildApiKeyStatusTransitionHandlers(ApiKeyStatus.ACTIVE, ApiKeyStatus.EXPIRED),\n });\n return factory as unknown as ResourceCustomServiceImplementationFactory;\n });\n}\n\n/** USAGE_STATS impls — interim zeroed payload. */\nexport function createApiKeyUsageStatsFactories(): ResourceCustomServiceImplementationFactory[] {\n return apiKeyFactoriesForOperation(\n (target) => target.ops.USAGE_STATS,\n () => buildApiKeyUsageStatsHandlers(),\n );\n}\n"]}
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * Anonymous Session Cleanup Batch Job (W7.3a)
3
3
  *
4
- * Runs daily and cleans up orphaned anonymous sessions:
4
+ * Runs daily. It is BOTH the repair pass and the cleanup pass over the anonymous-session
5
+ * population, in that order — the ordering matters, because step 3 below retires the only record of
6
+ * which account a half-transposed session belongs to:
7
+ * 0. Finish the ownership transpositions that stopped part-way (converted sessions whose rows are
8
+ * still split between the anonymous identity and the account)
5
9
  * 1. Find AnonymousUser records that were never converted and are past TTL
6
10
  * 2. For each, delete all isAnonymizable resources owned by that anonymous user
7
11
  * 3. Archive the AnonymousUser record itself
@@ -1 +1 @@
1
- {"version":3,"file":"anonymous-session-cleanup.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AAqB/I,wBAAgB,kCAAkC,IAAI,UAAU,CAAC,OAAO,iCAAiC,CAAC,CA+BzG"}
1
+ {"version":3,"file":"anonymous-session-cleanup.batch.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AAgC/I,wBAAgB,kCAAkC,IAAI,UAAU,CAAC,OAAO,iCAAiC,CAAC,CAoCzG"}
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * Anonymous Session Cleanup Batch Job (W7.3a)
3
3
  *
4
- * Runs daily and cleans up orphaned anonymous sessions:
4
+ * Runs daily. It is BOTH the repair pass and the cleanup pass over the anonymous-session
5
+ * population, in that order — the ordering matters, because step 3 below retires the only record of
6
+ * which account a half-transposed session belongs to:
7
+ * 0. Finish the ownership transpositions that stopped part-way (converted sessions whose rows are
8
+ * still split between the anonymous identity and the account)
5
9
  * 1. Find AnonymousUser records that were never converted and are past TTL
6
10
  * 2. For each, delete all isAnonymizable resources owned by that anonymous user
7
11
  * 3. Archive the AnonymousUser record itself
@@ -29,6 +33,17 @@ const AnonymousSessionCleanupOutputSchema = z.object({
29
33
  usersArchived: z.number().int().min(0),
30
34
  errors: z.number().int().min(0),
31
35
  durationMs: z.number().int().min(0),
36
+ /**
37
+ * Phase 0 (transposition reconciliation) counters, flattened into the batch output because a job
38
+ * record is the only place an operator sees this pass at all.
39
+ *
40
+ * `transpositionsStillIncomplete` is the one to watch: it counts converted visitors whose rows are
41
+ * STILL split between the anonymous session and their account after a repair attempt, i.e. a
42
+ * resource type whose write path fails repeatedly rather than transiently. A non-zero value that
43
+ * does not fall on the next run is a defect, not a backlog.
44
+ */
45
+ transpositionsRepaired: z.number().int().min(0),
46
+ transpositionsStillIncomplete: z.number().int().min(0),
32
47
  });
33
48
  export function createAnonymousSessionCleanupBatch() {
34
49
  return createCustomBatchExecutionService({
@@ -46,13 +61,18 @@ export function createAnonymousSessionCleanupBatch() {
46
61
  doHandle: async (input, { logger, dependencies }) => {
47
62
  const startTime = Date.now();
48
63
  const { anonymousSessionService } = dependencies;
49
- const result = await anonymousSessionService.cleanupExpiredSessions({
64
+ const { transpositionsReconciled, ...result } = await anonymousSessionService.cleanupExpiredSessions({
50
65
  sessionTtlMs: input.sessionTtlMs,
51
66
  batchSize: input.batchSize,
52
67
  });
53
68
  const durationMs = Date.now() - startTime;
54
- logger.info('Anonymous session cleanup batch completed', { ...result, durationMs });
55
- return { ...result, durationMs };
69
+ logger.info('Anonymous session cleanup batch completed', { ...result, transpositionsReconciled, durationMs });
70
+ return {
71
+ ...result,
72
+ durationMs,
73
+ transpositionsRepaired: transpositionsReconciled.sessionsRepaired,
74
+ transpositionsStillIncomplete: transpositionsReconciled.sessionsStillIncomplete,
75
+ };
56
76
  },
57
77
  });
58
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"anonymous-session-cleanup.batch.backend.service.js","sourceRoot":"","sources":["../../../../../../src/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,iCAAiC,EAAE,MAAM,4FAA4F,CAAC;AAC/I,OAAO,EAAE,+CAA+C,EAAE,MAAM,gFAAgF,CAAC;AACjJ,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,6EAA6E;IAC7E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,wEAAwE;IACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEH,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AAEH,MAAM,UAAU,kCAAkC;IAChD,OAAO,iCAAiC,CAAC;QACvC,KAAK,EAAE,kCAAkC;QACzC,MAAM,EAAE,mCAAmC;QAC3C,oBAAoB,EAAE;YACpB,IAAI,EAAE,+CAA+C,CAAC,IAAI;YAC1D,kBAAkB,EAAE,+CAA+C,CAAC,kBAAkB;YACtF,mBAAmB,EAAE,+CAA+C,CAAC,mBAAmB;YACxF,iBAAiB,EAAE,+CAA+C,CAAC,cAAc;SAClF;QACD,mBAAmB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,uBAAuB,EAAE,GAAG,CAC1B,kBAAkB,CAAC,uBAAuB,CAC3C;SACF,CAAC;QACF,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,EAAE,uBAAuB,EAAE,GAAG,YAAY,CAAC;YAEjD,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,sBAAsB,CAAC;gBAClE,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAEpF,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,CAAC;QACnC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,kFAAkF;AAClF,wEAAwE;AACxE,kCAAkC","sourcesContent":["/**\n * Anonymous Session Cleanup Batch Job (W7.3a)\n *\n * Runs daily and cleans up orphaned anonymous sessions:\n * 1. Find AnonymousUser records that were never converted and are past TTL\n * 2. For each, delete all isAnonymizable resources owned by that anonymous user\n * 3. Archive the AnonymousUser record itself\n *\n * Delegates actual cleanup logic to AnonymousSessionBackendService.cleanupExpiredSessions().\n *\n * Integration with Queue System:\n * - Registered as a core engine batch in StartApplicationBackendService\n * - Scheduled via crontabs-batches-manager (daily at 03:00 UTC)\n * - Executed by BatchesCronjobsExecutor_BackendService\n */\n\nimport { createCustomBatchExecutionService } from '~wildo-backend-lib/base-classes/services/batches/batches-cronjobs-custom-execution.service';\nimport { ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST } from '~wildo-backend-lib/base-classes/services/batches/engine-custom-batch-manifests';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { AnonymousSessionBackendService } from '~wildo-backend-lib/security/authentications/services/anonymous-session.backend.service';\nimport { z } from 'zod';\n\nconst AnonymousSessionCleanupInputSchema = z.object({\n /** Override: TTL for anonymous sessions before cleanup (ms). Default: 48h */\n sessionTtlMs: z.number().int().min(0).optional(),\n /** Override: batch size for processing anonymous users. Default: 100 */\n batchSize: z.number().int().min(1).optional(),\n});\n\nconst AnonymousSessionCleanupOutputSchema = z.object({\n expiredUsersFound: z.number().int().min(0),\n resourcesDeleted: z.number().int().min(0),\n usersArchived: z.number().int().min(0),\n errors: z.number().int().min(0),\n durationMs: z.number().int().min(0),\n});\n\nexport function createAnonymousSessionCleanupBatch(): ReturnType<typeof createCustomBatchExecutionService> {\n return createCustomBatchExecutionService({\n input: AnonymousSessionCleanupInputSchema,\n output: AnonymousSessionCleanupOutputSchema,\n batchCronjob_Context: {\n kind: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.kind,\n resourceIdentifier: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.resourceIdentifier,\n operationIdentifier: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.operationIdentifier,\n cronJobExpression: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.cronExpression,\n },\n resolveDependencies: ({ get }) => ({\n anonymousSessionService: get<AnonymousSessionBackendService>(\n SAAS_SERVICE_TYPES.AnonymousSessionService,\n ),\n }),\n doHandle: async (input, { logger, dependencies }) => {\n const startTime = Date.now();\n const { anonymousSessionService } = dependencies;\n\n const result = await anonymousSessionService.cleanupExpiredSessions({\n sessionTtlMs: input.sessionTtlMs,\n batchSize: input.batchSize,\n });\n\n const durationMs = Date.now() - startTime;\n\n logger.info('Anonymous session cleanup batch completed', { ...result, durationMs });\n\n return { ...result, durationMs };\n },\n });\n}\n\n// Batch reference identifier lives in the declarative manifest registry\n// (`engine-custom-batch-manifests`); import `ANONYMOUS_SESSION_CLEANUP_BATCH_REF`\n// from there to keep a single source of truth across runtime wiring and\n// specification cross-validation.\n"]}
1
+ {"version":3,"file":"anonymous-session-cleanup.batch.backend.service.js","sourceRoot":"","sources":["../../../../../../src/security/authentications/batches/anonymous-session-cleanup.batch.backend.service.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Anonymous Session Cleanup Batch Job (W7.3a)\n *\n * Runs daily. It is BOTH the repair pass and the cleanup pass over the anonymous-session\n * population, in that order — the ordering matters, because step 3 below retires the only record of\n * which account a half-transposed session belongs to:\n * 0. Finish the ownership transpositions that stopped part-way (converted sessions whose rows are\n * still split between the anonymous identity and the account)\n * 1. Find AnonymousUser records that were never converted and are past TTL\n * 2. For each, delete all isAnonymizable resources owned by that anonymous user\n * 3. Archive the AnonymousUser record itself\n *\n * Delegates actual cleanup logic to AnonymousSessionBackendService.cleanupExpiredSessions().\n *\n * Integration with Queue System:\n * - Registered as a core engine batch in StartApplicationBackendService\n * - Scheduled via crontabs-batches-manager (daily at 03:00 UTC)\n * - Executed by BatchesCronjobsExecutor_BackendService\n */\n\nimport { createCustomBatchExecutionService } from '~wildo-backend-lib/base-classes/services/batches/batches-cronjobs-custom-execution.service';\nimport { ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST } from '~wildo-backend-lib/base-classes/services/batches/engine-custom-batch-manifests';\nimport { SAAS_SERVICE_TYPES } from '~wildo-backend-lib/inject/models/service-types';\nimport type { AnonymousSessionBackendService } from '~wildo-backend-lib/security/authentications/services/anonymous-session.backend.service';\nimport { z } from 'zod';\n\nconst AnonymousSessionCleanupInputSchema = z.object({\n /** Override: TTL for anonymous sessions before cleanup (ms). Default: 48h */\n sessionTtlMs: z.number().int().min(0).optional(),\n /** Override: batch size for processing anonymous users. Default: 100 */\n batchSize: z.number().int().min(1).optional(),\n});\n\nconst AnonymousSessionCleanupOutputSchema = z.object({\n expiredUsersFound: z.number().int().min(0),\n resourcesDeleted: z.number().int().min(0),\n usersArchived: z.number().int().min(0),\n errors: z.number().int().min(0),\n durationMs: z.number().int().min(0),\n /**\n * Phase 0 (transposition reconciliation) counters, flattened into the batch output because a job\n * record is the only place an operator sees this pass at all.\n *\n * `transpositionsStillIncomplete` is the one to watch: it counts converted visitors whose rows are\n * STILL split between the anonymous session and their account after a repair attempt, i.e. a\n * resource type whose write path fails repeatedly rather than transiently. A non-zero value that\n * does not fall on the next run is a defect, not a backlog.\n */\n transpositionsRepaired: z.number().int().min(0),\n transpositionsStillIncomplete: z.number().int().min(0),\n});\n\nexport function createAnonymousSessionCleanupBatch(): ReturnType<typeof createCustomBatchExecutionService> {\n return createCustomBatchExecutionService({\n input: AnonymousSessionCleanupInputSchema,\n output: AnonymousSessionCleanupOutputSchema,\n batchCronjob_Context: {\n kind: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.kind,\n resourceIdentifier: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.resourceIdentifier,\n operationIdentifier: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.operationIdentifier,\n cronJobExpression: ENGINE_ANONYMOUS_SESSION_CLEANUP_BATCH_MANIFEST.cronExpression,\n },\n resolveDependencies: ({ get }) => ({\n anonymousSessionService: get<AnonymousSessionBackendService>(\n SAAS_SERVICE_TYPES.AnonymousSessionService,\n ),\n }),\n doHandle: async (input, { logger, dependencies }) => {\n const startTime = Date.now();\n const { anonymousSessionService } = dependencies;\n\n const { transpositionsReconciled, ...result } = await anonymousSessionService.cleanupExpiredSessions({\n sessionTtlMs: input.sessionTtlMs,\n batchSize: input.batchSize,\n });\n\n const durationMs = Date.now() - startTime;\n\n logger.info('Anonymous session cleanup batch completed', { ...result, transpositionsReconciled, durationMs });\n\n return {\n ...result,\n durationMs,\n transpositionsRepaired: transpositionsReconciled.sessionsRepaired,\n transpositionsStillIncomplete: transpositionsReconciled.sessionsStillIncomplete,\n };\n },\n });\n}\n\n// Batch reference identifier lives in the declarative manifest registry\n// (`engine-custom-batch-manifests`); import `ANONYMOUS_SESSION_CLEANUP_BATCH_REF`\n// from there to keep a single source of truth across runtime wiring and\n// specification cross-validation.\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"authentication-controller.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/controllers/authentication-controller.backend.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authentication-controller.backend.service.d.ts","sourceRoot":"","sources":["../../../../../../src/security/authentications/controllers/authentication-controller.backend.service.ts"],"names":[],"mappings":"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"}
@@ -1775,8 +1775,26 @@ let AuthenticationControllerBackendService = class AuthenticationControllerBacke
1775
1775
  * POST /auth/password-reset/complete → AuthPasswordResetService.completePasswordReset
1776
1776
  */
1777
1777
  async passwordResetComplete(req, res) {
1778
- const ec = await this._getPreAuthExecutionContext();
1778
+ /*
1779
+ * The REQUEST leg carries two policies and this leg carried none, so the half of the flow that
1780
+ * consumes a token and WRITES A CREDENTIAL was the unlimited one.
1781
+ *
1782
+ * IP-keyed and single-bucket, unlike the request leg's email+IP pair, because the caller supplies
1783
+ * no email here — only a token. Keying on the token would defeat the defence it exists for: the
1784
+ * bucket would reset on every guess, which is exactly the note `magicLinkVerify` already makes
1785
+ * for the same reason.
1786
+ *
1787
+ * 10/min matches `auth:invitation:accept:by-ip`, the nearest peer in shape — a one-off token
1788
+ * that sets a password. The cost being bounded is not only the token lookup: every attempt runs
1789
+ * an argon2 hash of the submitted password, which is deliberately expensive, so an unlimited
1790
+ * endpoint is a CPU-exhaustion surface as much as a token-guessing one.
1791
+ *
1792
+ * Ordering follows `passwordResetRequest` and `acceptInvitation`: limit BEFORE the body parse and
1793
+ * before EC construction, so an over-budget caller pays for neither.
1794
+ */
1795
+ await this.rateLimitService.checkPolicy(req, res, { requestsPerMinute: 10 }, 'auth:password-reset:complete:by-ip');
1779
1796
  const { token, newPassword } = PasswordResetCompleteDtoSchema.parse(req.body || {});
1797
+ const ec = await this._getPreAuthExecutionContext();
1780
1798
  const result = await this.passwordResetService.completePasswordReset(ec, {
1781
1799
  token, newPassword,
1782
1800
  ipAddress: getClientIpFromRequest(req),
@@ -1793,7 +1811,7 @@ let AuthenticationControllerBackendService = class AuthenticationControllerBacke
1793
1811
  async register(req, res) {
1794
1812
  // PR-7b-fixes F-22 fail-fast ordering: body parse → rate-limit → ec
1795
1813
  // (see `passwordResetRequest` for rationale).
1796
- const { email, firstName, lastName, password, organizationName } = UserRegisterApiDtoSchema.parse(req.body || {});
1814
+ const { email, firstName, lastName, password, organizationName, method } = UserRegisterApiDtoSchema.parse(req.body || {});
1797
1815
  const ipAddress = getClientIpFromRequest(req);
1798
1816
  // PR 7b — register migration. THREE policies AND-ed (PR 8a Option D
1799
1817
  // lifted the per-email-domain bucket UP from `auth-registration.backend.service.ts`;
@@ -1861,7 +1879,9 @@ let AuthenticationControllerBackendService = class AuthenticationControllerBacke
1861
1879
  const activeUserTypeReg = frontendServiceNameReg
1862
1880
  ? this.appConfigService.resolveUserTypeFromFrontendServiceName(frontendServiceNameReg) ?? undefined
1863
1881
  : undefined;
1864
- const result = await this.registrationService.registerUser(ec, { email, firstName, lastName, password, organizationName }, { frontendUrl, ipAddress, userAgent: req.headers[WildoHeaderKeys.USER_AGENT] || 'unknown', frontendServiceName: frontendServiceNameReg, activeUserType: activeUserTypeReg });
1882
+ const result = await this.registrationService.registerUser(ec,
1883
+ // `method` absent ⇒ the service defaults to PASSWORD, so a client predating #463 is unchanged.
1884
+ { email, firstName, lastName, password, organizationName, method }, { frontendUrl, ipAddress, userAgent: req.headers[WildoHeaderKeys.USER_AGENT] || 'unknown', frontendServiceName: frontendServiceNameReg, activeUserType: activeUserTypeReg });
1865
1885
  // Deferred-verification registration issues tokens immediately (see
1866
1886
  // `registerUser`), so this is the anonymous→authenticated conversion moment
1867
1887
  // for direct-register users. Transpose the anonymous website capture onto
@@ -3724,6 +3744,10 @@ let AuthenticationControllerBackendService = class AuthenticationControllerBacke
3724
3744
  userType,
3725
3745
  status: result.status,
3726
3746
  transposedTypes: result.transposedTypes,
3747
+ // Reported beside `transposedTypes`, never merged into it: a DISCARD type's rows were
3748
+ // DELETED, not carried over. A support answer built from the transposed list alone would
3749
+ // say "nothing happened" about data the conversion destroyed on purpose.
3750
+ discardedTypes: result.discardedTypes,
3727
3751
  failedCount: result.failedTypes.length,
3728
3752
  });
3729
3753
  }
@@ -3752,7 +3776,8 @@ let AuthenticationControllerBackendService = class AuthenticationControllerBacke
3752
3776
  }
3753
3777
  this.logDebug('Anonymous session transposition completed (token exchange)', {
3754
3778
  anonymousUserId, userId, userType, status: result.status,
3755
- transposedTypes: result.transposedTypes, failedCount: result.failedTypes.length,
3779
+ transposedTypes: result.transposedTypes, discardedTypes: result.discardedTypes,
3780
+ failedCount: result.failedTypes.length,
3756
3781
  });
3757
3782
  }
3758
3783
  catch (error) {